使用 Docker 测试 PHP CVE-2018-5711 漏洞
2018-02-01 23:33
951 查看
漏洞说明
编号为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[/code]
进入项目文件夹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[/code]
进入项目文件夹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
相关文章推荐
- CVE-2018-5711:PHP GD库拒绝服务漏洞
- PHP载入GIF图像造成服务器宕机(CVE-2018-5711)的漏洞复现
- CVE-2018-18320 - 华硕路由器 Merlin.php 命令执行漏洞
- PHP CVE-2018-5711 - Hanging Websites by a Harmful GIF(Dos)
- CVE-2018-18319 - 华硕路由器 Merlin.php 代码执行漏洞
- 使用Docker如何搭建Web漏洞测试环境?
- 使用Metasploit测试最新的IE8漏洞(CVE-2012-1875)
- 使用Metasploit测试最新的IE8漏洞(CVE-2012-1875)
- 使用Docker搭建Nginx整数溢出漏洞(CVE-2017-7529)及Python PoC验证
- 使用Docker搭建Web漏洞测试环境
- 测试php是使用pdo方式连接mysql
- php操作memcache的使用测试总结
- php操作memcache的使用测试总结
- Linux下PHP使用Oracle客户端测试
- (PHP)使用Behat和Mink对Web应用做BDD(行为测试驱动开发)
- 在生产环境中使用 php 性能测试工具 xhprof
- php操作memcache的使用测试总结
- php操作memcache的使用测试总结
- PHP向右侧拉菜单,测试使用中