Skip to content

Repository files navigation

AppSec Recon Framework

tests Python License Mode

CLI-инструмент для контролируемой первичной разведки веб-сервисов. Он объединяет bounded TCP connect scan, определение HTTP(S) на стандартных и нестандартных портах, несколько точечных AppSec-проверок, path discovery и структурированные отчёты.

Используйте scanner только для localhost, собственных систем или целей с явным разрешением на тестирование. Для любой non-loopback цели требуется флаг --acknowledge-authorization.

Локальная демонстрация AppSec Recon Framework

Возможности

  • TCP connect scan без root-прав;
  • IP, hostname, файл целей и небольшие CIDR-диапазоны;
  • protocol probing HTTP/HTTPS на любом найденном порту;
  • проверка CSP, HSTS, clickjacking protection и nosniff;
  • проверка CORS с контролируемым недоверенным Origin;
  • подтверждение открытых .env, .git/config, backup и debug endpoints по сигнатурам;
  • поиск секретоподобных значений в HTML и same-origin JavaScript;
  • редактирование найденных значений перед записью evidence;
  • path discovery с baseline для фильтрации soft-404;
  • JSON, Markdown и Nuclei target list;
  • локальная уязвимая demo-цель;
  • pipeline с Subfinder и необязательной Telegram-сводкой.

Быстрый старт

git clone https://github.com/fant3k/AppSec-Recon-Framework.git
cd AppSec-Recon-Framework
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install .
appsec-recon --version

Установка создаёт команду appsec-recon и включает встроенный стартовый wordlist в Python package.

Безопасная локальная демонстрация

scripts/demo_local.sh

Скрипт временно запускает цель на 127.0.0.1:8088, выполняет scan и завершает demo-сервер. Проверяются:

  • permissive credentialed CORS;
  • открытые .env и .git/config;
  • три отсутствующих security header;
  • редактируемый секретоподобный JavaScript token;
  • путь /admin, найденный через baseline-aware discovery.

Ожидаемый итог:

Open ports:       1
Web services:     1
Issues:           7
Discovered paths: 1
Severity:         critical=1, high=3, low=3

Использование

Только TCP scan локальной цели:

appsec-recon 127.0.0.1 --ports 1-1000 --no-web

Авторизованная внешняя проверка с отчётами:

appsec-recon example.com \
  --ports 80,443,7000,8080,9443 \
  --acknowledge-authorization \
  --json-out reports/example.json \
  --markdown-out reports/example.md \
  --nuclei-targets reports/example-urls.txt

Небольшой CIDR:

appsec-recon 192.168.1.0/24 \
  --ports 80,443,8080 \
  --max-hosts 256 \
  --acknowledge-authorization

Safety controls

Scanner ограничивает собственную активность:

  • --max-hosts ограничивает раскрытие каждого CIDR;
  • --max-scan-jobs ограничивает произведение targets × ports;
  • --threads допускает только 1–512 workers;
  • TCP jobs отправляются ограниченными batch, а не складываются целиком в RAM;
  • --timeout, --fuzz-limit и --request-delay валидируются;
  • каждый HTTP response ограничен 512 KiB;
  • JavaScript response ограничен 200 KiB;
  • автоматические redirects не пересекают подтверждённый scope;
  • внешняя цель требует --acknowledge-authorization;
  • scanner использует идентифицируемый User-Agent.

Точность findings

HTTP 200 сам по себе не считается подтверждением открытого файла. Finding для .env, .git/config и других чувствительных путей создаётся только при совпадении ожидаемой сигнатуры. Baseline path позволяет path discovery отфильтровать приложения, которые возвращают одинаковую soft-404 страницу с кодом 200.

Это reconnaissance, а не доказательство exploitability. Каждый finding нужно подтверждать вручную в рамках согласованного scope.

Архитектура

appsec_framework/
  cli.py          CLI, валидация scope и orchestration
  targets.py      target/CIDR/port parsing
  network.py      bounded TCP connect scan
  web.py          protocol probing и web checks
  models.py       типизированная схема результата
  reporting.py    JSON, Markdown и Nuclei targets
  data/           встроенный стартовый wordlist

examples/         локальная demo-цель
scripts/          demo, Subfinder pipeline и Telegram summary
tests/            unit и local integration tests

Проверка

scripts/test.sh

Тесты запускают реальные localhost TCP/HTTP-сервисы и проверяют:

  • target и port parsing;
  • ресурсные лимиты и authorization gate;
  • bounded TCP scan;
  • HTTP probing на случайном нестандартном порту;
  • все семь demo findings;
  • soft-200 filtering;
  • response-size limits;
  • redaction секретов;
  • JSON, Markdown и Nuclei output.

GitHub Actions повторяет проверку на Python 3.9, 3.11 и 3.13, устанавливая проект именно как пакет и вызывая установленную CLI-команду.

Docker

docker compose up -d demo
docker compose --profile tools run --rm scanner
docker compose down

Demo публикуется только на 127.0.0.1:8088. Scanner и demo взаимодействуют во внутренней Docker network.

Ограничения

  • это не замена Nmap, Nuclei, Burp Suite или полноценному DAST;
  • service fingerprinting ограничен HTTP(S) probing и server header;
  • секреты ищутся эвристически и требуют ручной проверки;
  • path discovery использует небольшой встроенный wordlist;
  • scanner не анализирует бизнес-логику и authenticated workflows.

Документы

About

Bounded AppSec reconnaissance CLI with TCP scanning, HTTP probing, focused web checks and structured reports.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages