PDA

Просмотр полной версии : Antichat - Заметки [Writeup]


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

https://forum.antichat.xyz/attachments/29109249/img_ef0a15c0c5.png

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

https://forum.antichat.xyz/attachments/29109249/img_5c763a15ad.png

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

https://forum.antichat.xyz/attachments/29109249/img_42aa6e4c44.png

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

https://forum.antichat.xyz/attachments/29109249/img_8493fa93d2.png

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

https://forum.antichat.xyz/attachments/29109249/img_73d4872c80.png

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

https://forum.antichat.xyz/attachments/29109249/img_c1f9d1e394.png

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

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

https://forum.antichat.xyz/attachments/29109249/img_2a57799641.png

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

https://forum.antichat.xyz/attachments/29109249/img_c5bfde92d7.png

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

https://forum.antichat.xyz/attachments/29109249/img_238bbe1bf8.png

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

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


https://forum.antichat.xyz/attachments/29109908/1706029221050.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".

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

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