
Привет, Хабр!
Хотелось бы поделиться с вами моим open-source проектом для поиска директорий, поддоменов, ака crawler. Я не говорю, что он перевернёт мир краулеров или превзойдёт Katana, но, думаю, утилита будет крайне полезна для red team-команды.
https://github.com/a11mut3d/CGE
Проблемы, которые решает CGE
Современное веб-приложение — это не монолит, где всё в одном HTML, а куча микросервисов, API и в целом эндпоинтов. Составить карту всех запросов достаточно сложно, поэтому вы не видите картину целиком.
CGE помогает в этой задаче. Он:
— собирает все поддомены из SSL-сертификата (как в crt.sh); — краулит каждый эндпоинт, парсит HTML, JS, формы, аплоады, файлы; — отслеживает, куда идут запросы в реальном времени через взаимодействие с формами; — строит граф взаимодействия эндпоинта в реальном времени.
Как это выглядит
На данный момент у CGE есть 2 варианта использования: web UI и CLI.
Если про CLI особо и нечего расписывать (он просто выдаёт все найденные эндпоинты в консоль или по желанию сохраняет в файл), то на web UI давайте остановимся подробнее.
Веб-интерфейс я постарался сделать в стиле Obsidian (спойлер: получилось не очень).
— Каждая нода — хост (поддомен). — Ребро между нодами — факт HTTP-обмена информацией. — При клике на ноду мы получаем список всех эндпоинтов (даже тех, которые были замечены в запросах от других хостов). — При клике на ребро мы получаем все реальные запросы между хостами.
Технические детали
Реализовать я решил на Python с использованием BS, requests, DNS. В качестве базы данных я решил использовать Neo4j.