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.2cmdcrawlergo
目录中进行编译,执行go build crawlergo_cmd.go
语句
在全新的Go环境下第一次执行该语句时会出现如下报错:
此时只需执行以下语句并稍等片刻再重新编译即可
go mod tidy
在重新执行go build crawlergo_cmd.go
时,会依然报以下错误:
open C:Users小生观察室AppDataLocalTempgo-build2905132708b001exea.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小生观察室AppDataLocalTempgo-build2905132708b001exea.out.exe:
The process cannot access the file because it is being used by another process.
解决方法:
代码语言:javascript复制找到 C:Users小生观察室AppDataLocal, 鼠标右键点中 Temp 文件夹 > 属性 > 安全 > 高级
添加 > 主体:Everyone > 把所有权限都打开 > 应用 > 确定退出
再重新执行go build crawlergo_cmd.go
语句并会在当前目录下生成crawlergo.exe
文件
自动化项目部署
项目地址
代码语言:javascript复制https://github.com/timwhitez/crawlergo_x_XRAY
将整个项目clone到本地,并将xray_windows_amd64.exe
和crawlergo.exe
分别放置项目的xray
和crawlergo
目录下
配置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浏览器路径
并将路径中的替换为
/
实战复现
- 将需要测试的目标保存至
targets.txt
- 将修改好的
launcher_new.py
和targets.txt
复制到crawlergo
目录下 - xray设置为监听状态
- 在
crawlergo
目录下执行python3 launcher_new.py
- python环境下需要安装以下库
fake_useragent
、simplejson
批量测试中:
crawlergo
目录下生成的sub_domains.txt
为爬虫爬到的子域名, crawl_result.txt
为爬虫爬到的url
发现漏洞时会在xray
目录下自动生成小生观察室_html
报告
其他需求_xray反连平台
修改配置文件_服务器端
xray执行后会生成默认配置文件cofig.yaml
需要修改配置文件中反连平台的参数:
将修改后的cofing.yaml
及xray其他文件一并放置服务器端
在服务器端
执行xray_linux_amd64 reverse
通过浏览器能正常打开页面就说明无异常
测试效果
选择页面中的生成一个URL
并进行测试
修改配置文件_本地端
修改本地xray
中config.yaml
配置文件的remote_server
并添加服务器端
的http地址
- 配置完成后,当检测到SSRF等相关漏洞后会向服务器端反馈结果
- 反连平台只能在高级版中使用
- 有安全组的情况下需要放行对应端口,防火墙开放端口一定得是UDP不是TCP,安全组新增默认的是TCP
- 如果依然无法正常访问对应的http服务,可以考虑在服务器端禁用防火墙
ufw disable