XRAY

介绍

长亭科技开发的一款功能强大的安全评估工具,支持常见web漏洞的自动化监测,可以在Github免费下载使用(不开源)。可能是迄今为止最好的被动扫描器(xray安全实验室教学视频原话)

xray安全实验室b站号

这篇文章算是对xray安全实验室给出的教学视频进行整理加上些自己的想法。

下载地址

https://github.com/chaitin/xray/releases

windows x64版本:xray_windows_amd64.exe

xray为单文件命令行工具,且自带所有依赖,安装打开即用,无序安装。

官方文档

https://docs.xray.cool/#/

使用

1
2
3
4
5
6
7
8
xray_windows_amd64.exe -h 查看帮助
xray_windows_amd64.exe webscan -h 查看web扫描模块帮助
xray_windows_amd64.exe version 查看版本
xray_windows_amd64.exe webscan --basic-crawler http://testphp.vulnweb.com 启动web扫描,借助基础爬虫爬这个网站并进行漏洞扫描(http://testphp.vulnhub.com是awvs的一个官方靶站,可以用来测试扫描效果)
xray_windows_amd64.exe --listen 127.0.0.1:7777 --html-output xxx.html 使用http代理进行被动扫描(需要设置浏览器http代理为http://127.0.0.1:7777后可以自动分析代理流量并扫描)
--html-output xxx.html 导出html报告
--plugins xss,xxe,cmd_injection 指定使用插件,这里指定使用xss,xxe,命令注入插件


使用代理模式进行扫描

被动代理原理

1.安装浏览器插件 SwitchyOmega

2.启动xray,使用命令生成证书

xray_windows_amd64.exe genca

3.安装并信任生成的证书

4.启动xray代理

xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-out xxx.html

5.配置浏览器开始扫描


xray高级用法

常用配置介绍

允许扫描的域 Mitm -> Restriction (只允许扫描自己想要的网站,不要扫到什么乱七八糟的网站)

为代理添加认证 Mitm -> auth (使用的时候得登录一下,可以避免放在公网的xray被别人ntr使用)

扫描插件配置 Plugins (可以开关扫描插件,默认全开)

发包速率限制 http -> max_qps (限制扫描速度,防止被封ip)

扫描代理配置 http-> proxy (可以配置上游代理)


xray与burpsuite联动

Burpsuite作为xray的上游代理(抓取xray发包)

原理如下

xray发的包都会被burp抓取

image-20220909235446506

配置

1.xray目录下config.yaml里找到http -> proxy 这一项,设置为 “http://127.0.0.1:8080" ,这个是burp的代理

2.浏览器设置代理127.0.0.1:7777,这个是xray的代理,端口也可以设置成其他端口

3.使用xray进行被动扫描

xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-out xxx.html


xray作为burpsuite的上游(协助测试)

原理如下

burp发的包被xray扫描

image-20220910000846693

配置

记得把xray的config.yaml中http -> proxy 配的代理删掉,不然burp和xray会互相循环套娃

1.burp里User options中Upstream Proxy Servers配一下xray作为上游代理,127.0.0.1:7777

2.浏览器里代理改为burp的代理127.0.0.1:8080

3.使用xray将burp传来的包进行扫描

xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-out xxx.html


编写自定义poc

通过yaml格式编写poc

官方文档

这里以vscode作为编写环境

首先先配置一下环境,安装一下YAML插件,在settings中选择Extensions找到YAML,找到Yaml: Schemas一项,点击Edit in settings.json,把内容修改成

1
2
3
4
5
{
"yaml.schemas": {
"https://raw.githubusercontent.com/chaitin/gamma/master/static/schema/schema-v2.json": ["fingerprint-yaml-*.yml", "poc-yaml-*.yml"]
}
}

当然如果原本就有内容那只需要追加一下如果报错那就是你前面逗号没加

1
2
3
4
5
6
{
"xxx": xxx,
"yaml.schemas": {
"https://raw.githubusercontent.com/chaitin/gamma/master/static/schema/schema-v2.json": ["fingerprint-yaml-*.yml", "poc-yaml-*.yml"]
}
}

意思就是加载了一个对yaml怎么校验的机制

保存后关掉就行

image-20220910004831849

一个最简单的POC由三部分构成:

1
2
3
name: xxx
rules: xxx
detail: xxx

image-20220910005043128

调试poc

xray_windows_amd64.exe webscan --plugins phantasm --poc ./poc-yaml-example.yml --url http://xxx.com

注:phantasm是xray的poc框架管理的插件

具体的就不细讲了

怎么写poc在官方文档中讲的很详细

也可以看看github上xray仓库中的poc,借鉴一下别人的poc是怎么写的