
교육 부문 인가 정찰 및 트리아지 오케스트레이터(nmap/dirsearch/sqlmap/hydra + CVE-2024-4577, 시크릿/API 키 유출, XSS, wp2shell)와 웹 제어 패널
교육 부문 레드/블루 훈련을 위한 승인된 정찰 및 분류 오케스트레이터. 대상을 넣으면 스캐너를 실행하고, 노이즈를 필터링한 뒤, 웹 UI에서 순위가 매겨진 검토 큐를 제공합니다. Linux 박스(Kali / infra)에 배포하고 브라우저에서 구동하도록 설계되었습니다.
⚠️ 승인된 사용만 허용됩니다. 테스트 권한이 있는 시스템에만 사용하십시오. 범위 잠금은 기본적으로 꺼져 있습니다 — 권한은 운영자가 책임집니다. 실제 작업에서는
config.yaml의scope_enforce: true로 잠긴 범위 허용 목록을 다시 활성화할 수 있습니다(그러면 모든 단계가 실행 전에 범위를 재확인합니다).
Kali / Debian / Ubuntu — 전체 블록을 붙여넣으세요:
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
끝입니다. run.sh가 venv를 만들고, 번들 도구를 복제하고 의존성을 설치한 뒤,
doctor를 실행하고, http://127.0.0.1:8770에서 풀파워 콘솔을 실행하고
브라우저를 엽니다. (Ctrl-C로 중지되며, 언제든 ./run.sh를 다시 실행하세요.)
Windows (Git Bash / WSL):
git clone https://github.com/ericchen913900/edu-recon.git
cd edu-recon
bash run.sh # 첫 실행 시 venv + 도구 복제를 자동 생성; nmap이 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
Kali에서는 무거운 스캐너(nmap/sqlmap/hydra/dirsearch)가 이미 네이티브로 제공됩니다 — 전체 레시피는 **Kali Linux에 배포**를 참조하세요.
Kali가 의도된 환경입니다: nmap, sqlmap, hydra, dirsearch가 배포판에
포함되어 있어 전체 파이프라인(인젝션 + 취약한 비밀번호 포함)이 네이티브로
실행됩니다.
# 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
Kali 참고 사항
dirsearch는 전체 db/dicc.txt 스윕에 자동으로
사용됩니다(발견된 모든 디렉터리/파일이 콘솔의 🗂 網站路徑 아래에 나열됩니다).
apt 패키지를 건너뛰면 setup이 dirsearch를 복제하여 Python으로 실행합니다 —
어느 쪽이든 webdisco는 작동합니다.sqlmap/hydra/nmap과 함께 --intensity full은
실제로 인젝션 + 취약한 비밀번호 검사를 실행합니다(다른 곳에서는 비파괴적
안전 검사).config.yaml의 scope_enforce: true + 대상 파일 /
extra_allowed_cidrs에 승인된 범위를 나열하세요.--host 127.0.0.1을 유지하고 SSH 터널을 통해
접근하세요. 자체 인증이 없습니다.chmod +x run.sh && ./run.sh # 滿血:自動 venv/setup/doctor → 全火力 console → 開瀏覽器
# HOST=0.0.0.0 PORT=9000 ./run.sh # override bind/port
run.sh는 첫 실행 시 venv를 생성하고, 번들 도구를 복제하고, doctor를 실행한
뒤, 풀파워로 콘솔을 제공합니다 — intensity full, nmap -sC --script vuln,
전체 dirsearch db/dicc.txt 스윕, 해결된 모든 스캐너, 범위 잠금 해제 —
http://127.0.0.1:8770에서 브라우저를 엽니다. Ctrl-C로 중지됩니다.
python recon.py serve --host 127.0.0.1 --port 8770
URL을 열고, 대상을 붙여넣고(한 줄에 하나: IP / host / URL / CIDR /
domain / host:port), intensity를 선택하고 開始掃描를 누르세요. 각
대상의 단계 그리드가 실시간으로 채워지는 것을 보고, 심각도별로 결과를
필터링하고, 증거를 확장하고, 원시 도구 로그를 열고, 오탐을 표시하고, HTML
보고서를 내보낼 수 있습니다.
python recon.py scan -t targets.txt --intensity full
# reports land in runs/<run-id>/report.{md,html,json}
런처:
| command | what it does |
|---|---|
./run.sh | 원클릭 풀파워 실행: venv/setup/doctor → console → 브라우저 열기. HOST=… PORT=… ./run.sh로 재정의. |
recon.py 하위 명령(venv python 접두사 사용, 예: .venv/bin/python):
공통 플래그(모든 하위 명령): --config FILE (yaml/json 재정의) · --intensity · --concurrency N · --workdir DIR.
스캔 대상 허용: IP · host · URL · CIDR · domain · host:port (파일에 한 줄에 하나, 또는 인라인 / 콘솔에 붙여넣기).
웹 API(콘솔이 구동하는 것; 스크립팅에 유용):
예시:
./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)
| level | what runs |
|---|---|
full | 모든 것, 인젝션 + 취약한 비밀번호 실행(기본) |
recon | phpcgi + react2shell + webcve + XSS + exposures 실행; sqli/cred는 후보만 나열 |
passive | portscan + webdisco + exposures + secrets (양성 GET만) |
config.yaml을 편집하거나(주석 참조) --config를 전달하세요. 워드리스트는
wordlists/에 있습니다(default-creds.txt, users.txt, passwords.txt,
web-common.txt). 계정 잠금을 피하려면 hydra_tasks를 낮게 조정하고, 전체
포트 스캔을 위해서는 nmap_top_ports: 0으로 높이세요.
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
# /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-recon| command | what it does |
|---|
recon.py setup | 번들 도구 복제(php-cgi-Injector / react2shell-scanner / wp2shell / dirsearch) + 의존성 pip 설치 |
recon.py doctor | 해결된 스캐너 표시(nmap / sqlmap / hydra / dirsearch / dalfox / subfinder / 번들 도구) |
recon.py serve [--host H] [--port P] | 웹 콘솔 실행(기본 127.0.0.1:8770) |
recon.py scan -t targets.txt [--intensity full|recon|passive] | 대상 파일 헤드리스 스캔 |
recon.py scan http://host/ 10.0.0.0/24 … | 인라인 대상 헤드리스 스캔 |
recon.py repro <run-id> [--finding <id>] [--out DIR] | 확인된 결과별 실행 가능한 재현 PoC 출력 / 작성 |
recon.py payout <run-id> | 확인된 결과별 법적 공개 / 바운티 라우팅 |
| endpoint | purpose |
|---|
POST /api/runs {targets,intensity,concurrency,scope_enforce} | 실행 시작 → {id} |
GET /api/runs · GET /api/runs/{id} | 실행 목록 · 전체 실행(targets/stages/findings/webpaths) |
GET /api/runs/{id}/logs?since=N | 증분 라이브 로그 |
GET /api/runs/{id}/artifact?path=… | 원시 도구 로그 / 저장된 덤프 |
GET /api/runs/{id}/repro[?finding_id=…] | 재현 PoC 스크립트 |
POST /api/runs/{id}/finding {finding_id,reviewed,false_positive} | 결과 분류 |
POST /api/runs/{id}/dump {finding_id} · POST …/dumps/clear | 유출 캡처(파일/.git-source/key) · 캡처 지우기 |
POST /api/runs/{id}/report · POST …/cancel | 보고서 내보내기 · 실행 취소 |