
Инструмент для CVE-2018-16323
CVE-2018-16323 — утечка памяти при обработке XBM-изображений. После преобразования XBM-изображения в другой формат можно извлечь байты утёкшей памяти из данных изображения.
Обнаружена d4d.
Довольно простой инструмент для генерации PoC для CVE-2018-16323. Каталог 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 после этого коммита и до этого коммита уязвима.