Path traversal на примере прохождения Hack The Box Download

Hack The Box

Path traversal — это атака, при которой злоумышленник пытается получить доступ к файлам за пределами нормальных директорий, используя манипуляции с путями файлов. Сегодня на примере прохождения уязвимой машины Hack The Box Download, рассмотрим уязвимость path traversal. Я покажу, как эксплуатировать уязвимость path traversal для получе­ния дос­тупа к исходно­му коду при­ложе­ния на Node.js

Еще по теме: IDOR уязвимость на практике

Что такое Path Traversal

Path Traversal, также известная как Directory Traversal возникает, когда злоумышленник может манипулировать путем файла веб-приложения. Это может привести к раскрытию конфиденциальной информации или даже выполнению вредоносного кода.

Статья для обучения багхантеров (этичных хакеров). В качестве примера использовалась намеренно уязвимая машина Hack The Box Download. При участии в Баг Баунти необходимо действовать этично и придерживаться установленных правил. Несанкционированный взлом — уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.

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

Path traversal на примере Download Hack The Box

Исследовав сайт, мы обнаружили форму загрузки файлов на странице /files/upload.

Path traversal Hack The Box Download

Анализируя данный запрос в Burp History, мы выявили типичные для приложения на Node.js cookie.

Path traversal Hack The Box Download

После успешной авторизации мы раскодировали значение download_session и проверили, что произошли изменения.

Path traversal Hack The Box Download

Path traversal уязвимость

Теперь у нас появился новый параметр user, содержащий имя пользователя и его идентификатор.

Path traversal уязвимость

При проведении тестовой загрузки файла, мы отметили, что сообщение об успешном выполнении действия передается в параметр success.

Path traversal уязвимость

Path traversal

Стра­ница /files/download/ отда­ет нам файл при ска­чива­нии. Сто­ит про­верить, нет ли здесь уяз­вимос­ти обхо­да катало­га. Сде­лать это мож­но, зап­росив файл package.json, харак­терный для прог­рамм на Node.js. Я исполь­зую Burp Intruder и сло­варь с раз­ными вари­анта­ми ука­зания пути к фай­лу.

Ре­зуль­тат перебо­ра

В ито­ге получа­ем содер­жимое package.json, отку­да узна­ем, что основной файл называ­ется app.js, а так­же имя поль­зовате­ля — wesley. Теперь тем же спо­собом зап­росим файл app.js.

Со­дер­жимое фай­ла app.js

По­луча­ем ключ для под­писи куки (стро­ка 39), а еще видим исполь­зование SQL-зап­росов (стро­ка 59).

Имея ключ, мы можем манипу­лиро­вать зна­чени­ями куки, соз­давая и под­писывая их для любого поль­зовате­ля. В этом нам поможет ути­лита cookie-monster. Уста­новим ее.

Сох­раним зна­чение куки в файл и поменя­ем имя поль­зовате­ля на wesley. Затем сге­нери­руем нуж­ные нам зна­чения.

Соз­дание cookie для поль­зовате­ля wesley

Под­став­ляем сге­нери­рован­ные зна­чения в зап­рос и получа­ем стра­ницу нового поль­зовате­ля.

Стра­ница в Burp Repeater

В окру­жении поль­зовате­ля на сай­те ничего не находим, поэто­му про­дол­жим прос­матри­вать исходные коды. В уже извес­тном нам фай­ле app.js отме­чаем под­клю­чаемые модули.

Со­дер­жимое фай­ла app.js

Пер­вым делом я прос­мотрел содер­жимое фай­ла routers/auth.js. Наибо­лее инте­ресен в нем блок кода для получе­ния поль­зовате­ля с помощью фун­кции findFirst (стро­ки 41–44).

Со­дер­жимое фай­ла routers/auth.js

Кро­ме парамет­ра име­ни поль­зовате­ля, есть еще и параметр password. Учи­тывая, что для выбор­ки из базы исполь­зует­ся findFirst, мож­но про­тес­тировать инъ­екцию, осно­ван­ную на исполь­зовании в переда­ваемых парамет­рах дру­гих опе­рато­ров: contains, startWith и про­чих воз­вра­щающих булевы зна­чения. К при­меру, сле­дующее зна­чение cookie отоб­разило фай­лы поль­зовате­ля!

Зап­рос в Burp Repeater

В самих фай­лах ничего инте­рес­ного нет, зато мы можем попытать­ся подоб­рать хеш пароля поль­зовате­ля.

Автоматизация

Смысл в том, что­бы пооче­ред­но переби­рать сим­волы хеша пароля. Как толь­ко реаль­ный хеш будет начинать­ся с ука­зан­ной пос­ледова­тель­нос­ти, мы получим отличный от осталь­ных слу­чаев ответ и нач­нем переби­рать сле­дующий сим­вол хеша.

Ре­зуль­тат работы скрип­та

Спус­тя нес­коль­ко минут получа­ем хеш MD5 и рас­шифро­выва­ем пароль при помощи сер­виса hashes.com.

Ре­зуль­тат взло­ма хеша

С получен­ными учет­ными дан­ными авто­ризу­емся по SSH и забира­ем флаг поль­зовате­ля.

Path traversal уязвимость

Защита от Path Traversal

  • Фильтрация Ввода. Ограничьте ввод от пользователей, фильтруя спецсимволы и символы « ../». Также, рекомендуется использовать белый список (whitelist) для разрешения только определенных символов.
  • Использование Абсолютных Путей. Вместо относительных путей используйте абсолютные, чтобы предотвратить возможность манипуляций.
  • Ограничение Доступа. Настройте права доступа так, чтобы веб-сервер имел доступ только к необходимым директориям и файлам.

Path Traversal представляет серьезную угрозу, но с правильными мерами безопасности и осведомленностью, можно минимизировать риски и обеспечить надежную защиту веб-приложений.

ПОЛЕЗНЫЕ ССЫЛКИ:

Дима (Kozhuh)

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

Добавить комментарий