ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   Antichat - Заметки [Writeup] (https://forum.antichat.xyz/showthread.php?t=1642807)

vov4ick 23.12.2023 02:31

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

https://forum.antichat.xyz/attachmen...ef0a15c0c5.png

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

https://forum.antichat.xyz/attachmen...5c763a15ad.png

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

https://forum.antichat.xyz/attachmen...42aa6e4c44.png

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

https://forum.antichat.xyz/attachmen...8493fa93d2.png

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

https://forum.antichat.xyz/attachmen...73d4872c80.png

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

https://forum.antichat.xyz/attachmen...c1f9d1e394.png

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

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

https://forum.antichat.xyz/attachmen...2a57799641.png

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

https://forum.antichat.xyz/attachmen...c5bfde92d7.png

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

https://forum.antichat.xyz/attachmen...238bbe1bf8.png

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

ParkerRrr 23.01.2024 21:04

Добрый день, при решении задания хотел узнать, почему мы не можем получить содержимое файла www/fl4g.txt в этом куске кода? Прикреплю кусок кода и запрос, с помощью которого я пытался получить флаг в этом куске. Буду благодарен за подробное объяснение!
https://forum.antichat.xyz/attachmen...6028832198.png


https://forum.antichat.xyz/attachmen...6029221050.png

Co1nj3ct 24.01.2024 06:28

Цитата:


ParkerRrr сказал(а):

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

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

Более подробно про эту функцию тут: Клик

ParkerRrr 24.01.2024 14:24

Цитата:


Co1nj3ct сказал(а):

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

Более подробно про эту функцию тут: Клик

Спасибо большое за подробное объяснение! Теперь понял)


Время: 03:21