php 2018 5711,使用 Docker 测试 PHP CVE-2018-5711 漏洞

漏洞说明

编号为PHP CVE-2018-5711的漏洞能让运行PHP的服务器瞬间宕机,原理是gd库在遇到特定非法格式的gif图片时会耗尽CPU,影响范围如下:

PHP 5 < 5.6.33

PHP 7.0 < 7.0.27

PHP 7.1 < 7.1.13

PHP 7.2 < 7.2.1

其中列出的都是该系列的最高版本,也就是说几乎所有使用gd库的PHP都需要为此更新到最高版本。

下面介绍这个漏洞在Docker中验证的方法,需要强调,这里提供了非法格式的git图片文件,如果上传到没有更新的服务器,不排除服务器宕机的可能,造成经济损失将违反相关法律。

PHP 7.2.0版本中的漏洞

下载代码

git clone https://github.com/huzhenghui/Test-7-2-0-PHP-CVE-2018-5711.git

进入项目文件夹

cd Test-7-2-0-PHP-CVE-2018-5711

构建Docker镜像

docker build -t test-7-2-0-php-cve-2018-5711 .

构建成功后查看PHP版本

docker run --rm test-7-2-0-php-cve-2018-5711 -v

可以看到

PHP 7.2.0 (cli) (built: Jan 4 2018 01:20:58) ( NTS )

Copyright (c) 1997-2017 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

查看PHP中是否包含GD库

docker run --rm --entrypoint /bin/bash test-7-2-0-php-cve-2018-5711 -c 'php -m | grep -I gd'

如果包含则显示

gd

运行验证程序

docker run --rm test-7-2-0-php-cve-2018-5711 -r '"imagecreatefromgif(\"poc.gif\");"'

会看到程序卡死,由于Docker限制进程使用的系统资源,可能不会死机,不过需要使用docker kill命令杀死相关进程。

PHP 7.2.1版本中已经修好了

下载代码

git clone https://github.com/huzhenghui/Test-7-2-1-PHP-CVE-2018-5711.git

进入项目文件夹

cd Test-7-2-1-PHP-CVE-2018-5711

构建Docker镜像

docker build -t test-7-2-1-php-cve-2018-5711 .

构建成功后查看PHP版本

docker run --rm test-7-2-1-php-cve-2018-5711 -v

可以看到

PHP 7.2.1 (cli) (built: Jan 8 2018 23:13:17) ( NTS )

Copyright (c) 1997-2017 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

查看PHP中是否包含GD库

docker run --rm --entrypoint /bin/bash test-7-2-1-php-cve-2018-5711 -c 'php -m | grep -I gd'

如果包含则显示

gd

运行验证程序

docker run --rm test-7-2-1-php-cve-2018-5711 -r '"imagecreatefromgif(\"poc.gif\");"'

会看到程序报错

Warning: imagecreatefromgif(): 'poc.gif' is not a valid GIF file in Command line code on line 1

Dockerfile说明

两个示例的Dockerfile的差别仅在于版本,完整的Dockerfile如下:

FROM php:7.2.0

MAINTAINER huzhenghui hu@daonao.com

RUN apt-get update && \

apt-get install -y libpng-dev xxd && \

docker-php-ext-install gd && \

curl https://raw.githubusercontent.com/huzhenghui/Test-7-2-0-PHP-CVE-2018-5711/master/poc -o /poc && \

xxd -r /poc /poc.gif

首先设置基础镜像

FROM php:7.2.0

维护者信息

MAINTAINER huzhenghui hu@daonao.com

更新包管理器

apt-get update

按装包,其中libpng-dev用于编译gd扩展,xxd用于从文本文件生成非法格式文件,这种文件不适合原文在网络传播,需要转一下码。

apt-get install -y libpng-dev xxd

安装gd扩展,此处使用docker提供的工具

docker-php-ext-install gd

下载示例文件转码后的文件

curl https://raw.githubusercontent.com/huzhenghui/Test-7-2-0-PHP-CVE-2018-5711/master/poc -o /poc

还原示例文件

xxd -r /poc /poc.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值