作者:知道创宇实验室
时间:年12月19日
0x00背景年12月10日,ThinkPHP官方发布《ThinkPHP5.*版本安全更新》,修复了一个远程代码执行漏洞。由于ThinkPHP框架对控制器名没有进行足够的检测,导致攻击者可能可以实现远程代码执行。
知道创宇实验室漏洞情报团队第一时间开始漏洞应急,复现了该漏洞,并进行深入分析。经过一系列测试和源码分析,最终确定漏洞影响版本为:
ThinkPHP5.0.5-5.0.22
ThinkPHP5.1.0-5.1.30
在漏洞曝光后的第一时间,知道创宇实验室积极防御团队积极排查知道创宇云安全的相关日志,发现该漏洞最早从年9月开始,尚处于0day阶段时就已经被用于攻击多个虚拟货币类、金融类网站。
在漏洞披露后的一周时间内,实验室内部蜜罐项目也多次捕获到利用该漏洞进行攻击的案例,可以看到该漏洞曝光后短短8天就被僵尸网络整合到恶意样本中,并可以通过蠕虫的方式在互联网中传播。
由于该漏洞触发方式简单、危害巨大,知道创宇实验室在研究漏洞原理后,整理攻击事件,最终发布该漏洞事件报告。
0x01漏洞分析1.1漏洞成因该漏洞出现的原因在于ThinkPHP5框架底层对控制器名过滤不严,从而让攻击者可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell漏洞,本文以ThinkPHP5.0.22为例进行分析。
通过查看手册可以得知tp5支持多种路由定义方式: