Сегодня разберем уязвимость
Path Traversal. С ее помощью можно получить доступ к файлам и директориям, находящимся за пределами предполагаемой корневой директории веб-сервера. Например:- Код приложения и данные;
- Креды для
backend;- Чувствительные файлы операционной системы;
В некоторых случаях получается изменить или создать файлы, чтобы изменить поведение программы и получить контроль над сервером.
✍️ Пример
Пусть у нас есть сайт с товарами. Не интересно просто читать про товары, поэтому у каждого товара есть одна или несколько фотографий, которые хранятся на сервере. Для их получения используется следующий запрос:
https://some-store.com/?product_img=name
В качестве
name передается имя картинки, которую нужно загрузить. Если какая-либо проверка отсутствует, то мы можем передать вместо name любое свое значение и получить его, если такой файл существует(и к нему есть доступ).Одним из интересных файлов на ОС
Linux является /etc/passwd. Он точно есть в системе. Но логично предположить, что картинки у нас лежат не в корневой директории Linux. Может быть что-то типо /some-site/products/images/. На помощь приходят ../, которые позволяют нам обратиться к файлам в другой директории. Изменим запрос:
https://some-store.com/?product_img=../../../etc/passwd
📚Подробнее разобраться с примерами можно в этой подборке лаб:
✏️File path traversal, simple case
✏️File path traversal, traversal sequences blocked with absolute path bypass
✏️File path traversal, traversal sequences stripped non-recursively
✏️File path traversal, traversal sequences stripped with superfluous URL-decode
✏️File path traversal, validation of file extension with null byte bypass
✏️File path traversal, validation of start of path
#web #writeup
@coffee_cube
