Привет, сегодня я расскажу о другой находке в Gcash VDP и дам советы по методологии разведки, такие как: перечисление поддоменов, анализ технологий с помощью Wappalyzer, массовая разведка и определение области с помощью автоматизированных инструментов.
Что такое определение области разведки?
Определение области разведки является начальной фазой оценки защищенности и тестирования на проникновение. Оно включает в себя идентификацию и сбор информации о целевых системах, сетях и инфраструктуре. Основная цель состоит в том, чтобы понять масштабы инфраструктуры для тестирования и собрать данные, которые могут быть полезны в последующих фазах оценки.
Начало:
Мои методы разведки, как правило, разделены по категориям, поэтому я создал несколько директорий на своей локальной машине, выполнив:
mkdir -p
gcash.com
~/recon/targets/gcash.com/subdomains/
mkdir -p
gcash.com
~/recon/targets/gcash.com/endpoints/
mkdir -p
gcash.com
~/recon/targets/gcash.com/aws/
mkdir -p
gcash.com
~/recon/targets/gcash.com/dns/
Процесс разведки
- Перечисление поддоменов
- Сбор информации (сеть, DNS, технологии, порты)
- Автоматическое тестирование
Перечисление поддоменов
Сбор поддоменов очень важен в контексте поиска уязвимостей/тестирования на проникновение. Необходимо собрать как можно больше поддоменов, и я покажу вам, как их находить с помощью различных методов и инструментов.
Примечание: некоторые методы не всегда работают, но я покажу те, которые сам часто использую для сбора поддоменов.
Инструменты:
# Пассивное и активное перечисление поддоменов с использованием subfinder
subfinder -d
gcash.com
-o ~/recon/targets/gcash.com/subdomains/subfinder.txt
# Перечисление поддоменов через сертификаты с помощью assetfinder
assetfinder --subs-only
gcash.com
>> ~/recon/targets/gcash.com/subdomains/assetfinder.txt
# Динамическое перечисление поддоменов с помощью alterx
echo
gcash.com
| alterx -enrich | dnsx > ~/recon/targets/gcash.com/subdomains/alterx-dynamic.txt
# Для увеличения шансов найти поддомен можно сгенерировать шаблоны на основе существующих поддоменов
subfinder -d
tesla.com
| alterx | dnsx
# Перечисление поддоменов с помощью alterx
echo
gcash.com
| alterx -pp 'word=subdomains-top1million-50000.txt' | dnsx > ~/recon/targets/gcash.com/subdomains/alterx-permutation.txt
# Перечисление поддоменов через ASMapping
asnmap -d
gcash.com
| dnsx -silent -resp-only -ptr > ~/recon/targets/gcash.com/subdomains/dnsx.txt
# Перечисление поддоменов через vhost
cat subdomains-top1million-50000.txt | ffuf -w -:FUZZ -u
http://gcash.com/
-H 'Host:
FUZZ.gcash.com
' -ac
После перечисления поддоменов с использованием разных инструментов, могут появиться дубликаты. Чтобы оптимизировать список поддоменов, мы объединим все с помощью инструмента anew, который удалит дубликаты.
# Объединение поддоменов из ~/recon/targets/gcash.com/subdomains/ в один файл и удаление повторений
cat ~/recon/targets/gcash.com/subdomains/.txt | anew ~/recon/targets/gcash.com/subdomains/subdomains.txt
После того как мы объединили поддомены, нам нужно отфильтровать активные поддомены используя httpx.
# Проверка HTTP/HTTPS серверов на активность
cat ~/recon/targets/gcash.com/subdomains/subdomains.txt | httpx -o ~/recon/targets/gcash.com/subdomains/httpx.txt
Сбор информации
После фильтрации живых поддоменов, необходимо выявить используемые технологи с помощью wappalyzer.

Автоматизированное тестирование
Получив информацию о технологиях, мы начинаем использовать nuclei.
Nuclei используется для отправки запросов на основе шаблонов, что обеспечивает отсутствие ложных срабатываний и быструю проверку большого количества хостов. Nuclei подходит для различных вариантов сканирования, включая TCP, DNS, HTTP, SSL, File, Whois, Websocket, Headless, Code и т.д.. Благодаря мощной и гибкой системе шаблонов, Nuclei может использоваться для проведения всех видов проверки безопасности.
С помощью nuclei я сканирую все поддомены, используя эту команду:
cat ~/recon/targets/gcash.com/subdomains/httpx.txt | nuclei -config ~/nuclei-templates/config/custom.yml
Я создаю свои собственные конфигурации, которые сосредоточены на поиске чувствительных данных (например, секретных ключей, токенов, учетных данных) в конфигурациях и собранных ресурсах, таких как JavaScript файлы или Docker. Вы также можете создать пользовательскую конфигурацию для wappalyzer с помощью nuclei, чтобы обнаруживать технологии.
# nuclei -config ~/nuclei-templates/config/custom.yml -list target_list_to_scan.txt
severity:
- critical
- high
- medium
- low
type:
- http
- tcp
- javascript
include-tags:
- generic
- config
- misconfig
- exposures
- exposure
- disclosure
- file
- logs
- traversal
- xss
- lfi
- crlf
- cache
- takeovers
- wordpress
exclude-tags:
- tech
- dos
- fuzz
- creds-stuffing
- token-spray
- osint
- headers # exlude finding missing HTTP security headers
После завершения сканирования я проверяю результаты и нахожу следующее:

Учетные данные для БД были раскрыты из-за ошибок в конфигурации.
На самом деле это странно, так как я не нашел их с помощью gobuster или disearch, когда проводил fuzz-тестирование.
Примечание: массовое сканирование может занимать часы, в зависимости от количества сканируемых доменов, числа используемых шаблонов, а также скорости интернета. Вот почему важно задавать рамки на основе собранной информации. Однако нет ничего плохого в подходе "сканировать всё возможное", чтобы найти реальные уязвимости.
У меня есть приватный VPS, и там я запускаю nuclei с помощью Docker. Таким образом, даже если у меня есть дела, сканирование продолжится в фоновом режиме на VPS, даже когда я сплю. К тому же VPS обычно имеет более высокую скорость интернета, поэтому он гораздо лучше подходит, чем ваше локальное устройство.
AWS S3 bucket
Как мы видим из результатов httpx - используется AWS, давайте отфильтруем S3 bucket с помощью nuclei.
# Фильтруем S3 bucket и сохраняем в ~/recon/targets/gcash.com/aws/butcket.txt
cat ~/recon/targets/gcash.com/subdomains/httpx.txt | \
nuclei -t technologies/aws/aws-bucket-service.yaml | \
awk -F’://’ ‘{print $2}’ | \
awk -F’/’ ‘{print $1}’ > ~/recon/targets/gcash.com/aws/butcket.txt

# Сохраняем открытые bucket в open_buckets.txt из ~/recon/targets/gcash.com/aws/butcket.txt
cat ~/recon/targets/gcash.com/aws/butcket.txt | \
xargs -I {} sh -c ‘if aws s3 ls “s3://{}” — no-sign-request 2>/dev/null; \
then echo “{}” >> ~/recon/targets/gcash.com/aws/open_buckets.txt; \
fi’

Пассивное сканирование открытых портов
Для сканирования открытых портов я всегда использую naabu, так как он позволяет быстро и надежно перечислить доступные порты.
# Сканируем все открытые порты, кроме 80 и 443
cat ~/recon/targets/gcash.com/subdomains/subdomains.txt | naabu –passive

После того как мы просканировали все порты, давайте найдем порты для эксплуатации. Лично я всегда обращаю внимание на порт SMTP. Если вы найдете его, то можете протестировать спуфинг электронной почты с помощью инструмента swaks.


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


После того как я обнаружил несколько уязвимостей, я сообщил о них, и их подтвердили. Затем меня пригласили в частную баг-баунти программу YesWeHack, которая отделена от VDP.


Только BBP программы имеют денежное вознаграждение, а в VDP дают только токены или сувенирную продукцию в качестве благодарности.

На самом деле я не уверен насчет учетных данных, поскольку этот порт был открыт в Docker и нельзя их проверить без доступа к локальной сети.
Хронология:
- 16 марта 2024 — Объявление VDP
- 17 марта 2024 — Предварительный отчет
- 25 марта 2024 — Отсортировано
- 27 марта 2024 — Исправлено
Ещё больше познавательного контента в Telegram-канале — Life-Hack - Хакер