Codeby Games Codeby Games - Заметки [Writeup]

vov4ick

Green Team
11.12.2022
55
126
BIT
968
"За пределами Директорий: Исследование Уязвимости Path Traversal или как я получил флаг"

Screenshot_10.png

Приветствую читателей и любителей codeby.games. Сегодня рассмотрим таск "Заметки" из категории Веб.
Начинаем мы с изучения сайта, и видим что у нас есть форма входа и регистрация:

Screenshot_9.png


Регистрируемся и попадаем в личный кабинет, где мы можем создавать свои заметки во вкладке Create,
Вкладка List отображает созданные заметки или имеющиеся.

Screenshot_11.png


Пока ничего не понятно, но у нас есть исходники к этому таску. Нам объязательно нужно их изучить.
И что же мы видим там интересного? Смотрим login.php:

Screenshot_12.png


Здесь мы понимаем что, приложение записывает данные пользователя в файл secret_data.json и при входе
берет данные оттуда же. Для нас уже отпадает один вектор. Изучаем код дальше:
В файле list_notes присутствует декод base64 username и далее использует его для поиска заметок:

Screenshot_13.png


Это весьма заметно при обычном перехвате запроса в Burp:

Screenshot_14.png


Сейчас мы попробуем протестировать такую атаку как Path Traversal, кто то спросит что это вообще такое:
Уязвимость обхода пути (Path Traversal) позволяет злоумышленникам обходить приложение для доступа к ограниченным файлам/каталогам сервера.
Используя эту уязвимость, злоумышленник может получить доступ к коду, учетным данным внутренних серверов, файлам/библиотекам операционной системы и т.д.

И что мы должны с этим всем делать?
Нам нужно использовать символы перехода между директориями ../../.
В самом Burp можно декодить и энкодить, это очень удобно :

Screenshot_16.png



Теперь нам нужно вставить этот подготовленный username.
Все что под цифрой 1 вместо 2, %3D мы не трогаем. Подставили, теперь удаляем то , что у нас под цифрой 1 и нажимаем Forward.

Screenshot_17.png


Мы отправили запрос на сервер и видим изменения в нашей картотеке:

_231223011109.png

Бинго, флаг получен.
Таким интересным способом мы получили доступ к конфиденциальным файлам/каталогам, используя эту атаку.
Задание простое, но для выполнения требует базовых знаний по данному виду уязвимости.
Спасибо за внимание и отдельное спасибо создателям таска.
 

ParkerRrr

One Level
23.01.2024
2
1
BIT
15
Добрый день, при решении задания хотел узнать, почему мы не можем получить содержимое файла www/fl4g.txt в этом куске кода? Прикреплю кусок кода и запрос, с помощью которого я пытался получить флаг в этом куске. Буду благодарен за подробное объяснение!
1706028832198.png
1706029221050.png
 

Co1nj3ct

One Level
27.07.2023
1
2
BIT
29
Добрый день, при решении задания хотел узнать, почему мы не можем получить содержимое файла www/fl4g.txt в этом куске кода? Прикреплю кусок кода и запрос, с помощью которого я пытался получить флаг в этом куске. Буду благодарен за подробное объяснение! Посмотреть вложение 73577 Посмотреть вложение 73578
Дело в том, что функция basename(), через которую переменной filename присваивается имя файла, возвращает только последнюю часть пути, то есть "../../www/fl4g.txt" превращается в "fl4g.txt".

Более подробно про эту функцию тут:
 
  • Нравится
Реакции: vov4ick и ParkerRrr

ParkerRrr

One Level
23.01.2024
2
1
BIT
15
Дело в том, что функция basename(), через которую переменной filename присваивается имя файла, возвращает только последнюю часть пути, то есть "../../www/fl4g.txt" превращается в "fl4g.txt".

Более подробно про эту функцию тут:
Спасибо большое за подробное объяснение! Теперь понял)
 
  • Нравится
Реакции: Co1nj3ct
Мы в соцсетях:

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