挖洞经验 | HackerOne平台ImageMagick漏洞导致服务器内存信息泄露
字数 1088 2025-08-18 11:37:45
ImageMagick漏洞(CVE-2017-15277)分析与利用教学文档
漏洞概述
CVE-2017-15277是ImageMagick图像处理组件中的一个内存信息泄露漏洞,影响版本为ImageMagick 7.0.6-1和Graphicsmagick 1.3.26。该漏洞由安全研究人员Emil Lerner于2017年10月发现。
漏洞原理
漏洞存在于coders/gif.c文件中的ReadGIFImage函数,当处理不具备全局或本地调色板的GIF图片时,存在未初始化的调色板问题。攻击者可以构造特殊的GIF图片,利用未初始化的调色板机制间接获取服务器内存数据。
漏洞影响
成功利用此漏洞可能导致以下信息泄露:
- 服务器路径信息
- 操作系统信息
- 软件版本信息
- 可能的邮件内容
- Cookie信息
- SQL查询语句
- 文件目录结构
- 堆栈跟踪信息
漏洞利用步骤
1. 准备漏洞利用工具
下载Emil Lerner公布的漏洞利用包:
https://github.com/neex/gifoeb
2. 生成漏洞利用图片
使用以下命令创建512x512像素的GIF漏洞利用图片:
./gifoeb gen 512x512 dump.gif
注意:
- 可以修改生成图片的后缀名(如.jpg、.tiff、.bmp等)
- 可以创建不同像素尺寸的漏洞利用图片
3. 上传漏洞利用图片
寻找目标系统中使用ImageMagick处理图片的功能点,例如:
- 用户头像上传
- 图片上传功能
- 文件处理接口
4. 收集服务器生成的预览图片
将服务器处理后的不同像素的预览图片保存到本地文件夹中。
5. 恢复内存信息
使用以下命令从预览图片中提取内存信息:
for p in previews/*; do ./gifoeb recover $p | strings; done
漏洞利用建议
-
版本检查:最新版ImageMagick已修复此漏洞,上传漏洞利用图片只会生成黑色预览图
-
信息评估:检查获取的信息是否包含有价值的内容:
- 文件目录
- 操作系统版本
- 其他服务器相关信息
- 如果只有堆栈跟踪信息(如
{{{*a/!a^a;bb(b|}),需要进一步测试
-
图片构造技巧:
- 尝试不同分辨率和扩展名的图片
- 灰色像素的图片通常包含更多信息
- 效果因网站和ImageMagick版本而异
漏洞修复方案
升级ImageMagick组件至最新版本。
实际案例
在HackerOne平台的测试中:
- 成功获取了操作系统、文件目录和堆栈跟踪信息
- 漏洞被分类为内存泄露漏洞
- 获得了500美元的漏洞奖励
参考资源
- 原始漏洞利用代码:https://github.com/neex/gifoeb
- 漏洞发现者:Emil Lerner
- 漏洞上报时间:2018年1月7日
免责声明
此文档仅用于技术研究和教育目的,严禁用于非法用途。在实际测试前,请确保获得目标系统的授权。