Статья для участия в
конкурсена античат
Многие видели hackerone выложили курс по безопасности веба с видеоуроками как по мне уроки для совсем начинающих но к ним есть практические задания которые оказались очень даже интересными и тут я опишу некоторые решения которые получились у меня.
level 0: Breakerbank
Идем по ссылке https://levels-a.hacker101.com/levels/0/
Видим простой интерфейс «банка» с возможностью перевода .
В сорцах есть интересные комментарии
HTML:
Значит нам дали четкое задание что и где искать.
CSRF
Сразу видим в форме нет токена проверяем при помощи burp csrf poc generator
Работает!
Если ввести в поле amount отрицательное число покажут ссылку на правильно оформленный отчет для этой уязвимости.
Код:
Код:
Here's a simple bug report for level 0. There are quite a few other bugs to find, so don't think you can get away with just this one!
Title: Cross-Site Request Forgery
Severity: Critical
Description: The "Transfer Funds" functionality is vulnerable to CSRF due to no session-specific random token being attached to the form.
Reproduction Steps:
1) Go to the Transfer Funds page
2) Submit a funds transfer
3) Note that the only data transmitted is the destination and the amount.
You can also use the following proof of concept to submit an automatic transfer:
Impact: Due to the simple nature of this vulnerability, it's possible for an attacker to transfer funds from any victim whom he can convince to access a page controlled by the attacker. In this proof of concept, it's done via form autosubmission in plain view, but this could be performed in a hidden IFrame, leaving the user no clue that an attack has happened at all.
Mitigation: Proper CSRF tokens should be used on all forms. You can read more here: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
Affected Assets: http://h101levels.appspot.com/levels/0
Можно использовать в качестве примера оформления отчетов в багбаунти.
Reflected XSS
В глаза бросается ссылка для отправления платежа.
https://levels-a.hacker101.com/levels/0/?to=973
Но параметр to фильтруется и у меня придумать вектор так и не получилось но если изменить ссылку до вида
https://levels-a.hacker101.com/levels/0/?to=973&amount=2
Параметр amount не фильтруется просто вставляем любой вектор, например это "> и радуемся жизни.
Authorization Bypass/Direct Object Reference
Тут я не совсем уверен что они именно это имели в виду но есть ошибка если в POST запрос добавить опцию from то приложение покажет что мы перевели не со своего счета а с указанного нами счета.
---- Добавлено позже ----
Level 1: Breakbook
Открываем ссылку https://levels-a.hacker101.com/levels/1/
Смотрим исходники.
HTML:
CSFR
Снова CSRF правда здесь все сложнее есть токен
Токен подозрительно похож на md5 пробуем онлайн сервисы. Хеш не находится. Пробуем взять хеш от имени пользователя и он совпадает с тем что есть у нас значит в форму просто подставляется хеш и все будет работать.
Stored XSS
Простой вектор с ссылкой
Код:
http://a"onmouseover="alert(document.cookie
Forced Browsing
У каждого поста есть ссылка permalinkс айдишником поста пробуем перебирать айтишники и видим посты других пользователей.
Возможно это не баг но в данном случае он полностью подходит под описание.
---- Добавлено позже ----
Level 2: Breaker Profile
Код:
Stored XSS
Идем в редактирование профиля и видим ссылку на картинку пробуем поставить что-то типа этого:
Код:
http://breaker-studentcenter.appspot.com/%22%3E%3Cimg%20src=x%20onerror=alert(1)%3E.png)
Получаем
Еще одна XSS в форме description добавляем кавычек к цвету
И получаем такой код
Reflected XSS
Идем по ссылке link to you profile страница ошибки с выводом данных вставляем простой вектор и имеем XSS:
Код:
https://levels-a.hacker101.com/levels/2/?id=5283636286849024%22%3E%3Csvg%20onload=alert(1)%3E
Unrelated Bonus
Не представляю что имели разработчики под этим может перебор адишников интересны ваши варианты..
По идее тут еще 3 баги но что в сторону еще xss что в непонятные бонусы ничего не нашел.