XSS
Cross Site Scripting — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника.
Нахождение XSS
Разделим нахождение на несколько пунктов
Поиск параметров Для нахождения параметров можно либо воспользоваться программкой, встроенной в BurpSuite, либо найти все параметры вручную сниффером. Чтобы включить spider'а, нужно правой кнопкой по директории -> Spider this host
В параметры входят не только POST/GET и другие типы запросов! Вот пример, где xss появляется из-за вывода url (чаще всего на 404 страницах) в bWAPP:
Подстановка Для проверки параметров первоначально нужно удостовериться, что код выводится на странице. Что делаем: в каждый параметр вставляем уникальную строку, которой нет на странице и делаем поиск по исходному коду. Пример:
Видим, что есть параметр title (но не забывайте смотреть и пост параметры)
Тогда подставим в него строку 'testtesttest'
.
Видим, что наш текст вывелся - записываем его куда-нибудь и повторяем это действие с другими параметрами. В итоге к этому моменту у нас на руках список параметров, которые нужно продолжать проверять дальше.
Изучение фильтров Теперь начинается самое интересное! Подставляем следующую строку в параметр:
И далее идет разделение на результат:
Отсутствие фильтров
Если у вас текст так и остался неизменным, то мои поздравления - ВЫ нашли XSS!
Убрался <script>
Если у вас вдруг исчез ТОЛЬКО <script>
, то вероятнее всего идет поиск по опасным тегам - но и это в современном мире обходится.
Теперь посмотрим внимательнее - если у вас из строки ...a'<script>'b...
получилась строка ...ab...
то делаем следующее:
В итоге у нас должна получиться строка вида:
Ну и опять же SUCCESS!
Убрались И <script>
И <h1>
В этом случае чаще всего идет прогон по всем известным миру тегам - и тут обойти можно только при некоторых обстоятельствах (одно из них вы можете посмотреть в пунке 'убрались знаки <>')
Исчезли знаки '<'
и '>'
Тут уже интереснее тк зависит от окружения.
В <a href='test'>
и других параметрах в ' или " кавычках
Тут к нам на помощь придут такие параметры, как onload
или onmouseover
. Что будет, если отослать test' onload='alert()' a='
?
А вот что:
В итоге у нас запустится окошко алерта!
В тегах <script>...</script>
Тк рассчитываем, что у нас фильруются только знаки '<'
и '>'
, то почти любой код в яве можно Написать без них - а тем более Дописать.
Возьмем в пример следующий код:
А теперь смотрим, что будет при подстановке test1'; alert(); var b = 'test2
:
В итоге наш код заработает, и при достижении второй строки скрипта появится окошко алерта! P.S.ВАЖНО!!! Если вы ошибетесь в синтаксисе js, то ваш код скорее всего не заработает. Поэтому советую проверять все в консоли.
Большинство символов преобразовались в &g t ; &l t ;
и др В этом случае вся переменная обрабатывается PHP (дополните функции из других яп) функцией под названием htmlspecialchars.
Про нее подробно написано тут: http://php.net/manual/ru/function.htmlspecialchars.php
А вот и пример ее использования (взято с google.com):
В этом случае защиту, увы, пока никак не обойти... пока...
Эксплуатация XSS
Ну нашли мы XSS - и что это нам дало? В этом пункте я приведу некоторые примеры (скорее всего их больше) эксплуатации XSS.
Кража cookies Ну самое известное - это конечно кража чужих куки, с последующей заменой свои куки на куки жертвы и захода в аккаунт. Что требуется для этого
Сниффер
Контакт с жертвой
XSS
Начну с описания сниффера
Сниффер
Обьясню доступным языком. Cниффер (в данном случае) - скрипт, записыващий все обращения к нему (в том числе и полый url).
Например у нас есть на каком то сервере файл site.ru/sniffer.php
, (пример кода позже) который записывает все обращения к нему.
Вот я зашел на site.ru/sniffer.php?testtesttest
- и у него в логах записалось
, где testtesttest - чаще всего куки приписанные. А теперь обьясняю почему на этот список стоит обратить внимание - многие задания с этим связаны на тасковых ctf. Распространенные задания:
Как они проходятся:
Все это время мы разбирали хранимые XSS (когда xss сохраняется на сервере). Вот вам пример задания на НЕ хранимую (когда xss привязывается к url):
Решение такое - же.
CSRF+XSS Опять же вкратце - выполняет за пользователя действия, которые пользователь врят ли бы выполнил в здравом уме (например сделать администратором кого-то). Тут кроме XSS, еще и требуется CSRF уязвимость - про нее почитать можете у нас в другом разделе.
Опять пример:
Решение:
Частные случаи обхода фильтров
Вынес в отдельную часть тк xss по большей части от обхода фильтрации и зависит(она и является обходом фильтров:) (примеры собрал с нескольких сайтов - в разделе статей их напишу)
Обход путем двойного urlencode (bWAPP):
"В качестве обфускации вектора, можно использовать ActionScript через Flash, путём использования переменных и присваивания им значений, которые являются частями xss-кода."
"Использование UTF-7.Заключается данный способ в изменении кодировки символов xss-вектора на UTF-7. Это может сработать в тех случаях, когда в странице не указывается кодировка, и атакующий может заставить страницу испольвоть UTF-7, тем самым, обойти фильтрацию, изменив некоторые из символов UTF-8 на UTF-7."
В статье http://dsec.ru/ipm-research-center/article/bypassing_the_filtering_of_the_uploaded_images_in_a_number_of_web_applications_for_the_implementatio/ рассказывается обход фильтрации с помощью картинки.
http://raz0r.name/news/xss-filters-bypass-on-blackhat/ А вот уже с блекхата:
И на последок - http://www.smeegesec.com/2012/06/collection-of-cross-site-scripting-xss.html Тут вы можете найти список xss пейлоадов для тестирования.
Множество примеров
SHarifCTF 2016 - WEB photoblog
Описание url - http://ctf.sharif.edu:33455/chal/PhotoBlog/d57ad4d0f9afd1f1/ A friend of mine have stolen my cat's picture on his blog. I want to login as admin user on his blog. Do you have any idea?
Решение
Статьи и прочее
Статьи https://github.com/codedokode/pasta/blob/master/security/xss.md https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3 https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 http://forum.antichat.ru/threads/20140/ http://forum.antichat.ru/threads/224582/ http://dsec.ru/ipm-research-center/article/bypassing_the_filtering_of_the_uploaded_images_in_a_number_of_web_applications_for_the_implementatio/
Райтапы NorthSec 2015 - XSS Challenge Writeups http://holyvier.blogspot.ru/2015/05/northsec-xss-challenge-writeups.html
CSAW CTF 2014 - WEB 300 http://wiremask.eu/csaw-ctf-2014-web-300-hashes-writeup/
Тренировки https://xss-game.appspot.com/ http://www.root-me.org/en/Challenges/Web-Client/Javascript-Stored-XSS-1 http://www.root-me.org/en/Challenges/Web-Client/Javascript-Stored-XSS-2
Last updated