Фронтенд веб-приложения часто содержит ценные данные, которые помогают глубже понять его архитектуру и выявить нестандартные уязвимости. В этом материале разберём несколько методов анализа фронтенд-кода.
🔑
Утечки API-ключей и токенов
Ключи и токены, попавшие в клиентские скрипты, могут привести к серьёзным последствиям при их использовании в злонамеренных целях. Для их обнаружения применяются наборы регулярных выражений. Некоторые инструменты автоматизируют этот процесс, используя типичные паттерны поиска.
1.
SecretFinder — Python-скрипт позволяющий обнаруживать чувствительные данные в JavaScript файлах
python3 SecretFinder.py -i https://example.com/1.js -o results.html
2.
JSMiner — расширение на Java, может находить в том числе строки с высокой энтропией.
3. Шаблонные проверки через Scan checks:
metadata:
language: v1-beta
name: "SecretFinder"
description: "SecretFinder"
given response then
if {latest.response} matches "(access[_-]?[t|T]oken(=| =|:| :|\":)) ..." then
report issue:
severity: high
confidence: firm
detail: "Secret found"
end if
⚙️ Извлечение путей из JavaScript
Для корректной работы приложения в JavaScript-файлах часто можно найти URL, используемые для взаимодействия с бэкендом. Однако не всегда такие функции имеют достаточный уровень защиты или предназначены для открытого доступа. Для обнаружения подобных путей можно использовать специализированные инструменты.
1.
LinkFinder — Python скрипт для извлечения абсолютных или относительный путей из JavaScript файлов:
python linkfinder.py -i https://example.com -d
2.
Кatana — краулер на Go который обладает функциями парсинга JavaScript:
katana -u https://example.com -js-crawl
Или использовать в связке с
jsluice — но в этом случае возрастёт потребление памяти.
3.
Jsluice — инструмент на Go который умеет извлекать URL, пути, секреты и другие полезные данные:
jsluice urls jquery.js | jq
💻 Сбор путей SPA (Single-page Application)
Распространенные веб-приложения с использованием таких фреймворков как NextJS, React, Vue.js, Angular имеют свои особенности которые позволяют использовать их для сбора информации, такой как доступные пути.
1. Next.js позволяет получить список простой консольной командой:
console.log(__BUILD_MANIFEST.sortedPages)
2. Vue.js и React используют Vue / React DevTools только при условии если приложение использует фреймворки в режиме разработки:
console.log($r.props.children); // для React, необходимо <Router> / <Routes> во вкладке компонентов
3. Nuxt.js (Vue) и SvelteKit
console.log(window.__NUXT__?.config.public);
// или по структуре путей / страницы
console.log(useNuxtApp().$router.getRoutes().map(r => r.path));
В составе модулей
METASCAN используется Zap с расширением для поиска утечек API ключей, токенов и других чувствительных данных на основе регулярных выражений, а сбор ссылок из файлов скриптов осуществляется с помощью
Katana, что позволяет максимально покрывать проверяемое приложение.
#Metascan #pentest #redteam #Metascan_news
Обсуждение 0
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram