挖洞经验 | 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

漏洞利用建议

  1. 版本检查:最新版ImageMagick已修复此漏洞,上传漏洞利用图片只会生成黑色预览图

  2. 信息评估:检查获取的信息是否包含有价值的内容:

    • 文件目录
    • 操作系统版本
    • 其他服务器相关信息
    • 如果只有堆栈跟踪信息(如{{{*a/!a^a;bb(b|}),需要进一步测试
  3. 图片构造技巧

    • 尝试不同分辨率和扩展名的图片
    • 灰色像素的图片通常包含更多信息
    • 效果因网站和ImageMagick版本而异

漏洞修复方案

升级ImageMagick组件至最新版本。

实际案例

在HackerOne平台的测试中:

  • 成功获取了操作系统、文件目录和堆栈跟踪信息
  • 漏洞被分类为内存泄露漏洞
  • 获得了500美元的漏洞奖励

参考资源

  • 原始漏洞利用代码:https://github.com/neex/gifoeb
  • 漏洞发现者:Emil Lerner
  • 漏洞上报时间:2018年1月7日

免责声明

此文档仅用于技术研究和教育目的,严禁用于非法用途。在实际测试前,请确保获得目标系统的授权。

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公布的漏洞利用包: 2. 生成漏洞利用图片 使用以下命令创建512x512像素的GIF漏洞利用图片: 注意 : 可以修改生成图片的后缀名(如.jpg、.tiff、.bmp等) 可以创建不同像素尺寸的漏洞利用图片 3. 上传漏洞利用图片 寻找目标系统中使用ImageMagick处理图片的功能点,例如: 用户头像上传 图片上传功能 文件处理接口 4. 收集服务器生成的预览图片 将服务器处理后的不同像素的预览图片保存到本地文件夹中。 5. 恢复内存信息 使用以下命令从预览图片中提取内存信息: 漏洞利用建议 版本检查 :最新版ImageMagick已修复此漏洞,上传漏洞利用图片只会生成黑色预览图 信息评估 :检查获取的信息是否包含有价值的内容: 文件目录 操作系统版本 其他服务器相关信息 如果只有堆栈跟踪信息(如 {{{*a/!a^a;bb(b|} ),需要进一步测试 图片构造技巧 : 尝试不同分辨率和扩展名的图片 灰色像素的图片通常包含更多信息 效果因网站和ImageMagick版本而异 漏洞修复方案 升级ImageMagick组件至最新版本。 实际案例 在HackerOne平台的测试中: 成功获取了操作系统、文件目录和堆栈跟踪信息 漏洞被分类为内存泄露漏洞 获得了500美元的漏洞奖励 参考资源 原始漏洞利用代码:https://github.com/neex/gifoeb 漏洞发现者:Emil Lerner 漏洞上报时间:2018年1月7日 免责声明 此文档仅用于技术研究和教育目的,严禁用于非法用途。在实际测试前,请确保获得目标系统的授权。