Jump to content

Атака с обходом каталога

( Атака обхода каталога или обхода пути ) использует недостаточную проверку безопасности или очистку предоставленных пользователем имен файлов, например, символы, обозначающие «переход в родительский каталог», передаются в API файловой системы операционной системы . Затронутое приложение может быть использовано для получения несанкционированного доступа к файловой системе .

Типичный пример уязвимого приложения в PHP- коде:

<?php
$template = 'red.php';
if (isset($_COOKIE['TEMPLATE'])) {
    $template = $_COOKIE['TEMPLATE'];
}
include "/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
Server: Apache

root:fi3sED95ibqR6:0:1:System Operator:/:/bin/ksh 
daemon:*:1:1::/tmp: 
phpguru:f8fk3j1OIf31.:182:100:Developer:/home/users/phpguru/:/bin/csh

Повторяющийся ../ символы после /home/users/phpguru/templates/ вызвали include() перейти в корневой каталог, а затем включить файл паролей Unix /etc/passwd.

Юникс /etc/passwd — это обычный файл, используемый для демонстрации обхода каталогов, поскольку он часто используется взломщиками для взлома паролей . Однако в более поздних системах Unix /etc/passwd файл не содержит хешированных паролей, а вместо этого они расположены в /etc/shadow файл, который не может быть прочитан непривилегированными пользователями на компьютере. Но даже в этом случае чтение /etc/passwd по-прежнему показывает список учетных записей пользователей.

Уязвимость Zip Slip

[ редактировать ]

Другим примером является уязвимость Zip Slip, которая затрагивает несколько форматов архивных файлов, таких как ZIP . [1]

Вариации

[ редактировать ]

Обход каталога в своей простейшей форме использует ../ шаблон. Некоторые распространенные варианты перечислены ниже:

Microsoft Windows

[ редактировать ]

Обход каталогов Microsoft Windows и DOS использует ..\ или ../ узоры. [2]

Каждый раздел имеет отдельный корневой каталог (помеченный как C:\ где C может быть любым разделом), и над ним нет общего корневого каталога. Это означает, что для большинства уязвимостей каталогов в Windows атаки ограничиваются одним разделом.

Обход каталога стал причиной многочисленных уязвимостей Microsoft. [3] [4]

Процентное кодирование в URI

[ редактировать ]

Некоторые веб-приложения пытаются предотвратить обход каталога, сканируя путь URI запроса на наличие таких шаблонов, как ../. Эта проверка иногда ошибочно выполняется перед процентным декодированием , что приводит к тому, что URI содержат такие шаблоны, как %2e%2e/ быть принятым, несмотря на декодирование в ../ перед фактическим использованием. [5]

Двойное кодирование

[ редактировать ]

Процентное декодирование может случайно выполняться несколько раз; один раз перед проверкой, но еще раз после нее, что делает приложение уязвимым для атак с двойным процентным кодированием. [6] в котором недопустимые символы заменяются их формой с двойным процентным кодированием, чтобы обойти меры безопасности. [7] Например, при атаке с двойным процентным кодированием: ../ может быть заменен его формой с двойным процентным кодированием %252E%252E%252F. [8] Этот вид уязвимости особенно затронул версии 5.0 и более ранние версии Microsoft от программного обеспечения веб-сервера IIS . [9]

Плохо реализованный декодер UTF-8 может принимать символы, закодированные с использованием большего количества байтов, чем необходимо, что приводит к альтернативным представлениям символов, таким как %2e и %c0%ae оба представляют .. Это специально запрещено стандартом UTF-8, [10] но все же приводит к уязвимостям обхода каталогов в таком программном обеспечении, как веб-сервер IIS . [11]

Некоторые форматы архивов , такие как zip, допускают атаки с обходом каталога: файлы в архиве могут быть записаны так, что они перезаписывают файлы в файловой системе путем обратного отслеживания. Код, извлекающий архивные файлы, можно написать так, чтобы проверять, что пути к файлам в архиве не подвергаются обходу путей.

Профилактика

[ редактировать ]

Возможный алгоритм предотвращения обхода каталогов может заключаться в следующем:

  1. Обработайте запросы URI, которые не приводят к запросу файла, например, выполнение перехвата пользовательского кода, прежде чем продолжить ниже.
  2. Когда необходимо сделать запрос URI для файла/каталога, создайте полный путь к файлу/каталогу, если он существует, и нормализуйте все символы (например, %20 преобразовано в пробелы).
  3. Предполагается, что известен полностью определенный, нормализованный путь «Корень документа», и эта строка имеет длину N . Предположим, что никакие файлы за пределами этого каталога не могут быть обслужены.
  4. Убедитесь, что первые N символов полного пути к запрошенному файлу точно совпадают с «корнем документа».
  5. Если да, разрешите возврат файла.
  6. Если нет, верните ошибку, поскольку запрос явно выходит за рамки того, что веб-серверу разрешено обслуживать.

Использование жестко закодированного предопределенного расширения файла для суффикса пути не обязательно ограничивает объем атаки файлами с этим расширением.

<?php
include($_GET['file'] . '.html');

Пользователь может использовать символ NULL (указывающий на конец строки), чтобы обойти все, что находится после $_GET. (Это зависит от PHP.)

См. также

[ редактировать ]
  1. ^ «Уязвимость скольжения молнии» . Сник . Уязвимость эксплуатируется с помощью специально созданного архива, содержащего имена файлов обхода каталогов (например, ../../evil.sh). Уязвимость Zip Slip может повлиять на многочисленные форматы архивов, включая tar, jar, war, cpio, apk, rar и 7z.
  2. ^ «Именование файлов, путей и пространств имен» . Майкрософт. Функции файлового ввода-вывода в Windows API преобразуют '/' в '\' как часть преобразования имени в имя в стиле NT.
  3. ^ Бернетт, Марк (20 декабря 2004 г.). «Глубокие дыры в безопасности» . БезопасностьФокус . Архивировано из оригинала 2 февраля 2021 года . Проверено 22 марта 2016 г.
  4. ^ «Microsoft: уязвимости безопасности (обход каталога)» . Подробности CVE.
  5. ^ «Обход пути» . ОВАСП .
  6. ^ «CWE-174: Двойное декодирование одних и тех же данных» . cwe.mitre.org . Проверено 24 июля 2022 г. Программное обеспечение декодирует один и тот же ввод дважды, что может ограничить эффективность любого механизма защиты, возникающего между операциями декодирования.
  7. ^ «CAPEC-120: Двойное кодирование» . capec.mitre.org . Проверено 23 июля 2022 г. Это [двойное кодирование] может позволить злоумышленнику обходить фильтры, которые пытаются обнаружить недопустимые символы или строки, например те, которые могут использоваться в атаках обхода или внедрения. [...] Попробуйте двойное кодирование частей ввода, чтобы попытаться обойти фильтры.
  8. ^ «Двойное кодирование» . owasp.org . Проверено 23 июля 2022 г. Например, символы ../ (точка-точка-косая черта) представляют %2E%2E%2F в шестнадцатеричном представлении. Когда символ % кодируется повторно, его представление в шестнадцатеричном коде составляет %25. Результатом процесса двойного кодирования ../ (точка-точка-косая черта) будет %252E%252E%252F.
  9. ^ «CVE-2001-0333» . Распространенные уязвимости и риски .
  10. ^ Йерго, Ф. (2003). «RFC 2279 — UTF-8, формат преобразования ISO 10646» . IETF . дои : 10.17487/RFC3629 .
  11. ^ «CVE-2002-1744» . Распространенные уязвимости и риски .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a1d1700f44fc617dd235ae2b41f4e651__1722825480
URL1:https://arc.ask3.ru/arc/aa/a1/51/a1d1700f44fc617dd235ae2b41f4e651.html
Заголовок, (Title) документа по адресу, URL1:
Directory traversal attack - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)