漏洞综述
关于ThinkPHPThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,其借鉴了国外很多优秀的框架和模式,包括使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式等。该框架常被用来进行二次开发,国内应用非常广泛。
漏洞原理
2019年1月11日爆出了ThinkPHP 5.0.x全版本远程命令执行漏洞,其中5.1和5.2全版本在生产环境下同样也存在代码执行漏洞,与5.0.x版本漏洞相似,漏洞点都存在于Request(thinkphp/library/think/Request.php)类中,其中:
$method变量是$this->method,其等同于POST的“_method”参数值,可以利用覆盖$filter的属性值(filter属性保存了用于全局过滤的函数),从而实现代码执行。
该漏洞触发时会出现警告级别的异常导致程序终止,此时需要设置忽略异常提示,在public/index.php中配置error_reporting(0)忽略异常继续运行代码,如下图:
通常在生产环境中,项目发布本身就会忽略部分异常使网站稳定运行,所以该漏洞影响范围较大。
漏洞复现
以Thinkphp 5.1.20版本为例,访问构造好的Payload可以执行任意代码,如下执行calc调用计算器出现如下页面:
影响范围
ThinkPHP 5.1 – 5.2全版本
处置方法
(1)官方补丁
官方暂未发布漏洞补丁,请关注http://www.thinkphp.cn获取最新补丁,或者您可以使用如下临时解决方案:在不影响业务的前提下暂时选择关闭异常忽略模式。
(2)H3C解决方案
新华三IPS规则库将在1.0.63版本支持对该漏洞的拦截,建议关注新华三官网及时升级版本并使能相关规则。
声明
本安全公告仅用来描述可能存在的安全问题,未经新华三大安全允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,新华三大安全以及安全公告作者不为此承担任何责任。新华三大安全拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。
关于新华三大安全
新华三集团在安全领域拥有十余年的经验积累,拥有1000多项信息安全领域专利技术,具备业界最全面的安全交付能力,可提供近300款产品和专业的安全咨询评估服务团队,并且具备以客户为导向的需求快速响应能力,从底层信息安全基础设施到顶层设计为国家和企业提供安全可信的防护。