
教育セクター向けの許可された偵察・トリアージオーケストレーター(nmap/dirsearch/sqlmap/hydra + CVE-2024-4577、シークレット/APIキー漏洩、XSS、wp2shell)とWebコントロールパネル
教育セクターのレッド/ブルー演習向けの、認可された偵察&トリアージオーケストレーター。 ターゲットを投入すると、スキャナーを実行し、ノイズをフィルタリングし、ランク付けされた レビューキューを Web UI で提供します。Linux マシン(Kali / インフラ)にデプロイし、 ブラウザから操作することを想定して構築されています。
⚠️ 認可された使用のみ。 テストを許可されているシステムにのみ向けてください。 スコープロックはデフォルトでオフです — 認可の責任はオペレーターにあります。実際の エンゲージメントでは、
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 # 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/private key/…)
+ 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 を実行した後、
フルパワーでコンソールを提供します — 強度 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 を開き、ターゲットを貼り付け(1 行に 1 つ:IP / host / URL / CIDR /
domain / host:port)、強度を選択し、開始掃描を押します。各ターゲットの
ステージグリッドがリアルタイムで埋まるのを確認し、重大度で検出結果をフィルタリングし、
証拠を展開し、生のツールログを開き、誤検出をマークし、HTML レポートをエクスポートできます。
python recon.py scan -t targets.txt --intensity full
# reports land in runs/<run-id>/report.{md,html,json}
ランチャー:
| コマンド | 機能 |
|---|---|
./run.sh | ワンコマンドのフルパワー起動:venv/setup/doctor → コンソール → ブラウザを開く。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(ファイルに 1 行に 1 つ、またはインライン / コンソールに貼り付け)。
Web 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)
| レベル | 実行内容 |
|---|---|
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| コマンド | 機能 |
|---|
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] | Web コンソールを起動(デフォルト 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> | 確認された検出結果ごとの法的な開示 / バウンティルーティング |
| エンドポイント | 目的 |
|---|
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 | リークをキャプチャ(file/.git-source/key) · キャプチャをクリア |
POST /api/runs/{id}/report · POST …/cancel | レポートをエクスポート · 実行をキャンセル |