一:Xray介绍
Xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,可支持与AWVS,BP等众多安全工具联合使用。
二:Xray简易架构:
说明:了解 Xray 的整体架构可以更好的理解客户端和配置文件的设置,方便更好的使用。
第一部分:来源处理(输入)。扫描目标输入,包括指定单一URL,基础爬虫和HTTP代理手动输入
第二部分:漏洞检测(操作)。内置漏洞扫描插件,自定义POC等方式
第三部分:结果输出(输出)。扫描结果输出,支持Html,Json,Webhook格式输出
三:Xray安装
Xray为单文件二进制文件,无依赖,也无需安装,下载后直接使用,可直接参考如下链接安装使用:
Xray安装参考链接
三:基础使用
1,指定单个URL
参数:- - url
命令:./xray_darwin_arm64 webscan --url http://example.com/ --html-output single-url.html
说明:扫描指定的单个URL,扫描结果以html格式输出
扫描报告截图:
2,简易爬虫模式
参数:- - basic-crawler
说明:(在漏洞扫描前会先进行基础爬虫爬取页面,相比来源处理一单个URL,会先对提供的URL进行爬虫扫描,扫描链接更多,扫描也更全面)
命令:./xray_darwin_arm64 webscan --basic-crawler http://example.com/ --json-output basic-crawler.json
说明:使用爬虫模式,先对指定的url进行爬虫,然后再进行扫描,结果以json格式的文件输出
注意:其中的爬虫深度可以设置,具体位置为配置文件config.yml中basic-crawler参数的max_depth,设置为0为无限制
扫描报告截图:
3,HTTP代理模式
参数:- - listen
HTTP代理扫描逻辑:
说明:代理模式下的基本架构为,扫描器作为中间人,首先原样转发流量,并返回服务器响应给浏览器等客户端,通讯两端都认为自己直接与对方对话,同时记录该流量,然后修改参数并重新发送请求进行扫描
1,Xray本地监听7778端口,用户通过浏览器代理将访问的流量转发给7778端口
2,Xray作为中间人扫描处理浏览器转发过来的流量,然后转发给服务端
3,服务端响应给Xray,Xray扫描处理响应包,Xray转发给用户
扫描配置:
1,Xray本地监听7778端口
命令:
./xray_darwin_arm64 webscan --listen 127.0.0.1:7778 --html-output xray-testphp1.html
说明:Xray监听本地的7778端口,结果通过html格式输出,该模式的好吃就是通过人为手动点击需要扫描的URL,相比前面两种扫描方式,扫描准确度更好,更多适用于手工渗透测试场景
2,浏览器将访问Web流量转发给本机的7778端口:
3,配置CA证书
在浏览器使用 https 协议通信的情况下,必须要得到客户端的信任,才能建立与客户端的通信。
这里的突破口就是 ca 证书。只要自定义的 ca 证书得到了客户端的信任,xray 就能用该 ca 证书签发各种伪造的服务器证书,从而获取到通信内容。
具体方法可参考官方文档:
配置CA证书
4,修改配置文件,启动代理
将需要代理扫描的URL填写在配置文件config.yml中的hostname_allowed字段中
5,扫描报告:
四:指定插件扫描
说明:Xray本身的工作原理就是通过调用插件进行漏洞探测的,有些场景下想针对某个URL进行某一类漏洞的探测
参数:- - pulgins
命令: ./xray_darwin_arm64 webscan --plugins xss --url http://example.com --html-output plugins.html
说明:针对该URL只进行xss漏洞的探测,探测结果以html格式输出
其中的–pulgins参数可指定的漏洞探测插件如下:
扫描报告:
五:结果输出
说明:漏洞扫描和运行时的状态统称为结果输出,xray 定义了如下几种输出方式:
1,Stdout (屏幕输出, 默认开启)
2,JSON 文件输出
参数: --json-output result.json
3,HTML 报告输出
参数:–html-output result.html
4,Webhook输出
参数: --webhook-output
六:参考文档:
文章篇幅有限,仅做了Xray的基础使用,后续也会更新更高阶的用法,师傅们也可以直接查看官方文档。
Xray官方文档
Xray官方基础使用文档