HACKER101

kimnatsau

One Level
10.03.2017
7
18
BIT
0
Статья для участия в конкурсена codeby
Многие видели hackerone выложили курс по безопасности веба с видеоуроками как по мне уроки для совсем начинающих но к ним есть практические задания которые оказались очень даже интересными и тут я опишу некоторые решения которые получились у меня.

level 0: Breakerbank

Идем по ссылке
Видим простой интерфейс «банка» с возможностью перевода .
1518683375418.png

В сорцах есть интересные комментарии
HTML:
    <!--
        In this level, there are 4 vulnerabilities, falling into the following classes:
        CSRF
        Reflected XSS
        Authorization Bypass/Direct Object Reference

        Have fun!
        -->
и
<!--P.S. You can see a sample bug report for this level here, once you've poked around a bit (Hint: think about how you would transfer funds from one person to another.  Arithmetic!).  There are a number of other hints around.  Watch the source! -->
Значит нам дали четкое задание что и где искать.

CSRF
Сразу видим в форме нет токена проверяем при помощи burp csrf poc generator
1518683531888.png

Работает!
Если ввести в поле 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:
<body onload="document.forms[0].submit()">
    <form action="http://h101levels.appspot.com/levels/0/" method="POST">
        <input type="hidden" name="amount" value="1000000">
        <input type="hidden" name="to" value="1625">
    </form>
</body>

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

В глаза бросается ссылка для отправления платежа.

Но параметр to фильтруется и у меня придумать вектор так и не получилось но если изменить ссылку до вида

Параметр amount не фильтруется просто вставляем любой вектор, например это "><svg onload=alert(1)> и радуемся жизни.
Authorization Bypass/Direct Object Reference
Тут я не совсем уверен что они именно это имели в виду но есть ошибка если в POST запрос добавить опцию from то приложение покажет что мы перевели не со своего счета а с указанного нами счета.
1518683868101.png


---- Добавлено позже ----

Level 1: Breakbook
Открываем ссылку
Смотрим исходники.
HTML:
    <!--
        In this level, there are 4 vulnerabilities, falling into the following classes:
        CSRF
        Stored XSS
        Forced Browsing

        Have fun!
        -->
CSFR
Снова CSRF правда здесь все сложнее есть токен
Посмотреть вложение 15842
Токен подозрительно похож на md5 пробуем онлайн сервисы. Хеш не находится. Пробуем взять хеш от имени пользователя и он совпадает с тем что есть у нас значит в форму просто подставляется хеш и все будет работать.

Stored XSS
Простой вектор с ссылкой
http://a"onmouseover="alert(document.cookie


Forced Browsing
У каждого поста есть ссылка с айдишником поста пробуем перебирать айтишники и видим посты других пользователей.
Возможно это не баг но в данном случае он полностью подходит под описание.

---- Добавлено позже ----

Level 2: Breaker Profile
Код:
<!--
        In this level, there are 7 vulnerabilities, falling into the following classes:
        Stored XSS
        Reflected XSS
        Unrelated Bonus

        Have fun!
        -->

Stored XSS
Идем в редактирование профиля и видим ссылку на картинку пробуем поставить что-то типа этого:
http://breaker-studentcenter.appspot.com/%22%3E%3Cimg%20src=x%20onerror=alert(1)%3E.png)
Получаем
Посмотреть вложение 15843
Еще одна XSS в форме description добавляем кавычек к цвету
И получаем такой код
Посмотреть вложение 15844

Reflected XSS
Идем по ссылке страница ошибки с выводом данных вставляем простой вектор и имеем XSS:
https://levels-a.hacker101.com/levels/2/?id=5283636286849024%22%3E%3Csvg%20onload=alert(1)%3E

Unrelated Bonus
Не представляю что имели разработчики под этим может перебор адишников интересны ваши варианты..

По идее тут еще 3 баги но что в сторону еще xss что в непонятные бонусы ничего не нашел.
 

Вложения

  • 1518683948221.png
    1518683948221.png
    21,7 КБ · Просмотры: 218
  • 1518684194698.png
    1518684194698.png
    28,4 КБ · Просмотры: 220
  • 1518684208044.png
    1518684208044.png
    7,4 КБ · Просмотры: 215
  • 1518684489741.png
    1518684489741.png
    15,7 КБ · Просмотры: 208
  • 1518684588375.png
    1518684588375.png
    102,1 КБ · Просмотры: 193
  • 1518684673022.png
    1518684673022.png
    98,8 КБ · Просмотры: 225
  • 1518684708697.png
    1518684708697.png
    58,4 КБ · Просмотры: 220
  • 1518684753998.png
    1518684753998.png
    131,8 КБ · Просмотры: 201
Последнее редактирование:
  • Нравится
Реакции: Rakke и Vertigo
L

lecudug

Что то эта на статью не тянет а уже тем более для конкурса ( Тут просто опсано прохождения тренинга. Написать пост ради поста это не дело
 

kimnatsau

One Level
10.03.2017
7
18
BIT
0
Level 3: Breaker CMS

Опять XSS
Код:
<!--
    In this level, there are 6 vulnerabilities, falling into the following classes:
        Various XSS
        Improper Authorization
        Unrelated Bonuses

        Have fun!

        -->

Improper Authorization

В исходниках видим скрипт
JavaScript:
// We should only display the edit link to authenticated admins.
            // http://i.imgur.com/WPaknth.jpg
            var page = window.location.hash.substring(1);
            if(page == '')
                page = 'index';
            var cookies = document.cookie.split(';');
            for(var i in cookies) {
                var cookie = cookies[i].replace(/ /g, '').split('=');
                if(cookie[0] == 'admin' && cookie[1] == '1')
                    document.write('<a href="/levels/3/admin?page=' + page + '">Edit this page</a>');

Код проверяет значения куки и показывает ссылку на админку если оно правильное проверяем и попадаем в админ панель

1518686611874.png


Unrelated Bonus
Мои попытки найти XSS крашили запросы и выдавался стектрейс наверное это то что нужно . В итоге уровень совсем сломался и на все запросы отвечал стектрейсом восстановить не смог можно было зайти под другим Акком и тогда все заработает но было лень.
 
Последнее редактирование:

r0hack

DAG
Platinum
29.09.2017
522
1 089
BIT
0
Здравствуйте. Статья полезная, но думаю она не подходит для конкурса, так как это больше writeUP, а не обучающий материал.
 
  • Нравится
Реакции: Vander

kimnatsau

One Level
10.03.2017
7
18
BIT
0
Что то эта на статью не тянет а уже тем более для конкурса (
Увы если все вставляешь в редактор он не постит приходится кусками причем маленькими а учитывая что форматирование в маркдауне то приходится его переделывать каждый раз(((((

---- Добавлено позже ----

Здравствуйте. Статья полезная, но думаю она не подходит для конкурса, так как это больше writeUP, а не обучающий материал.
Без проблем уберу с конкурса только дайте до конца ее выложить..
А еще лучше скажите как сделать чтоб можно было за раз все в один пост писать?
 
Последнее редактирование:

kimnatsau

One Level
10.03.2017
7
18
BIT
0
А почему не получается я не понял ? Ошибка какая-то или что возникает ?
да ошибка на экране что при предвариательном просмотрел пишет невнятное посмотрите в консоли в консоли 402 draft
о новая ошибка
Failed to load resource: the server responded with a status of 403 ()
эта ошибка возникает при предварительном просмотре
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!