xray安装与使用
作者: 分类: 网络安全 发布于: 2024-06-20 18:01:28 浏览:1,317 评论(0)
介绍
xray 是一款功能强大的安全评估工具,支持主动扫描和被动扫描。详细文档请移步官方文档 。
xray 支持扫描的类型包括:
名称 | Key | 说明 |
---|---|---|
XSS漏洞检测 | xss |
利用语义分析的方式检测XSS漏洞 |
SQL 注入检测 | sqldet |
支持报错注入、布尔注入和时间盲注等 |
命令/代码注入检测 | cmd-injection |
支持 shell 命令注入、PHP 代码执行、模板注入等 |
目录枚举 | dirscan |
检测备份文件、临时文件、debug 页面、配置文件等10余类敏感路径和文件 |
路径穿越检测 | path-traversal |
支持常见平台和编码 |
XML 实体注入检测 | xxe |
支持有回显和反连平台检测 |
poc 管理 | phantasm |
默认内置部分常用的 poc,用户可以根据需要自行构建 poc 并运行。文档:POC |
文件上传检测 | upload |
支持常见的后端语言 |
弱口令检测 | brute-force |
社区版支持检测 HTTP 基础认证和简易表单弱口令,内置常见用户名和密码字典 |
jsonp 检测 | jsonp |
检测包含敏感信息可以被跨域读取的 jsonp 接口 |
ssrf 检测 | ssrf |
ssrf 检测模块,支持常见的绕过技术和反连平台检测 |
基线检查 | baseline |
检测低 SSL 版本、缺失的或错误添加的 http 头等 |
任意跳转检测 | redirect |
支持 HTML meta 跳转、30x 跳转等 |
CRLF 注入 | crlf-injection |
检测 HTTP 头注入,支持 query、body 等位置的参数 |
XStream漏洞检测 | xstream |
检测XStream系列漏洞 |
Struts2 系列漏洞检测 | struts |
检测目标网站是否存在Struts2系列漏洞,包括s2-016、s2-032、s2-045、s2-059、s2-061等常见漏洞 |
Thinkphp系列漏洞检测 | thinkphp |
检测ThinkPHP开发的网站的相关漏洞 |
shiro反序列化漏洞检测 | shiro |
检测Shiro反序列化漏洞 |
fastjson系列检测 | fastjson |
检测fastjson系列漏洞 |
下载地址
请下载的时候选择最新的版本下载。
- github: https://github.com/chaitin/xray/releases (国外速度快)
- CT stack: https://stack.chaitin.com/tool/detail?id=1 (国内速度快)
注意: 不要直接 clone 仓库,xray 并不开源,仓库内不含源代码,直接下载构建的二进制文件即可。
xray 跨平台支持,请下载时选择需要的版本下载。
- windows: 系统版本要求大于等于 Windows 7 或大于等于 Windows Server 2008 R2, 不支持 Windows XP、Windows 2003 等低版本系统。
-
windows_amd64
Windows x64 -
windows_386
Windows x86
-
- MacOS:
-
darwin_amd64
MacOS intel系列 -
darwin_arm64
MacOS m系列
-
- Linux: 要求内核版本大于等于 2.6.23。不支持 CentOS 5, 因为内核太旧了 (2.6.18)。
-
linux_amd64
Linux x64 -
linux_arm64
Linux x64 -
linux_386
Linux x86
-
对于 release 中的其他文件,说明如下:
-
sha256.txt
校验文件,内含个版本的 sha256 的哈希值,请下载后自行校验以防被劫持投毒。 -
Source Code
Github 自动打包的,无意义,请忽略。
快速使用,以windows为例
以下载到 D:\Program Files\xray
为例,右键解压,就可以得到 xray_windows_amd64.exe
文件了(有的解压软件还会创建一个 xray_windows_amd64.exe
的文件夹,不要和最终的可执行文件混淆了)。使用shell工具如windows自带的Windows PowerShell
进入命令终端,然后cd
到D:\Program Files\xray
目录, 运行 .\xray_windows_amd64.exe version
即可查看 xray 的版本号,如图:
1、使用基础爬虫爬取并对爬虫爬取的链接进行漏洞扫描
.\xray_windows_amd64.exe webscan --basic-crawler http://testphp.vulnweb.com/ --html-output xray-crawler-testphp.html
1、webscan 表示执行的是web扫描
2、--basic-crawler 表示 使用基本的spider对目标进行爬网并扫描请求 后面接要扫描的web url地址
3、--html-output 表示 扫描结果使用html格式输出 后面跟输出的html文件名,默认地址是当前执行文件夹
2、使用 HTTP 代理进行被动扫描
代理模式下的基本架构为,扫描器作为中间人,首先原样转发流量,并返回服务器响应给浏览器等客户端,通讯两端都认为自己直接与对方对话,同时记录该流量,然后修改参数并重新发送请求进行扫描。
.\xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output xray-testphp.html
--listen 表示监听,后面跟监听的ip与端口
代理扫描https
协议需要安装ca证书以获取信任。证书安装步骤:
1、获取证书
运行 .\xray_windows_amd64.exe genca
,运行命令之后,将在当前文件夹生成 ca.crt
和 ca.key
两个文件。
2、安装证书
双击 ca.crt
安装即可,最后弹出导入成功
即安装成功了
3、只扫描单个url,不使用爬虫
.\xray_windows_amd64.exe webscan --url http://testphp.vulnweb.com?a=b --html-output single-url.html
--url 表示本次只扫描单个地址, 后面跟url地址
4、手动指定运行的插件
默认情况下,将会启用所有内置插件,可以使用下列命令指定本次扫描启用的插件
.\xray_windows_amd64.exe webscan --plugins cmd-injection,sqldet --url http://testphp.vulnweb.com --html-output output.html
.\xray_windows_amd64.exe webscan --plugins cmd-injection,sqldet --listen 127.0.0.1:7777 --html-output output.html
5、指定输出文件的格式
指定将本次扫描的漏洞信息输出到某个文件中:
.\xray_windows_amd64.exe webscan --url http://testphp.vulnweb.com?a=b --json-output result.json --html-output report.html
可使用json
和 html
格式输出
6、配置文件
配置文件在当前目录的config.yaml
文件里, 里面有对应的中文解释
version: 4.0
parallel: 30 # 漏洞探测的 worker 数量,可以简单理解为同时有 30 个 POC 在运行
# 全局 http 发包配置
# 更多解释见 https://docs.xray.cool/#/configration/http
http:
proxy: "" # 漏洞扫描时使用的代理,如: http://127.0.0.1:8080。 如需设置多个代理,请使用 proxy_rule 或自行创建上层代理
proxy_rule: [] # 漏洞扫描使用多个代理的配置规则, 具体请参照文档
dial_timeout: 5 # 建立 tcp 连接的超时时间
read_timeout: 10 # 读取 http 响应的超时时间,不可太小,否则会影响到 sql 时间盲注的判断
max_conns_per_host: 50 # 同一 host 最大允许的连接数,可以根据目标主机性能适当增大
enable_http2: false # 是否启用 http2, 开启可以提升部分网站的速度,但目前不稳定有崩溃的风险
fail_retries: 0 # 请求失败的重试次数,0 则不重试
max_redirect: 5 # 单个请求最大允许的跳转数
max_resp_body_size: 2097152 # 最大允许的响应大小, 默认 2M
max_qps: 500 # 每秒最大请求数
allow_methods: # 允许的请求方法
- HEAD
- GET
- POST
- PUT
- PATCH
- DELETE
- OPTIONS
- CONNECT
- TRACE
- MOVE
- PROPFIND
headers:
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
# Cookie: key=value
# 漏洞探测的插件配置
# 更多解释见 https://docs.xray.cool/#/configration/plugins
plugins:
baseline:
enabled: true
detect_cors_header_config: true # 检查 cors 相关配置
detect_server_error_page: true # 检查服务器错误信息
detect_phpinfo: true # 检查响应是否包含phpinfo
detect_system_path_leak: false # 检查响应是否包含系统路径泄露
detect_outdated_ssl_version: false # 检查 ssl 版本问题
detect_http_header_config: false # 检查 http 安全相关 header 是否配置
detect_cookie_httponly: false # 检查 set-cookie 时是否设置 http only
detect_china_id_card_number: false # 检查响应是否存在身份证号
detect_china_phone_number: false # 检查响应是否存在电话号码
detect_china_bank_card: false # 检查响应是否存在银行卡号
detect_private_ip: false # 检查响应是否包含内网 ip
brute-force:
enabled: true
username_dictionary: "" # 自定义用户名字典, 为空将使用内置 TOP10, 配置后将与内置字典**合并**
password_dictionary: "" # 自定义密码字典,为空将使用内置 TOP100, 配置后将与内置字典**合并**
cmd-injection:
enabled: true
crlf-injection:
enabled: true
dirscan:
enabled: true
depth: 1 # 检测深度,定义 http://t.com/a/ 深度为 1, http://t.com/a 深度为 0
dictionary: "" # 自定义检测字典, 配置后将与内置字典**合并**
exclude_dir: [] # 想要排除的内部的扫描category,例如["sensitive/crossdomain","system/key"]
fastjson:
enabled: true
jsonp:
enabled: true
path-traversal:
enabled: true
phantasm: # poc 插件
enabled: true
depth: 1
auto_load_poc: false # 除内置 poc 外,额外自动加载当前目录以 "poc-" 为文件名前缀的POC文件,等同于在 include_poc 中增加 "./poc-*"
exclude_poc: [] # 排除哪些 poc, 支持 glob 语法, 如: "/home/poc/*thinkphp*" 或 "poc-yaml-weblogic*"
include_poc: [] # 只使用哪些内置 poc 以及 额外加载哪些本地 poc, 支持 glob 语法, 如:"*weblogic*" 或 "/home/poc/*"
# 也可使用 --poc 仅运行 指定的内置或本地 poc,进行测试。
# 例如,可使用如下命令,仅运行当前目录下的 poc 且 不运行内置 poc 进行测试:
# webscan -poc ./poc-* -url http://example.com
poc_tags: # 为POC添加tag, 然后就可以使用--tags来选择启动哪些POC。poc-yaml-test为poc的name,[]中的内容为该POC对应的标签
poc-yaml-test: ["HW", "ST"]
poc-yaml-test-1: ["ST"]
redirect:
enabled: true
shiro:
enabled: true
cookie_name: rememberMe # 默认使用哪个 shiro cookie name
aes_key: [] # 自定义 shiro key,配置后将与内置 116 key 做合并
aes_key_file: # 自定义存储 shiro key 的文件路径,配置后将自动加载文件中的key
sqldet:
enabled: true
boolean_based_detection: true # 是否检测布尔盲注
error_based_detection: true # 是否检测报错注入
time_based_detection: true # 是否检测时间盲注
use_comment_in_payload: false # 在 payload 中使用 or, 慎用!可能导致删库!
detect_sqli_in_cookie: true # 是否检查在 cookie 中的注入
ssrf:
enabled: true
struts:
enabled: true
thinkphp:
enabled: true
detect_thinkphp_sqli: true # 检查 thinkphp 特定语法的 sqli 注入漏洞
upload:
enabled: true
xss:
enabled: true
detect_xss_in_cookie: true # 是否探测入口点在 cookie 中的 xss
ie_feature: false # 是否扫描仅能在 ie 下利用的 xss
xxe:
enabled: true
# 反连平台配置,更多解释见 https://docs.xray.cool/#/configration/reverse
# 注意: 默认配置为禁用反连平台,这是无法扫描出依赖反连平台的漏洞,这些漏洞包括 fastjson,ssrf 以及 poc 中依赖反连的情况等
reverse:
db_file_path: "" # 反连平台数据库文件位置, 这是一个 KV 数据库
token: "" # 反连平台认证的 Token, 独立部署时不能为空
http:
enabled: false
listen_ip: 0.0.0.0
listen_port: ""
ip_header: "" # 在哪个 http header 中取 ip,为空代表从 REMOTE_ADDR 中取
dns:
enabled: false
listen_ip: 0.0.0.0
domain: "" # DNS 域名配置
is_domain_name_server: false # 是否修改了域名的 ns 为反连平台,如果是,那 nslookup 等就不需要指定 dns 了
resolve: # DNS 静态解析规则
- type: A # A, AAAA, TXT 三种
record: localhost
value: 127.0.0.1
ttl: 60
client:
remote_server: false # 是否是独立的远程 server,如果是要在下面配置好远程的服务端地址
http_base_url: "" # 默认将根据 ListenIP 和 ListenPort 生成,该地址是存在漏洞的目标反连回来的地址, 当反连平台前面有反代、绑定域名、端口映射时需要自行配置
dns_server_ip: "" # 和 http_base_url 类似,实际用来访问 dns 服务器的地址
# 被动代理配置
# 更多解释见 https://docs.xray.cool/#/configration/mitm
mitm:
ca_cert: ./ca.crt # CA 根证书路径
ca_key: ./ca.key # CA 私钥路径
basic_auth: # 基础认证的用户名密码
username: ""
password: ""
allow_ip_range: [] # 允许的 ip,可以是 ip 或者 cidr 字符串
restriction: # 代理能够访问的资源限制, 以下各项为空表示不限制
hostname_allowed: [] # 允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
hostname_disallowed: # 不允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
- '*google*'
- '*github*'
- '*.gov.cn'
- '*.edu.cn'
- '*chaitin*'
- '*.xray.cool'
port_allowed: [] # 允许访问的端口, 支持的格式如: 80、80-85
port_disallowed: [] # 不允许访问的端口, 支持的格式如: 80、80-85
path_allowed: [] # 允许访问的路径,支持的格式如: test、*test*
path_disallowed: [] # 不允许访问的路径, 支持的格式如: test、*test*
query_key_allowed: [] # 允许访问的 Query Key,支持的格式如: test、*test*
query_key_disallowed: [] # 不允许访问的 Query Key, 支持的格式如: test、*test*
fragment_allowed: [] # 允许访问的 Fragment, 支持的格式如: test、*test*
fragment_disallowed: [] # 不允许访问的 Fragment, 支持的格式如: test、*test*
post_key_allowed: [] # 允许访问的 Post Body 中的参数, 支持的格式如: test、*test*
post_key_disallowed: [] # 不允许访问的 Post Body 中的参数, 支持的格式如: test、*test*
queue:
max_length: 3000 # 队列长度限制, 也可以理解为最大允许多少等待扫描的请求, 请根据内存大小自行调整
proxy_header:
via: "" # 是否为代理自动添加 Via 头
x_forwarded: false # 是否为代理自动添加 X-Forwarded-{For,Host,Proto,Url} 四个 http 头
upstream_proxy: "" # 为 mitm 本身配置独立的代理
# 基础爬虫配置
# 更多解释见 https://docs.xray.cool/#/configration/basic-crawler
basic-crawler:
max_depth: 0 # 最大爬取深度, 0 为无限制
max_count_of_links: 0 # 本次爬取收集的最大链接数, 0 为无限制
allow_visit_parent_path: false # 是否允许爬取父目录, 如果扫描目标为 t.com/a/且该项为 false, 那么就不会爬取 t.com/ 这级的内容
restriction: # 爬虫的允许爬取的资源限制, 为空表示不限制。爬虫会自动添加扫描目标到 Hostname_allowed。
hostname_allowed: [] # 允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
hostname_disallowed: # 不允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
- '*google*'
- '*github*'
- '*.gov.cn'
- '*.edu.cn'
- '*chaitin*'
- '*.xray.cool'
port_allowed: [] # 允许访问的端口, 支持的格式如: 80、80-85
port_disallowed: [] # 不允许访问的端口, 支持的格式如: 80、80-85
path_allowed: [] # 允许访问的路径,支持的格式如: test、*test*
path_disallowed: [] # 不允许访问的路径, 支持的格式如: test、*test*
query_key_allowed: [] # 允许访问的 Query Key,支持的格式如: test、*test*
query_key_disallowed: [] # 不允许访问的 Query Key, 支持的格式如: test、*test*
fragment_allowed: [] # 允许访问的 Fragment, 支持的格式如: test、*test*
fragment_disallowed: [] # 不允许访问的 Fragment, 支持的格式如: test、*test*
post_key_allowed: [] # 允许访问的 Post Body 中的参数, 支持的格式如: test、*test*
post_key_disallowed: [] # 不允许访问的 Post Body 中的参数, 支持的格式如: test、*test*
basic_auth: # 基础认证信息
username: ""
password: ""
# 子域名扫描配置,配置解释见 https://docs.xray.cool/#/configration/subdomain
# 注意:该功能仅限高级版用户使用
subdomain:
max_parallel: 500 # 子域名探测的并发度
allow_recursion: false # 是否允许递归探测, 开启后,扫描完一级域名后,会自动将一级的每个域名作为新的目标
max_recursion_depth: 3 # 最大允许的递归深度, 3 表示 3 级子域名 仅当 allow_recursion 开启时才有意义
web_only: false # 结果中仅显示有 web 应用的, 没有 web 应用的将被丢弃
ip_only: false # 结果中仅展示解析出 IP 的,没有解析成功的将被丢弃
servers: # 子域名扫描过程中使用的 DNS Server
- 8.8.8.8
- 8.8.4.4
- 223.5.5.5
- 223.6.6.6
- 114.114.114.114
sources:
brute:
enabled: true
main_dict: "" # 一级大字典路径,为空将使用内置的 TOP 30000 字典
sub_dict: "" # 其他级小字典路径,为空将使用内置过的 TOP 100 字典
httpfinder:
enabled: true # 使用 http 的一些方式来抓取子域名,包括 js, 配置文件,http header 等等
dnsfinder:
enabled: true # 使用 dns 的一些错误配置来找寻子域名,如区域传送(zone transfer)
certspotter: # 下面的通过 api 获取的了
enabled: true
crt:
enabled: true
hackertarget:
enabled: true
qianxun:
enabled: true
rapiddns:
enabled: true
sublist3r:
enabled: true
threatminer:
enabled: true
virusTotal:
enabled: true
alienvault:
enabled: true
bufferover:
enabled: true
fofa:
enabled: false
email: ""
key: ""
ip138:
enabled: true
myssl:
enabled: true
riskiq:
enabled: false
user: ""
key: ""
quake:
enabled: false
key: ""
baidu:
enabled: true
page_limit: 12
yahoo:
enabled: true
page_limit: 12
sogou:
enabled: true
page_limit: 12
google:
enabled: true
page_limit: 12
bing:
enabled: true
page_limit: 12
ask:
enabled: true
page_limit: 12
使用burp进行联动
在实际测试过程中,除了被动扫描,也时常需要手工测试。这里使用 Burp 的原生功能与 xray 建立起一个多层代理,让流量从 Burp 转发到 xray 中。
首先 xray 建立起 webscan 的监听
.\xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output proxy.html
进入 Burp 后,打开 User options
标签页,然后找到 Upstream Proxy Servers
设置。
点击 Add
添加上游代理以及作用域,Destination host
处可以使用*
匹配多个任意字符串,?
匹配单一任意字符串,而上游代理的地址则填写 xray 的监听地址。
接下来,在浏览器端使用 Burp 的代理地址
此时,请求已经通过了 Burp
转发到了 xray 中
至此,联动成功。
转载时请注明出处及相应链接。
本文永久链接: http://www.baigei.com/articles/xway-install