katana-crawl

$npx mdskill add wgpsec/AboutSecurity/katana-crawl

Crawl websites and extract hidden endpoints using katana.

  • Discovers JavaScript-rendered APIs and dynamic URLs.
  • Depends on ProjectDiscovery katana framework and headless browsers.
  • Executes standard or headless modes to render single-page applications.
  • Outputs discovered URLs and endpoints to files or standard output.

SKILL.md

.github/skills/katana-crawlView on GitHub ↗
---
name: katana-crawl
description: "使用 katana 进行 Web 爬虫和 URL 发现。当需要爬取目标网站的所有页面和端点、发现隐藏的 API 路径、JavaScript 中的端点、表单提取时使用。katana 是 ProjectDiscovery 出品的下一代爬虫框架,支持标准模式和 Headless 浏览器模式,能解析 JavaScript 发现动态端点。任何涉及 Web 爬虫、URL 发现、JS 端点提取、表单发现、站点地图的场景都应使用此技能"
metadata:
  tags: "katana,crawl,spider,爬虫,URL发现,JS解析,endpoint,表单,projectdiscovery,headless"
  category: "tool"
---

# katana Web 爬虫方法论

katana 是 ProjectDiscovery 出品的下一代 Web 爬虫框架。核心优势:**JavaScript 解析**(发现动态端点)+ **Headless 模式**(渲染 SPA)+ **管道友好** + **表单自动填充**。

项目地址:https://github.com/projectdiscovery/katana

## Phase 1: 基本爬取

```bash
# 爬取单个目标(默认深度 3)
katana -u http://target.com

# 指定爬取深度
katana -u http://target.com -d 5

# 静默输出(只显示 URL)
katana -u http://target.com -silent

# 输出到文件
katana -u http://target.com -silent -o urls.txt
```

## Phase 2: JavaScript 解析(关键能力)

现代 Web 应用大量使用 JS 框架,传统爬虫无法发现 JS 中硬编码的 API 端点:

```bash
# 启用 JS 端点解析(推荐始终开启)
katana -u http://target.com -jc

# 启用 jsluice 深度 JS 解析(更全面,内存消耗大)
katana -u http://target.com -jsluice

# Headless 模式(渲染页面后爬取,适合 SPA/React/Vue)
katana -u http://target.com -headless

# Headless + 使用系统 Chrome
katana -u http://target.com -headless -system-chrome
```

## Phase 3: 批量爬取

```bash
# 从文件读取目标
katana -list urls.txt -silent

# 从 stdin 管道
cat urls.txt | katana -silent

# 配合其他工具
subfinder -d target.com -silent | httpx -silent | katana -silent -jc
```

## Phase 4: 输出过滤

```bash
# 只输出特定扩展名
katana -u http://target.com -em php,jsp,asp -silent

# 排除静态资源
katana -u http://target.com -ef png,jpg,css,gif,svg,woff -silent

# 正则匹配(只输出包含 api 的 URL)
katana -u http://target.com -mr "api|admin|login" -silent

# 正则过滤(排除包含 logout 的 URL)
katana -u http://target.com -fr "logout|static" -silent

# 提取表单元素
katana -u http://target.com -form-extraction -jsonl
```

## Phase 5: 范围控制

```bash
# 限制在同一域名内(默认行为)
katana -u http://target.com

# 显示外部端点(不爬取,只显示)
katana -u http://target.com -display-out-scope

# 自定义范围(正则)
katana -u http://target.com -crawl-scope "target\.com|api\.target\.com"

# 排除特定路径
katana -u http://target.com -crawl-out-scope "logout|signout"

# 无范围限制(危险,慎用)
katana -u http://target.com -no-scope
```

## Phase 6: 高级配置

```bash
# 限时爬取(比赛场景重要)
katana -u http://target.com -crawl-duration 60s

# 控制并发和速率
katana -u http://target.com -c 20 -rl 100

# 自定义 Header(带 Cookie 访问需要认证的页面)
katana -u http://target.com -H "Cookie: session=abc123"

# 使用代理
katana -u http://target.com -proxy http://127.0.0.1:8080

# JSONL 输出(包含完整请求信息)
katana -u http://target.com -jsonl -o results.jsonl

# 已知文件扫描(robots.txt, sitemap.xml)
katana -u http://target.com -known-files all -d 3

# 技术检测
katana -u http://target.com -tech-detect

# XHR 请求提取(Headless 模式)
katana -u http://target.com -headless -xhr-extraction
```

## Phase 7: 管道集成

```bash
# 爬虫 → 漏洞扫描
katana -u http://target.com -jc -silent | nuclei -severity critical,high

# 爬虫 → 筛选 JS 文件 → 敏感信息提取
katana -u http://target.com -jc -silent -em js | while read url; do
  curl -s "$url" | grep -iE "api_key|password|secret|token"
done

# 爬虫 → 参数提取 → SQLi 测试
katana -u http://target.com -jc -silent | grep "?" | sort -u > params.txt

# 子域名 → 存活 → 爬虫 → 漏洞扫描(完整链)
subfinder -d target.com -silent | httpx -silent | katana -jc -silent | nuclei
```

## 爬取策略选择

| 场景 | 策略 | 命令 |
|------|------|------|
| 快速发现(比赛) | 浅爬 + JS | `katana -u URL -d 2 -jc -silent` |
| 全面爬取 | 深爬 + Headless | `katana -u URL -d 5 -headless -jc` |
| API 端点发现 | JS 解析 + 过滤 | `katana -u URL -jc -em js,json -silent` |
| 认证后爬取 | 带 Cookie | `katana -u URL -H "Cookie: ..." -jc` |
| SPA 应用 | Headless 必须 | `katana -u URL -headless -system-chrome` |

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|