xray下载使用

xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有:

  • 检测速度快。发包速度快; 漏洞检测算法高效。
  • 支持范围广。大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均可以支持。
  • 代码质量高。编写代码的人员素质高, 通过 Code Review、单元测试、集成测试等多层验证来提高代码可靠性。
  • 高级可定制。通过配置文件暴露了引擎的各种参数,通过修改配置文件可以极大的客制化功能。
  • 安全无威胁。xray 定位为一款安全辅助评估工具,而不是攻击工具,内置的所有 payload 和 poc 均为无害化检查。

目前支持的漏洞检测类型包括:

  • XSS漏洞检测 (key: xss)
  • SQL 注入检测 (key: sqldet)
  • 命令/代码注入检测 (key: cmd-injection)
  • 目录枚举 (key: dirscan)
  • 路径穿越检测 (key: path-traversal)
  • XML 实体注入检测 (key: xxe)
  • 文件上传检测 (key: upload)
  • 弱口令检测 (key: brute-force)
  • jsonp 检测 (key: jsonp)
  • ssrf 检测 (key: ssrf)
  • 基线检查 (key: baseline)
  • 任意跳转检测 (key: redirect)
  • CRLF 注入 (key: crlf-injection)
  • Struts2 系列漏洞检测 (高级版,key: struts)
  • Thinkphp系列漏洞检测 (高级版,key: thinkphp)
  • POC 框架 (key: phantasm)

其中 POC 框架默认内置 Github 上贡献的 poc,用户也可以根据需要自行构建 poc 并运行。

下载运行

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

下载地址

请下载的时候选择最新的版本下载。

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

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

Windows

  • windows_amd64 Windows x64
  • windows_386 Windows x86

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

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

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

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

快速测试单个 url, 无爬虫:

xray webscan --url http://example.com/?a=b --html-output single-url.html
使用基础爬虫爬取并对爬虫爬取的链接进行漏洞扫描:

xray webscan --basic-crawler http://example.com --html-output xxx.html
使用 HTTP 代理进行被动扫描:

设置浏览器 http 代理为http://127.0.0.1:7777,然后使用浏览器访问网页,就可以自动分析代理流量并扫描。

xray webscan --listen 127.0.0.1:7777 --html-output xxx.html
手动指定本次运行的插件:

默认情况下,将会启用所有内置插件,可以使用下列命令指定本次扫描启用的插件。


xray webscan --plugins cmd_injection,sqldet --url http://example.comxray webscan --plugins cmd_injection,sqldet --listen 127.0.0.1:7777

生成 ca 证书:

.\xray_windows_amd64.exe genca

  • num_found_urls 发现的扫描目标数量
  • num_scanned_urls 已扫描完成的扫描目标数量
  • num_sent_http_requests 已经发出的漏洞探测请求数量
  • average_response_time 近 30s 请求平均响应时间
  • ratio_failed_http_requests 近 30s 请求失败率

这些信息除了表面意思,还有其他隐藏含义:

使用了 --json-output 或者 --html-output 之后没有出现结果文件

xray 目前在扫到漏洞的时候才会创建文件并写入数据,否则说明没有发现漏洞。

如何确认代理模式下 xray 有没有在工作

代理模式下,如果 xray 接收到了流量并进行了扫描,每隔 10s 就会输出一条类似下方的消息

Statistic: scanned: 0, pending: 1, capacity: 10000, requestSent: 180, latency: 678.26ms, failedRatio: 0.00%CopyErrorCopied

如果长期没有此信息输出,也没有漏洞等输出,说明 xray 可能没有接收到浏览器的流量,可以按照下面的办法排查

为什么使用 --url 指定目标扫描很快就结束了?

在指定 --url URL 的情况下,xray 只会针对该 URL 本身进行漏洞检测,不会爬取网站内容。比如,你输入 --url https://baidu.com,xray 只会检测百度首页 的漏洞,这种情况下通常是无法扫描出漏洞的。

如果你需要利用爬虫爬取页面后再检测漏洞,可以使用 --basic-crawler 选项,具体使用方法请参考文档。

为什么我输入URL调用后扫不出漏洞,而其他扫描器扫出了很多漏洞?

原因同上,xray 社区版是一个被动扫描器(角色参照Burpsuite),主动爬虫功能较弱,可能无法满足你的需求。 建议将浏览器代理设置为xray的代理,通过代理的方式将网站流量发送给xray进行检测。如果还是不能扫出漏洞,可以反馈我们。

如何给xray扫描器设置上游代理?

xray 细化了代理的配置,大致分为两部分:

如何限制xray发包速率?

在 config.yaml 文件中 http 设置 max_qps

为什么XSS输出的payload无法复现?

xray的xss插件检测方式与大家熟知的暴力发包方式不同,是通过分析语义来精准判断的,在此过程中可能不会发送真正的payload,而输出的payload也是通过分析得到的可能的payload,不保证可用。但一般来讲,不可用的情况也只需稍加调整就可以利用。

xray会测请求包中的json数据吗?

会。 目前全局支持 query, url-encoded body, multipart body, json body,位置的漏洞探测。部分插件还会对 cookie 和 header 中的项进行漏洞探测。

如何批量爬取多个目标网站并进行漏洞扫描?

自带功能不支持。可以搭配第三方爬虫,同时使用 xray 的代理进行扫描。

代理模式下,为什么扫描完不退出

在代理模式下,xray 并不知道什么情况下是扫完了,因为 xray 是收到一个请求就扫描一个,比如你是浏览器挂 xray 为代理,没有收到新请求可能是你还没开始浏览页面,也可能是已经浏览完了关闭了浏览器,所以扫描完成之后需要手动的退出 xray 进程。

xray 因为 out of memory 而崩溃或被杀死

内存不足导致 xray 出现问题主要有两种表现

这两种情况下,请先收集诊断数据

这类问题核心原因是因为系统内存不足,原因可能是

  • pending 的数量等于 num_found_urls - num_scanned_urls, 如果 pending = 0,那么就意味着扫描完成了
  • average_response_time 比较高 (>200ms) 意味着网络延迟比较大
  • ratio_failed_http_requests 比较高(>5%) 意味着可能有 waf, 反正就是很多请求失败
  • 常见问题
  • no command provided

    在 Windows 下面直接双击打开或者使用了错误的参数,可能会提示 No command provided, please run this program in terminal,在其他平台下,会进入一个类似 shell 一样的界面。

    这是因为 xray 是一款命令行工具,需要在命令行下运行并使用正确的参数,不能直接双击打开,具体的使用方法见 下载运行 章节。

    在非 Windows 环境下,没有参数运行将进入 shell 模式,可以继续输入 version 等指令运行,在 Windows 下面此特性被禁用。

    网页上出现 xray 的报错信息 Proxy Failed

    xray 在代理扫描的时候,需要同时和客户端到和服务端建立连接,如果 xray 和服务器端连接失败,就会返回这样一个错误页面给客户端,常见的错误解释如下

  • timeout awaiting response 等待代理返回时候超时,请检查网络情况,是否可以连通,如果是偶尔的超时,可以忽略,重试即可。
  • connection reset by peer 连接被中断,请检查对方是否有 waf,ip 是否被拉黑,如果是国外的目标,可能是网络不稳定的原因。
  • certificate has expired or is not yet valid 和 certificate signed by unknown authority 等 x509 开头的报错信息,请检查服务端的 ssl 证书配置是否正确,对于自签名证书等问题,可以选择不校验证书,将配置文件中的 tls_skip_verify 改为 true 即可。
  • dial i/o timeout 这往往是连接目标网站时间过长导致的,前面指南中的 https://testphp.vulnweb.com 就是一个国外的网站,国内访问容易出现超时。增大配置文件中的 http -> dial_timeout 可以缓解这个问题。
  • dial tcp: lookup xxx on xxx:53: no such host 要访问的地址的域名,xray 解析失败。
    • 最常见原因是域名拼写错误,比如 example.xray.cool 写错为 exmple.xray.cool
    • 在 MacOS 上,如果需要 VPN 才可以访问和解析的域名,在使用 xray 作为代理后,即使 VPN 连接了也无法解析。这是因为 xray 使用了跨平台编译技术,没有使用 MacOS 的 sdk,无法解析这种域名,普通域名不受影响。如果十分依赖这种场景,可以提交反馈。
  • 访问 http://proxy.xray.cool/ 或者 http://xray/,如果可以看到 xray is working 说明此浏览器已经成功设置 xray 为代理,请继续阅读下一条检查方法,否则请确认浏览器设置。
  • 浏览器等客户端代理可能存在白名单,比如一般 127.0.0.1localhost 等默认不会走代理,这些白名单可能还存在用户设置的更多项目,请检查白名单。
  • 同理,xray 也存在扫描白名单,在配置文件的 mitm 部分中的 restriction 的 includes 和 excludes 中,请检查此部分配置,比如默认情况下 gov 和 edu 域名会被排除在外。
  • 如果要给xray的被动代理本身设置代理,修改配置文件 mitm 部分的 upstream_proxy 项
  • 如果要给xray的漏洞扫描设置代理可以在配置文件 http 部分增加 proxy:http://127.0.0.1:7777 这样的配置
  • xray 提示 fatal error: runtime: out of memory,这个问题是因为系统内存不足了,xray 无法继续分配内存导致无法恢复的错误而退出。
  • xray 进程突然被 kill,这个也可能是因为内存不足导致的,诊断方式为 dmesg -T | grep xray,如果里面有 out of memory 说明是因为系统内存不足而 kill 了 xray 进程。
  • 检查内存大小 free -m
  • xray 会定期输出内存占用情况,Memory: Alloc: n Mb 等,可以找到最后最后一条输出
  • dmesg -T > dmesg.txt 内核日志
  • ps -ef > ps.txt 进程列表
  • 系统内存确实过小,xray 运行使用的内存大小和配置有关,见队列长度 相关章节。这种情况下,请正确理解相关参数的意义,不要配置不合理的数字。
  • 系统中有其他的进程占用了过多的内存,比如 crawlergo。系统在发生内存不足情况的时候,会给所有的进程计算一个分数,直接相关就是内存占用大小,但是因为 xray 是单进程,而 crawlergo 是多进程,所以在同等内存占用情况下,xray 进程分数就会更高,就会被作为牺牲品而被 kill。这种情况下,可以
    • 需要提高系统内存
    • 降低爬虫的进程数量,比如 crawlergo 的 max-tab-count
    • 在运行 xray 之前,在 bash 中执行 echo -500 > /proc/self/oom_score_adj,降低被 oom 的可能性
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值