Обход каталогов (или путь обход ) атака использует недостаточную проверку безопасности или санитарные имена файлов , поставляемого пользователь, таким образом, что символы , представляющие «траверс к родительскому каталогу» передаются на операционной систему файловой системы API . Уязвимое приложение может быть использовано для получения несанкционированного доступа к файловой системе .
Обход каталогов также известен как ../
атака (точка-точка, косая черта), лазание по каталогам и обратное отслеживание. Некоторые формы этой атаки также являются атаками канонизации .
Пример
Типичный пример уязвимого приложения в PHP- коде:
php $ template = 'red.php' ; if ( isset ( $ _COOKIE [ ' ШАБЛОН ' ])) { $ template = $ _COOKIE [ ' ШАБЛОН ' ]; } включают "/ home / users / phpguru / templates /" . $ template ;
Атака на эту систему может заключаться в отправке следующего HTTP-запроса:
GET /vulnerable.php HTTP / 1.0 Cookie : TEMPLATE = .. / .. / .. / .. / .. / .. / .. / .. / .. / etc / passwd
Затем сервер сгенерирует такой ответ, как:
HTTP / 1.0 200 OK Content-Type : text / html Сервер : Apacheroot: fi3sED95ibqR6: 0: 1: Системный оператор: /: / bin / ksh демон: *: 1: 1 :: / tmp: phpguru: f8fk3j1OIf31.: 182: 100: Разработчик: / home / users / phpguru /: / bin / csh
Повторяющиеся ../
символы после /home/users/phpguru/templates/
вызвали include()
переход в корневой каталог, а затем включают файл паролей Unix /etc/passwd
.
Unix /etc/passwd
- это обычный файл, используемый для демонстрации обхода каталогов, так как он часто используется взломщиками, чтобы попытаться взломать пароли. Однако в более поздних системах Unix /etc/passwd
файл не содержит хешированных паролей, и вместо этого они находятся в /etc/shadow
файле, который не может быть прочитан непривилегированными пользователями на машине. Однако даже в этом случае при чтении /etc/passwd
отображается список учетных записей пользователей.
Вариации
Обход каталогов в простейшей форме использует этот ../
шаблон. Некоторые распространенные варианты перечислены ниже:
Майкрософт Виндоус
При обходе каталогов Microsoft Windows и DOS используются шаблоны ..\
или ../
. [1]
Каждый раздел имеет отдельный корневой каталог (помеченный C:\
где C может быть любым разделом), и над ним нет общего корневого каталога. Это означает, что для большинства уязвимостей каталогов в Windows атаки ограничиваются одним разделом.
Обход каталогов был причиной многочисленных уязвимостей Microsoft. [2] [3]
Процентное кодирование в URI
Некоторые веб-приложения пытаются предотвратить обход каталога, сканируя путь URI запроса на наличие шаблонов, таких как ../
. Эта проверка иногда по ошибке выполняется перед процентным декодированием , в результате чего URI, содержащие шаблоны, вроде %2e%2e/
бы принимаются, несмотря на то, что они декодируются ../
перед фактическим использованием. [4]
Двойное кодирование
Процентное декодирование может случайно выполняться несколько раз; один раз перед проверкой, но снова после этого, что делает приложение уязвимым для рекурсивно закодированного в процентах ввода, такого как %252e%252e/
(один проход процентного декодирования превращается %25
в буквальный знак%). Такого рода уязвимости особенно затронуты версии 5.0 и более ранние из Microsoft «s IIS программного обеспечения веб - сервера. [5]
UTF-8
Плохо реализованный декодер UTF-8 может принимать символы, закодированные с использованием большего количества байтов, чем необходимо, что приводит к альтернативным представлениям символов, таким как %2e
и %c0%ae
оба представления .
. Это специально запрещено стандартом UTF-8 [6], но по-прежнему приводит к уязвимостям обхода каталогов в программном обеспечении, таком как веб-сервер IIS . [7]
Архивы
Некоторые форматы архивов, такие как zip, допускают атаки обхода каталогов: файлы в архиве могут быть записаны таким образом, что они перезаписывают файлы в файловой системе путем отслеживания с возвратом. Код, извлекающий файлы архива, может быть написан для проверки того, что пути к файлам в архиве не участвуют в обходе пути.
Профилактика
Возможный алгоритм предотвращения обхода каталога:
- Прежде чем продолжить, обработайте запросы URI, которые не приводят к запросу файла, например, выполнение перехвата в коде пользователя.
- Когда должен быть сделан запрос URI для файла / каталога, создайте полный путь к файлу / каталогу, если он существует, и нормализуйте все символы (например,
%20
преобразованные в пробелы). - Предполагается , что «Документ Корень» полное, нормализованы, путь известен, и эта строка имеет длину N . Предположим, что никакие файлы вне этого каталога не могут обслуживаться.
- Убедитесь, что первые N символов полного пути к запрошенному файлу точно такие же, как «Корень документа».
- Если да, разрешите возврат файла.
- Если нет, вернуть ошибку, так как запрос явно выходит за рамки того, что веб-серверу должно быть разрешено обслуживать.
Использование жестко запрограммированного предопределенного расширения файла в качестве суффикса пути не обязательно ограничивает масштаб атаки файлами с этим расширением файла.
php include ( $ _GET [ 'файл' ] . '.html' );
Пользователь может использовать символ NULL (обозначающий конец строки), чтобы обойти все, что находится после $_GET
. (Это зависит от PHP.)
Смотрите также
- В случае неправильного создания chroot-тюрьмы могут перемещаться по каталогам. Возможные векторы атаки обхода каталогов - это дескрипторы открытых файлов для каталогов вне тюрьмы. Рабочий каталог другой возможный вектор атаки.
- Небезопасная прямая ссылка на объект
Рекомендации
- ^ «Именование файлов, путей и пространств имен» . Microsoft.
Функции файлового ввода-вывода в Windows API преобразуют '/' в '\' как часть преобразования имени в имя в стиле NT.
- ^ Бернетт, Марк (20 декабря 2004 г.). «Глубокие дыры в безопасности» . SecurityFocus .
- ^ «Microsoft: уязвимости безопасности (обход каталога)» . Сведения о CVE.
- ^ «Обход пути» . OWASP .
- ^ «CVE-2001-0333» . Распространенные уязвимости и подверженности .
- ^ «RFC 2279 - UTF-8, формат преобразования ISO 10646» . IETF .
- ^ "CVE-2002-1744" . Распространенные уязвимости и подверженности .
Ресурсы
- Открыть проект безопасности веб-приложений
- Классификация угроз WASC - обход пути
- Использование и устранение уязвимости, связанной с обходом пути
- CWE Common Weakness Enumeration - Path Traversal
Внешние ссылки
- DotDotPwn - фаззер обхода каталогов - [1]
- Убежденность в использовании обхода каталогов. [2] [3]
- Ошибка: удаленное выполнение команды IIS% c1% 1c
- Информационный бюллетень Cryptogram, июль 2001 г. [4] .