Cross site scripting (XSS)
Тип инъекций который вызывает выполнение внедренного кода на языках JS, VBS, Flash и CSS. Так же как и XEE, XSS имеет место быть в тех web приложениях где пользовательский ввод обрабатывается в чистом виде. Различают следующие основные применения XSS payload:
- Вызов popup окон через функцию
alert()
- Изменение HTML/DOM объектов на странице через
document.write
- XSS keylogger
- Port scanning
Различают несколько видов XSS:
1. Stored XSS
Самый коварный тип XSS.
Для реализации нет необходимости взаимодействия с пользователем.
Сохраняет внедренный код в БД приложения, таким образом этот код выполняется при каждом открытии страницы пользователями.
2. Reflected XSS
Самый часто используемый тип XSS.
В отличии от stored XSS, вредоносный код в reflected XSS является частью запроса пользователя. Следовательно для реализации атаки, нужно заставить пользователя воспользоватся ссылкой.
3. DOM-based XSS
В отличии от reflected XSS внедренный код не выполняется сразу, а запускается только при обработке определенного элемента на странице. Оттуда и название которое говорит о том, что инъекция привязывается к DOM объекту.
Практические примеры XSS
- Кража пользовательских cookies (stored XSS).
- Атакающий разворачивает подконтрольный ему http сервер. Можно использовать
- На страницу целевого приложения внедряется следующий JS код:
- Атакующему летят GET запросы с cookie.
- Profit!
- Пример показывающий, что в качестве payload могут выступать и html теги:
Рекомендации по поиску XSS
Первым делом - обращай внимание на формы. Пробуй вводить туда код скрипта, закрывающие теги, Смотри на результат через DevConsole.