 |

23.12.2023, 02:31
|
|
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами:
1260136
Репутация:
0
|
|
"За пределами Директорий: Исследование Уязвимости Path Traversal или как я получил флаг"
Приветствую читателей и любителей antichat. Сегодня рассмотрим таск "Заметки" из категории Веб.
Начинаем мы с изучения сайта, и видим что у нас есть форма входа и регистрация:
Регистрируемся и попадаем в личный кабинет, где мы можем создавать свои заметки во вкладке Create,
Вкладка List отображает созданные заметки или имеющиеся.
Пока ничего не понятно, но у нас есть исходники к этому таску. Нам объязательно нужно их изучить.
И что же мы видим там интересного? Смотрим login.php:
Здесь мы понимаем что, приложение записывает данные пользователя в файл secret_data.json и при входе
берет данные оттуда же. Для нас уже отпадает один вектор. Изучаем код дальше:
В файле list_notes присутствует декод base64 username и далее использует его для поиска заметок:
Это весьма заметно при обычном перехвате запроса в Burp:
Сейчас мы попробуем протестировать такую атаку как Path Traversal, кто то спросит что это вообще такое:
Уязвимость обхода пути (Path Traversal) позволяет злоумышленникам обходить приложение для доступа к ограниченным файлам/каталогам сервера.
Используя эту уязвимость, злоумышленник может получить доступ к коду, учетным данным внутренних серверов, файлам/библиотекам операционной системы и т.д.
И что мы должны с этим всем делать?
Нам нужно использовать символы перехода между директориями ../../.
В самом Burp можно декодить и энкодить, это очень удобно :
Теперь нам нужно вставить этот подготовленный username.
Все что под цифрой 1 вместо 2, %3D мы не трогаем. Подставили, теперь удаляем то , что у нас под цифрой 1 и нажимаем Forward.
Мы отправили запрос на сервер и видим изменения в нашей картотеке:
Бинго, флаг получен.
Таким интересным способом мы получили доступ к конфиденциальным файлам/каталогам, используя эту атаку.
Задание простое, но для выполнения требует базовых знаний по данному виду уязвимости.
Спасибо за внимание и отдельное спасибо создателям таска.
|
|
|

23.01.2024, 21:04
|
|
Новичок
Регистрация: 23.01.2024
Сообщений: 0
С нами:
1215215
Репутация:
0
|
|
Добрый день, при решении задания хотел узнать, почему мы не можем получить содержимое файла www/fl4g.txt в этом куске кода? Прикреплю кусок кода и запрос, с помощью которого я пытался получить флаг в этом куске. Буду благодарен за подробное объяснение!

|
|
|

24.01.2024, 06:28
|
|
Новичок
Регистрация: 28.07.2023
Сообщений: 0
С нами:
1474202
Репутация:
0
|
|
ParkerRrr сказал(а):
Добрый день, при решении задания хотел узнать, почему мы не можем получить содержимое файла www/fl4g.txt в этом куске кода? Прикреплю кусок кода и запрос, с помощью которого я пытался получить флаг в этом куске. Буду благодарен за подробное объяснение!
Дело в том, что функция basename(), через которую переменной filename присваивается имя файла, возвращает только последнюю часть пути, то есть "../../www/fl4g.txt" превращается в "fl4g.txt".
Более подробно про эту функцию тут: Клик
|
|
|

24.01.2024, 14:24
|
|
Новичок
Регистрация: 23.01.2024
Сообщений: 0
С нами:
1215215
Репутация:
0
|
|
Co1nj3ct сказал(а):
Дело в том, что функция basename(), через которую переменной filename присваивается имя файла, возвращает только последнюю часть пути, то есть "../../www/fl4g.txt" превращается в "fl4g.txt".
Более подробно про эту функцию тут: Клик
Спасибо большое за подробное объяснение! Теперь понял)
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|