как XSS атака затрагивает других пользователей
Просмотрел различные материалы по XSS атаке (в том числе и многие вопросы здесь, на stackoverflow)
но так и не понял принцип работы такой атаки
В примерах из описания приводят пример по типу
http://some-url.com/xss?q=<script>alert(123)</script>
Где вред может привести форма или url без экранирования символов
Но не понимаю как этот код внедряется в браузеры других пользователей?
В чём отличие от той же "игры" данными в инспекторе разработчика?
Ответы (2 шт):
Вроде тут в подзаголовке Общая классификация XSS очень простое объяснение XSS атаки. Простите, если уже читали отсюда и всё равно не стало понятно)
Я в своё время тоже долго не мог понять, как в итоге пострадает жертва. Проблема многих описаний в том, что авторы сосредотачиваются на опасности, последствиях и т. д.
Постараюсь привести наглядный пример использования XSS уязвимости.
Допустим есть сайт https://weak.com
Допустим, если зайти на https://weak.com/search?q=123, то мы увидим страницу поиска и текст "найдено ... результатов по запросу '123'".
Т. е. все, что передаётся в адресной строке в параметре q выводится на странице поиска.
Т. е. на сайте сейчас например такая разметка:
<div>
"найдено ... результатов по запросу '123'"
</div>
Следовательно, если передать в параметре q что-то типа такого: q=<script>alert(1)</script>, то ВСЕ, КТО ПЕРЕЙДЁТ ПО ССЫЛКЕ https://weak.com/search?q=<script>alert(1)</script>
Получат следующий HTML:
<div>
"найдено ... результатов по запросу '<script>alert(1)</script>'"
</div>
Хакеру нужно не только найти уязвимость, но и как-то заманить пользователя по ссылке.
Как только пользователь переходит по ссылке, код alert(1) будет выполнен в браузере пользователя от имени пользователя.
Опасность в том, что если пользователь был авторизован на сайте https://weak.com, то вы можете слать любые запросы на сервер с куками пользователя. Сервер не может отличить легитимные запросы от нелегитимных.
То, что я описал выше - это "отражённый" (reflected) XSS. Т. е. от хакера требуется заманить жертву по специальной ссылке.
Существует ещё так называемая "хранимая" (stored) XSS. Механизм срабатывания и последствия такие-же, как и при reflected XSS, но путь попадания отличается. При stored XSS хакер один раз сохраняет в системе свой код, а потом система сама рассылает этот код пользователям. Например, хакер пишет вредоносный комментарий и все, кто его откроет, выполнят у себя в браузере код хакера.