漏洞预警 | ThinkPHP 5.x远程命令执行漏洞
Posted 又见江南
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漏洞预警 | ThinkPHP 5.x远程命令执行漏洞相关的知识,希望对你有一定的参考价值。
Thinkphp采用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,是一款兼容性高、部署简单的轻量级国产PHP开发框架。
近日,ThinkPHP团队发布了版本更新信息,修复一个远程代码执行漏洞。该漏洞是由于框架对控制器名没有进行足够的检测,导致在没有开启强制路由的情况下可远程执行代码。攻击者利用该漏洞,可在未经授权的情况下,对目标网站进行远程命令执行攻击。
该漏洞存在于thinkphp\\library\\think\\route\\dispatch\\Module.php文件中,核心代码如图所示:
网上公布的poc为:http://xx.xx.xx/public/index.php?s=/index/\\think\\request/cache&key=1|phpinfo,当变量s传进之后受explode函数截断,$controller的值为:\\think\\request,代码如图所示:
在Thinkphp5.1.29的\\think\\Request类中找到可以利用的方法cache,代码如图所示:
Poc中cache&key=1|phpinfo经过代码处理后函数$fun的值为phpinfo
本地搭建测试环境验证,尝试执行phpinfo命令,如下图所示:
解决方案如下 :
以上是关于漏洞预警 | ThinkPHP 5.x远程命令执行漏洞的主要内容,如果未能解决你的问题,请参考以下文章
漏洞复现ThinkPHP5 5.x 远程命令执行(getshell)
漏洞预警 | 高危Struts REST插件远程代码执行漏洞(S2-052)