Email HTML Injection with a Simple Tip
Работая с программами Bugcrowd, я наткнулся на старую программу с двумя доменами в рамках проекта. Тут е было возможности самостоятельной регистрации или работы с параметрами — всё выглядело как тупик.
На одной из страниц этих доменов внизу находилась опция подписки на получение писем о деятельности компании.
Я заполнил поле случайными данными, примерно так:
И отправил их, чтобы протестировать поведение этой формы; после отправки я получил письмо с подтверждением, которое выглядело так:
Я заметил, что имя отображается в письме и интерпретируется как HTML.
Первым делом в голову пришел такой payload:
<a href="https://evil.com">Click Here</a>
Однако при попытке отправить его форма не принимает данные, возвращая ответ с кодом 403. При этом никаких признаков наличия WAF (Web Application Firewall), блокирующего мои payload'ы, не было. Через некоторое время я понял, что проблема заключается в размере payload'а. Поле для ввода имени допускает максимум 35 символов.
Поэтому я отправил следующий payload:
<a href="evil.com">Please click</a>
Я отправил отчет об уязвимости, и вот ответ от команды триажа:
Теперь передо мной стояла задача сделать полезную нагрузку короче и более очевидной.
После некоторых поисков я обнаружил способ сокращения ссылок: например, вместо subdomain.verylong.com можно использовать bit.ly/some_random_chars.
Подробности можно найти здесь: https://app.bitly.com/.
Я зарегистрировался на этом сайте и создал короткую ссылку для https://google.com.
Затем я сформировал финальную полезную нагрузку:
<h1><a href=bit.ly/48rQIVc>Click
Это привело к следующему результату:
И также к следующему результату:
<h1><a href=bit.ly/48rQIVc>Click<hr>