Доминируем в dom xss

8

Нихао, %username%!


Я, как скрипткидди со стажем, хотел бы рассказать о интересной софтине от mindedsecurity — DOMinator. Это хоть и не новое, но единственное на данный момент решение для поиска dom based xss динамически (няшный динамический анализатор, который позволяет по феншую проследить за выполнением операций в js). Статические анализаторы (есть в acunetix wvs, burp suite, w3af и других) явно отстают от того, что можно найти с помощью доминатора, вот поэтому я хотел бы написать небольшой обзор, взвесить плюсы и минусы, показать пару примеров.

 

Внимание, это плагин. Ага, хитровыдуманный такой плагин для firefox,  и огнелис-то не простой, а специальная сборка — Aurora 8. Из фич, например, отсутствие urlencode  (ну это короч когда вместо site/здарова получается site/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82) поэтому проблем с кавычками в url не будет. А это неплохо так помогает имитировать всеми любимый Internet Explorer и сразу запиливать векторы под него.
Сам плагин — симбиоз Firebug с дополнительной вкладкой под анализатор DOMinator’а, в логе которого и наблюдаем подозрительные места в js.

dom 300x189 Доминируем в dom xss

После запуска чудо-плагина и открытия страницы — url можно пофаззить кнопочкой play. Доминатор тем временем засунет переменные, интересные ему в url, и начинает следить за реакцией, кто что берёт и как использует. В логах плагина можно наблюдать наш подозрительный адрес и возможные баги, которые определяются как alert, warning и info по степени опасности. В вкладке Issue Description можно почитать, чего-же опасного обнаружил DOMinator, и как это можно использовать.

Вот демонстрация возможностей на примере vk.com

Сразу скажу, что сам он не будет вставлять супер-крутые вектора, а даст подумать самим, встроенный JS Pretty Print поможет разобраться в сложном js коде. Вкладка Source History покажет, как изменялось значение переменной на странице, а Call Stack — тыкнет носом на строчку кода, где эта переменная вызывается. Супер? Не поспоришь.

В идеале — xss будет выглядеть как-то так, его в принципе можно обнаружить и статичным анализатором :

dom xss1 300x143 Доминируем в dom xssmail dom xss 300x155 Доминируем в dom xss

 

А вот теперь о плохом. Огромные утечки памяти, циклы, зависания, краши. Софт ведет себя как отличница на вечеринке, ломается и не хочет слушаться. Иногда не видит явные и очевидные вещи, типа классических dom based. Со своей работой он справляется, пусть и придется несколько раз его перезапустить, да с «тяжёлыми» js он будет очень долго думать, а то и займет всю память и зависнет. Но на фоне отсутствия аналогов, это простимо.

 

А теперь о цене. Чтобы заполучить столь ценный софт, нужно заплатить 1000 баксов евро. Дороговато будет. Но в умелых руках его стоимость быстро отобьётся, хотя и не каждый багхантер может купить.
Получается такое двоякое впечатление, софт ведет себя как будто он на альфа-тестировании, был бы он бесплатный — цены бы ему небыло. А получается, что цена ему есть. Но в любом случае он работает, пусть и не идеально.

Купить или запросить демку можно ТУТ.

Плюсуем с XSS

0

Приветствую, %username%!

Не слышал о таком сервисе как Pluso? Если нет, вот пост на хабре.

Прикольные кнопки, которые можно настроить и воткнуть на любой сайт. К слову, из-за моей лени они используются и на моём бложике. Так вот.

После того, как подгружаются кнопки можно увидеть примерно следующий код

<a href="http://bo0om.ru/" title="Twitter" class="pluso-twitter"></a>

И как-то руки не доходили проверить, а что будет, если в url содержится символ двойной ковычки? Ну как что. Конечно xss!

К примеру, ссылка со страницей /»><img src=q onerror=alert(123)>.html заставит тег <a> закрыться и выполнить событие onerror у картинки. Но это как-то не кошерно, но тут до меня дошло что можно же использовать параметры!

Вот, например, http://ringcloud.ru/?"><img src=q onerror=alert("zdarova")> — заставит сайт ringcloud поздороваться icon smile Плюсуем с XSS

pluso 300x165 Плюсуем с XSS

XSS при помощи Pluso

По данным самих же pluso — охват за 24 часа: 96 931 домен. То есть сейчас уязвимы почти 100,000 сайтов. Pluso на связь не выходят (несколько раз пытался), так что пусть это будет на их совести.
Из минусов, в современных браузеров <«»> будет в url-кодировке, поэтому реально такое юзать только в Internet Explorer. Ну да ладно icon smile Плюсуем с XSS

Учим провайдера пинговать

9

Привет %username%.

Некоторое время назад была найдена прикольная бага на сайте Ростелекома, а именно произвольное выполнение команд операционной системы. На одном из сайтов провайдера была такая штука как ping и traceroute удаленного узла, но не фильтровались юзерские данные. Ну не сложилось у ростелекома с пингом, не на роутерах, не на сайтах.

ростелеком 300x258 Учим провайдера пинговать

Как эта хрень работает? А просто php скрипт выполняет команду ping $сайт и выводит ответ на страницу. Но дело в том, что вместо команды можно записать список команд.

Список команд — это последовательность команд, разделенных точками с запятой ; , амперсандами & , символами «и-если» && или «или-если» || .

Как раз точка с запятой вызывает последовательное выполнение предыдущей команды. Поэтому если указать в качестве сайта ya.ru;echo 123 — выполнятся две команды, пропингуется яндекс и выведется число 123.
Вот, можешь даже глянуть небольшой видос.

Таким образом пара команд, а именно ls -l, чтобы показать листинг директорий и файлов (и права на них), и echo "злой-злой-код" >> /tmp/shell.php, чтобы записать шелл в доступный для записи каталог. А каталогов там было несколько, tmp, font и i.

rostelecom 300x115 Учим провайдера пинговать

Знай свои права

А это ещё один минус, неправильные права от пользователя daemon. Вот зачем скрипту, который делает пинг, возможность записи файлов?)
Ну поржали, а багу что-то не фиксят и не фиксят. Я писал в службу поддержки, создавал обращение, писал на support по почте, а реакции (тем более ответа) нет… В итоге я залил шелл, нашел админов в базе данных (баз было много), написал им на почту. Тишина. Ну что делать, нужно исправлять.
Теперь нужно было найти уязвимый код, почему-то я думал что там будет system() или exec(), а оказалось, что зло таилось в функции popen().

$ip = $_POST['ip'];
if (isset($_POST['tracert'])) {
$cmd = '/bin/traceroute';
}
if (!empty($cmd)) {
$f = popen("$cmd $ip", 'r');
while (!feof($f)) {
$buf .= fgets($f);
}
pclose($f);
}

Но вот незадача, редактировать-то нельзя! В руках у нас web-shell, linux с ядром 2.6.9 и уязвимый скрипт. Что будем делать?
А будем повышать привилегии. Благо версия kernel’а стара как смерть и под нее много различных эксплойтов.

rostelecom2 300x72 Учим провайдера пинговать

searchsploit, а найди-ка мне эксплойты

В итоге я поместил сплойт, который имел расширение *.c в папку /tmp/ и скомпилировал его командой
gcc sploit.c -o exploit
где sploit.c имя входного файла, а exploit — выходного. Теперь, чтобы запустить его достаточно выполнить ./sploit, что я и сделал. И у меня нахрен всё повисло.

rostelecom sploit 300x223 Учим провайдера пинговать

Эксплойт на повышение привилегий

Возможно, это из-за криворукости, но сплойт повис, пришлось убить его и попробовать другой. Другой не захотел компилироваться (возможно там были намеренные ошибки, даже не смотрел), другой не захотел работать, в итоге был найден тот самый, который дал мне права root и я удалил все к херам исправил уязвимость отфильтровав эти спецсимволы. Потом я в базе нашёл чувака среди админов, чья почта была на mail.ru, узнал его имя и дату рождения, нашёл в vk.com, постучался в личку, мы чутка пообщались и шелл был удалён. А опыт остался icon wink Учим провайдера пинговать
Такой вот пятничный пост, %username%. Не болей!

Атака на фишинг

0

Нихао, %username%!

Оригинал этой статьи был опубликован на форуме coru.ws, материал был взят после согласования с администрацией.

Фишинговые атаки очень распространены и иногда это единственный способ хоть как-то подобраться к доверчивому пользователю. По данным  Kaspersky Lab, они регистрируют около 113 500 фишинговых атак в месяц и как-то довелось наткнуться на одну из них. На почту пришло письмо, с фэйковым документом, письмо не целевое и явно рассчитана на хомячков.

1 Атака на фишинг

Фэйковое приложение

Приложение к договору, к какому нафиг договору?)) У меня такие письма сразу же попадают в спам без осмотра, но это письмо удостоилось внимания.

Текст письма:

Добрый день!
Во вложении документ, который вы просили поппавить.
Если все устраивает — подписываем. Мoжем прислaть курьера

C уважением, Анна Черкасова
Руководитель отдела документооборота
+7(495)244264

Интересное было то, что была прикреплена картинка, стилизованное под документ,  ссылка которого вела на левый домен с скриптом b64vr.php, который в параметре принимал base64-закодированный url на сам фэйк.

Сам скрипт вёл на mail-google.com-mail-5.u-0-inbox.pw, в котором была фэйковая форма авторизации гугла. Вообще, над скриптом можно было всячески издеваться, например, там были xss’ки.

2 300x219 Атака на фишинг

Фэйковая авторизация

 

 

При вводе пароля ты остаёшься на этом же сайте, где тебе доступен документ. Хотя сам документ не несет никакой смысловой нагрузки и был сделан для отвода глаз. Однако, был сделан дополнительный функционал, который позволяет скачать этот документ.

3 300x107 Атака на фишинг

Фэйк стилизованный под google docs

Ссылка для скачивания формировалась как-то так:
/view?account=ЖЕРТВА%40gmail.com&letter=Файл&act=down&folder=view&hl=ru&ticket=Идентификатор_письма

и нам отдаётся для скачивания оригинал документа

4 212x300 Атака на фишинг

Скачали вот такой документ

Но дело в том, что можно выйти из директории, если указать в имени файла ../../../ или их же в urlencode. Путём небольшого фаззинга мы получаем полноценную читалку и читаем /etc/passwd, где список юзеров данного хостинга.

5 300x149 Атака на фишинг

Спасибо burp suite за это

Факт #1 После этого приходили ещё письма, с другими доменами, и все фэйки хостятся на sweb.ru

Так как на этом серваке был phpinfo (http://vh199.sweb.ru/phpinfo.php), первым делом решил прочитать его.
http://mail-google.com-mail-5.u-0-inbox.pw/view?account=putinvova%40gmail.com&letter=%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fvar%2fwww%2flocalhost%2fhtdocs%2fphpinfo.php&act=down&folder=view&hl=ru&ticket=1404890449

Сервер отдал файл с содержимым <?php phpinfo(); ?>

Осмотрев сайт получше, получаем список файлов, из которых состоит данный фэйк, интересующий нас файл был /templates/view.php

Так как это хостинг, помимо домашней директории нужно «зайти» в папочку public_html, а домашние директории мы узнаем из /etc/passwd, который вытащили выше.

 

Факт #2 У каждого пользователя в /etc/passwd помимо логина указана имя и фамилия, на кого зарегистрирован хостинг. Они обязательны для регистрации, но у пользователя где располагались фэйки — их не было.

 

После прочтения исходника фэйка можно посмотреть, куда он сохраняет и отправляет логи, найти там десяток-другой взломанных почтовых ящиков и все такое прочее.

 

Взлом email’ов — прибыльный бизнес, сотни людей ежедневно заказывают взлом мыл, цены на которые в среднем от 5 до 10 тысяч рублей за 1 email, просто нужно быть более внимательным, %username%, внимательно наблюдай куда ты переходишь и не вводи свои пароли налево и направо icon wink Атака на фишинг
Бывай)

Вверх