一、Xray简介
Xray是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者开发而成,支持主动、被动多种扫描方式,可以灵活定义 POC。它支持常见web安全问题扫描和自定义poc,能够全面爬取和扫描网站,为安全评估提供全面的数据支持。Xray 定位为一款安全辅助评估工具,而不是攻击工具,内置的所有 payload 和 poc 均为无害化检查。
Xray 的设计理念是简易架构,了解 Xray 的整体架构可以更好的理解客户端和配置文件的设置,方便更好的使用。
整体来看,扫描器这类工具大致都是由三部分组成:来源处理、漏洞检测和结果输出。Xray 目前支持检测的漏洞包括 XSS 漏洞检测、SQL 注入检测、命令/代码注入检测、目录枚举、路径穿越检测、XML 实体注入检测、文件上传检测、弱口令检测、jsonp 检测、ssrf 检测、基线检查、任意跳转检测、CRLF 注入、XStream 漏洞检测、Struts2 系列漏洞检测等。
Xray 项目的目录结构包括存放项目的文档文件、用于指纹识别的脚本和配置文件、存放自定义的 PoC 脚本、生成的漏洞扫描报告、项目的测试脚本和测试数据、与 Webhook 相关的配置和脚本等。Xray 为单文件二进制文件,无依赖,也无需安装,下载后直接使用。
二、安装
项目地址:https://github.com/chaitin/xray/releases/
虽然官方在推Xray2.0系列的工具,但是可能因为目前成熟度还不够,使用体验不佳,具体可以参考文站的《Xpoc供应链漏洞扫描工具》和《web指纹识别工具xapp》两篇文章。
2.1 下载
目前xray1.0最后一个版本为1.9.11,可以直接在https://github.com/chaitin/xray/releases/ 中依据自己的系统进行下载。例如我这里是macOS系统,选择了xray_darwin_amd64.zip。
解压之后是一个可执行程序:
2.2 安装
- 创建目录并,移动xray可执行程序,改名
- 测试执行
提示缺少配置文件。默认会生成sray.yaml、module.xray、plugin.xray.yaml三个文件。
重新执行./xray -h
2.3 源码包(可忽略)
下载源码包。
移动到新建的xray1.9.11
可以在源码包中查看xray的源代码、配置文件、依赖和插件等内容。
2.4 配置环境变量
目前只能在xray1.9.11这个目录下执行xray,通过配置PATH环境变量可以随处执行。
- 在终端执行
echo $SHELL
判断自己的shell是什么类型:
vim ~/.zshrc
- 追加内容:
source ~/.zshrc
- 成功在家目录下执行xray
但是可能由于存在一些当前目录的依赖,还是没办法随处执行。
目前暂且就只能在xray1.9.11下面执行了。
三、检测模块
3.1 社区版
3.2 高级版
四、使用
4.1 具体参数
Version: 1.9.11/eb0c331d/COMMUNITY
NAME:
xray - A powerful scanner engine [https://docs.xray.cool]
USAGE:
[global options] command [command options] [arguments...]
COMMANDS:
webscan, ws Run a webscan task
servicescan, ss Run a service scan task
subdomain, sd Run a subdomain task
poclint, pl, lint lint yaml poc
burp-gamma, btg Convert the export file of burp historical proxy records to POC format
transform transform other script to gamma
reverse Run a standalone reverse server
convert convert results from json to html or from html to json
genca GenerateToFile CA certificate and key
upgrade check new version and upgrade self if any updates found
version Show version info
x A command that enables all plugins.
You can customize new commands or modify the plugins enabled by a command in the configuration file.
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--config FILE Load configuration from FILE (default: "config.yaml")
--log-level value Log level, choices are debug, info, warn, error, fatal
--help, -h show help
如果想看每个COMMANDS下的参数,比如想看“ws”模式支持的参数:
./xray ws -h
4.2 常见用法
使用基础爬虫爬取并对爬虫爬取的链接进行漏洞扫描
xray webscan --basic-crawler http://example.com --html-output vuln.html
使用 HTTP 代理进行被动扫描
xray webscan --listen 127.0.0.1:7777 --html-output proxy.html
设置浏览器 http 代理为
http://127.0.0.1:7777
,就可以自动分析代理流量并扫描。如需扫描 https 流量,请阅读下方文档
抓取 https 流量
部分只扫描单个 url,不使用爬虫
xray webscan --url http://example.com/?a=b --html-output single-url.html
手动指定本次运行的插件
默认情况下,将会启用所有内置插件,可以使用下列命令指定本次扫描启用的插件。
xray webscan --plugins cmd-injection,sqldet --url http://example.com xray webscan --plugins cmd-injection,sqldet --listen 127.0.0.1:7777
指定插件输出
可以指定将本次扫描的漏洞信息输出到某个文件中:
xray webscan --url http://example.com/?a=b \ --text-output result.txt --json-output result.json --html-output report.html
五、实战使用
5.1 Vulnstack7(WHOAMI)靶场渗透实战
具体的靶场搭建和渗透全流程见本站《三层网络域渗透靶场(WHOAMII)搭建》和《三层网络靶场(WHOAMI)从打点到拿下域控 》这两篇文章。
./xray ws --basic-crawler http://172.20.10.5:81 --html-output vuln.html
使用基础爬虫爬取并对爬虫爬取的链接进行漏洞扫描:
扫描出了之前上传的后门。
扫描出了敏感目录。
扫出了一个CVE-2021-3129,是Laravel 的一个高危RCE漏洞,可以结合exp来getshell。
同时可以将结果输出为html,可读性更强。
经过测试xray有比较好的有效性、较低的误报率以及较高的准确性。
之前在靶场渗透的时候172.20.10.5:6379存在redis未授权访问的漏洞,想着拿xray测试一下:
服务扫描仅支持tomcat和weblogic。还是webscan更好用一点。
相比fscan逊色很多,fscan针对redis未授权访问的漏洞甚至能直接写公钥。