Я занимался поиском уязвимостей на основном ресурсе и случайно ткнул на один из его субдоменов. Быстро осмотревшись, я решил переключиться на него.

Первоначальная разведка

Я начал с просмотра исходного кода страницы и одновременно запустил инструмент Katana для извлечения JavaScript файлов.

katana -u sub.target.com -d 5

Затем я решил воспользоваться инструментом WaybackURLs, чтобы найти что-нибудь интересное о данном субдомене.

Инструменты и расширения

Изучив исходный код, я обнаружил множество JavaScript файлов, среди которых выделялся один под названием main.0b3342223.js.

Недавно мой друг рассказал мне о расширении FindSomething, и я полностью согласен, что это действительно потрясающая вещь. Но я большой поклонник терминала, и существует Python-инструмент под названием Javascript Security Analysis (JSA).

Вот самая базовая команда JSA:

python3 jsa https://sub.target.com/javascript.js

Обнаружение конечных точек

С помощью JSA, я получил множество конечных точек из JavaScript файла.

echo "https://sub.target.com/main.0b379723.js" | python3 jsa

В моём терминале появилось большое количество URL-адресов конечных точек, и я начал просматривать их вручную. Многие из них возвращали коды ошибок 401 и 403 («Forbidden» и «Unauthorized»), поэтому я решил использовать утилиту httpx для получения статус-кодов всех конечных точек, полученных через JSA:

echo "https://sub.target.com/main.0b379723.js" | python3 jsa | httpx -sc

Практически сразу у меня были все конечные точки вместе с их статус-кодами, и оказалось, что всего одна из них имеет статус-код 400. Назовём её /abc.

Эта конечная точка выглядела как каталог, поэтому я решил проверить наличие стандартных файлов вроде index.html, index.js, main.js, app.js и так далее. Затем я запустил diresearch для дальнейшего перечисления директорий и файлов:

dirsearch -u https://sub.target.com/endpoint -f -F -x 403,404 -t 3

Однако, к сожалению, ни одной папки или файла обнаружено не было.

Я продолжал анализировать вывод инструментов в других терминалах и приступил к изучению данных с WaybackURLs. За исключением пары каталогов, ничего особо интересного там не обнаружилось.

Среди этих каталогов был один интересный, назовём его /xyz. Ранее я сталкивался с таким же каталогом, и он привёл меня к критической уязвимости. Вы можете прочитать об этом здесь.

Сам по себе каталог не раскрывал никакой важной информации.

Итак, я решил объединить каталог xyz с каталогом abc и создать новый путь, который мог бы выглядеть следующим образом:

- /abcxyz

- /abc-xyz

- /xyzabc

- /xyz-abc

Я снова провёл перебор по всем новым путям и обнаружил файл index.html в каталоге xyz-abc, который оказался статичной страницей с заголовком «Test». Я продолжил перебор, используя словарь seclists raft-large-files.txt, чтобы найти интересные файлы в этом каталоге.

ffuf -u https://sub.target.com/xyz-ab/FUZZ -w /usr/share/seclist/Web-Content/raft-large-files.txt -mc 401,200,403 -r

Результат — несколько файлов, включая Admin.js со статус-кодом 401.

Доступ к Admin.js

Существует несколько способов обхода 401, однако я предпочел самый простой метод — опять с помощью ffuf:

ffuf -u https://sub.target.com/xyz-abc/FUZZ/Admin.js -w /usr/share/seclists/Web-Content/raft-large-directories.txt -mc 200 -t 3

Спустя примерно 15 минут сканирования был обнаружен успешный результат с кодом ответа 200, в каталоге /static/js/.

Внутри файла admin.js я нашел JWT токен администратора, прочие токены и чувствительные данные.

Отчёт

Баг был отмечен как дубликат.

Благодарю за чтение!

Еще больше познавательного контента в Telegram-канале — Life-Hack - Хакер

Комментарии (0)