
Orquestador autorizado de reconocimiento y triaje para el sector educativo (nmap/dirsearch/sqlmap/hydra + CVE-2024-4577, fuga de secretos/claves de API, XSS, wp2shell) con panel de control web
Orquestador autorizado de reconocimiento y triaje para ejercicios red/blue del sector educativo. Introduce los objetivos, ejecuta los escáneres, filtra el ruido y te entrega una cola de revisión clasificada en una interfaz web. Diseñado para desplegarse en tu máquina Linux (Kali / infra), controlado desde un navegador.
⚠️ Solo para uso autorizado. Apúntalo únicamente a sistemas que estés autorizado a probar. El bloqueo de alcance está desactivado por defecto — el operador es responsable de la autorización. Para un encargo real puedes reactivar una lista de permitidos de alcance bloqueada con
scope_enforce: trueenconfig.yaml(cada etapa vuelve a comprobar el alcance antes de actuar).
Kali / Debian / Ubuntu — pega el bloque completo:
sudo apt update && sudo apt install -y python3 python3-venv git nmap sqlmap hydra dirsearch
git clone https://github.com/ericchen913900/edu-recon.git
cd edu-recon
chmod +x run.sh
./run.sh
Eso es todo. run.sh construye el venv, clona las herramientas incluidas + instala las dependencias,
ejecuta , y luego lanza la consola en
y abre tu navegador. (Ctrl-C lo detiene; vuelve a ejecutar
en cualquier momento.)
doctorhttp://127.0.0.1:8770./run.shWindows (Git Bash / WSL):
git clone https://github.com/ericchen913900/edu-recon.git
cd edu-recon
bash run.sh # first run auto-creates the venv + clones tools; nmap must be on PATH
targets ─▶ expand (CIDR ping-sweep, subdomain enum)
─▶ per target:
portscan nmap -sV -sC (+ --script vuln)
webdisco dirsearch (+ WordPress detect)
exposures .git / .env / backups / phpinfo / server-status / actuator …
+ phpMyAdmin/Adminer exposure + open directory listing
secrets JS/HTML key-leak scan (AWS/GCP/GitHub/Slack/Stripe/JWT/私鑰/…)
+ API-doc / GraphQL-introspection exposure ← api leak
phpcgi CVE-2024-4577 / 8926 via Night-have-dreams/php-cgi-Injector
react2shell CVE-2025-55182 React Server Components RCE
via hidden-investigations/react2shell-scanner (safe-check by default)
webcve built-in non-destructive safe-check probes for famous CVEs:
PHPUnit 2017-9841 · Apache-traversal 2021-41773 · Struts2 2017-5638
· Confluence 2022-26134 · Drupalgeddon2 2018-7600 · Next.js 2025-29927
moodle Moodle LMS fingerprint + version + outdated-branch +
web-exposed moodledata (the dominant .edu system)
xss dalfox + built-in reflected-XSS canary
sqli built-in SQL-error quick pass + sqlmap deep
cred hydra weak/default passwords (ssh/ftp/rdp/db/…)
wp xAL6/wp2shell WordPress SQLi→shell
─▶ triage: infer findings from services, drop soft-404 noise,
dedupe, rank by severity → review queue
─▶ report: JSON / Markdown / self-contained HTML
git clone https://github.com/ericchen913900/edu-recon.git && cd edu-recon
python3 -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
python recon.py setup # clones php-cgi-Injector + react2shell-scanner + wp2shell + dirsearch, installs deps
python recon.py doctor # shows which scanners resolved
En Kali los escáneres pesados (nmap/sqlmap/hydra/dirsearch) ya son nativos — consulta Desplegar en Kali Linux para la receta completa.
Kali es la máquina prevista: nmap, sqlmap, hydra, dirsearch vienen en la
distribución, así que todo el pipeline (incluida la inyección + contraseñas débiles) se ejecuta de forma nativa.
# 1) system tools — most are already on Kali; this is the complete set
sudo apt update
sudo apt install -y python3 python3-venv git nmap sqlmap hydra dirsearch
# optional (better XSS + subdomain enum):
# sudo apt install -y dalfox subfinder # or: go install github.com/hahwul/dalfox/v2@latest ; \
# # go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# 2) get the code
git clone https://github.com/ericchen913900/edu-recon.git
cd edu-recon
# 3) isolated venv + Python deps + bundled script-tools
python3 -m venv .venv
source .venv/bin/activate
python recon.py setup # clones php-cgi-Injector / react2shell-scanner / wp2shell / dirsearch, pip-installs deps
# 4) sanity check — on Kali nmap/sqlmap/hydra/dirsearch should all be OK (native)
python recon.py doctor
# 5a) web console — bind to localhost, drive from a browser
python recon.py serve --host 127.0.0.1 --port 8770
# → http://127.0.0.1:8770 (paste targets → pick intensity → ARM & RUN)
# remote Kali? tunnel instead of exposing it:
# ssh -L 8770:127.0.0.1:8770 user@kali # then browse http://localhost:8770
# 5b) or headless
python recon.py scan -t targets.txt --intensity full
python recon.py repro <run-id> # runnable reproduction PoC per confirmed finding
python recon.py payout <run-id> # legal disclosure / bounty routing per finding
Notas sobre Kali
dirsearch nativo se usa automáticamente para un barrido completo de
db/dicc.txt (cada directorio/archivo descubierto se lista en la consola bajo
🗂 網站路徑). Omite el paquete apt y setup clona dirsearch y lo ejecuta vía
Python en su lugar — de cualquier forma webdisco funciona.sqlmap/hydra/nmap nativos, --intensity full
ejecuta realmente las comprobaciones de inyección + contraseñas débiles (safe-checks no destructivos
en el resto).scope_enforce: true en config.yaml + lista tu alcance autorizado
en el archivo de objetivos / extra_allowed_cidrs.--host 127.0.0.1 y accede a ella mediante un túnel
SSH; no tiene autenticación propia.# /etc/systemd/system/edu-recon.service
[Service]
WorkingDirectory=/home/kali/edu-recon
ExecStart=/home/kali/edu-recon/.venv/bin/python recon.py serve --host 127.0.0.1 --port 8770
Restart=on-failure
User=kali
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now edu-reconchmod +x run.sh && ./run.sh # 滿血:自動 venv/setup/doctor → 全火力 console → 開瀏覽器
# HOST=0.0.0.0 PORT=9000 ./run.sh # override bind/port
run.sh crea el venv en la primera ejecución, clona las herramientas incluidas, ejecuta doctor,
y luego sirve la consola a plena potencia — intensidad full, nmap -sC --script vuln, el barrido completo de dirsearch db/dicc.txt, todos los escáneres resueltos, bloqueo de alcance
desactivado — en http://127.0.0.1:8770 y abre tu navegador. Ctrl-C lo detiene.
python recon.py serve --host 127.0.0.1 --port 8770
Abre la URL, pega los objetivos (uno por línea: IP / host / URL / CIDR /
domain / host:port), elige una intensidad, pulsa 開始掃描. Observa cómo se rellena en vivo la cuadrícula de etapas de cada
objetivo, filtra hallazgos por severidad, expande la evidencia,
abre los registros de herramientas en bruto, marca falsos positivos y exporta el informe HTML.
python recon.py scan -t targets.txt --intensity full
# reports land in runs/<run-id>/report.{md,html,json}
Lanzadores:
| comando | qué hace |
|---|---|
./run.sh | lanzamiento con un solo comando a plena potencia: venv/setup/doctor → consola → abre el navegador. HOST=… PORT=… ./run.sh para sobrescribir. |
Subcomandos de recon.py (prefija con el python del venv, p. ej. .venv/bin/python):
| comando | qué hace |
|---|---|
recon.py setup | clona las herramientas incluidas (php-cgi-Injector / react2shell-scanner / wp2shell / dirsearch) + instala sus dependencias con pip |
recon.py doctor | muestra qué escáneres se resolvieron (nmap / sqlmap / hydra / dirsearch / dalfox / subfinder / herramientas incluidas) |
recon.py serve [--host H] [--port P] | lanza la consola web (por defecto 127.0.0.1:8770) |
recon.py scan -t targets.txt [--intensity full|recon|passive] | escaneo sin interfaz de un archivo de objetivos |
recon.py scan http://host/ 10.0.0.0/24 … | escaneo sin interfaz de objetivos en línea |
recon.py repro <run-id> [--finding <id>] [--out DIR] | imprime / escribe un PoC de reproducción ejecutable por cada hallazgo confirmado |
recon.py payout <run-id> | enrutamiento legal de divulgación / recompensas por cada hallazgo confirmado |
Flags comunes (todos los subcomandos): --config FILE (sobrescrituras yaml/json) · --intensity · --concurrency N · --workdir DIR.
Los objetivos de escaneo aceptan: IP · host · URL · CIDR · domain · host:port (uno por línea en un archivo, o en línea / pegados en la consola).
API web (lo que controla la consola; útil para scripting):
| endpoint | propósito |
|---|---|
POST /api/runs {targets,intensity,concurrency,scope_enforce} | iniciar una ejecución → {id} |
GET /api/runs · GET /api/runs/{id} | listar ejecuciones · ejecución completa (targets/stages/findings/webpaths) |
GET /api/runs/{id}/logs?since=N | registro en vivo incremental |
GET /api/runs/{id}/artifact?path=… | registro de herramienta en bruto / volcado guardado |
GET /api/runs/{id}/repro[?finding_id=…] | script(s) PoC de reproducción |
POST /api/runs/{id}/finding {finding_id,reviewed,false_positive} | triar un hallazgo |
POST /api/runs/{id}/dump {finding_id} · POST …/dumps/clear | capturar una fuga (archivo/.git-source/clave) · limpiar capturas |
POST /api/runs/{id}/report · POST …/cancel | exportar informe · cancelar ejecución |
Ejemplos:
./run.sh # full-power console + browser
.venv/bin/python recon.py scan -t targets.txt --intensity full
.venv/bin/python recon.py repro run-20260907-185021 --out pocs/ # write repro_*.sh
.venv/bin/python recon.py payout run-20260907-185021 # legal cash-out routing
HOST=0.0.0.0 PORT=9000 ./run.sh # bind elsewhere (tunnel it, don't expose)
| nivel | qué se ejecuta |
|---|---|
full | todo, inyección + contraseñas débiles ejecutadas (por defecto) |
recon | phpcgi + react2shell + webcve + XSS + exposures se ejecutan; sqli/cred solo listan candidatos |
passive | portscan + webdisco + exposures + secrets (solo GETs benignos) |
Edita config.yaml (ver comentarios) o pasa --config. Las listas de palabras están en
wordlists/ (default-creds.txt, users.txt, passwords.txt, web-common.txt).
Ajusta hydra_tasks bajo para evitar bloqueos de cuentas; sube nmap_top_ports: 0 para
un escaneo de todos los puertos.
recon.py CLI (serve / scan / setup / doctor / repro / payout)
edurecon/
config.py defaults + yaml/json loader + intensity gating
scope.py target parsing + scope allowlist (subdomain-aware)
engine.py expansion + concurrent per-target pipeline + cancel
stages.py every scan stage
webscan.py crawler + reflected-XSS + SQL-error heuristics
secrets.py key-leak regexes + API-doc/GraphQL probes
cveprobes.py built-in non-destructive famous-CVE safe-check probes
edusys.py education-sector system audit (Moodle)
parse.py nmap/dirsearch/sqlmap/hydra/phpcgi/react2shell parsers
triage.py service inference, soft-404 filter, dedupe, ranking
report.py JSON / Markdown / HTML export
store.py run state + JSON persistence
webui.py stdlib web control panel
third_party/ php-cgi-Injector, react2shell-scanner, wp2shell, dirsearch (via `setup`)
runs/ per-run artifacts + reports