跳转至

XSCAN 配置详解

config.yaml 配置文件

高阶玩家可自行修改配置,达到最好的效果。以下是完整的配置文件说明:

基础配置

调试与代理设置

debug: True # 调试模式
proxy: ""   # 代理配置

配置说明

  • debug: 启用调试模式,会输出详细的调试信息,便于排查问题和了解扫描过程
  • proxy: HTTP代理配置,格式为 http://proxy_host:portsocks5://proxy_host:port,留空则不使用代理

使用场景

  • 调试模式: 首次使用或遇到问题时建议开启,正式使用时可关闭以减少日志输出
  • 代理配置: 在需要通过代理访问目标、隐藏真实IP或绕过网络限制时使用

Headers 配置

headers: # 网页header
  User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36

配置说明

  • User-Agent: 自定义浏览器标识,模拟真实浏览器行为
  • 可添加其他HTTP头:如 RefererAccept-LanguageAuthorization

最佳实践

headers:
  User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
  Accept-Encoding: gzip, deflate
  Connection: keep-alive

GAU 配置

gau:
  enable: False # 启用gau
  include_sub: True # 是否包含子域名
  with_spider: True # 是否再爬虫获取更多url

GAU (GetAllUrls) 说明

GAU是一个被动URL收集工具,可以从多个数据源收集历史URL:

配置详解

  • enable: 是否启用GAU功能,开启后会从第三方数据源收集URL
  • include_sub: 是否包含子域名的URL,建议开启以获得更全面的URL覆盖
  • with_spider: GAU收集到URL后是否再次进行爬虫,建议开启以发现更多链接

数据源

GAU会从以下数据源收集URL: - Wayback Machine: 互联网档案馆的历史页面 - Common Crawl: 开源网页爬虫数据 - Virus Total: 安全厂商的URL情报 - URLScan: 网页扫描服务的数据

爬虫配置

spider: # 爬虫设置
  concurrency: 500 # 爬虫并发数量
  limit: 30 # 每秒限制并发数量
  timeout: 20
  max_depth: 12                     # 最大页面深度限制
  max_page_visit_per_site: 5000     # 每个站点最多访问的页面数量
  crawler_priority: depth-first # 爬虫优先级算法 depth-first 深度优先 breadth-first 广度优先
  no_scope: False # 指定此参数,爬虫将不受范围限制,但是受最大深度限制
  only_root_scope: False  # 只限制根域名范围,如www.baidu.com,将限制爬虫范围为 *.baidu.com

性能控制参数

并发与限速

  • concurrency: 500: 爬虫并发数量,建议根据目标网站承受能力调整
  • 小型网站: 50-100
  • 中型网站: 200-300
  • 大型网站: 500-1000
  • limit: 30: 每秒请求限制,避免对目标造成过大压力
  • timeout: 20: 单个请求超时时间(秒),网络较慢时可适当增加

深度与范围控制

  • max_depth: 12: 最大爬虫深度,从起始URL开始的最大跳转层数
  • max_page_visit_per_site: 5000: 每个站点最多访问页面数,防止爬虫陷入无限循环
  • crawler_priority: 爬虫优先级算法
  • depth-first: 深度优先,优先爬取更深层的页面
  • breadth-first: 广度优先,优先爬取同层级的页面

范围限制

  • no_scope: False: 是否受范围限制
  • True: 不受域名范围限制,但受深度限制
  • False: 严格按照域名范围爬取
  • only_root_scope: False: 是否只限制根域名
  • True: 如输入www.example.com,爬取范围为*.example.com
  • False: 严格按照输入的域名爬取

相似度过滤配置

URL泛化过滤

  similarity_url: # 启用Url泛化过滤相同网站
    use: False  # 是否启用
    threshold: 10 #url泛化阈值

功能说明: 通过URL模式识别过滤相似的URL结构

使用场景: - 电商网站的商品页面:/product/{id} - 用户资料页面:/user/{uid} - 文章详情页面:/article/{aid}

配置建议: - 内容管理系统: threshold: 5-10 - 电商平台: threshold: 20-50 - 社交网站: threshold: 10-30

DOM相似度过滤

  similarity_page_dom: # 启用DOM相似度算法过滤相同网站
    use: True # 是否启用
    threshold: 5 # 网站阈值,同个domain相似度大于这个数开启过滤
    similarity: 0.95 # 相似度阈值,大于这个数判定相似
    vector_dim: 5000 # 向量维度

技术原理: - 将页面DOM结构转换为向量 - 计算向量间的余弦相似度 - 过滤相似度超过阈值的页面

参数调优: - threshold: 5: 同域名下发现5个以上相似页面时开启过滤 - similarity: 0.95: 相似度阈值,越高过滤越严格 - 模板网站: 0.98-0.99 (页面结构高度相似) - 动态网站: 0.90-0.95 (页面内容变化较大) - 个人博客: 0.85-0.90 (页面布局相对简单) - vector_dim: 5000: 向量维度,影响计算精度和性能

简单Hash去重

  simile_hash: # 简单hash算法去重
    use: False

功能说明: 基于页面内容的简单哈希去重,速度快但精度较低

使用建议: DOM相似度过滤已经足够精确,通常不需要开启

数据源与字典配置

  sources: # 使用哪些源获得更多url
    - robotstxt
    - sitemapxml
  spider_rule_dir: ./spider_rules # 规则文件目录
  directory_dict: ./dict # 目录字典,会扫描相关目录

URL数据源

  • robotstxt: 从robots.txt文件中提取URL和路径信息
  • sitemapxml: 从sitemap.xml文件中获取站点地图URL

目录字典

  • directory_dict: 常见目录和文件的字典路径
  • 内置常见目录: admin/, backup/, test/, api/

访问控制配置

  black_list: # 黑名单
    - ".google.com"
    - ".facebook.com"
  cookies:
    "*.example.com": "cookie1=1;cookie2=2"
    "a.example2.com": "cookie3=3;cookie4=4"

黑名单配置

功能说明: 防止爬虫访问第三方域名或无关网站

配置示例:

black_list:
  - ".google.com"
  - ".facebook.com"
  - ".twitter.com"
  - ".linkedin.com"

功能说明: 为不同域名配置不同的Cookie,支持通配符匹配

使用场景: - 登录状态: 配置登录后的Session Cookie - 多子域: 为不同子域名配置专用Cookie - A/B测试: 配置特定的测试Cookie

配置示例:

cookies:
  "*.example.com": "sessionid=abc123;csrftoken=def456"
  "admin.example.com": "admin_token=xyz789;role=admin"
  "api.example.com": "api_key=key123;version=v2"

扫描器配置

scan: # 扫描器配置
  concurrency: 300 # 扫描器并发数量
  limit: 30 # 每秒限制并发数量
  filter_threshold: 30 # 防止重复的xss报告,每个域名xss最多报告的阈值
  found_hidden_parameter: True # 从页面中发现隐藏参数
  found_hidden_parameter_from_js: False
  parameter_group_size: 40
  timeout: 30 # 超时时间 单位(秒)

性能参数

  • concurrency: 300: 扫描器并发数量,影响扫描速度
  • limit: 30: 每秒扫描请求限制,避免触发WAF
  • timeout: 30: 扫描请求超时时间

参数发现配置

隐藏参数发现

  • found_hidden_parameter: True: 从HTML页面中发现隐藏的input参数
  • found_hidden_parameter_from_js: False: 从JavaScript代码中发现参数(新增功能)

JavaScript参数发现: - 分析JS中的AJAX请求 - 提取API接口参数 - 识别动态生成的参数

参数处理优化

  • parameter_group_size: 40: 参数分组大小,影响扫描效率
  • filter_threshold: 30: 每个域名最多报告的XSS漏洞数量,防止重复报告

扫描位置配置

  position: # 扫描参数位置,可选 get,post,uri,header,cookie
    - get
    - post
    - uri

支持的注入位置

  • get: URL查询参数
  • post: POST请求体参数
  • uri: URL路径参数
  • header: HTTP请求头(可选)
  • cookie: Cookie参数(可选)

输出配置

  output: # 支持生成json和markdown格式,为空则不生成
    response: False # 保存返回包
    response_header: True # 保存返回header

输出选项

  • response: False: 是否保存完整的HTTP响应内容
  • 开启后会增加存储空间占用
  • 便于漏洞验证和分析
  • response_header: True: 是否保存HTTP响应头
  • 用于分析服务器信息
  • 检测安全头配置

隐藏参数字典

  hidden_parameters: # 内置用于GET探测的隐藏参数
    - key
    - redirect
    - region
    - action
    - l

内置参数说明

这些是从实战经验中总结的常见隐藏参数:

  • key: 密钥参数,常用于加密和验证
  • redirect: 重定向参数,容易出现开放重定向漏洞
  • region: 地区参数,可能影响页面内容
  • action: 操作参数,指定要执行的动作
  • l: 语言参数,影响页面显示语言

通知配置

report: # 结果推送,填写对应参数则使用,为空则不使用
  finish_notify: True # 扫描完毕通知
  node_name: 节点001 # 节点的名称,通知的时候会带上
  bark:
    server:
    token:
  dingding:
    token:
    secret:
  feishu:
    token:
    secret:

通知基础配置

  • finish_notify: True: 扫描完成后是否发送通知
  • node_name: 节点名称,多节点部署时用于区分

支持的通知方式

Bark通知(iOS推送)

bark:
  server: https://api.day.app/your_device_key/
  token: your_bark_token

钉钉机器人

dingding:
  token: your_dingtalk_webhook_token
  secret: your_dingtalk_secret_key

飞书机器人

feishu:
  token: your_feishu_webhook_token
  secret: your_feishu_secret_key

配置优化建议

性能调优

高性能配置(适用于大型目标)

spider:
  concurrency: 1000
  limit: 50
  max_page_visit_per_site: 10000
  similarity_page_dom:
    similarity: 0.98
scan:
  concurrency: 500
  parameter_group_size: 60
  filter_threshold: 50

精确扫描配置(适用于小型目标)

spider:
  concurrency: 100
  limit: 10
  max_depth: 20
  similarity_page_dom:
    similarity: 0.90
scan:
  concurrency: 50
  found_hidden_parameter_from_js: True
  parameter_group_size: 20

隐蔽性配置

spider:
  concurrency: 50
  limit: 5
  timeout: 60
headers:
  User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Language: en-US,en;q=0.5
  Connection: keep-alive
  Upgrade-Insecure-Requests: 1

特定场景配置

SPA单页应用

spider:
  spider_with_rule: True
  found_hidden_parameter_from_js: True
  max_depth: 8
  similarity_page_dom:
    similarity: 0.85

大型电商网站

spider:
  similarity_url:
    use: True
    threshold: 50
  max_page_visit_per_site: 20000
scan:
  filter_threshold: 100

企业内网测试

spider:
  concurrency: 200
  limit: 20
  only_root_scope: False
  no_scope: False
scan:
  found_hidden_parameter_from_js: True
  output:
    response: True
    response_header: True