前言
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()