xray联动crawlergo自动化扫描爬坑记

xray简介

xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有:

  • 检测速度快,包速度快; 漏洞检测算法高效。
  • 支持范围广,大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均可以支持。
  • 代码质量高,编写代码的人员素质高, 通过 Code Review、单元测试、集成测试等多层验证来提高代码可靠性。
  • 高级可定制,通过配置文件暴露了引擎的各种参数,通过修改配置文件可以极大的客制化功能。
  • 安全无威胁,xray 定位为一款安全辅助评估工具,而不是攻击工具,内置的所有 payload 和 poc 均为无害化检查。

目前支持的漏洞检测类型包括:

  • XSS漏洞检测 (key: xss)
  • SQL 注入检测 (key: sqldet)
  • 命令/代码注入检测 (key: cmd-injection)
  • 目录枚举 (key: dirscan)
  • 路径穿越检测 (key: path-traversal)
  • XML 实体注入检测 (key: xxe)
  • 文件上传检测 (key: upload)
  • 弱口令检测 (key: brute-force)
  • jsonp 检测 (key: jsonp)
  • ssrf 检测 (key: ssrf)
  • 基线检查 (key: baseline)
  • 任意跳转检测 (key: redirect)
  • CRLF 注入 (key: crlf-injection)
  • Struts2 系列漏洞检测 (高级版,key: struts)
  • Thinkphp系列漏洞检测 (高级版,key: thinkphp)
  • POC 框架 (key: phantasm)

其中 POC 框架默认内置 Github 上贡献的 poc,用户也可以根据需要自行构建 poc 并运行。

crawlergo简介

crawlergo是一个使用chrome headless模式进行URL收集的浏览器爬虫。

它对整个网页的关键位置与DOM渲染阶段进行HOOK,自动进行表单填充并提交,配合智能的JS事件触发,尽可能的收集网站暴露出的入口。

内置URL去重模块,过滤掉了大量伪静态URL,对于大型网站仍保持较快的解析与抓取速度,最后得到高质量的请求结果集合。

crawlergo 目前支持以下特性:

  • 原生浏览器环境,协程池调度任务
  • 表单智能填充、自动化提交
  • 完整DOM事件收集,自动化触发
  • 智能URL去重,去掉大部分的重复请求
  • 全面分析收集,包括javascript文件内容、页面注释、robots.txt文件和常见路径Fuzz
  • 支持Host绑定,自动添加Referer
  • 支持请求代理,支持爬虫结果主动推送

前置条件

  • 公网VPS一台
    • Windows、Linux都可以
  • xray1.8.2高级版(截止20220113最新版)
    • 高级版支持Winddows、Linux、Mac
    • 关注公众号小生观察室并回复xray高级版即可下载
  • crawlergo源代码 https://github.com/Qianlitp/crawlergo/releases
  • 谷歌浏览器(自行下载安装)
  • Go环境、Python环境(自行下载安装)

编译crawlergo

将crawlergo源代码下回本地,并编译成可执行文件

进入crawlergo-0.4.2\cmd\crawlergo目录中进行编译,执行go build crawlergo_cmd.go语句

在全新的Go环境下第一次执行该语句时会出现如下报错:

此时只需执行以下语句并稍等片刻再重新编译即可

go mod tidy

在重新执行go build crawlergo_cmd.go时,会依然报以下错误:

代码语言:javascript
复制
open C:\Users\小生观察室\AppData\Local\Temp\go-build2905132708\b001\exe\a.out.exe:
The process cannot access the file because it is being used by another process.
go: failed to remove work dir: remove C:\Users\小生观察室\AppData\Local\Temp\go-build2905132708\b001\exe\a.out.exe:
The process cannot access the file because it is being used by another process.

解决方法:

代码语言:javascript
复制
找到 C:\Users\小生观察室\AppData\Local, 鼠标右键点中 Temp 文件夹 > 属性 > 安全 > 高级

添加 > 主体:Everyone > 把所有权限都打开 > 应用 > 确定退出

再重新执行go build crawlergo_cmd.go语句并会在当前目录下生成crawlergo.exe文件

自动化项目部署

项目地址

代码语言:javascript
复制

将整个项目clone到本地,并将xray_windows_amd64.execrawlergo.exe分别放置项目的xraycrawlergo目录下

配置xray

执行以下语句后会在xray当前目录下生成config.yaml配置文件及CA证书

xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output 小生观察室.html

修改launcher_new文件

launcher_new.py中的chrome浏览器路径修改为本机chrmoe浏览器路径

并将路径中的</code>替换为/

实战复现

  1. 将需要测试的目标保存至targets.txt
  2. 将修改好的launcher_new.pytargets.txt复制到crawlergo目录下
  3. xray设置为监听状态
  4. crawlergo目录下执行python3 launcher_new.py
  • python环境下需要安装以下库fake_useragentsimplejson

批量测试中:

crawlergo目录下生成的sub_domains.txt为爬虫爬到的子域名, crawl_result.txt为爬虫爬到的url

发现漏洞时会在xray目录下自动生成小生观察室_html报告

其他需求_xray反连平台

修改配置文件_服务器端

xray执行后会生成默认配置文件cofig.yaml

需要修改配置文件中反连平台的参数:

将修改后的cofing.yaml及xray其他文件一并放置服务器端

服务器端执行xray_linux_amd64 reverse

通过浏览器能正常打开页面就说明无异常

测试效果

选择页面中的生成一个URL并进行测试

修改配置文件_本地端

修改本地xrayconfig.yaml配置文件的remote_server并添加服务器端的http地址

  • 配置完成后,当检测到SSRF等相关漏洞后会向服务器端反馈结果
  • 反连平台只能在高级版中使用
  • 有安全组的情况下需要放行对应端口,防火墙开放端口一定得是UDP不是TCP,安全组新增默认的是TCP
  • 如果依然无法正常访问对应的http服务,可以考虑在服务器端禁用防火墙ufw disable