Статья XSS Уязвимость. Часть 1

Приветствую, в этой статье хочу детально описать XSS-Уязвимость.

Данная серия мини-статей будет направлена именно на практику.

Но начнем немного с теории:

Что такое XSS?

XSS (англ. Cross-Site Scripting - "Межсайтовый скриптинг") - это внедрение вредоносного кода на страницу сайта. Когда вредоносный код выполняется в браузере жертвы, злоумышленник может полностью скомпрометировать пользователя.

Какие бывают типы XSS?

  1. Reflected XSS - вредоносный скрипт исходит из текущего HTTP-запроса.
  2. DOM-Based XSS - уязвимость существует в коде на стороне клиента, а не на стороне сервера
  3. Stored XSS - вредоносный код внедряется в бд/сервер.
Бывают активные и пассивные XSS:
  • Активный - злоумышленнику нет необходимости подключать к атаке жертву, жертвой становятся все посетители страницы.
  • Пассивный - переход по ссылки, нажатие не на ту кнопку и т.п. Тут уже нужны навыки социальный инженерии.

В первой части поговорим о Reflected XSS:

Reflected XSS - самая простая XSS-Уязвимость. Данный уязвимость возникает, когда данные, которые передаются в url запросе никак не проверяются. Пример:
  1. Злоумышленник внедряет в url вредоносный код, позволяющий просматривать куки файлы и т.п., и отправляет жертве.
  2. При переходе по ссылке пользователь может ничего и не заметить, но его куки украдут.
  3. Код отправляет куки злоумышленнику, а дальше уже сами понимаете что происходит.
Код:
https://mywebsite.com/article?id=2.
Код страницы:
Код:
<h2>Статья №2</h2>
А что будет, если мы попробуем вставить простейший <script>alert()</script>?
Код:
https://mywebsite.com/article?id=<script>alert()</script>
Перейдем по такому url и увидим всплывающее окно.

Код страницы после внедрения:
Код:
<h2>Статья: <script>alert()</script<p2>

Попробуем решить лабу на с WebSecurityAcademy.

У нас есть вот такой сайтик

1617309018778.png


Пробуем вести рандомное значение в поле поиска и можем увидеть уже знакомую картину

1617309152661.png


Есть какой-то параметр search, в который подставляется значение из строки поиска.

Пробуем вставить простейший пейлоад <script>alert()</script>

1617309253873.png


Получаем вот такую картину. Мы успешно использовали простейшую XSS-Уязвимость, а значит сюда можно вставить и более опасный/вредоносный код, например украсть :unsure:

В данной статье мы разобрали самую простую XSS-Уязвимость. Дальше будет только интереснее и сложнее.

Площадки для практики
P.S. Этого хватит для начала, конечно же площадок помимо этих очень много

Теория
Не используйте полученные знания из данной серии курсов на реальных сайтах ( баг баунти не в счет )
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!