reconnaissance-ops
Skill4 starsChanged 3 months agoMITView on GitHub
信息收集流程 — 被动+主动侦察。Use when performing authorized penetration testing,
- Reads credentials
In this repository80 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .cursor/rules/security-agent-skills.mdcCursor rule
- ai-mcp-securitySkill
- modern-attack-surfacesSkill
- offensive-toolkitSkill
- security-and-hardeningSkill
- security-auditSkill
- security-code-reviewSkill
- ctf-jail-escapeSkill
- ctf-kernel-exploitationSkill
- ctf-misc-toolkitSkill
- ctf-orchestratorSkill
- ctf-playbookSkill
- ctf-technique-atlasSkill
- ctf-training-loopSkill
- ctf-web-exploitationSkill
- ctf-writeup-disciplineSkill
- ctf-writeup-screenshotsSkill
- binary-exploitationSkill
- crypto-attack-patternsSkill
- crypto-ctf-attacksSkill
- cryptography-fundamentalsSkill
- crypto-toolkitSkill
- encoding-realignmentSkill
- exploit-developmentSkill
- exploit-poc-builderSkill
- kernel-exploitationSkill
- zero-day-huntingSkill
- bluetooth-jammer-sweepSkill
- esp32-serial-diagSkill
- flipper-zero-backupSkill
- flipper-zero-firmwareSkill
- hardware-iot-hackingSkill
- nrf24-bitbang-spiSkill
- rf-jammer-firmware-portSkill
- rf-multi-protocol-jammerSkill
- smart-card-driver-debugSkill
- smart-card-usb-directSkill
- wifi-deauth-jammerSkill
- wifi-dualband-jammerSkill
- advanced-pentestSkill
- network-pentestSkill
- pentest-quick-checklistSkill
- pentest-tool-referenceSkill
- pentest-tool-setupSkill
- pentest-workflowSkill
- advanced-attack-chainsSkill
- autonomous-pentest-scannerSkill
- intranet-pentest-advancedSkill
- pentest-report-generatorSkill
- post-exploitation-opsSkill
- professional-pentest-guideSkill
- chatgpt-web-relaySkill
- darkweb-researchSkill
- email-osint-investigationSkill
- local-network-reconSkill
- network-device-reconSkill
- osint-frameworkSkill
- osint-recon-modelSkill
- parallel-intel-gatheringSkill
- The first 60 shown.
The file
Files
信息收集 Skill
执行被动和主动信息收集,构建目标画像和攻击面地图。
执行步骤
1. 被动侦察
- 通过 Hermes
web_extract/browser/terminal(curl)工具访问目标,收集 HTTP 响应头 - 识别服务器类型、版本、WAF
- Cloudflare 後端真實伺服器指紋:Cloudflare 代理會在大部分回應中隱藏 origin server header(
server: cloudflare),但以下端點常繞過此隱藏:- API 端點可能暴露
X-Powered-By: PHP/8.x(PHP 未設定expose_php = Off)— 用curl -sI https://target.com/api/any.php檢查 - 直接觸發 origin 403/404 頁面(非 Cloudflare 錯誤頁)可暴露真實 nginx 版本 — 如對
.git/HEAD的 403 回應可能直接來自 origin nginx - 對不存在靜態檔案或
/.htaccess的 403 回應可能來自 origin
- API 端點可能暴露
- 分析 HTML 源码中的技术栈标识
2. 主動偵察
- 探測常見 Web 端口
- 枚舉目錄和路徑
- 檢查敏感文件(robots.txt, .env, .git)
- 發現 API 端點
- 瀏覽器 SPA 路由判別:現代 Vue.js/React SPA 不會對不存在的路徑返回 404,而是回傳同一個 SPA shell (Content-Length 4000~9000 bytes 不一)。判斷真實端點的方式:
- Content-Length 對比:已知存在 vs 不存在的路徑回應大小差異。批次檢測技巧:用一個 shell loop 同時請求多個路徑並記錄 HTTP status + Content-Length,若
/admin,/admin/login,/admin/pages,/admin/whatever,/.env全部返回相同 Content-Length(如都 1075 bytes),它們全是 SPA catch-all,無一為真實獨立端點。 - 用 Playwright 渲染:透過真實瀏覽器攔截
page.on('request')/page.on('response')才能看到真實的 fetch/XHR 呼叫 - JS bundle 探勘:
webpackJsonp/__webpack_require__字串中 grep"(\/[a-z]+\/[^"']{2,80})"可提取所有 API endpoints - Vue.js SPA 內部 baseURL:bundle 變數如
ki = "https://api.example.com/api",Si = "https://api.example.com/internal"— 通常一組 axios.create() 對應一組 baseURL
- Content-Length 對比:已知存在 vs 不存在的路徑回應大小差異。批次檢測技巧:用一個 shell loop 同時請求多個路徑並記錄 HTTP status + Content-Length,若
- 搜尋端點分頁繞過:當搜尋/列表端點有結果上限但支援部分匹配時,使用粒度查詢(如學校+班級組合、姓氏枚舉)繞過分頁限制,取得完整資料集。詳見
-web-security-advanced的references/pagination-bypass-granular-search.md。 - Python 框架 catch-all 404 辨識:Django/Flask 會對所有不存在的路徑返回一致的 HTTP 200 + 固定大小的 HTML 404 頁面(~2800-3000 bytes)。不要被 HTTP 200 欺騙——比對 Content-Length:若多個不同路徑返回完全相同的位元組數,它們全都是同一個 catch-all 404 模板。真實端點的大小會不同(已認證頁面通常 4500+ bytes)。\n- Vite + Vue.js 3 打包 bundle 路由表提取:當
<script type=\"module\" crossorigin src=\"/assets/index-XXXXXXXX.js\">出現時,該 bundle 開頭通常有const __vite__mapDeps列出所有 lazy-loaded 元件路徑(\"assets/AdminLoginView-XXXXXXXX.js\",\"assets/ForbiddenView-XXXXXXXX.js\"等),尾部有li({history:Ar(\"/\"),routes:[...]})包含完整的 Vue Router 路由表。直接curl該 JS 檔並 grep 以下 pattern:\n 1.__vite__mapDeps→ 所有管理後台元件名稱與路徑\n 2.path:\"/admin或name:\"admin-→ 後台路由結構\n 3.meta:{requiresAuth→ auth guard 觸發條件\n 4.component:()=>_c(()=>import(→ lazy-loaded 路由對應的元件檔案\n 5.post(\"/api/或get(\"/api/→ API 端點 + HTTP 方法\n 6.password、passphrase、secret、token→ 認證欄位名稱
2.1 Vue.js SPA 登入表單觸發
當首頁只渲染一個 <img id="enter-btn"> 圖片(不是 input form)且沒有顯眼的登入框時,登入對話框通常是 Vue 元件內部 dialog: false 的狀態。需要遞迴設置所有 Vue 元件的 dialog = true:
let el = document.getElementById('app');
while (el && !el.__vue__) el = el.parentElement || el.firstElementChild;
if (el && el.__vue__) {
function setAll(c) {
if (c.dialog !== undefined) c.dialog = true;
if (c.$children) c.$children.forEach(setAll);
}
setAll(el.__vue__);
}Vuetify input 沒有 name 屬性,只有 v-model + auto id。使用 #input-21 (帳號) / #input-25 (密碼) 等 v-bind id selector。
攔截真實 POST /api/login 的方式:先 clear all_requests.clear() 後 page.fill() 觸發 Vue 的 axios POST,再檢視請求的 post_data 與 response 狀態碼。
3. 技术栈识别
- 前端框架(React/Vue/Angular/jQuery)
- 后端框架(Express/Django/Flask/Spring)
- CMS 系统(WordPress/Joomla/自定义)
- 数据库类型
4. 输出
- 目标画像(IP/域名/端口/服务/技术栈)
- 攻击面地图(可访问路径、API、管理入口)
🛑 Python 框架 Catch-All 404 陷阱:Flask/Django 等 Python Web 框架通常會為所有不存在的路徑返回 HTTP 200 + 自定義 404 模板(非 nginx 原生 404)。特徵:所有不存在路徑返回相同 Content-Length(如 2834 bytes),回應中包含「找不到系統資源」或框架 404 標記。不可僅依賴 HTTP status code 來判斷路徑是否存在——必須檢查回應內容。對比已知存在頁面(如 /adm/login/)與不存在頁面(如 /adm/dashboard/)的 Content-Length 是快速區分方法:存在頁面通常大小不同。
Hermes 使用適配
- 上一次滲透任務中,先載入
-pentest-flow做總路由,再依場景載入本系列專項 skill(例如-web-security-advanced、-osint-recon)。 - execute_code 封鎖 fallback:當
execute_code在當前 profile 被封鎖時(cron/trade),批次枚舉改為terminalfor-loop 或write_file→terminal(python3 /tmp/script.py)模式。asyncio 攻擊腳本、路徑掃描均可用此 fallback。 - Taiwan/Jurui 補教平台偵察模式 — 當
*.jrbooks.com.tw群眾包含strl/liren/jurui/cek/ceklod/api等子域時,每個都跑同一套 Laravel + Vue.js + Tekom SOAP 後端。最高 ROI 攻擊點:api.{domain}/_ignition/health-check— Laravel Ignition RCE 確認ceklod.{domain}/lod_apis/api/back/permission_frontend.php?syntax=read— 內部帳號/權限週期洩露api.{domain}/api/survey/list、/survey/teacher/list、/survey/course/list— 真實教師/課程資料box.tekom.com.tw/aPMBSTDLOD01.aspx?wsdl— SOAP WSDL 逆向驗證流程- JS bundle
ki=、Si=、Ci=、wi=、yi=常數 → 內部 baseURL 表 - SPA 登入對話框透過
Vue.__vue__.dialog = true觸發(Vuetify,遞迴掃描$children)
- 上面 6 點台灣補教平台模式的完整工作筆記已收錄於
references/taiwan-edutech-platform-pattern.md。 - PHP procedural 補教平台模式(非 Laravel,如
feifan-wh.com.tw):Vue.js 3 + Vite 前端,PHP.php結尾 API(index_data.php,page.php,stream.php,secret.php,student_heartbeat.php,admin_auth.php),Cloudflare 代理,Windows 伺服器。/api/index_data.php無認證返回完整課程目錄,page.php?slug=X對is_protected=false課程無密碼返回影片串流路徑 + Windows 內部目錄結構 + MD5 token。完整偵察流程含 SPA catch-all 判別、Vite bundle 路由表提取、Cloudflare 穿透指紋收集,詳見-pentest-flow的references/cloudflare-vue-php-recon-patterns.md和references/php-tutoring-platform-pattern.md。 - Taiwan/Jurui 補教平台偵察模式 (參考
references/taiwan-edutech-platform-pattern.md):當*.jrbooks.com.tw群眾包含strl/liren/jurui/cek/ceklod/api等子域時,每個都跑同一套 Laravel + Vue.js + Tekom SOAP 後端。最高 ROI 的攻擊點是:api.{domain}/_ignition/health-check— Ignition RCE 確認ceklod.{domain}/lod_apis/api/back/permission_frontend.php?syntax=read— 內部帳號洩露api.{domain}/api/survey/list(無驗證) — 真實教師/個資洩露box.tekom.com.tw/aPMBSTDLOD01.aspx?wsdl— 公開 SOAP WSDL,逆向驗證流程- JS bundle 中
ki=、Si=、Ci=、wi=、yi=常數代表每個內部 baseURL
參考
-web-security-advanced的references/pagination-bypass-granular-search.md-web-security-advanced的references/php-tutoring-platform-pattern.md(feifan-wh 模式)-web-security-advanced的references/taiwan-edutech-platform-pattern.md(Jurui 模式)-recon的references/feifan-md-platform-pattern.md(非凡教育-民德 feifan-md.com.tw 模式)-recon的references/php-tutoring-platform-pattern.md(PHP procedural 補教平台通用模式)
來源與維護
- 原始 skill 已保存於
references/upstream-skill.md;README/LICENSE 已保存於references/。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

