ОРГАНИЗОВАТЬ ТУННЕЛЬ ЧЕРЕЗ XSS

Итак, опять представим себе ситуацию. Есть сервер с административным веб-интерфейсом, есть админ и есть мы, а хотим мы поовнить данный сервачок. Предположим, что каких-то сверхкритичных уязвимостей на вебе найдено не было, а только, скажем, XSS’Ka. И вроде бы все отлично: хватай ХББ’кой куки, и вперед! Но как бы не так.Как минимум,проблемой может стать установленный сервером для кукисов флаг HTTPOnly, который не даст нам возможность вынуть их из браузера админа. Другой проблемой может стать фильтрация по IP доступа к веб-серверу или к самой админке. И что же тогда делать? Организовать туннель через XSS. Что бы там ни говорилось о продвинутом использовании XSS’ok, но самым мощным payload’oM, я думаю, является как раз XSS-туннель. Зачем нам аутентификационные куки, когда мы можем напрямую выполнять какие-то действия на сайте от имени нашей жертвы?
Но постой. Давай посмотрим, что же такое XSS-туннелинг. Если говорить в общем, то это специальный JavaScript, который подгружается ХББ’кой нашей жертве. Далее этот JS открывает какую-нибудь страницу на атакуемом сайте и полностью ее нам пересылает. Мы видим ее в своем браузере, кликаем, куда нужно, но наши действия не выполняются браузером, а передаются обратно в этот JS, который и произведет необходимые действия на атакуемом сайте, но от имени жертвы. Причем жертва об этом не будет догадываться.
Описание, конечно, очень общее, для понимания идеи. На практике все происходит несколько сложнее,количество элементов несколько больше, и это мы сейчас рассмотрим на примере BeEF.
BeEF — это специальный фреймворк для проведения мощных и глубоких атак на браузеры с использованием XSS’ok. На самом деле, может быть, не очень хорошо получается, что описывать такую прекрасную вещь, как BeEF, мне приходится в несколько строк, ведь она заслуживает отдельной статьи. Но я думаю, что в следующих выпусках мы это поправим.
Итак, BeEF представляет собой трехкомпонентную систему: 1. Браузеры жертв — hoocked browsers. Браузеры, в которые нам удалось подгрузитьсвой, аточнее BeEF’a, JavaScript-код. Ядро BeEF’a — главное связующее и всеобрабатывающее звено. Интерфейс BeEF’a, к которому атакующий подключается, используя свой браузер, и через который он может«управлять» жертвами. На самом деле не совсем управлять, а скорее за пускать те или иные атакующие модули.
Если посмотреть на это в процессе, то атакующий с помощью XSS’ok или просто заманив жертву себе на сайт, подгружает ей в браузер JS BeEF’a. Данный JS «устанавливает соединение»  с ядром фреймворка и ждет от него команд [систематически стучится]. Атакующий через интерфейс может указать действие для какого-нибудь из браузеров жертв, выполнить сканирование портов например. Ядро, получив от атакующего команду, переправит к жертве еще дополнительный кусок JS, который исполнит указанную команду (то есть сканирование портов], а результат отправится обратно в ядро. Кроме сканирования портов, можно в любой момент подгрузить какой-нибудь эксплойт, например, и захватить контроль над тачкой. На самом деле это очень мощная штука. Получается, что люди как бы садятся на крючок…

Но вернемся к туннелю. Одним из атакующих модулей BeEF’a является Tunnel Proxy (aka XSS-туннель].
Для того чтобы сделать XSS-туннель, нам потребуется прописать в нашем браузере специальный прокси-сервер от BeEF’a (по умолчанию 127.0.0.1, порт 6789). После этого все клики в нашем браузере (то есть HTTP-запросы! будут обрабатываться этим прокси. Данный прокси, получая запрос от атакующего, модифицирует его специальным образом и переправляет JS модулю BeEF’a в браузере жертвы. Этот модуль выполняет запрос на атакуемый сервер, но от имени заХЗБ’енной жертвы. Результаты запроса (HTML-страничка! получаются этим JS-модулем BeEF’a и переправляются обратно в ядро BeEF’a. Оттуда данные конвертируются и передаются на BeEF-прокси, который, в свою очередь, отображает страницу для браузера атакующего. То есть фактически атакующий видитто, что «видит» жертва. Далее атакующий может выполнить еще какое-то действие, например ввести какую-нибудь форму и отправить ее. Все эта операция повторится, JS BeEF’a отправит от имени жертвы данный запрос, и результаты его попадут обратно атакующему.

Ваш отзыв

Карта
rss
Карта