
Пользовательские скрипты на Bash и Python, используемые для автоматизации различных задач тестирования на проникновение, включая разведку, сканирование, перечисление и создание вредоносных полезных нагрузок с помощью Metasploit. Для использования с Kali Linux и Ubuntu.
Custom bash scripts used to automate various penetration testing tasks including recon, scanning,
enumeration, and malicious payload creation using Metasploit. For use with Kali Linux or Ubuntu.
* Выберите **Update** (главное меню, пункт 16), чтобы обновить операционную систему и установить зависимости (`ffuf`, `feroxbuster`, `jq` и т. д.).
* Сканеры для разработчиков находятся в `dev/` и также доступны через главное меню, пункт **15. Dev**.
* Для работы некоторых опций потребуются права root.
### Main menu```
RECON
1. Domain
2. Person
SCANNING
3. Generate target list
4. CIDR
5. List
6. IP, range, or URL
7. Rerun Nmap scripts and MSF aux
WEB
8. Insecure direct object reference
9. Open multiple tabs in Firefox
10. Nikto
11. SSL
MISC
12. Parse XML
13. Generate a malicious payload
14. Start a Metasploit listener
15. Dev
16. Update
17. Exit
Сканеры безопасности от Yiğit ibrahim (ibrahimsql). Скрипты находятся в dev/ и могут быть запущены напрямую.```
Dev scripts originally by ibrahimsql
(пусто)```
dev/
├── api-scanner.sh
├── cloud-scanner.sh
├── container-scanner.sh
├── oauth-jwt-scanner.sh
├── open-redirect.sh
├── sensitive-scanner.sh
├── waf-detect.sh
├── web-api-scanner.sh
├── data/
│ ├── api-paths.txt
│ ├── openredirect-payloads.txt
│ ├── sensitive-denylist.txt
│ ├── sensitive-patterns.tsv
│ ├── sensitive-skip-paths.txt
│ ├── sensitive-web-paths-quick.txt
│ ├── sensitive-web-paths-full.txt
│ ├── waf-aliases.tsv
│ ├── waf-labels.tsv
│ ├── waf-signatures.tsv
│ ├── web-api-phases.tsv
│ ├── web-api-tech-signatures.tsv
│ └── swagger-paths.txt
└── lib/
├── api-scanner/
│ └── common.sh
├── cloud-scanner/
│ ├── common.sh
│ ├── aws.sh
│ ├── azure.sh
│ └── gcp.sh
├── container-scanner/
│ ├── common.sh
│ ├── docker.sh
│ └── k8s.sh
├── oauth-jwt-scanner/
│ ├── common.sh
│ ├── oauth.sh
│ └── jwt.sh
├── open-redirect-scanner/
│ ├── common.sh
│ └── engine.py
├── sensitive-scanner/
│ ├── common.sh
│ ├── files.sh
│ ├── web.sh
│ ├── filescan.py
│ ├── engine.py
│ ├── fixtures/
│ └── run-tests.sh
├── waf-detect/
│ ├── common.sh
│ ├── probe.sh
│ ├── fixtures/
│ └── run-tests.sh
└── web-api-scanner/
├── common.sh
├── phases.sh
├── waf.sh
├── targets.sh
├── msf.sh
├── msf_parse.py
├── probe.sh
├── fixtures/
└── run-tests.sh
RECON
Passive
Breaches
Find registered domains
Google dorks
Web search
Import names
Import subdomains
Active
Previous menu
Note: Passive и Active нельзя запускать от root.
ПАССИВНАЯ РАЗВЕДКА
Использует Amass, ARIN, DNSRecon, dnstwist, Metasploit, subfinder,
sublist3r, theHarvester, Whois и несколько веб-сайтов.
* Получите все бесплатные ключи API для максимальных результатов с theHarvester.
* Добавьте ключи API в $HOME/.theHarvester/api-keys.yaml
* Пассивная разведка создаёт HTML-отчёт в $HOME/data/<domain>/.
* Найдите зарегистрированные домены; обновляет pages/registered-domains.htm в существующем отчёте.
* Активная разведка использует httpx, whatweb и gowitness; опциональный ключ API NVD ускоряет обогащение CVSS в активном отчёте (см. **Ключ API NVD** ниже).
#### Импорт имён (`import-names.sh`)
Запускайте после пассивного сканирования, когда хотите добавить или обогатить контакты из ручного исследования
(LinkedIn, сайты компаний, телефонные справочники и т.д.).```
Enter the location of your previous passive scan:
/home/user/data/example.com
Enter manual contacts file (or press Enter for default):
Import names объединяет три источника, затем обновляет pages/names.htm:
Объединенный TSV сохраняется обратно в tools/names. Страница имен представляет собой сортируемую таблицу из трех столбцов: Name, Title, Phone.
import-subdomains.sh)Запускайте после пассивного сканирования, когда хотите добавить или обогатить хосты из Pentest-Tools или ручных исследований.``` Enter the location of your previous passive scan: /home/user/data/example.com
Enter import file or firefox (or press Enter for default):
Поддерживаемые импорты:
* `firefox` — извлечение `pinia/scans` из вашего профиля Firefox (бесплатные сканы Pentest-Tools)
* Экспорт `pinia/scans` из Firefox (`pinia-scans.json`)
* JSON Pentest-Tools (`pentest-tools-<domain>.json`)
* Текстовый экспорт Pentest-Tools (`pentest-tools.txt`)
* Строки хоста/IP, разделенные табуляцией
* Редактируйте `$HOME/data/<domain>/tools/subdomains-import.tsv` для ручного ввода
* Формат: Поддомен, IP (разделены табуляцией; IP необязателен)
* Хосты без IP разрешаются с помощью `dig` во время импорта
* Повторно запускайте импорт поддоменов при добавлении строк или после нового скана Pentest-Tools
Импорт поддоменов объединяется с существующими `tools/subdomains`, назначает категории из
`old/subdomain-categories.tsv`, разделяет частные IP на `tools/private-subs` и
обновляет `pages/subdomains.htm` только с колонками Поддомен, Категория и IP.
Затем запустите **Active**, чтобы заполнить колонки Фото, Статус, Веб-сервер и Технологии.
#### Active (`active.sh`)
АКТИВНАЯ РАЗВЕДКА
Запускайте после пассивного сканирования (и опционально после импорта поддоменов), когда хотите проверить,
какие публичные хосты отвечают по HTTP/HTTPS, определить технологии и сделать скриншоты.```
Enter the location of your previous passive scan:
/home/user/data/example.com
Requires httpx, whatweb, gowitness, python3, and Chrome or Chromium (install via Update).
tools/subdomains (RFC1918 IPs are skipped)tools/httpx.jsonltools/whatweb.jsontools/gowitness/recon/active-tech.py and refreshes pages/subdomains.htmpages/active.htm (Reports menu → Active), including software versions enriched with NVD CVSS when availablepages/subdomains.htm, and refresh pages/active.htmThe Reports menu contains Passive (pages/passive.htm, the former report.htm rollup) and Active (pages/active.htm, httpx/whatweb stats).
Active Scope metrics
| Metric | Meaning |
|---|---|
| Public subdomains | Hosts in tools/subdomains with non-RFC1918 IPs |
| Private subdomains | Rows in tools/private-subs |
| Responding hosts | Unique hosts with an httpx status (any code) |
Status codes on the Active page count all httpx responses (including 404/5xx). Screenshots, whatweb, and Alive by category still use the alive subset only (status 200–399, 401, 403, or 405).
Public subdomains table (after Active):
| Column | Source |
|---|---|
| Subdomain, Category, IP | passive scan / Import subdomains |
| Photo | gowitness screenshot link when captured |
The private subdomains table stays three columns (Subdomain, Category, Private IP Address).
active-tech.py merges and deduplicates overlapping data between columns — for example, OpenSSL and mod_jk versions drop out of Web Server when already listed in Technologies, Microsoft IIS/10 shortens to Microsoft IIS when IIS:10 is present, Apache/2.4.37 shortens to Apache when Apache HTTP Server:2.4.37 is present, OS names such as Red Hat are removed from Technologies when already shown in the Web Server banner, and httpx Nginx labels are normalized to nginx.
Artifacts written under tools/:
active-targets.txt — public hostnames sent to httpxhttpx.jsonl — httpx JSON outputactive-alive.tsv — host, URL, and status for alive responsesactive.txt — alive URLs sent to whatweb and gowitnesswhatweb.json — whatweb JSON outputgowitness/screenshots/ — JPEG screenshotsgowitness/gowitness.jsonl and gowitness/gowitness.db — gowitness metadatasoftware-cves-cache.json — cached NVD CVSS/CVE lookups for the Active reportActive recon can enrich the Software versions table on pages/active.htm with CVSS scores and CVE IDs from the National Vulnerability Database. Lookups are implemented in recon/software-cve.py.
Without a key: enrichment still runs, but NVD’s anonymous rate limits apply (slower; roughly several seconds between requests).
With a key: authenticated rate limits (much faster).
Skip enrichment entirely:``` export DISCOVER_SKIP_CVE=1
**Получить бесплатный API-ключ**
1. Запросить ключ: https://nvd.nist.gov/developers/request-an-api-key
2. Подтвердите email, отправленный NIST
3. Предоставьте ключ Discover (экспорт в оболочку и/или приватный `.env` — см. ниже)
**Как Discover находит ключ**
Порядок приоритета (непустые значения выше по списку всегда выигрывают):
1. Среда оболочки — `export NVD_API_KEY=...`
2. Приватный `.env` в установке Discover — `$DISCOVER/.env`
3. Приватный `.env` в вашей домашней конфигурации — `~/.discover/.env`
Пример строки `.env` (кавычки не требуются):```
NVD_API_KEY=your-key-here
~/discover, как описано выше):
cp ~/discover/.env.example ~/discover/.env
or mkdir -p ~/.discover && cp ~/discover/.env.example ~/.discover/.env$DISCOVER/.env.example) вместо ~/discover.env игнорируется Git; никогда не коммитьте настоящие ключи.env.example отслеживается только как документацияДругие полезные переменные
| Переменная | Назначение |
|---|---|
NVD_API_KEY | Необязательный ключ API NVD для более быстрых запросов CVSS |
DISCOVER_SKIP_CVE=1 | Пропустить запросы NVD; таблица Software все еще показывает версии |
DISCOVER_CVE_PROGRESS=1 | Выводить каждый запрос продукта при построении Active |
Файл кэша: <report>/tools/software-cves-cache.json (на каждое задание; повторные запуски используют кэшированные результаты product:version). Значения CVSS — это триажные лиды из совпадений NVD CPE, а не подтвержденные находки — проверьте перед отчетом клиенту.
Известные эксплуатируемые уязвимости CISA (KEV)
Discover Update (пункт главного меню 16 / misc/update.sh) загружает каталог JSON CISA KEV в папку resource/ Discover:```
$DISCOVER/resource/known_exploited_vulnerabilities.json
(например, `~/discover/resource/known_exploited_vulnerabilities.json`)
Источник: https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json
Каталог: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Если загрузка не удалась, любой предыдущий локальный каталог остаётся на месте. Файл находится в .gitignore (обновляется через Update, а не коммитится).
В таблице активных **версий ПО** поле **Top CVE** отдаёт предпочтение совпадению из CISA KEV, если хотя бы один из CVE продукта из NVD присутствует в каталоге KEV (побеждает самый высокий CVSS среди KEV). В противном случае Top CVE — это результат NVD с наивысшим CVSS. Выбранные KEV отображаются с оранжевым значком **KEV** рядом с привязанным ID CVE.
#### Руководство SEC (страница Names)
Для публичных компаний США Discover извлекает руководителей и директоров из SEC EDGAR перед этапом объединения имён:
1. **DEF 14A** — текст доверенности и таблицы совета директоров для полных должностей
2. **Form 4** — недавние инсайдерские отчёты для дополнения списка должностных лиц и директоров
* Результаты записываются в zsec-people и объединяются в tools/names с существующими столбцами Name, Title, Phone (телефон оставляется пустым).
* Документы SEC не содержат рабочих email-адресов или индивидуальных номеров телефонов.
* Макет страницы Names не меняется — столбец с email не добавляется.
* Ручное переопределение: tools/sec-people-manual.tsv (разделитель — табуляция: Name, Title, Phone).
#### Штаб-квартира компании (страница Summary)
Во время пассивной разведки Discover пытается заполнить блок адреса и телефона на странице pages/summary.htm между названием компании и доменом.
1. **SEC EDGAR 10-K** — для публичных компаний США считывает поля основного исполнительного офиса из последнего отчёта 10-K (inline XBRL теги `dei:`).
2. **Подвал веб-сайта** — если SEC не дал совпадения, сканирует кэшированный подвал главной страницы (и страницы контактов) на наличие шаблонов адреса/телефона.
3. **Ручное переопределение** — добавление записей в tools/company-manual.tsv, если данные неверны или заблокированы.
Результаты записываются в tools/company.json и вставляются в pages/summary.htm.
#### Социальные сети (страница Summary)
Во время пассивной разведки Discover загружает главную страницу компании и извлекает ссылки на официальные профили в соцсетях (facebook, Instagram, LinkedIn, X, YouTube). Затем он пытается получить количество подписчиков из каждого профиля.
* Результаты записываются в tools/social.tsv и вставляются в pages/summary.htm.
* Если платформа блокирует сбор данных, количество подписчиков отображается как **Blocked**.
* Если главная страница заблокирована для ботов, добавьте URL-адреса в tools/social-manual.tsv (разделитель — табуляция: Platform, URL) до или после сканирования.
### Персона```
RECON
First name:
Last name:
SCANNING
* Используйте различные инструменты для создания списка целей, включая Angry IP Scanner, arp-scan, netdiscover, и Nmap pingsweep.
### CIDR, List, IP, Range, or URL```
Type of scan:
1. External
2. Internal
3. Previous menu
Using Burp, authenticate to a site, map & Spider, then log out. Target > Site map > select the URL > right click > Copy URLs in this host. Paste the results into a new file.
Enter the location of your file:
### Открыть несколько вкладок в Firefox```
Open multiple tabs in Firefox with:
1. List
2. Files in a directory
3. Directories in robots.txt
4. Previous menu
```
Examples:
* Список, содержащий несколько IP-адресов и/или URL-адресов.
* Вы закончили сканирование нескольких веб-сайтов с помощью Nikto и хотите открыть все отчеты htm, находящиеся в каталоге.
* Используйте wget для загрузки файла robot.txt домена, затем откройте все каталоги.
### Nikto```
This option cannot be ran as root.
Run multiple instances of Nikto in parallel.
1. List of IPs
2. List of IP:port
3. Previous menu
```
### SSL```
Check for SSL certificate issues.
List of IP:port.
Enter the location of your file:
```
* Использует sslscan, sslyze и Nmap для проверки проблем с сертификатами SSL/TLS.
## РАЗНОЕ
### Парсинг XML```
Parse XML to CSV.
1. Burp (Base64)
2. Nessus (.nessus)
3. Nexpose (XML 2.0)
4. Nmap
5. Qualys
6. Previous menu
```
### Сгенерируйте вредоносную нагрузку```
Malicious Payloads
1. android/meterpreter/reverse_tcp (.apk)
2. cmd/windows/reverse_powershell (.bat)
3. java/jsp_shell_reverse_tcp (Linux) (.jsp)
4. java/jsp_shell_reverse_tcp (Windows) (.jsp)
5. java/shell_reverse_tcp (.war)
6. linux/x64/meterpreter_reverse_https (.elf)
7. linux/x64/meterpreter_reverse_tcp (.elf)
8. linux/x64/shell/reverse_tcp (.elf)
9. osx/x64/meterpreter_reverse_https (.macho)
10. osx/x64/meterpreter_reverse_tcp (.macho)
11. php/meterpreter_reverse_tcp (.php)
12. python/meterpreter_reverse_https (.py)
13. python/meterpreter_reverse_tcp (.py)
14. windows/x64/meterpreter_reverse_https (multi)
15. windows/x64/meterpreter_reverse_tcp (multi)
16. Previous menu
```
### Запустить слушатель Metasploit```
Metasploit Listeners
1. android/meterpreter/reverse_tcp
2. cmd/windows/reverse_powershell
3. java/jsp_shell_reverse_tcp
4. linux/x64/meterpreter_reverse_https
5. linux/x64/meterpreter_reverse_tcp
6. linux/x64/shell/reverse_tcp
7. osx/x64/meterpreter_reverse_https
8. osx/x64/meterpreter_reverse_tcp
9. php/meterpreter/reverse_tcp
10. python/meterpreter_reverse_https
11. python/meterpreter_reverse_tcp
12. windows/x64/meterpreter_reverse_https
13. windows/x64/meterpreter_reverse_tcp
14. Previous menu
```
### Обновление (пункт главного меню 16)
* Обновляет операционную систему, выполняет git pull из различных репозиториев и обновляет базу данных locate.
* Устанавливает инструменты, используемые dev-сканерами (например `ffuf`, `feroxbuster`, `jq`, `trivy`).
## DEV
Результаты сканирования записываются в `$HOME/data/`, если не указано иное. Dev-сканеры создают **отдельные отчеты** в своих собственных выходных каталогах (`api-scan_*`, `cloud-scan_*` и т.д.). При необходимости они подключают `discover.sh` для вспомогательных функций меню и цветов, но **не записывают** и не обновляют HTML-отчет разведки Discover (`report.sh`, `$NAME`, `pages/*.htm`).
### API Security Scanner (`dev/api-scanner.sh`)
Фазированное обнаружение API и тестирование безопасности. Общие вспомогательные файлы и словари находятся в `dev/lib/api-scanner/` и `dev/data/`.
**Интерактивное меню**```
1. API Discovery and Testing (full)
2. API Quick Scan (discovery + docs)
3. JWT Token Analysis
4. Full API Assessment (orchestrated)
5. Previous menu
```
**CLI** (пропускает меню, когда установлен `-u`):```
./dev/api-scanner.sh -u https://target.example --quick --authorized
./dev/api-scanner.sh -u https://target.example --full --token 'eyJ…' --authorized
./dev/api-scanner.sh --resume ~/data/api-scan_20260703-1200 -u https://target.example
./dev/api-scanner.sh -u https://target.example --orchestrate --authorized
./dev/api-scanner.sh --help
```
| Флаг | Назначение |
|------|---------|
| `--quick` | Только обнаружение и документирование |
| `--full` | Все фазы (по умолчанию) |
| `--orchestrate` | Полное сканирование, затем запрос связанных сканеров |
| `--token` | Bearer-токен для аутентифицированных запросов |
| `--cookie-file` | Файл cookie в формате Netscape |
| `--max-parallel N` | Одновременные рабочие процессы (по умолчанию: 3) |
| `--max-endpoints N` | Ограничение числа проверяемых конечных точек после объединения |
| `--skip PHASE` | Пропустить фазу (повторяемый) |
| `--resume DIR` | Возобновить с использованием существующего выходного каталога |
| `--authorized` | Пропустить запрос подтверждения авторизации |
| `--aggressive-http` | Включить проверки методов TRACE/CONNECT |
**Фазы (полное сканирование):** Извлечение ссылок из HTML/JS, фаззинг с ffuf/feroxbuster, проверка путей, обнаружение OpenAPI/Swagger, тесты GraphQL (интроспекция, глубина, пакетная обработка), CORS (GET + preflight), проверки HTTP-методов, тест ограничения скорости, анализ JWT.
**Выходной каталог:** `$HOME/data/api-scan_<timestamp>/api_scanner/`
* `report.txt` и `report.md` — локальные находки сканера (не объединяются в отчёт Discover recon)
* `findings.json` — консолидированный экспорт всех находок в JSON
* `findings_registry.tsv` — журнал находок в формате TSV (источник для экспорта JSON)
* `scan.log` — журнал запросов
* `.checkpoint/` — маркеры возобновления для каждой фазы
Требуются `curl` и `jq`. Использует `ffuf` или `feroxbuster` при установке (установка через Discover **Update**). Подключает `discover.sh` при прямом запуске для `f_banner` / помощников меню.
### Cloud Security Scanner (`dev/cloud-scanner.sh`)
Поэтапный аудит неправильной конфигурации облака для AWS, Azure и GCP. Общие помощники находятся в `dev/lib/cloud-scanner/`.
**Интерактивное меню**```
1. AWS (Amazon Web Services)
2. Azure (Microsoft Azure)
3. GCP (Google Cloud Platform)
4. All providers
5. Previous menu
```
**CLI** (пропускает меню, когда установлены флаги провайдера):```
./dev/cloud-scanner.sh --aws --quick
./dev/cloud-scanner.sh --azure --gcp --full
./dev/cloud-scanner.sh --aws --output-dir ~/data/cloud-scan_custom
./dev/cloud-scanner.sh --resume ~/data/cloud-scan_20260704-1200 --aws
./dev/cloud-scanner.sh --help
```
| Флаг | Назначение |
|------|------------|
| `--aws` / `--azure` / `--gcp` | Запустить одного провайдера (комбинируйте для нескольких) |
| `--quick` | Проверки, ориентированные на экспозицию (публичный доступ, MFA, открытый ингресс) |
| `--full` | Полный аудит, включающий глубокий анализ IAM, мультирегиональный EC2/SG, дополнительные проверки |
| `--output-dir DIR` | Пользовательский каталог вывода |
| `--resume DIR` | Возобновить с использованием существующего каталога сканирования (пропускает завершённые фазы) |
| `-h`, `--help` | Показать справку |
Результаты записываются в `$HOME/data/cloud-scan_YYYYMMDD-HHMM/` (или `--output-dir`):
* `findings_registry.tsv` — уровень критичности, провайдер, сервис, ресурс, проверка, детали, доказательства
* `findings.json` — консолидированный JSON-экспорт всех находок
* `report.txt` / `report.md` — сводка сканера (не объединяется в отчёт Discover recon)
* `scan.log` — журнал активности API и находок
* `.checkpoint/` — маркеры фаз для `--resume`
Требует `jq` и соответствующий CLI облачного провайдера (`aws`, `az`, `gcloud`/`gsutil`) с настроенными учётными данными перед сканированием. Сканер не устанавливает CLI автоматически и не запускает интерактивные `aws configure` / `gcloud init`. При непосредственном запуске использует `discover.sh` для `f_banner` / вспомогательных функций меню.
### Сканер безопасности контейнеров (`dev/container-scanner.sh`)
Комплексная оценка безопасности Docker и Kubernetes с использованием Trivy, Docker и kubectl. Автономный вывод в `$HOME/data/container-scan_*` (не обновляет HTML-отчёты Discover recon).
* **Образы Docker** — сканирование уязвимостей/секретов/конфигураций Trivy, SBOM (полный режим), анализ Dockerfile
* **Контейнеры Docker** — привилегированный режим, точки монтирования, возможности, проверки во время выполнения (полный режим)
* **Kubernetes** — RBAC, NetworkPolicies, метки PSS, устаревшие API, безопасность подов
**Типы сканирования:** `docker-images`, `docker-containers`, `kubernetes` или `all` (по умолчанию при запуске из меню Discover).
**Параметры CLI:** `--quick`, `--full`, `--output-dir`, `--resume`, `--dockerfile-root`, `--include-ns`, `--exclude-ns`, `--trivy-jobs`, `--menu`, `-h`
**Артефакты вывода:** `findings_registry.tsv`, `findings.json`, `report.txt`, `report.md`, `scan.log`, `container_security_report.txt`
**Зависимости:** `docker`, `kubectl` (сканирование Kubernetes), `trivy`, `jq`, `numfmt` — установка через Discover Update; автоматическая установка не производится.
**Переменные окружения:** `CONTAINER_OUTPUT_DIR`, `CONTAINER_DOCKERFILE_ROOT`, `CONTAINER_SCAN_MODE`, `CONTAINER_EXCLUDE_NS`
### Сканер безопасности OAuth и JWT (`dev/oauth-jwt-scanner.sh`)
Обнаружение OAuth/OIDC, активные проверки авторизации, автономный анализ JWT и опциональная верификация живых токенов. Дополняет проверки JWT из `api-scanner.sh`. Автономный вывод в `$HOME/data/oauth-jwt-scan_*`.
* **OAuth/OIDC** — метаданные обнаружения, JWKS, проверки redirect_uri/state/PKCE/implicit
* **JWT офлайн** — alg=none, путаница RS256→HS256, атаки jku/x5u/kid, гигиена утверждений, полезные нагрузки для повышения привилегий
* **JWT онлайн** — опциональные тесты Bearer против `--jwt-endpoint` (автоматически заполняется из userinfo при обнаружении)
**Типы сканирования:** `oauth`, `jwt` или `all` (комбинированный).
**Меню:** Тест OAuth, тест JWT, комбинированное сканирование или предыдущее меню.
**Примеры CLI:**```bash
./dev/oauth-jwt-scanner.sh --target https://app.example.com --full
./dev/oauth-jwt-scanner.sh --jwt 'eyJhbG...' --jwt-endpoint https://app.example.com/api/me
./dev/oauth-jwt-scanner.sh --target https://app.example.com --api-scan-dir ~/data/api-scan_20260101-1200 --all
```
**Опции:** `--target`, `--jwt`, `--jwt-file`, `--api-scan-dir`, `--jwt-endpoint`, `--client-id`, `--redirect-uri`, `--quick`, `--full`, `--oauth`, `--jwt-only`, `--all`, `--output-dir`, `--resume`, `--menu`, `-h`
**Вывод:** `findings_registry.tsv`, `findings.json`, `report.txt`, `report.md`, `scan.log`
**Зависимости:** `curl`, `jq`
### Сканер открытых перенаправлений (`dev/open-redirect.sh`)
Фаззит параметры перенаправлений (внедрение + мутация существующих параметров запроса) с настраиваемыми canary-хостами. Обнаруживает 3xx `Location` (с одним переходом), meta refresh и JavaScript/тело перенаправлений. Полный режим добавляет POST и заголовочные пробы. Проход подтверждения использует второй canary-хост для уменьшения ложных срабатываний. Движок Python: `dev/lib/open-redirect-scanner/engine.py`; полезные нагрузки: `dev/data/openredirect-payloads.txt`. Автономный вывод в `$HOME/data/openredirect-scan_*`.
**Меню:** Одиночный URL, домен, файл URL, расширенные опции, каталог предыдущего сканирования или предыдущее меню.
**Примеры CLI:**```bash
./dev/open-redirect.sh --url https://app.example.com/login?next=/home --full
./dev/open-redirect.sh --domain example.com --quick
./dev/open-redirect.sh --scan-dir ~/data/api-scan_20260101-1200 --crawl --quick
./dev/open-redirect.sh --file ~/targets.txt --max-requests 500 --rps 5
```
**Опции:** `--url`, `--domain`, `--file`, `--scan-dir`, `--wordlist`, `--canary-host`, `--quick`, `--full`, `--crawl`, `--workers`, `--delay`, `--rps`, `--max-requests`, `--no-confirm`, `--quiet`, `--output-dir`, `--resume`, `--menu`, `-h`
**Вывод:** `findings_registry.tsv`, `findings.json`, `report.txt`, `report.md`, `scan.log`, `openredirect_engine/results.json`, `openredirect_engine/checkpoint.json`
**Зависимости:** `python3`, `requests` (Discover Update устанавливает `python3-requests`), `jq`
### Сканер конфиденциальной информации (`dev/sensitive-scanner.sh`)
Ищет секреты, учётные данные и PII в локальных файлах/каталогах и открытых веб-путях. Оркестрация Bash с движками Python: `filescan.py` (однопроходное сканирование файлов) и `engine.py` (параллельный веб-зонд). Данные шаблонов: `dev/data/sensitive-patterns.tsv`, `sensitive-denylist.txt`, `sensitive-skip-paths.txt`. Автономный вывод в `$HOME/data/sensitive-scan_*`.
* **Сканирование файлов** — один проход на файл через `filescan.py`; денлист, глобальные маски пропуска, энтропийный фильтр, проверка Luhn/SSN/TC; опционально `gitleaks` / `trufflehog` (`--external auto`)
* **Веб-сканирование** — параллельные воркеры/RPS, возобновление с контрольной точки по пути, пути robots disallow + sitemap, импорт конечных точек api-scanner, защита от soft-404, обнаружение списка каталогов, глубокий `filescan.py` для тел HTTP 200
* **Хук api-scanner** — встроенные проверки ответов с использованием `filescan.py`; оркестратор может автоматически запускать `--all` с bearer-токеном
* **Отчёты** — дедуплицированные `findings_registry.tsv`, `findings.json`, `report.txt`, `report.md`; `--no-store-content` / `--shred-content` для безопасных артефактов
**Меню:** Файл или папка, URL, файл/папка + каталог предыдущего сканирования, URL + вывод api-scan или предыдущее меню.
**Примеры:**```
./dev/sensitive-scanner.sh --path ./myapp --files --full
./dev/sensitive-scanner.sh --url https://app.example.com --web --quick --workers 8 --rps 5
./dev/sensitive-scanner.sh --url https://app.example.com --scan-dir ~/data/api-scan_20260101-1200 --all --quick --bearer-token "$TOKEN"
./dev/sensitive-scanner.sh --path /var/www/html/config.php --files --external gitleaks
./dev/lib/sensitive-scanner/run-tests.sh
```
**Параметры:** `--path`, `--url`, `--scan-dir`, `--wordlist`, `--quick`, `--full`, `--workers`, `--delay`, `--rps`, `--max-paths`, `--bearer-token`, `--insecure`, `--no-store-content`, `--shred-content`, `--redact-emails`, `--entropy-min`, `--external`, `--files`, `--web`, `--all`, `--output-dir`, `--resume`, `--quiet`, `--menu`, `-h`
**Вывод:** `findings_registry.tsv`, `findings.json`, `report.txt`, `report.md`, `scan.log`, `sensitive_info/`, `web_sensitive/engine/{results,checkpoint}.json`
**Зависимости:** `python3`, `jq`, `find`; для веб-сканирования требуется `python3-requests`; опционально `gitleaks`, `trufflehog`, `rg`
### Обнаружение WAF (`dev/waf-detect.sh`)
Определяет межсетевые экраны веб-приложений и пограничные слои CDN перед целями. Модульная библиотека: `dev/lib/waf-detect/{common,probe}.sh`, `wafw00f_run.py`; данные: `dev/data/waf-signatures.tsv`, `waf-aliases.tsv`, `waf-labels.tsv`. Автономный вывод в `$HOME/data/waf-detection_*`.
* **Истинно пассивный (по умолчанию для хука api-scanner)** — `--passive` отправляет только обычный HTTP GET; сопоставляет заголовки/содержимое ответа с `waf-signatures.tsv`. Без wafw00f, без SQLi-триггеров, без инъекции `X-Forwarded-For`.
* **Активный режим** — wafw00f через `wafw00f_run.py` (основной, высокая достоверность) плюс дополнительные сигнатурные/поведенческие зонды. Для неинтерактивных активных сканирований требуется `--i-understand`.
* **Дополнительный** — `--supplemental auto` пропускает избыточные зонды после уверенного попадания wafw00f; поведенческие находки требуют подтверждения заголовками WAF
* **Объединённые результаты** — одна строка на вендора с достоверностью (`high`/`medium`/`low`), источником и типом (`waf`/`cdn`/`both`)
* **Структурированные совпадения** — `waf_engine/hits.jsonl` и `findings.json` `hits[]` для последующей обработки
* **Возобновление** — `--resume DIR` продолжает с `waf_engine/checkpoint.json`
* **Отчёты** — `findings_registry.tsv`, `findings.json`, `report.txt`, `report.md`, `waf_results.tsv`
**Меню:** Одиночная цель, файл целей или предыдущее меню (с выбором активного/пассивного).
**Примеры:**```
./dev/waf-detect.sh --url https://app.example.com --passive
./dev/waf-detect.sh --file ~/targets.txt --passive --delay 2
./dev/waf-detect.sh --url example.com --i-understand --output-dir ~/data/waf-test
./dev/waf-detect.sh --resume ~/data/waf-detection_20260704-1200 --workers 4
./dev/lib/waf-detect/run-tests.sh
```
**Опции:** `--url`, `--file`, `--output-dir`, `--resume`, `--passive`, `--i-understand`, `--waf-only`, `--insecure`, `--no-redirect`, `--proxy`, `--delay`, `--max-targets`, `--workers`, `--wafw00f`, `--supplemental`, `--input-format`, `--quiet`, `--menu`, `-h`
**Вывод:** `findings_registry.tsv`, `findings.json`, `report.txt`, `report.md`, `waf_results.tsv`, `scan.log`, `waf_engine/{hits.jsonl,checkpoint.json,*.json}`
**Зависимости:** `curl`, `jq`, `grep`, `python3`; опционально `wafw00f` (активный режим, рекомендуется)
**Интеграция api-scanner:** `api-scanner.sh --orchestrate` предлагает запустить waf-detect после основного сканирования (по умолчанию пассивный).
### Веб- и API-безопасность (`dev/web-api-scanner.sh`)
Оценка веб/API на основе Metasploit. Модульная библиотека: `dev/lib/web-api-scanner/{common,phases,msf,probe,waf,targets}.sh`, `msf_parse.py`; данные: `dev/data/web-api-{phases,tech-signatures}.tsv`. Автономный вывод в `$HOME/data/web-api-scan_*`.
* **Уровни** — `passive` (разведка) | `standard`/`--quick` (разведка + технические сканеры) | `intrusive` (+ SQLi/брутфорс) | `exploit` (+ проверки на эксплуатацию)
* **Управление фазами** — `--phases`, `--skip-phases`; поэтапный `msfconsole` с `--phase-timeout`
* **Технологический отпечаток** — взвешенный `web-api-tech-signatures.tsv` (Laravel, Spring, Swagger, nginx, …)
* **WAF-осведомлённость** — пропускает фазы брутфорса при обнаружении WAF/CDN (`--scan-dir` или сигнатуры заголовков)
* **Аутентификация** — `--bearer-token`, `--cookie-file` для curl + MSF
* **Интеграция api-scanner** — `--scan-dir` загружает `api_scanner/all_endpoints.txt` для путей `brute_dirs`
* **Структурированные результаты** — `msf_parse.py` → `msf_engine/hits.jsonl` + `findings.json` `hits[]`
* **Множественные цели** — `--file`, `--workers`, `--max-targets`
* **Стелс** — `--delay`, `--jitter`, `--proxy`, `THREADS` на основе уровня
* **MSF DB** — по умолчанию только проверки; `--msf-db-bootstrap` для настройки по выбору
**Меню:** Сканировать URL (по умолчанию пассивное) или предыдущее меню.
**Примеры:**```
./dev/web-api-scanner.sh --url https://app.example.com --passive
./dev/web-api-scanner.sh --url example.com --quick --scan-dir ~/data/api-scan_*/
./dev/web-api-scanner.sh --url example.com --tier exploit --i-understand --bearer-token "$TOKEN"
./dev/web-api-scanner.sh --file ~/targets.txt --quick --workers 2 --max-targets 10
WEBAPI_RUN_LIVE_MSF=1 ./dev/lib/web-api-scanner/run-tests.sh
```
**Опции:** `--url`, `--file`, `--tier`, `--quick`, `--phases`, `--skip-phases`, `--scan-dir`, `--bearer-token`, `--cookie-file`, `--proxy`, `--phase-timeout`, `--workers`, `--threads`, `--jitter`, `--target-ip`, `--output-dir`, `--resume`, `--passive`, `--i-understand`, `--dry-run`, `--skip-msf-db`, `--msf-db-bootstrap`, `--keep-resources`, `--no-waf-aware`, `--insecure`, `--delay`, `--quiet`, `--menu`, `-h`
**Вывод:** `findings_registry.tsv`, `findings.json`, `report.txt`, `report.md`, `scan.log`, `msf_engine/`
**Зависимости:** `curl`, `jq`, `grep`, `msfconsole`; PostgreSQL рекомендуется для базы данных MSF (опционально с `--skip-msf-db`)
**Интеграция api-scanner:** `api-scanner.sh --orchestrate` предлагает запустить web-api-scanner (по умолчанию пассивный).
# Устранение неполадок
Некоторые пользователи сообщают, что не могут использовать никакие опции, кроме 3, 4 и 5.
Ничего не происходит при выборе других опций (1, 2, 6 и т.д.).
## Проверка хэша загрузки
Проверка на основе хэша гарантирует, что файл не был поврежден, путем сравнения хэш-значения файла
с ранее вычисленным значением. Если эти значения совпадают, файл считается неизменным.
### macOS
1. Откройте Терминал
2. shasum -a 256 /путь/к/файлу
3. Сравните полученное значение с контрольной суммой на веб-сайте.
### Windows
1. Откройте PowerShell
2. Get-FileHash C:\путь\к\файлу
3. Сравните полученное значение с контрольной суммой на веб-сайте.
## Запуск Kali на VirtualBox или подсистеме Windows для Linux (WSL)
Некоторые пользователи сообщают, что решение — использовать образ VMware вместо WSL.
Другие пользователи заметили проблемы при запуске готового образа Kali для VirtualBox вместо запуска
чистого ISO Kali через VirtualBox.
(https://www.kali.org/get-kali/#kali-bare-metal)
Если вы не хотите или не можете использовать VMware Workstation для запуска Kali, мы рекомендуем попробовать
запустить ISO Kali как гостевую ВМ в VirtualBox.
1. Загрузите чистый ISO, предоставленный Kali.
2. Проверьте хэш ISO (см. выше).
3. Запустите новую ВМ Kali в VirtualBox с этим чистым ISO Kali.
Вам потребуется следовать некоторым [базовым инструкциям по установке](https://www.kali.org/docs/installation/hard-disk-install/)
во время процесса установки.
Примечание: Если у вас возникли проблемы с доступом к root после настройки чистого ISO, обратитесь к:
https://linuxconfig.org/how-to-reset-kali-linux-root-password
| Status | httpx status code |
| Web Server | httpx/whatweb Server header |
| Title / Technologies | httpx page title (filtered) + httpx tech / whatweb plugins |