前言
THINKPHP5.0.22远程代码执行漏洞分析及复现
漏洞分析
exp如下:
1 | /public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami |

使用debug来跟一下漏洞的触发过程
1 |
|
跟进run(),看到关键代码。

这里的$dispatch是空的,也就是未设置调度

跟进routeCheck()

其中$path,$depr


经过路由检测后,到这一行代码

跟进函数parseUrl()

在这一行代码中,$url被分成存入$path

解析模块,控制器,操作

然后封装路由


回到App.php

关键代码

跟进exec()这里跟进的是模块执行代码

在module()中



跟进invokeMethod()


到此调用call_user_function()
