Сегодня я хочу тебе показать на практике, как может применяться атака Directory Traversal или Path Traversal. Это очень простая и популярная атака. Но с ее помощью можно получить доступ к важной информации на сервере. Как это сделать, и какие основные особенности этой атаки я расскажу в этой статье. Мы планируем выпустить целую подборку статей по WEBу, поэтому рекомендую тебе быть в теме, чтоб не пропустить следующие материалы.
Что же такое 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, которые мы разберем в следующих статьях. Помни, что автоматические инструменты и подходы это всегда хорошо, но бывает, иногда нужно попотеть и найти что-то ручками. Ведь сканеры видят далеко не всё. Полученный результат может принести хорошие деньги. Ведь его ещё не затаскали до дыр, прочекав тысячу раз. На этом все, до следующих статей.
1 comments On Практика проведения атаки Directory Traversal
Хорошая статья. Позволила найти в ПО одну ошибку. Теперь чуть меньше проблем с безопасностью.