thinkphp5.X系列web框架远程命令执行

ThinkPHP5 5.0.23 远程代码执行漏洞

ThinkPHP是一款运用极广的PHP开发框架。其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。

漏洞分析

如上所述,此漏洞是因为Request类中获取method方法中没有正确的处理方法名导致远程命令执行。

使用docker搭建好环境后,进入bash环境

查看/var/www/thinkphp/library/think/Request.php即Request类

在这里插入图片描述

因为太多截取含有method关键字的部分发现method函数定义并且可以发现这个函数主要在其他成员函数,因为下面的return

发现没?
每个return都是http的请求方法,说明此方法是用来对请求类型做判断的。

在这里插入图片描述
接下来看一下这个类的构造函数,好吧说不上来毕竟不是搞开发的,总之影响漏洞的类就是这个request类,通过一系列的神奇操作,触发request类的param方法覆盖server变量,然后通过input方法实现任意代码执行。

漏洞复现

引用payload实现远程代码执行

在这里插入图片描述

ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞

其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。

漏洞分析

引一篇大佬的文章
https://www.cnblogs.com/st404/p/10245844.html

漏洞复现

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

在这里插入图片描述
相关文章

Thinkphp5开启强制路由代码示例详解(防远程攻击必备)

猜你喜欢

转载自blog.csdn.net/qq_43571759/article/details/106207206
今日推荐