CVE-2018-16323 是处理 XBM 图像时的一个内存泄漏漏洞。当 XBM 图像被转换为另一种图像类型后,你可以从图像数据中提取泄漏的内存字节。
由 d4d 发现。
一个用于生成 CVE-2018-16323 PoC 的非常简单工具。目录 samples 包含一些预生成的 PoC,便于使用。要使用此工具,你应该安装 imagemagick:
apt-get -y install imagemagick
并检查它:
convert -v
任何版本都适用。
Usage poc generator: ./XBadManners.sh gen WIDTHxHEIGHT NAME.xbm [minimal]
Example gen: ./XBadManners.sh gen 512x512 poc.xbm
Example gen: ./XBadManners.sh gen 1024x1024 poc_minimal.xbm minimal
Usage result recovery: ./XBadManners.sh recover SAVED_PREVIEW.png|jpeg|gif|etc
Example recovery: ./XBadManners.sh recover avatar.png
minimal 模式允许你生成尽可能小的 XBM 主体,以便粘贴到 BurpSuite 或任何你想要的地方。Minimal 模式已经过测试,运行良好。在此模式下你可以设置任意宽度和高度。
请注意,你可以使用单个图像提取大量内存。唯一的限制是后端生成图像的最大尺寸限制。
你可以尝试恢复 preview.png。如果在输出中看到可读的文字,那就说明一切正常。
./XBadManners.sh gen 512x512 poc.xbm./XBadManners.sh recover result.png如果每次上传的预览变化明显,那说明效果很棒。
恢复模式是为快速检查而创建的,适用于任何 ImageMagick 支持的图像格式,但仅针对 png、jpeg 和 gif 进行过测试。你可以通过修改脚本来调整从图像中提取内存的逻辑(脚本简单但有点丑陋)。

XBM 是一种黑白格式。因此,任何结果看起来都会有点像斑马(如果你想象力足够丰富的话)。基本上,越黑 == 提取的数据越多。
在该提交之后和该提交之前的每个 ImageMagick 构建版本都容易受到攻击。