
Утилита для создания базы данных HTTP-кэша для использования с go-exploit
go-exploit-cache создаёт базу данных SQLite HTTP-кеша, используемую фреймворком go-exploit для обеспечения кросс-эксплуатационного обмена и scanless проверки целей. Вместо активного подключения к целям go-exploit может обращаться к кешу для выполнения проверок версий и других сканирований с использованием ранее собранных HTTP-данных (Shodan, Censys, PCAP, RunZero и т. д.).
Проект:
vulncheck-oss/go-exploit
Этот инструмент генерирует SQLite-кеш, который читаетgo-exploit.
http_cache, который go-exploit использует для scanless-проверки и проверок версий..json.gz, RunZero JSONL (и ограниченно RunZero JSON1), PCAP/pcapng и Censys JSONL (через вспомогательный скрипт)..json.gzcensys/censys_v3_dump.py для подготовки)go-exploitПодробнее см. USAGE.md.
./build/go-exploit-cache \
-type shodan-gzip \
-in ~/Downloads/734342e9-56b8-4299-a072-9d1d28f66434.json.gz \
-out confluence.db
Типичный вывод:
Decompressing the Shodan GZIP... this can be slow
Decompressed file written to .tmp/shodan.json
Generating database entries...
Cleaning up .tmp directory
Проверка БД:
sqlite3 confluence.db
sqlite> select rhost, rport from http_cache limit 1;
52.200.210.54|80
Вы можете проверить цель, используя только кешированные данные. В примере используется unshare -n для блокировки сетевого доступа (только для демонстрации — unshare не обязателен):
sudo unshare -n ./build/cve-2023-22527_linux-arm64 \
-c -v -rhost 52.200.210.54 -rport 80 \
-db ~/go-exploit-cache/confluence.db
Пример вывода:
time=... level=STATUS msg="Starting target" host=52.200.210.54 port=80
time=... level=STATUS msg="Validating Confluence target"
time=... level=SUCCESS msg="Target verification succeeded!"
time=... level=VERSION msg="The reported version is 7.19.17"
time=... level=STATUS msg="The target appears to be a patched version." vulnerable=no
shodan-gzip — экспорт Shodan .json.gzrunzero-jsonl — RunZero JSONL (ограниченная поддержка JSON1)pcap / pcapng — файлы PCAP (извлекает HTTP-трафик)censys-jsonl — Censys JSONL (используйте вспомогательный скрипт в censys/)Примеры файлов см. в test/testdata.
censys_v3_dump.py для получения данных. Он начинает с принятия поискового запроса Censys Platform, а затем скачивает отдельные хосты для доступа к HTTP-заголовкам и полному HTTP-телу. Используйте censys/censys_v3_dump.py для сбора и форматирования результатов Censys в JSONL, пригодный для приёма.http_cache — основная таблица (таблица, генерируемая кешем)
| column | type | description |
|---|---|---|
| id | INTEGER | primary key |
| created | INTEGER | date |
| rhost | TEXT | remote host (IP) |
| rport | INT | remote port |
| uri | TEXT | the cached path |
| data | BLOB | HTTP headers + body |
verified — таблица описания ПО (таблица, заполняемая go-exploit)
| column | type | description |
|---|---|---|
| id | INTEGER | primary key |
| created | INTEGER | date |
| software name | TEXT | Name of software |
| installed | INT | 0 or 1 |
| version | TEXT | The software version |
| rhost | TEXT | remote host (IP) |
| rport | INT | remote port |
В Ubuntu:
sudo apt install libpcap-dev
make
(Требуется инструментарий Go — см. https://go.dev/doc/install.)