利用sitemap2proxy高效抓取网站URL并代理转发

sitemap2proxy是一款Ruby脚本工具,能够解析网站的sitemap.xml文件,提取所有URL并通过指定代理(如Burp、ZAP)发送请求,帮助渗透测试人员快速发现网站公开页面。

sitemap2proxy

在进行Web应用测试时,通常需要对目标网站进行爬取,但如果网站能主动提供大部分信息呢?sitemap.xml文件正是这样的存在,许多网站使用它向搜索引擎(如Google)展示其内容结构。

该脚本解析sitemap文件提取所有URL,并通过指定代理(Burp、ZAP等)逐个请求。虽然无法发现文件中未提及的内容或进行暴力破解,但能有效识别管理员希望公开的所有页面。

建议搭配Tim Tomes的pagefinder工具使用,该工具可自动检测站点是否存在sitemap或robots.txt文件。

安装

sitemap2proxy为纯Ruby脚本,无需安装额外gem包,只需赋予可执行权限即可。

使用方法

支持指定已下载的sitemap文件或远程URL地址,可处理原始XML(sitemap.xml)或gzip压缩格式(sitemap.xml.gz)。必须参数为代理URL。

默认使用Googlebot用户代理以隐藏日志痕迹,可通过--ua参数自定义。

示例:

获取Google的sitemap并通过本地8080端口代理(不推荐实战使用,因其包含3.5万条记录):

1
./sitemap2proxy.rb --url http://www.google.com/sitemap.xml --proxy http://localhost:8080

伪装为Yahoo爬虫:

1
2
3
./sitemap2proxy.rb --url http://www.google.com/sitemap.xml \
    --proxy http://localhost:8080 \
    --ua "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)"

解析本地文件并转发至远程代理:

1
./sitemap2proxy.rb --file sitemap.xml.gz --proxy http://proxyserver.int:8080

启用详细输出模式:

1
./sitemap2proxy.rb -v --file sitemap.xml.gz --proxy http://proxyserver.int:8080

查看帮助:

1
./sitemap2proxy.rb --help

有趣发现

测试过程中发现google.com的robots.txt文件中指定了多个附加sitemap,这提示渗透测试人员应始终检查robots.txt文件以发现潜在敏感信息。

下载

更新日志

  • 版本1.1:新增响应代码统计功能
  • 版本1.0:初始发布
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计