mcpField
S
sector-recon-methodology

sector-recon-methodology

github.com/uphiago安全1.3k40 次安装8 周前更新
代码仓库

关于 sector-recon-methodology

用于选择非受监管行业、整理公司域名列表并开展授权批量探测的侦察方法技能。它提供各行业的 WordPress 漏洞基线,辅助规划测试活动并对比结果。

主要功能

  1. 01行业漏洞排名
  2. 02使用 crt.sh 生成域名列表
  3. 03批量 WordPress 与 Web 探测
  4. 04按行业对比基线
  5. 05侦察工作流指引

适用场景

  1. 01为授权侦察活动选择行业
  2. 02根据行业关键词建立域名列表
  3. 03将扫描结果与行业基线对比

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/uphiago/recon-skills --skill sector-recon-methodology

安装后在 Claude Code 中输入/sector-recon-methodology确认已加载。

附带文件scripts/parallel_sector_probe.py

详细介绍

行业侦察方法论技能

用于选择 WordPress 漏洞率最高的非受监管行业、整理公司域名列表,并在授权测试中执行批量侦察的方法论。本方法论源自对 28 个行业中 600 多个美国公司域名的调查,调查范围涵盖漏洞赏金和授权测试项目。

适用场景

  • 规划新的侦察活动,需要选择行业。
  • 从已测试的行业拓展到新行业。
  • 通过 crt.sh 根据行业关键词构建目标列表。
  • 完成 recon-playbook 第 0 阶段后——本技能提供行业情报。
  • 将你的发现与各行业的基准漏洞率进行比较。

前提条件

  • curl、jq、httpx 和 subfinder。
  • 了解美国监管环境(HIPAA、GLBA、PCI-DSS)——受监管行业的漏洞率几乎为零。
  • 具有明确并发数和速率限制的执行环境。

运行方法

# Generate targets for a sector
SECTOR="landscaping"
curl --max-time 30 --connect-timeout 10 -sk "https://crt.sh/?q=%25.${SECTOR}%25&output=json" | jq -r '.[].name_value' | \
  sed 's/\*\.//g' | sed 's/^www\.//' | sort -u > ${SECTOR}_targets.txt

脚本:scripts/parallel_sector_probe.py——采用 OPSEC 控制的批量探测工具,带随机延迟,并生成每个域名的发现结果文件。运行 python3 scripts/parallel_sector_probe.py targets.txt output_dir/,即可执行完整的 WP/CORS/XMLRPC/泄露扫描。

快速参考

层级行业典型 WP 率最佳模式备注
1法律、园林绿化、泳池、害虫防治、屋顶、牙科、健身房、房地产、HVAC、物业、汽车维修、摄影30-50%CORS + WP 用户WAF 配置极少,使用 GoDaddy/Bluehost
2清洁、搬家、会计、化粪池、窗户、洗车、面包店、锁匠、太阳能、烟囱、消防、宠物美容20-40%源码泄露、CORS主机服务混杂,部分配置 WAF
3汽车经销商、保险、旅游、银行、医疗保健0-5%不适用企业级 WAF、受监管、无 WP

行业漏洞排名

第 1 层 — 高收益(漏洞率 15-25%)
行业漏洞率主要模式WordPress 率WAF 防护最佳目标
律师事务所25%P-06(CORS 身份验证)~30%极少独资/小型事务所,托管于 GoDaddy
园林绿化20%WP-01(用户枚举)~50%极少本地 SMB,加盟模式
泳池服务20%WP-01(用户枚举)~45%极少夏季经营的企业
害虫防治20%P-02(CORS)~40%极少以加盟模式为主
屋顶15%WP-01、P-17~45%极少本地承包商
牙科诊所15%WP-01(用户枚举)~35%少量单牙医诊所
健身房/健身15%WP-01(用户枚举)~40%少量CrossFit、瑜伽、武术
房地产15%P-02(CORS)~40%少量独立经纪公司
HVAC/管道14%WP-01、P-02~35%少量以加盟模式为主,常见测试环境
物业管理15%P-02(CORS)~30%少量PII 密集型行业
摄影10%WP-01(用户枚举)~50%少量作品集网站,通常使用 WP
殡仪馆10%WP-01(用户枚举)~33%极少在 2 个目标上发现 WordPress + 用户枚举(funeral.example.com、memorial.example.com)
老年生活社区17%P-02(CORS)+ XMLRPC~33%Cloudflaresenior-living.example.com(80 种 XMLRPC 方法 + CORS + multicall)、senior-living2.example.com(CORS)——测试的 12 个目标中有 2 个发现 CRITICAL 问题
第 2 级 — 中等产出(漏洞率 5-14%)
行业漏洞率备注
清洁服务13%地毯、窗户、霉菌修复
搬家公司6%WordPress 较少,SaaS 平台较多
会计/注册会计师5%部分受监管,部分不受监管 — 财务数据面临风险
化粪池服务25% 源码泄露源码泄露率极高(.env、.git、wp-config)
窗户清洁25% CORS小型业务,DIY WordPress
洗车店20% 源码泄露常见 Dockerfile、swagger、actuator 端点
面包店18% CORS 通配符一个目标上泄露了 28 个文件
锁匠20% WordPress 用户 + XMLRPC一个目标上有 38 个子域名
太阳能安装商极少大型品牌使用企业级平台
烟囱清扫~10% CORS + XMLRPC小型家族企业,常用 WordPress
火灾修复~10%特许经营模式(Servpro、Belfor)
宠物美容20% WordPress 用户Dogtopia、Camp Bow Wow — 检测到 WordPress
关键发现示例(来自扩展到 248 个目标的新行业)

pool-company.example.com — 严重(评分 9):

  • 通过 REST API 暴露了 3 个用户(wpadmin ID=1 — 默认管理员账号)
  • 已确认 CORS 凭据反射
  • XMLRPC system.multicall 已启用
  • 攻击链: CORS 钓鱼 → 窃取用户数据 → 通过 XMLRPC multicall 暴力破解 wpadmin → 完全接管网站
第 3 级 — 零/低产出(漏洞率 0-3%)
行业漏洞率原因
汽车经销商0%企业级 CDK/Dealertrack 平台,并非 WordPress
旅行社0%SaaS(Sabre、Amadeus),并非自托管
银行/信用合作社0%受 GLBA 监管,必须实施安全措施
大型医疗机构0%受 HIPAA 监管,获得 HITRUST 认证
家居服务0%使用 Angi/Thumbtack 平台,并非自托管

跳过这些行业,除非你有具体情报表明它们使用 WordPress。

流程

第 1 步 — 选择行业
OUTDIR="$OUTDIR/sectors"
mkdir -p "$OUTDIR"

echo "[*] Sector vulnerability potential assessment:"
echo ""

# Run quick sector probe: crt.sh → httpx → WP detection → user count
probe_sector() {
  local sector="$1"
  local file="$OUTDIR/${sector}_probe.txt"

  echo "[*] Probing sector: $sector"

  # Get domains from crt.sh
  curl -sk --max-time 20 --connect-timeout 10 "https://crt.sh/?q=%25.${sector}%25&output=json" 2>/dev/null | \
    jq -r '.[].name_value' 2>/dev/null | sed 's/\*\.//g' | sed 's/^www\.//' | \
    grep -E '^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' | sort -u | head -50 > "$OUTDIR/${sector}_domains.txt"

  # Option C: Manual known-company list (when crt.sh/subfinder time out)
  if [[ ! -s "$OUTDIR/${sector}_domains.txt" ]]; then
    echo "  crt.sh empty — using manual known-company list"
    # Generate known US companies in this sector
    # Example: for "vet" or "pet_care" sector, known chains include:
    cat > "$OUTDIR/${sector}_domains.txt" << 'EOF'
[VET_CLINIC]
[VET_CHAIN]
[PET_RETAILER]
[VET_CORPORATE]
[VET_HOSPITAL]
[VET_SPECIALIST]
[ANIMAL_CLINIC]
[VET_CLINIC]
[TRADE_PUBLICATION]
EOF
  fi

  local total=$(wc -l < "$OUTDIR/${sector}_domains.txt")
  echo "  Domains: $total"

  # Probe with httpx
  httpx -silent -l "$OUTDIR/${sector}_domains.txt" -threads 30 -status-code -tech-detect \
    -o "$OUTDIR/${sector}_alive.txt" 2>/dev/null

  local alive=$(wc -l < "$OUTDIR/${sector}_alive.txt")
  echo "  Live: $alive"

  # WordPress count
  local wp=$(grep -ci 'wordpress' "$OUTDIR/${sector}_alive.txt" 2>/dev/null || echo 0)
  echo "  WordPress: $wp"

  # Quick user enumeration on WP targets
  local users=0
  grep -i 'wordpress' "$OUTDIR/${sector}_alive.txt" 2>/dev/null | awk '{print $1}' | head -10 | while read -r url; do
    ucount=$(curl -sk --max-time 5 --connect-timeout 5 "$url/wp-json/wp/v2/users" 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d) if isinstance(d,list) else 0)" 2>/dev/null || echo 0)
    [[ "$ucount" -gt 0 ]] && echo "    $url: $ucount users" >> "$OUTDIR/${sector}_users.txt"
  done

  local user_targets=$(wc -l < "$OUTDIR/${sector}_users.txt" 2>/dev/null || echo 0)
  echo "  User leaks: $user_targets"

  # Score the sector
  echo "$sector | domains=$total | alive=$alive | wp=$wp | user_leaks=$user_targets" >> "$OUTDIR/sector_scores.txt"
}

# Probe top candidate sectors
for sector in "landscaping" "roofing" "hvac" "pools" "plumbing" "lawn-care" \
  "pest-control" "law-firm" "dentist" "gym" "real-estate" "auto-repair" \
  "moving-company" "photography" "cleaning-service" "church"; do
  probe_sector "$sector"
  sleep 3  # Rate limit
done

echo ""
echo "[*] Sector scores:"
sort -t'|' -k5 -rn "$OUTDIR/sector_scores.txt" 2>/dev/null | head -15
第 2 步 — 整理目标列表
OUTDIR="$OUTDIR/sectors"

# For selected high-yield sectors, compile full target lists
SELECTED_SECTORS=("landscaping" "roofing" "pools" "plumbing" "pest-control" "law-firm")

echo "[*] Compiling target lists for selected sectors..."

> "$OUTDIR/all_targets.txt"

for sector in "${SELECTED_SECTORS[@]}"; do
  echo "  Sector: $sector"

  # crt.sh wildcard search
  curl -sk --max-time 20 --connect-timeout 10 "https://crt.sh/?q=%25.${sector}%25&output=json" 2>/dev/null | \
    jq -r '.[].name_value' 2>/dev/null | sed 's/\*\.//g' | sed 's/^www\.//' | \
    grep -E '^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' | sort -u > "$OUTDIR/${sector}_all.txt"

  # Also try subfinder
  subfinder -d "${sector}.com" -silent 2>/dev/null >> "$OUTDIR/${sector}_all.txt"

  # Add to master list with sector label
  while read -r domain; do
    echo "$domain|$sector" >> "$OUTDIR/all_targets.txt"
  done < "$OUTDIR/${sector}_all.txt"

  sleep 2
done

# Clean: remove CDN domains, parking pages, known false positives
echo "[*] Cleaning target list..."

# Remove common false positives
grep -viE 'cloudflare|akamai|fastly|awsdns|googleusercontent|azurewebsites' "$OUTDIR/all_targets.txt" | \
  sort -u > "$OUTDIR/all_targets_clean.txt"

total=$(wc -l < "$OUTDIR/all_targets_clean.txt")
echo "[+] $total clean targets across ${#SELECTED_SECTORS[@]} sectors"
第 3 步 — 行业基线统计

批量侦察后(使用 recon-playbook),计算各行业的统计数据:

OUTDIR="$OUTDIR/sectors"
FINDINGS_DIR="$OUTDIR/playbook/phase2_findings"

echo "[*] Computing sector statistics..."

# Extract sector from target list
declare -A SECTOR_WP
declare -A SECTOR_CORS
declare -A SECTOR_XMLRPC
declare -A SECTOR_LEAKS
declare -A SECTOR_TOTAL

# Read target list
while IFS='|' read -r domain sector; do
  [[ -z "$sector" ]] && continue
  ((SECTOR_TOTAL[$sector]++))

  findings_file="$FINDINGS_DIR/${domain}_p2.md"
  if [[ -f "$findings_file" ]]; then
    grep -q "WordPress:" "$findings_file" && ((SECTOR_WP[$sector]++))
    grep -q "CORS:" "$findings_file" && ((SECTOR_CORS[$sector]++))
    grep -q "XMLRPC:" "$findings_file" && ((SECTOR_XMLRPC[$sector]++))
    grep -q "Source leak:" "$findings_file" && ((SECTOR_LEAKS[$sector]++))
  fi
done < "$OUTDIR/all_targets_clean.txt"

# Print sector report
echo ""
echo "## Sector Vulnerability Report"
echo ""
echo "| Sector | Targets | WP | CORS | XMLRPC | Leaks | Rate |"
echo "|--------|---------|-----|------|--------|-------|------|"

for sector in "${!SECTOR_TOTAL[@]}"; do
  total=${SECTOR_TOTAL[$sector]}
  wp=${SECTOR_WP[$sector]:-0}
  cors=${SECTOR_CORS[$sector]:-0}
  xmlrpc=${SECTOR_XMLRPC[$sector]:-0}
  leaks=${SECTOR_LEAKS[$sector]:-0}
  vulns=$((cors + xmlrpc + leaks))
  rate=$(python3 -c "print(f'{$vulns/$total*100:.1f}%')" 2>/dev/null || echo "0%")

  echo "| $sector | $total | $wp | $cors | $xmlrpc | $leaks | $rate |"
done
第 4 步 — 行业侦察技能模板

创建新的行业专用侦察技能时,使用此模板:

---
name: recon-SECTORNAME
description: Reconnaissance workflow for SECTOR NAME companies.
version: 1.1.0
revision_date: 2026-07-25
license: MIT
platforms: [linux]
tags: [recon, sector, SECTORNAME]
category: recon
---

# SECTOR NAME Recon Skill

[2-3 sentence description of sector-specific attack surface]

## When to Use

- Targeting SECTOR NAME companies for recon.
- [Sector-specific trigger]

## Quick Reference

| Attack Surface | Expected Prevalence | Top Pattern |
|----------------|---------------------|-------------|
| WordPress | XX% | WP-01 |
| CORS | XX% | V1 |
| XMLRPC | XX% | WP-05 |
| Source leaks | XX% | P-17 |

## Attack Surface Signals

- [Sector-specific CMS/platform signals]
- [Common third-party integrations]
- [Typical infrastructure patterns]
- [PII/regulated data vectors]

## Sector-Specific Bypasses

- [WAF/CDN patterns for this sector]
- [Rate limiting characteristics]
- [Common security gaps]

## Real Examples

- [Target name]: [finding] (severity)
- [Target name]: [finding] (severity)

## Related Skills

- wp-mass-recon
- cors-credential-wordpress
- xmlrpc-exploitation
- source-leak-hunt

注意事项

  • 行业关键词重叠。 pest control 可能会返回 pest-control.example.com(SaaS 服务,而非害虫防治公司)。根据 SMB 常见的域名模式进行筛选。
  • crt.sh 中的 CDN/云服务噪声。 行业 crt.sh 查询中会出现 *.cloudfront.net 或 *.awsdns-*.org 等域名。应严格筛选。
  • crt.sh / subfinder 超时。 这两个工具在流量较低的行业或需求高峰期经常卡住或返回空结果。失败时,可改为手动整理行业内已知的美国公司:使用排名靠前的全国连锁企业、特许经营目录和行业协会会员名单。对于长尾行业,已知公司名单往往比稀疏的 API 结果更有用。
  • 行业饱和。 扫描某个行业的 50 个以上目标后,你会看到相同的模式。建立基线后,转向新行业。
  • 企业与特许经营。 某些行业(HVAC、害虫防治)既有企业母公司域名,也有各个特许经营商的域名。特许经营商的域名防护较弱。

验证

  • 行业漏洞率应至少基于 20 个已扫描目标。
  • 每个行业至少应发现一项 WordPress 检测结果、CORS 问题或源码泄露,才可视为“有产出”。
  • 完全放弃零产出行业前,应使用不同的方法重新验证。
  • 行业报告应包含:目标总数、存活主机数、检测到的 WordPress 数、发现的漏洞数、主要模式和代表性示例。

评论

支持 Markdown