Xray简单使用教程

Xray简单使用教程

0X00下载

xray 为单文件二进制文件,无依赖,也无需安装,下载后直接使用。

下载地址为:

Github: https://github.com/chaitin/xray/releases (国外速度快)

网盘: https://yunpan.360.cn/surl_y3Gu6cugi8u (国内速度快)

注意: 不要直接 clone 仓库,xray 并不开源,仓库内不含源代码,直接下载构建的二进制文件即可。

xray 跨平台支持,请下载时选择需要的版本下载。

0X01版本选择

windows_amd64 Windows x64

windows_386 Windows x86

系统版本要求大于等于 Windows 7 或大于等于 Windows Server 2008 R2, 不支持 Windows XP、Windows 2003 等低版本系统。

对于 release 中的其他文件,说明如下:

sha256.txt 校验文件,内含个版本的 sha256 的哈希值,请下载后自行校验以防被劫持投毒。

Source Code Github 自动打包的,无意义,请忽略。

0X02运行

下载对应系统的版本后,来查看下 xray 的版本号。

以下载到 C:\Users\$User\Downloads 为例,右键解压,就可以得到 xray_windows_amd64.exe 文件了(有的解压软件还会创建一个 xray_windows_amd64.exe 的文件夹,不要和最终的可执行文件混淆了)。

使用桌面左下方的的搜索框,输入 PowerShell,点击 Windows PowerShell,进入命令终端。

然后 cd 到下载目录,运行 .\xray_windows_amd64.exe version 即可查看 xray 的版本号。

Xray简单使用教程

0X03基础命令

.\xray_windows_amd64.exe –h

通过-h命令发现xray命令有

Xray简单使用教程

GLOBAL OPTIONS

先来看一个界面中的这三个全局配置项。全局配置的意思是如果在这指定了,那么所有命令执行的时候都会生效。

--config 用于指定配置文件的位置,默认加载同目录的 config.yaml。关于配置文件请看下一节文档的内容

--log_level 用于指定全局的日志配置,默认为 info, 可以通过设置为 debug 来查看更详细的请求信息、运行时日志信息。

全局配置的使用时需要紧跟二进制程序,如:

.\xray_windows_amd64.exe --log_level debug --config 1.yaml webscan --url xxx

.\xray_windows_amd64.exe --log_level debug reverse

而下面这种方式是不生效的,使用时需要注意下:

.\xray_windows_amd64.exe webscan --log_level debug

commands

xray 的命令有 6 个,抛开 version 和 help 这两个信息展示型的命令,还有 webscan, reverse, genca, subdomain 四个。

reverse 命令用于启动单独的盲打平台服务,盲打平台用于处理没有回显或延迟触发的问题,如果你挖过存储型 XSS,一定对这个不陌生。这部分内容相对独立,单独用一节来介绍。

genca 用于快速生成一个根证书,主要用于被动代理扫描 HTTPS 流量时用到。

subdomain 是子域名扫描的命令,仅高级版才有。

webscan 是 xray 的重头戏。

subdomain子域名扫描

扫描 example.com,并将结果输出到 example.txt

.\xray_windows_amd64.exe  subdomain --target example.com --text-output example.txt

扫描 example.com,并使用 console ui 交互式界面,同时记录结果到 example.txt

.\xray_windows_amd64.exe subdomain --target example.com --console-ui --text-output example.txt

 webscan   扫描web漏洞

运行 .\xray_windows_amd64.exe webscan -h,可以看到

 Xray简单使用教程

配置扫描插件

--plugins 配置本次扫描启用哪些插件, 不再使用配置文件中的配置

--plugins xss --plugins xss,sqldet,phantasm

--poc 配置本次扫描启用哪些 POC, 因为所有 POC 隶属于 phantasm 插件, 所以该参数其实是 phantasm 插件独有的配置。为了使用方便,该参数支持 Glob 表达式批量加载,

解析规则为用该参数值匹配内置的 poc 名字,如果有匹配到则启用;然后检查能否匹配本地文件,如果能匹配到,也加载。用起来是非常灵活的,如

只加载一个 POC, 精准匹配

--plugins phantasm --poc poc-yaml-thinkphp5-controller-rce

加载内置的所有带 `thinkphp` 的 POC

--plugins phantasm --poc "*thinkphp*"

加载本地 `/home/test/pocs/` 目录所有的 POC:

--plugins phantasm --poc "/home/test/pocs/*"

加载 `/home/test/pocs/` 下包含 thinkphp 的 POC

--plugins phantasm --poc "/home/test/pocs/*thinkphp*" ...

配置输入来源

中间的这四个是互斥的,意味着一次只能启用这5个的一个。

--listen 启动一个被动代理服务器作为输入,如 --listen 127.0.0.1:4444,然后配置浏览器或其他访问工具的 http 代理为 http://127.0.0.1:4444 就可以自动检测代理中的 HTTP 请求并进行漏洞扫描。

--basic-crawler 启用一个基础爬虫作为输入, 如 --basic-crawler http://example.com,就可抓取 http://example.com 的内容并以此内容进行漏洞扫描

--url 用于快速测试单个 url,这个参数不带爬虫,只对当前链接进行测试。默认为 GET 请求,配合下面的 --data 参数可以指定 body,同时变为 POST 请求。

--raw-request 用于加载一个原始的 HTTP 请求并用于扫描,原始请求类似上面代码框中的原始请求,如果你用过 sqlmap -r,那么这个参数应该也很容易上手。

 配置输出

最后三个用于指定结果输出方式,这三种方式可以单独使用,也可以搭配使用。

--html-output 将结果输出为 html 报告, 报告样例

--webhook-output 将结果发送到一个地址

--json-output 将结果输出到一个 json 文件中

--webhook-output和--json-output 输出是 json 格式的结构化数据,数据格式参照: 漏洞格式。

你可以在--json-output和--html-otput参数中使用变量__timestamp__和__datetime__,这样文件名中对应位置会自动替换为时间戳或日期时间,避免输出到同一文件时报错。如--html-output report-__datetime__.html将使用report-2019_11_01-10_03_26.html作为报告文件名。

联合使用

将上面说的一些结合起来使用,就可以满足多种场景下的使用需求了。下面的例子都是可以正常运行的,作用不言而喻。

下面是一些例子

./xray_darwin_amd64 webscan --plugins xss --listen 127.0.0.1:1111 --html-output 1.html

./xray_darwin_amd64 --log_level debug webscan --plugins xss,cmd_injection --basic-crawler http://example.com --json-output 1.json

./xray_darwin_amd64 webscan --url http://example.com --data "x=y" --html-output 2.html --json-output 1.json

./xray_darwin_amd64 webscan --url http://example.com/ --webhook-output http://host:port/path