На странице
Reflected XSS с большинством тегов и атрибутов заблокированными
Лаборатория
Reflected XSS into HTML context with most tags and attributes blocked · Practitioner
Решение
Из описания лабы понимаем, что скорее всего надо будет использовать Burp Intruder для попытки найти тег вне фильтров WAF. Закидываем в поле поиска наудачу <svg> — «Tag is not allowed».
Ладно, копируем запрос в Intruder, ставим переменную на место значения в параметре search. Идём в чит-шит PortSwigger, Copy tags to clipboard, эти 143 тега вставляем в поле нагрузок. Пуск.
Наши кандидаты — xss и body.
Окэ, попробуем отыскать разрешённые атрибуты у body.
В чит-шите находим body, Copy events to clipboard. Добавляем в Intruder. Но немного меняем нагрузку:
GET /?search=<body §> HTTP/2
Из интересных вариантов: onresize.
Попробуем сделать нагрузку из iframe + на onload менять его ширину. Тем самым сработает событие onresize у body, который мы инжектируем.
Ок, первая версия нагрузки:
<iframe src="https://0af40062043186e8833af680009500e2.web-security-academy.net/?search=<body onresize=print()>" onload=this.width=100>
В exploit-сервере доставляем эту нагрузку.
Лаба решена.
Ещё в этой категории
Web Shell Upload через обход блек-листа расширений (PortSwigger Lab)
.php в блек-листе, но .htaccess заливается без вопросов — подсовываем свой конфиг Apache и заставляем сервер исполнять shell.bug как PHP.
Web Shell Upload через обфускацию расширения (PortSwigger Lab)
Блек-лист расширений не пускает .php, двойное расширение shell.php.jpg отдаётся как картинка — null-byte shell.php%00.jpg обходит обе проверки.
Remote Code Execution через загрузку web shell (PortSwigger Lab)
Загрузка аватарки без валидации — заливаем PHP web shell и читаем /home/carlos/secret.