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




97
Атака обхода каталога
Рейтинг 10 из 10. Голосов: 1353
Ваша оценка:

Обход каталогов (или путь обход ) состоит в том, эксплуатируя проверки недостаточной безопасности / санитарные имен файлов входных поставляемого пользователя, таким образом, что символы , представляющие «траверс к родительскому каталогу» передается на файловом 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 
Сервер :  Apache
 root: fi3sED95ibqR6: 0: 1: Системный оператор: /: / bin / ksh  Демон: *: 1: 1 :: / TMP:  phpguru: f8fk3j1OIf31:. 182: 100: Разработчик: / Главная / пользователей / phpguru /: / bin / CSH

Повторяющиеся 

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

Unix 

/etc/passwd
- это обычный файл, используемый для демонстрации обхода каталога , так как он часто используется взломщиками для взлома паролей.

Однако в более новых системах Unix файл passwd не содержит хешированных паролей. Вместо этого они находятся в теневом файле, который не может быть прочитан непривилегированными пользователями на компьютере. Тем не менее, он по-прежнему полезен для перечисления учетных записей на компьютере, поскольку он по-прежнему отображает учетные записи пользователей в системе.


Вариации обхода каталога 

Ниже перечислены некоторые известные строки атаки через каталог:

Обратный путь в каталогах в Unix  

Обычный Unix-подобный обход каталога использует 

../
символы. Sudo, программа управления привилегиями, вездесущая в Unix, уязвима для этой атаки, когда пользователи используют подстановочный знак « глоб» (например, chown /opt/myapp/myconfig/*
может использоваться с командой sudo chown baduser /opt/myapp/myconfig/../../../etc/passwd
).

Обратный путь в каталогах в Microsoft Windows  

Обратный путь в каталогах Microsoft Windows и DOS использует последовательности символов 

..\
или 
../
[1]

Каждый раздел имеет отдельный корневой каталог (помеченный 

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

Этот вид атаки стал причиной многочисленных уязвимостей Microsoft. 

Обратный путь в каталогах в кодировке URI 

Проблема канонизации .

Некоторые веб-приложения сканируют строку запроса на наличие опасных символов, таких как:

  • ..
  • ..\
  • ../

предотвратить обратный путь в каталогах. Тем не менее, строка запроса обычно URI-декодируется перед использованием. Поэтому эти приложения уязвимы для прохождения каталога в процентах, например:

  • %2e%2e%2f
     что переводится как 
    ../
  • %2e%2e/
     что переводится как 
    ../
  • ..%2f
     что переводится как 
    ../
  • %2e%2e%5c
     что переводится как 
    ..\

Обратный путь в каталогах в кодировке Unicode / UTF-8

Проблема канонизации .

UTF-8 был отмечен Брюсом Шнайером и Джеффри Стрейфлингом как источник уязвимостей и векторов атак [4]

Когда Microsoft добавила поддержку Unicode на свой веб-сервер, 

../
в их код был введен новый способ кодирования , в результате чего их попытки предотвращения обхода каталогов были обойдены.

Несколько процентов кодирования, такие как

  • %c1%1c
  • %c0%af

переведены в 

/
или 
\
символы.

Процентные кодировки были декодированы в соответствующие 8-битные символы веб-сервером Microsoft. Это исторически было правильным поведением, поскольку Windows и DOS традиционно использовали канонические 8-битные наборы символов на основе ASCII .

Тем не менее, оригинальный UTF-8 не был каноническим, и несколько строк были теперь кодировками строк, переводимыми в одну и ту же строку. Microsoft выполнила анти-обходные проверки без канонизации UTF-8 и поэтому не заметила, что ( HEX ) 

C0AF
и ( HEX ) 
2F
были одинаковыми символами при сравнении строк . Неправильное процентное кодирование, такое как 
%c0%9v
также использовалось. [5]

Zip / архив обхода атак

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

Возможные методы предотвращения обхода каталога 

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

  1. Обработайте запросы URI, которые не приводят к запросу файла, например, выполняя перехват в пользовательском коде, прежде чем продолжить ниже.
  2. Когда должен быть выполнен запрос URI для файла / каталога, создайте полный путь к файлу / каталогу, если он существует, и нормализуйте все символы (например, 
    %20
    преобразуйте в пробелы).
  3. Предполагается , что «Документ Корень» полное, нормализованы, путь известен, и эта строка имеет длину N . Предположим, что никакие файлы вне этого каталога не могут быть обслужены.
  4. Убедитесь, что первые N символов полного пути к запрашиваемому файлу точно совпадают с «Корнем документа».
  5. Если это так, разрешите возврат файла.
  6. Если нет, верните ошибку, поскольку запрос явно выходит за пределы того, что веб-серверу следует разрешить обслуживать.
  7. Использование жестко заданного заранее заданного расширения файла для суффикса пути не ограничивает область атаки файлами с таким расширением.
<? php 
include ( $ _GET [ 'file' ]  .  '.html' );

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

(Это зависит от PHP.)


Смотрите также 

  • Ячейки Chroot могут быть подвергнуты обходу каталога, используя, если тюрьма Chroot создана неправильно. Возможные векторы атаки обхода каталогов - это открытые файловые дескрипторы каталогов за пределами тюрьмы. Рабочий каталог другой возможный вектор атаки.

Вопросы и ответы


Оставить комментарий

ответить