Скрытые конечные точки – это настоящий клад для всех веб-пентестеров, поскольку большинство скрытых конечных точек не используются или устарели, поэтому большинство из них очень уязвимы для различных типов атак на уязвимости.
Многие организации сталкивались с атаками на критические уязвимости через скрытые конечные точки.
Учитывая это, давайте посмотрим, как мы можем найти скрытые конечные точки.
Существуют различные методы поиска Скрытых конечных точек:
- Google дорки
- Github
- архивы
- Apk’шки
- JS-файлы
1. Google дорки
Google всегда был и будет главным собирателем информации.
Google дорки не так просты, как обычный поиск Google.
Метод использует расширенные операторы для поиска специфической информации, такой как версии, имена файлов, идентификаторы в результатах поиска.
Любой, у кого есть Интернет, может легко узнать о различных расширенных операторах из многих открытых источников и использовать их для поиска множества уязвимостей в существующих системах.
Поисковые системы, такие как Google и Bing, поддерживают различные операторы для составления поисковых запросов, которые могут быть очень полезны для хакеров, чтобы найти множество уязвимых конечных точек.
Ниже приведены некоторые из операторов Google, которые мы можем использовать для поиска скрытых конечных точек:
site:example.com ext:doc | ext:docx | ext:odt | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv site:s3.amazonaws.com + example.com site:accounts.example.com inurl:user_id site:example.com inurl:login | inurl:signin | intitle:Login | intitle:"sign in"
2. Github
Github – это отличный инструмент, с помощью которого можно собрать много информации об инфраструктуре компании.
Для начала мы можем просто использовать название цели, и мы сможем найти множество коммитов, сделанных в их репозиториях.
Мы можем узнать, используют ли они какие-либо внутренние инструменты, такие как JIRA, Asana или любые другие инструменты, из их коммитов.
🔍 Shhgit – поиск секретов в GitHub в реальном времени
Проверка Github – очень важный этап проверки веб-приложений, поскольку в репозиториях Github хранится множество закрытых ключей API и учетных данных, необходимых для работы приложения.
🔎 yar: инструмент OSINT для разведки репозиториев / пользователей / организаций на Github
Репо Github также хранит поддомены, конечные точки API в своем коде, и мы можем использовать Github дорки для поиска этой конфиденциальной информации.
Хотя я бы сказал, что всегда лучше использовать Github dorks вручную, так мы сможем найти гораздо больше данных, мы все же можем использовать множество общедоступных инструментов Github разведки для автоматизации этого процесса.
Иногда в процессе поиска скрытых конечных точек может произойти несколько ошибок:
Мы можем выйти за пределы области применения, обнаружив стороннее приложение.
Мы можем обнаружить очень старые ключи или токены, не используемые целью
Мы можем обнаружить, что найденные конечные точки уже удалены или больше не используются.
Некоторые из Github дорков, которые мы можем использовать для поиска скрытых конечных точек, следующие:
“example.tld” API_link “example.tld” API_key “example.tld” secret_key “example.tld” aws_key “example.tld” Password “example.tld” FTP “example.tld” login “example.tld” github_token
Вы можете легко найти больше Github дорков в интернете, вам просто нужно найти репо вашей целевой организации и использовать их для фильтрации информации, чтобы найти скрытые конечные точки и конфиденциальные секреты.
3. APK
Файл пакета приложений Android (APK) – это формат файла, используемый для установки прикладного программного обеспечения на операционную систему Android.
Apk’ы могут быть декомпилированы, и мы можем просмотреть все файлы кода, чтобы найти скрытые конечные точки.
Хотя это можно сделать вручную, лучше использовать автоматические инструменты для более быстрого и эффективного процесса.
Одним из таких инструментов, который можно использовать для поиска скрытых конечных точек из Apk’ов, является ApkLeaks.
3.1 ApkLeaks
Apkleaks – это инструмент с открытым исходным кодом на основе python, который может быть использован для поиска различных скрытых конечных точек, секретов в Apk-приложении.
Он очень быстрый, эффективный и легко доступен в различных дистрибутивах Linux.
3.1.1 Установка ApkLeaks
Вы можете скачать Apkleaks двумя способами:
- менеджер пакетов pip3
- Исходники
Установка с помощью pip3
pip3 install apkleaks
Установка с использованием исходников
git clone https://github.com/dwisiswant0/apkleaks cd apkleaks/ pip3 install -r requirements.txt
3.1.2 Использование ApkLeaks для поиска конечных точек
Сканирование APK-файла для поиска конечных точек
python3 apkleaks.py -f file.apk
Запись результатов в файл
python3 apkleaks.py -f /home/spi3er/Downloads/Templerun.apk -o ../output.txt _ ____ _ ___ _ / \ | _ \| |/ / | ___ __ _| | _____ / _ \ | |_) | ' /| | / _ \/ _` | |/ / __| / ___ \| __/| . \| |__| __/ (_| | <\__ \ /_/ \_\_| |_|\_\_____\___|\__,_|_|\_\___/ v2.6.1 -- Scanning APK file for URIs, endpoints & secrets (c) 2020-2021, dwisiswant0 ** Decompiling APK... INFO - loading ... INFO - processing ... INFO - done ** Scanning against 'com.disney.TempleRunOz.goo' [Artifactory_Password] - AP2tMkmTC0clySJvgUxUmczyyQU [Facebook_Secret_Key] - FB_APP_SIGNATURE = "30820268308201d102044a9c4610300d [IP_Address] - 1.25.0.3 - 10.0.1.7 - 10.0.2.2 - 192.168.1.1 - 192.168.1.8 - 192.168.2.1 [LinkFinder] - /1.1/statuses/update_with_media.json - /Android/data/ - /analytics - /analytics/ - /android_v2/handle_app_loads - /android_v2/handle_crashes - /android_v2/handle_exceptions - /android_v2/ndk_crash - /android_v2/update_package_name - /android_v2/update_user_metadata - /cache - /com.crittercism/lib/ - /files - /foo/bar/dumdum - /foobar/workspace/ - /forum/springboard - /friends - /libcrittercism-ndk.so - /me/ - /proc/cpuinfo - /proc/meminfo - /sdcard - /sdcard/NSFileManagerTests - /sdcard/NSFileManagerTestsDestination - /sdcard/NSFileManagerTestsSource - /strings/ - /tmp - AES/CBC/PKCS5Padding - AES/ECB/NoPadding - Android/data - OZ/Tinted_Alpha_Font - Oz/Materials/oz_ww_master_opaque - Prefabs/Temple/environments/darkforest/oz_df_master_opaque - Prefabs/Temple/environments/emeraldcity/oz_ec_master_opaque - assets/bin/ - bin/Data/settings.xml - challenges/team - config.json - content/unknown - content://com.facebook.katana.provider.AttributionIdProvider - curly.txt - http://api.kaixin001.com/oauth/access_token - http://api.kaixin001.com/oauth/authorize?oauth_token=%s - http://api.kaixin001.com/oauth/request_token - http://api.t.163.com/oauth/access_token - http://api.t.163.com/oauth/authenticate?oauth_token=%s - http://api.t.163.com/oauth/authorize?oauth_token=%s - http://api.t.163.com/oauth/request_token - http://api.t.sina.com.cn/oauth/access_token - http://api.t.sina.com.cn/oauth/authorize?oauth_token=%s - http://api.t.sina.com.cn/oauth/request_token - http://api.t.sohu.com/oauth/access_token - http://api.t.sohu.com/oauth/authorize?oauth_token=%s - http://api.t.sohu.com/oauth/request_token - http://api.twitter.com - http://api.twitter.com/oauth/access_token - http://api.twitter.com/oauth/request_token - http://disneynetwork0-a.akamaihd.net/mobilenetwork/referralstore/bootstrap/ - http://foursquare.com/oauth/access_token - http://foursquare.com/oauth/authorize?oauth_token=%s - http://foursquare.com/oauth/request_token - http://java.sun.com/j2se/1.3/ - http://openapi.lovefilm.com/oauth/access_token - http://openapi.lovefilm.com/oauth/request_token - http://schemas.android.com/apk/res/android - http://vimeo.com/oauth/access_token - http://vimeo.com/oauth/authorize?oauth_token=%s - http://vimeo.com/oauth/request_token - http://www.amazon.com/gp/mas/get-appstore/android/ref=mas_mx_mba_iap_dl - http://www.apple.com/DTDs/PropertyList-1.0.dtd - http://www.apple.com/DTDs/PropertyList-1.0.dtd\ - http://www.burstly.com/scheme - http://www.foo.com - http://www.plurk.com/OAuth/access_token
Сохранение файла результатов в формате JSON
apkleaks -f file.apk -o results.json --json
4. Архивы
На архивных сайтах хранится много информации обо всех сайтах в настоящее время и о предыдущих данных.
Они содержат петабайты данных, которые могут быть использованы любым человеком, имеющим подключение к Интернету.
Некоторые из наиболее полезных архивов – AlienVault, Common Crawl и WaybackMachine.
Веб-пентестеры могут использовать данные этих архивов для поиска скрытых конечных точек.
Наиболее популярные инструменты, используемые веб-пентестерами для поиска скрытых конечных точек с помощью архивных данных, – Gau и WaybackUrls.
4.1 Gau
GetallUrls (gau) – это инструмент с открытым исходным кодом, написанный на Go, который собирает все урлы из AlienVault, CommonCrawl, Waybackmachine для любого заданного домена.
Он работает быстро и может быть легко соединен со многими другими инструментами пентестинга для поиска множества скрытых конечных точек.
4.1.1 Установка Gau
Проверьте, установлен ли Go или нет
Go version
Установите Gau с помощью следующей команды
go install github.com/lc/gau/v2/cmd/gau@latest
Проверьте, работает ли Gau нормально или нет
4.1.2 Использование Gau для поиска скрытых конечных точек
Задайте текстовый файл с доменами для поиска
cat domains.txt | gau > endpoints.txt
Запись результатов в файл
gau --o out.txt
Внесение png, jpg, gif в черный список сканирования
gau --blacklist jpg,gif,png domain.com
5. JS-файлы
JS-файлы являются основным источником скрытых конечных точек, поскольку каждый сайт в Интернете использует JS для загрузки своих файлов, будь то сторонние приложения или взаимодействие между веб-страницами.
Эти JS-файлы можно статически проанализировать на наличие множества конечных точек, но вручную это делать бесконечно долго, к счастью, у нас есть несколько очень хороших инструментов, которые автоматизируют этот процесс.
Лучшие инструменты, которые я лично использую для поиска конечных точек в JS-файлах, это LinkFinder, JSFScan.
Итак, давайте запачкаем наши руки, используя эти замечательные инструменты
5.1 LinkFinder
Linkfinder – это инструмент с открытым исходным кодом, написанный на языке python для поиска параметров и конечных точек в файлах Javascript.
Linkfinder делает это, используя jsbeautifier для python с большим регулярным выражением.
Регулярное выражение отвечает за поиск:
- полные URL
- Абсолютные URL
- Относительные URL с хотя бы одной косой чертой
- Относительные URL без косой черты
5.1.1 Установка LinkFinder
Выполните следующие команды для установки LinkFinder
git clone https://github.com/GerbenJavado/LinkFinder.git cd LinkFinder python3 setup.py install
5.1.1 Установка LinkFinder
Выполните следующие команды для установки LinkFinder
5.1.2 Использование LinkFinder для поиска скрытых конечных точек
Поиск конечных точек по URL-адресу
python3 linkfinder.py -i https://example.com/index.js -o cli
Отображение вывода в формате html
python3 linkfinder.py -i https://example.com/index.js -o results.html
Анализ домена на наличие файлов Js
python3 linkfinder.py -d todoist.com
5.2 JSFScan
JSFscan можно назвать лучшим инструментом для поиска Javascript, т.е. с помощью JSFscan вы сможете найти конечные точки, секреты, переменные, создать списки слов из Js файлов и многое другое.
Предварительные требования:
- Gau
- Httpx
Вы уже видели, как установить Gau в предыдущей части, поэтому сделайте это соответствующим образом.
5.2.1 Установка JSFScan
Установите Httpx с помощью следующей команды,
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
Установите JSFScan с помощью следующих команд,
git clone https://github.com/KathanP19/JSFScan.sh.git cd JSFScan.sh sudo chmod +x install.sh ./install.sh
5.2.2 Использование JSFScan для поиска скрытых конечных точек
Импорт файла, содержащего JS Urls
Bash JSFScan.sh -f ./path/to/JSUrls
Найти конечные точки из JSUrls
Bash JSFScan.sh -e
поиск конечных точек может работать только после импорта файла JSUrls. Файлы JSUrls должны содержать урлы типа https://static.bbc.co.uk/bbcdotcom/2.6.0/script/dist/bbcdotcom.dev.js.
Найти секреты в JsUrls
Bash JSFScan.sh -s
Заключение
В этой статье мы узнали о 5 способах поиска скрытых конечных точек во время пентеста веб-приложений.
Скрытые конечные точки можно найти не только этими пятью способами, их также можно найти с помощью досок Trello и некоторыми другими способами, но я перечислил самые важные и эффективные из них в этой статье.
Если вы столкнулись с проблемами при выполнении любой из вышеперечисленных команд, сообщите нам об этом в комментариях ниже.
см. также:
🐉 Kali linux – наиболее часто используемые инструменты для поиска субдоменов