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
相关文章