(Write-up) "Заметки" by CodebyGames

(Write-up) "Заметки" by CodebyGames

@zluukka (Egor Orshlet)

Доброго времени суток друзья! Сегодня разбор задачи "Заметки" из категории Web платформы codeby.games.

Качаем архив , приложенный к таску, создадим VPN-туннель и вперед ломать наш сайт! В нашем zip файле видим директорию /var/www , в которой лежат следующие файлы:

Пока ничего непонятно, но очень интересно. Провалимся в каталог html и посмотрим , что у нас лежит там:

Можем заметить множество файлов с расширением .php, по названиям папки и файла складывается впечатление, что функционал сайта представляет из себя создание заметок. Давайте первым делом исследуем login.php и register.php:

Меня привлекла данная строчка, после ввода кредов данные пользователя записываются в файл ../secret_data.json. Исследуем login.php:

Видим похожую картину. Креды плотно взаимодействуют с файлом secret_data.json. Еще видно как кодируется имя пользователя с помощью base64.

В файле create_note.php можем заметить как непостредственно создаются заметки:

Создадим VPN-туннель и зайдем на сайт. Видим стандартное окно авторизация пользователя:

Для входа я решил не создавать свою учетную запись, а попробовать войти под логином "n1gga". В общем и целом авторизация прошла успещно (пароль совпадал с логином)

Видим здесь заметку , сожержание которой совпадает с той, которая лежит в каталоге n1gga_note:

Немного посидев в Бёрпе , я понял , что к чему. У нас тут классическая уязвимость Path traversal.

Path traversal - уязвимость, которая позволяет злоумышленникам оперировать файловой системой сервера, путем обхода каталогов. В некоторых случаях злоумышленник может иметь возможность записывать произвольные файлы на сервере, позволяя им изменять данные или поведение приложения и в конечном итоге получить полный контроль над сервером.

Чаще всего для реализации данной уязвимости используется следующие последовательности символов:

В UNIX-подобных системах это будет выглядить приблизительно так:

www.exaple.com/?filename=/../../../etc/passwd

В Windows могут использоваться обратные последовательности, например:

www.exaple.com/?filename=..\..\..\windows\win.ini


Давайте разберемся поподробнее. В Burp Suite включаем intercept и ловим наш GET-запрос, в котором мы видим закодированный параметр username:

Вспомним архив , который мы скачали. Там был файл fl4g.txt, он находился директорией выше. Давайте в поле username прокинем нашу обходную полезную нагрузку. Для запишем наш username и добавим к нему последовательность /../../. Выглядить это будет следующим образом:


И закодируем все это дело, используя CyberChef:

Подставим в параметр username нашу последовательность , нажмем Forward и перезагрузим страницу:

Бум! Мы получили флаг, со спокойной душой его скачиваем и проверяем что задание выполнено:

Спасибо за внимание , всем пока !

Report Page