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
时,会依然报以下错误:
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.
解决方法:
找到 C:\Users\小生观察室\AppData\Local, 鼠标右键点中 Temp 文件夹 > 属性 > 安全 > 高级
添加 > 主体:Everyone > 把所有权限都打开 > 应用 > 确定退出
再重新执行go build crawlergo_cmd.go
语句并会在当前目录下生成crawlergo.exe
文件
自动化项目部署
项目地址
将整个项目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浏览器路径
并将路径中的</code>替换为
/
实战复现
将需要测试的目标保存至
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