1. 项目概述为什么你需要一个像Xray这样的漏洞扫描器在网络安全这个行当里混了十几年我见过太多因为一个不起眼的小漏洞而引发的“血案”。无论是刚上线的业务系统还是运行多年的老平台安全测试从来都不是一个可选项而是必选项。对于安全工程师、渗透测试人员甚至是负责运维的开发同学来说手里没几件趁手的自动化工具单靠人工去“瞪眼”找漏洞效率低不说还容易遗漏。今天要聊的Xray就是近年来在圈内口碑迅速崛起的一款国产Web漏洞扫描工具由长亭科技出品。它不像一些老牌工具那样庞大复杂而是以高性能、易用性和灵活的主动/被动双模式扫描著称特别适合用来做日常的安全巡检、渗透测试辅助和漏洞验证。简单来说Xray能帮你自动化地发现Web应用中的常见安全漏洞比如SQL注入、XSS跨站脚本、命令执行、SSRF服务器端请求伪造等等。它的核心价值在于把专业的安全检测能力封装成了一个命令行工具让你用几条命令就能启动一次深度的漏洞扫描。无论是想快速评估一个对外服务的安全性还是在测试环境里验证修复是否彻底Xray都能派上用场。接下来我会从一个实际使用者的角度带你从零开始完成Xray的安装、基础配置到核心功能上手的全过程并分享一些我踩过坑才总结出来的实战经验。2. 环境准备与安装部署安装Xray本身并不复杂但它对运行环境有一些基本要求并且根据你的操作系统步骤上略有差异。我们先从准备工作开始。2.1 系统要求与依赖检查Xray是一个用Go语言编写的高性能工具官方提供了Windows、macOS和Linux多个平台的预编译二进制文件。这意味着你通常不需要安装额外的编译环境或复杂的依赖。核心要求操作系统64位的 Windows 7/8/10/11 macOS 10.12 或主流的Linux发行版如Ubuntu 16.04, CentOS 7等。处理器架构amd64 (x86_64)。目前官方未提供ARM架构如苹果M系列芯片、树莓派的预编译版本在ARM设备上运行可能需要自行从源码编译这对新手不友好建议优先使用x86_64环境。网络工具本身需要从GitHub下载运行时如果需要检测漏洞必然要对目标发起网络请求或监听流量因此稳定的网络连接是基础。权限在Linux/macOS系统下可能需要执行chmod x命令为下载的二进制文件添加可执行权限。注意虽然Xray是绿色软件解压即用但我强烈建议你不要把它放在系统关键目录如Windows的C:\Windows\System32或Linux的/usr/bin下。最好创建一个独立的工具目录例如D:\SecurityTools\或~/tools/专门存放Xray这类安全工具方便管理和更新也避免误操作影响系统。2.2 分平台安装步骤详解官方唯一的下载地址是GitHub发布页面。这里以Windows和Linux为例macOS与Linux步骤类似。2.2.1 Windows平台安装对于Windows用户来说这是最直观的方式。访问发布页面打开浏览器访问https://github.com/chaitin/xray/releases。你会看到一系列发布版本通常选择最新的稳定版Stable Release标签名类似xray_windows_amd64.exe.zip。下载与解压点击对应的.zip文件进行下载。下载完成后右键点击压缩包选择“全部解压缩...”或使用解压软件如7-Zip、Bandizip解压到一个你准备好的目录比如D:\SecurityTools\xray\。验证运行解压后目录里应该只有一个主要的可执行文件xray_windows_amd64.exe。为了后续使用方便我建议你将其重命名为简单的xray.exe。然后在这个目录下打开命令提示符CMD或PowerShell。按住Shift键并在文件夹空白处右键选择“在此处打开Powershell窗口”。输入命令.\xray.exe version并回车。如果安装成功你会看到类似1.9.10这样的版本号信息输出。2.2.2 Linux平台安装在Linux上我们通常通过命令行完成所有操作效率更高。下载与解压打开终端使用wget或curl命令下载。首先进入你打算安装的目录例如家目录下的tools文件夹cd ~ mkdir -p tools cd tools。然后执行下载命令请将链接中的版本号替换为最新的wget https://github.com/chaitin/xray/releases/download/1.9.10/xray_linux_amd64.zip如果系统没有wget可以使用curl -L -o xray_linux_amd64.zip [同样的URL]。解压与授权下载的是一个zip包使用unzip命令解压unzip xray_linux_amd64.zip。如果系统提示未安装unzip请先运行sudo apt install unzip(Debian/Ubuntu) 或sudo yum install unzip(CentOS/RHEL) 进行安装。解压后你会得到一个名为xray_linux_amd64的文件。为其添加可执行权限chmod x xray_linux_amd64。同样可以重命名为xray方便使用mv xray_linux_amd64 xray。验证与全局调用可选运行./xray version检查版本。为了能在任何目录下直接输入xray运行可以将其移动到系统PATH包含的目录例如/usr/local/bin/sudo mv xray /usr/local/bin/。之后直接输入xray version即可验证。2.2.3 关于杀毒软件的误报这是一个非常常见且重要的问题。由于漏洞扫描工具的行为特征例如发送构造的payload、尝试注入等与某些恶意软件类似Windows Defender 或其他第三方杀毒软件如360、火绒很可能将Xray的二进制文件识别为病毒或危险工具并直接删除或隔离。我亲身经历过好几次刚下载完一眨眼文件就没了的情况。解决方案添加信任/排除这是最推荐的方法。在你解压Xray的目录如D:\SecurityTools\xray\上右键点击选择杀毒软件的“信任此文件”或“添加到排除列表”选项。具体路径因杀软而异通常在设置或防护中心里能找到“信任区”或“排除项”。临时关闭实时防护不推荐仅在安装和初次测试时临时关闭完成后务必立即开启。这只是一种应急手段。从源码编译高级如果你有Go环境可以克隆源码库自行编译这样生成的二进制文件被误报的概率会低一些但过程较复杂。2.3 初始化与配置文件生成安装好可执行文件只是第一步。Xray的强大功能很大程度上依赖于其配置文件config.yaml。这个文件不是必须的因为Xray有内置的默认配置。但当你需要定制化扫描行为时它就至关重要。让Xray生成一个默认的配置文件非常简单。在你存放xray可执行文件的目录下打开终端或命令行运行任何一条需要读取配置的命令即可例如最简单的帮助命令./xray webscan --help或者直接运行一个空的扫描命令./xray webscan --url http://example.com这里example.com只是一个示例命令会因目标无效而快速失败但我们的目的达到了运行后Xray会在当前目录下自动生成一个名为config.yaml的文件。这个文件包含了所有可配置项的默认值结构清晰注释详细。有了这个文件我们后续的深度配置就有了基础。3. 核心功能解析与配置实战Xray的核心在于其两种扫描模式主动扫描和被动扫描。理解它们的区别和适用场景是高效使用这款工具的关键。3.1 主动扫描模式主动出击全面体检主动扫描是传统漏洞扫描器的典型工作方式。你给它一个目标URL它会像一个自动化的渗透测试员一样主动地对目标进行爬取发现页面和参数然后对每一个发现点发动各种漏洞检测Payload。3.1.1 基础命令与报告生成最常用的主动扫描命令是针对单个URL./xray webscan --url http://vuln-web.demo/ --html-output active_report.htmlwebscan指定进行Web漏洞扫描。--url指定要扫描的目标地址。--html-output指定输出的HTML报告文件名。Xray的报告非常直观会按风险等级高危、中危、低危、信息分类并详细展示漏洞URL、类型、请求/响应包和修复建议。如果你想批量扫描多个站点可以预先将URL列表每行一个保存到一个文本文件比如targets.txt然后使用./xray webscan --urls-file targets.txt --html-output batch_report.html3.1.2 深度配置config.yaml 调优默认配置适用于一般场景但对于复杂目标或特定需求调整config.yaml能极大提升扫描效率和精度。打开生成的config.yaml我们关注几个核心部分爬虫配置 (crawler)控制Xray如何发现目标站点上的页面。crawler: max_depth: 5 # 从起始URL开始最多爬取5层链接。对于大型网站可以适当调低如3以避免爬取过深。 max_pages: 1000 # 最多爬取1000个页面。防止在无限链接的站点上失控。 allow_subdomains: false # 是否爬取子域名。默认false只爬当前域名。如果需要测试整个主域设为true。 exclude: - *.jpg # 排除所有jpg图片节省资源。 - *.css - /logout # 排除注销链接避免爬虫导致登录状态失效。 - /admin/delete # 排除危险的管理员操作页面防止误操作。实操心得对于需要登录后才能访问的系统后台管理、用户中心主动扫描的爬虫往往无能为力因为它没有登录态的Cookie。这时被动扫描模式或结合Burp Suite等工具导入流量才是更佳选择。扫描器配置 (scanner)控制漏洞检测引擎的行为。scanner: max_parallel: 30 # 并发请求数。提高此值可以加快扫描速度但会给目标服务器带来更大压力也可能触发WAFWeb应用防火墙的CC攻击防护。内网测试可以调高如50扫描公网业务建议保持默认或调低如10-15。 timeout: 15 # 单个请求超时时间秒。对于响应慢的站点可以适当增加。 retry: 1 # 请求失败重试次数。网络不稳定时可设为2。 follow_redirects: true # 是否跟随重定向。通常保持true以检测重定向链上的漏洞。 headers: # 可以自定义全局请求头例如添加一个User-Agent来模拟浏览器。 User-Agent: Mozilla/5.0 (X11; Linux x86_64) ... Chrome/120.0.0.0避坑指南max_parallel是双刃剑。我曾在一个客户的生产环境扫描时因为并发开到50直接导致其负载均衡器报警差点被当成攻击。务必在授权测试范围内并选择业务低峰期进行扫描。插件配置 (plugins)决定启用哪些漏洞检测模块。Xray内置了丰富的POC漏洞概念验证。plugins: enabled: sqldet, xss, cmd-injection, ssrf, dirscan, brute-force, ... # 或者使用排除法禁用某些插件 # disabled: baseline, xstream默认情况下所有可用插件都是开启的。如果你明确知道目标系统是某种特定技术栈比如只有Java可以禁用一些无关的插件如针对PHP的thinkphp系列漏洞检测以减少无效请求和扫描时间。但作为全面评估首次扫描建议全开。3.2 被动扫描模式监听流量精准打击被动扫描是Xray的一大特色也是我认为它最“聪明”的工作模式。它不主动发出任何请求而是作为一个中间人代理MITM监听并分析流经它的HTTP/HTTPS流量从中发现漏洞。3.2.1 工作原理与优势想象一下你把Xray设置成一个代理服务器。你的浏览器或任何HTTP客户端的所有请求都先发给XrayXray检查这个请求和后续的响应看看里面有没有漏洞迹象检查完毕后再把请求原样转发给目标网站最后把网站的响应再传回给你的浏览器。流量路径浏览器 - Xray - 目标网站 - Xray - 浏览器这种模式的巨大优势在于无侵入低风险不对目标进行爬虫和盲目的漏洞轰炸服务器压力极小几乎不会触发WAF或风控。场景真实只检测你实际访问和操作过的功能点比如需要复杂步骤才能到达的订单提交页面、需要特定Cookie的API接口。这大大减少了误报和无效扫描。支持登录态因为你是在浏览器里正常登录的所以Xray能拿到带有登录会话Cookie、Token的请求从而可以扫描那些需要认证的敏感功能。3.2.2 启动与配置被动扫描启动一个基础的被动扫描监听服务非常简单./xray webscan --listen 127.0.0.1:7777 --html-output passive_report.html--listen 127.0.0.1:7777让Xray在本地回环地址的7777端口上启动一个代理监听服务。--html-output同样指定报告输出文件。执行命令后终端会显示[INFO] listening on 127.0.0.1:7777表示代理服务已经启动成功。3.2.3 浏览器代理设置现在你需要配置浏览器让它将所有流量都通过Xray这个代理发送。以Chrome浏览器为例Firefox设置类似打开Chrome的设置 - 高级 - 系统 - 打开计算机的代理设置Windows或直接搜索“代理设置”。在手动代理设置中填入地址127.0.0.1和端口7777。重要确保“对于以下列开头的地址不使用代理服务器”这个列表中不包含127.0.0.1和localhost。否则你对本地服务的访问将不经过Xray。保存设置。配置完成后你在浏览器里的所有访问除了本地地址都会经过Xray代理。此时你可以正常登录目标系统浏览各个页面进行各种操作。Xray会在后台安静地分析所有请求和响应。当你测试完毕回到终端按CtrlC停止Xray它就会生成一份包含所有在流量中发现的漏洞的HTML报告。3.2.4 进阶与Burp Suite联动对于专业的安全测试人员Burp Suite是标配。Xray可以与Burp完美联动形成更强大的工作流。思路是让流量先经过Burp方便我们手动测试、改包、重放再经过Xray进行自动化漏洞检测。配置步骤启动Xray被动扫描如上所述./xray webscan --listen 127.0.0.1:7777。配置Burp Suite上游代理打开Burp Suite进入User options-Connections-Upstream Proxy Servers。点击Add添加一条规则。Destination host可以留空表示所有流量或填写你的目标域名。Proxy host127.0.0.1Proxy port7777(即Xray监听的端口)勾选Support HTTP/2。配置浏览器代理指向Burp将浏览器的代理设置为Burp Suite默认的监听端口通常是127.0.0.1:8080。此时的流量路径变为浏览器 - Burp Suite (8080) - Xray (7777) - 目标网站这样你既可以利用Burp进行手动、深入的测试又能让Xray在后台自动化地查漏补缺两者报告可以相互印证效率倍增。4. 高级功能与生态集成掌握了主动和被动扫描你已经能解决80%的问题。接下来看看如何通过自定义POC和联动其他工具让Xray发挥120%的威力。4.1 自定义POC的加载与编写Xray内置的POC库虽然强大但安全漏洞日新月异特别是针对一些自研框架、特定版本组件的0day或Nday漏洞内置POC可能无法覆盖。这时自定义POC功能就至关重要。4.1.1 社区版自定义POC加载方法需要注意的是Xray社区版和高级版在POC加载方式上略有区别。社区版不支持通过--poc参数在命令行直接指定自定义POC文件。正确的方法是通过修改config.yaml配置文件来实现。准备POC文件首先你需要有自己的POC文件。POC是YAML格式的你可以从互联网上的安全社区如先知、Seebug获取或者根据公开的漏洞详情自己编写。假设你有一个检测某OA系统漏洞的POC保存为oa_system_rce.yml放在./my_pocs/目录下。修改配置文件打开config.yaml找到phantasm配置段这是Xray的POC引擎。修改include_poc部分phantasm: # 包含的POC支持内置POC名称自定义文件/目录 include_poc: - * # 加载所有内置POC - ./my_pocs/*.yml # 加载自定义目录下的所有yml文件 # - ./my_pocs/oa_system_rce.yml # 也可以指定单个文件 # 排除的POC可选 exclude_poc: []启动扫描修改保存后无论是主动还是被动扫描Xray都会自动加载内置POC和你自定义的POC。启动命令无需额外参数./xray webscan --url http://target.com --html-output report.html。4.1.2 编写一个简单的POC了解POC结构有助于你理解和修改别人的POC。一个最简单的POC包含以下几个部分name: poc-example-test rules: - method: GET path: /api/test expression: | response.status 200 response.body.bcontains(b\test_keyword\) detail: author: your_name links: - https://example.com/vulnname: POC的唯一标识。rules: 检测规则。这里定义了一个规则发送GET请求到/api/test如果响应状态码是200且响应体包含test_keyword这个字符串则认为匹配成功存在漏洞迹象。detail: 漏洞详情如作者、参考链接。实操心得自定义POC的调试是个细致活。建议先用--json-output参数输出JSON格式的报告里面会包含每个POC执行的详细请求和响应方便你判断规则是否写对了。另外切勿在未授权的情况下使用自定义POC扫描任何非自有资产这不仅是法律问题也可能因为POC编写不严谨而对目标造成意外影响。4.2 与Rad联动高效资产发现Xray擅长漏洞检测但在资产发现爬取网站目录、链接方面虽然内置了爬虫有时可能不够深入或快速。长亭科技的另一款开源工具Rad正是一个专注于Web目录快速爬取的工具。两者联动可以实现“Rad发现资产Xray检测漏洞”的自动化流水线。4.2.1 Rad的安装与使用Rad的安装与Xray类似从GitHub发布页下载对应平台的二进制文件即可。解压后得到一个rad可执行文件。Rad的基本使用方式是./rad -t http://target.com -text-output urls.txt-t: 指定目标。-text-output: 将爬取到的所有URL输出到文本文件。4.2.2 与Xray被动扫描联动联动的精髓在于让Rad爬取到的每一个URL都自动流经Xray的被动扫描代理进行漏洞检测。首先启动Xray被动扫描监听./xray webscan --listen 127.0.0.1:7777 --html-output rad_xray_report.html然后使用Rad并指定Xray作为其HTTP代理./rad -t http://target.com -http-proxy http://127.0.0.1:7777此时的工作流是Rad开始爬取target.com它发出的每一个请求都会先发送到127.0.0.1:7777即Xray代理。Xray接收到请求后一方面将其转发给目标网站以获取响应供Rad继续分析链接另一方面会记录这个请求和响应并进行漏洞检测。Rad爬取结束后Xray会生成一份包含所有在Rad爬取过程中发现的漏洞的报告。这种组合拳非常高效特别适合在对一个陌生目标进行初步、快速的安全评估时使用。Rad能快速摸清网站的接口和目录结构而Xray则同步完成安全检测。5. 实战问题排查与性能调优工具用得好不仅要会基本操作更要能解决实际运行中遇到的问题并根据环境调整到最佳状态。5.1 常见错误与解决方案以下是我在长期使用中总结的一些典型问题问题现象可能原因解决方案运行./xray version提示“权限被拒绝”或“无法执行”文件没有可执行权限Linux/macOS。在终端执行chmod x xray。启动扫描后立即退出无任何输出1. 杀毒软件删除了文件。2. 命令行参数格式错误。1. 检查文件是否存在在杀软中添加信任。2. 仔细检查命令例如--url后面必须跟一个完整的URL。被动扫描启动成功但浏览器无法上网浏览器代理设置错误可能将本地地址也代理了。检查浏览器代理设置确保127.0.0.1和localhost在“不使用代理”的列表中。扫描速度非常慢或大量请求超时1. 目标服务器响应慢。2.config.yaml中scanner.max_parallel并发数设置过高被目标限流。3. 网络延迟高。1. 增加scanner.timeout如30秒。2.显著降低scanner.max_parallel如改为5-10这是最常见原因。3. 考虑在离目标更近的网络环境运行。报告中没有发现漏洞但手动测试存在1. 漏洞对应的检测插件未启用。2. POC规则不够精确或漏洞需要特定条件触发。3. 扫描深度或范围不够。1. 检查config.yaml中的plugins配置确保相关插件已启用。2. 对于复杂漏洞被动扫描结合手动测试更有效。3. 调整爬虫配置或使用Rad扩大资产发现范围。使用HTTPS目标时被动扫描报证书错误Xray的代理默认使用自签名证书浏览器不信任。需要将Xray的CA证书导入到系统的受信任根证书颁发机构。具体方法首次用浏览器访问某个HTTPS网站时Xray会提示你访问http://127.0.0.1:7777下载证书。下载后安装并信任该证书。此操作有安全风险请仅在测试环境中进行并测试完毕后及时移除证书。5.2 性能调优与最佳实践要让Xray跑得又快又稳以下几点经验值得参考目标选择与拆分不要动不动就用一个工具去扫整个主域名如*.example.com。这既不道德效率也低。应该先通过子域名枚举、端口扫描等手段确定具体的测试目标如app.example.com,api.example.com然后针对性地扫描。配置是灵魂不要永远用默认配置。扫描前花5分钟根据目标特点调整config.yaml。对内网系统可以适当提高max_parallel(如30-50)减少timeout(如5秒)。对公网复杂应用务必降低max_parallel(如5-10)增加timeout(如15-30秒)并在crawler.exclude中排除图片、静态资源等无关路径。针对API接口扫描可以关闭或减少爬虫深度更多依靠被动扫描或手动导入接口文档如Swagger URL进行扫描。报告分析与验证Xray的报告是起点不是终点。对于它报出的中高危漏洞务必进行手动验证。特别是SQL注入、命令执行这类漏洞尝试用报告中的Payload去复现确认其真实性和危害等级。自动化工具难免有误报直接提交误报报告会严重影响你的专业信誉。法律与授权红线这是最重要的“最佳实践”。绝对不要在未获得明确书面授权的情况下对任何不属于你或你未被允许测试的系统进行漏洞扫描。这不仅违法还可能构成犯罪。即使是内部测试也最好在隔离的测试环境进行避免影响生产系统。工具的安装和使用只是第一步真正体现价值的是如何将它融入你的安全工作中如何解读它的结果以及如何用专业的态度去对待安全测试这件事。Xray是一个强大的助手但它不能替代安全工程师的思考和判断。把它用好了它能成为你发现风险、加固系统的千里眼和顺风耳。
Xray漏洞扫描器实战指南:从安装配置到高级应用
发布时间:2026/7/7 14:55:38
1. 项目概述为什么你需要一个像Xray这样的漏洞扫描器在网络安全这个行当里混了十几年我见过太多因为一个不起眼的小漏洞而引发的“血案”。无论是刚上线的业务系统还是运行多年的老平台安全测试从来都不是一个可选项而是必选项。对于安全工程师、渗透测试人员甚至是负责运维的开发同学来说手里没几件趁手的自动化工具单靠人工去“瞪眼”找漏洞效率低不说还容易遗漏。今天要聊的Xray就是近年来在圈内口碑迅速崛起的一款国产Web漏洞扫描工具由长亭科技出品。它不像一些老牌工具那样庞大复杂而是以高性能、易用性和灵活的主动/被动双模式扫描著称特别适合用来做日常的安全巡检、渗透测试辅助和漏洞验证。简单来说Xray能帮你自动化地发现Web应用中的常见安全漏洞比如SQL注入、XSS跨站脚本、命令执行、SSRF服务器端请求伪造等等。它的核心价值在于把专业的安全检测能力封装成了一个命令行工具让你用几条命令就能启动一次深度的漏洞扫描。无论是想快速评估一个对外服务的安全性还是在测试环境里验证修复是否彻底Xray都能派上用场。接下来我会从一个实际使用者的角度带你从零开始完成Xray的安装、基础配置到核心功能上手的全过程并分享一些我踩过坑才总结出来的实战经验。2. 环境准备与安装部署安装Xray本身并不复杂但它对运行环境有一些基本要求并且根据你的操作系统步骤上略有差异。我们先从准备工作开始。2.1 系统要求与依赖检查Xray是一个用Go语言编写的高性能工具官方提供了Windows、macOS和Linux多个平台的预编译二进制文件。这意味着你通常不需要安装额外的编译环境或复杂的依赖。核心要求操作系统64位的 Windows 7/8/10/11 macOS 10.12 或主流的Linux发行版如Ubuntu 16.04, CentOS 7等。处理器架构amd64 (x86_64)。目前官方未提供ARM架构如苹果M系列芯片、树莓派的预编译版本在ARM设备上运行可能需要自行从源码编译这对新手不友好建议优先使用x86_64环境。网络工具本身需要从GitHub下载运行时如果需要检测漏洞必然要对目标发起网络请求或监听流量因此稳定的网络连接是基础。权限在Linux/macOS系统下可能需要执行chmod x命令为下载的二进制文件添加可执行权限。注意虽然Xray是绿色软件解压即用但我强烈建议你不要把它放在系统关键目录如Windows的C:\Windows\System32或Linux的/usr/bin下。最好创建一个独立的工具目录例如D:\SecurityTools\或~/tools/专门存放Xray这类安全工具方便管理和更新也避免误操作影响系统。2.2 分平台安装步骤详解官方唯一的下载地址是GitHub发布页面。这里以Windows和Linux为例macOS与Linux步骤类似。2.2.1 Windows平台安装对于Windows用户来说这是最直观的方式。访问发布页面打开浏览器访问https://github.com/chaitin/xray/releases。你会看到一系列发布版本通常选择最新的稳定版Stable Release标签名类似xray_windows_amd64.exe.zip。下载与解压点击对应的.zip文件进行下载。下载完成后右键点击压缩包选择“全部解压缩...”或使用解压软件如7-Zip、Bandizip解压到一个你准备好的目录比如D:\SecurityTools\xray\。验证运行解压后目录里应该只有一个主要的可执行文件xray_windows_amd64.exe。为了后续使用方便我建议你将其重命名为简单的xray.exe。然后在这个目录下打开命令提示符CMD或PowerShell。按住Shift键并在文件夹空白处右键选择“在此处打开Powershell窗口”。输入命令.\xray.exe version并回车。如果安装成功你会看到类似1.9.10这样的版本号信息输出。2.2.2 Linux平台安装在Linux上我们通常通过命令行完成所有操作效率更高。下载与解压打开终端使用wget或curl命令下载。首先进入你打算安装的目录例如家目录下的tools文件夹cd ~ mkdir -p tools cd tools。然后执行下载命令请将链接中的版本号替换为最新的wget https://github.com/chaitin/xray/releases/download/1.9.10/xray_linux_amd64.zip如果系统没有wget可以使用curl -L -o xray_linux_amd64.zip [同样的URL]。解压与授权下载的是一个zip包使用unzip命令解压unzip xray_linux_amd64.zip。如果系统提示未安装unzip请先运行sudo apt install unzip(Debian/Ubuntu) 或sudo yum install unzip(CentOS/RHEL) 进行安装。解压后你会得到一个名为xray_linux_amd64的文件。为其添加可执行权限chmod x xray_linux_amd64。同样可以重命名为xray方便使用mv xray_linux_amd64 xray。验证与全局调用可选运行./xray version检查版本。为了能在任何目录下直接输入xray运行可以将其移动到系统PATH包含的目录例如/usr/local/bin/sudo mv xray /usr/local/bin/。之后直接输入xray version即可验证。2.2.3 关于杀毒软件的误报这是一个非常常见且重要的问题。由于漏洞扫描工具的行为特征例如发送构造的payload、尝试注入等与某些恶意软件类似Windows Defender 或其他第三方杀毒软件如360、火绒很可能将Xray的二进制文件识别为病毒或危险工具并直接删除或隔离。我亲身经历过好几次刚下载完一眨眼文件就没了的情况。解决方案添加信任/排除这是最推荐的方法。在你解压Xray的目录如D:\SecurityTools\xray\上右键点击选择杀毒软件的“信任此文件”或“添加到排除列表”选项。具体路径因杀软而异通常在设置或防护中心里能找到“信任区”或“排除项”。临时关闭实时防护不推荐仅在安装和初次测试时临时关闭完成后务必立即开启。这只是一种应急手段。从源码编译高级如果你有Go环境可以克隆源码库自行编译这样生成的二进制文件被误报的概率会低一些但过程较复杂。2.3 初始化与配置文件生成安装好可执行文件只是第一步。Xray的强大功能很大程度上依赖于其配置文件config.yaml。这个文件不是必须的因为Xray有内置的默认配置。但当你需要定制化扫描行为时它就至关重要。让Xray生成一个默认的配置文件非常简单。在你存放xray可执行文件的目录下打开终端或命令行运行任何一条需要读取配置的命令即可例如最简单的帮助命令./xray webscan --help或者直接运行一个空的扫描命令./xray webscan --url http://example.com这里example.com只是一个示例命令会因目标无效而快速失败但我们的目的达到了运行后Xray会在当前目录下自动生成一个名为config.yaml的文件。这个文件包含了所有可配置项的默认值结构清晰注释详细。有了这个文件我们后续的深度配置就有了基础。3. 核心功能解析与配置实战Xray的核心在于其两种扫描模式主动扫描和被动扫描。理解它们的区别和适用场景是高效使用这款工具的关键。3.1 主动扫描模式主动出击全面体检主动扫描是传统漏洞扫描器的典型工作方式。你给它一个目标URL它会像一个自动化的渗透测试员一样主动地对目标进行爬取发现页面和参数然后对每一个发现点发动各种漏洞检测Payload。3.1.1 基础命令与报告生成最常用的主动扫描命令是针对单个URL./xray webscan --url http://vuln-web.demo/ --html-output active_report.htmlwebscan指定进行Web漏洞扫描。--url指定要扫描的目标地址。--html-output指定输出的HTML报告文件名。Xray的报告非常直观会按风险等级高危、中危、低危、信息分类并详细展示漏洞URL、类型、请求/响应包和修复建议。如果你想批量扫描多个站点可以预先将URL列表每行一个保存到一个文本文件比如targets.txt然后使用./xray webscan --urls-file targets.txt --html-output batch_report.html3.1.2 深度配置config.yaml 调优默认配置适用于一般场景但对于复杂目标或特定需求调整config.yaml能极大提升扫描效率和精度。打开生成的config.yaml我们关注几个核心部分爬虫配置 (crawler)控制Xray如何发现目标站点上的页面。crawler: max_depth: 5 # 从起始URL开始最多爬取5层链接。对于大型网站可以适当调低如3以避免爬取过深。 max_pages: 1000 # 最多爬取1000个页面。防止在无限链接的站点上失控。 allow_subdomains: false # 是否爬取子域名。默认false只爬当前域名。如果需要测试整个主域设为true。 exclude: - *.jpg # 排除所有jpg图片节省资源。 - *.css - /logout # 排除注销链接避免爬虫导致登录状态失效。 - /admin/delete # 排除危险的管理员操作页面防止误操作。实操心得对于需要登录后才能访问的系统后台管理、用户中心主动扫描的爬虫往往无能为力因为它没有登录态的Cookie。这时被动扫描模式或结合Burp Suite等工具导入流量才是更佳选择。扫描器配置 (scanner)控制漏洞检测引擎的行为。scanner: max_parallel: 30 # 并发请求数。提高此值可以加快扫描速度但会给目标服务器带来更大压力也可能触发WAFWeb应用防火墙的CC攻击防护。内网测试可以调高如50扫描公网业务建议保持默认或调低如10-15。 timeout: 15 # 单个请求超时时间秒。对于响应慢的站点可以适当增加。 retry: 1 # 请求失败重试次数。网络不稳定时可设为2。 follow_redirects: true # 是否跟随重定向。通常保持true以检测重定向链上的漏洞。 headers: # 可以自定义全局请求头例如添加一个User-Agent来模拟浏览器。 User-Agent: Mozilla/5.0 (X11; Linux x86_64) ... Chrome/120.0.0.0避坑指南max_parallel是双刃剑。我曾在一个客户的生产环境扫描时因为并发开到50直接导致其负载均衡器报警差点被当成攻击。务必在授权测试范围内并选择业务低峰期进行扫描。插件配置 (plugins)决定启用哪些漏洞检测模块。Xray内置了丰富的POC漏洞概念验证。plugins: enabled: sqldet, xss, cmd-injection, ssrf, dirscan, brute-force, ... # 或者使用排除法禁用某些插件 # disabled: baseline, xstream默认情况下所有可用插件都是开启的。如果你明确知道目标系统是某种特定技术栈比如只有Java可以禁用一些无关的插件如针对PHP的thinkphp系列漏洞检测以减少无效请求和扫描时间。但作为全面评估首次扫描建议全开。3.2 被动扫描模式监听流量精准打击被动扫描是Xray的一大特色也是我认为它最“聪明”的工作模式。它不主动发出任何请求而是作为一个中间人代理MITM监听并分析流经它的HTTP/HTTPS流量从中发现漏洞。3.2.1 工作原理与优势想象一下你把Xray设置成一个代理服务器。你的浏览器或任何HTTP客户端的所有请求都先发给XrayXray检查这个请求和后续的响应看看里面有没有漏洞迹象检查完毕后再把请求原样转发给目标网站最后把网站的响应再传回给你的浏览器。流量路径浏览器 - Xray - 目标网站 - Xray - 浏览器这种模式的巨大优势在于无侵入低风险不对目标进行爬虫和盲目的漏洞轰炸服务器压力极小几乎不会触发WAF或风控。场景真实只检测你实际访问和操作过的功能点比如需要复杂步骤才能到达的订单提交页面、需要特定Cookie的API接口。这大大减少了误报和无效扫描。支持登录态因为你是在浏览器里正常登录的所以Xray能拿到带有登录会话Cookie、Token的请求从而可以扫描那些需要认证的敏感功能。3.2.2 启动与配置被动扫描启动一个基础的被动扫描监听服务非常简单./xray webscan --listen 127.0.0.1:7777 --html-output passive_report.html--listen 127.0.0.1:7777让Xray在本地回环地址的7777端口上启动一个代理监听服务。--html-output同样指定报告输出文件。执行命令后终端会显示[INFO] listening on 127.0.0.1:7777表示代理服务已经启动成功。3.2.3 浏览器代理设置现在你需要配置浏览器让它将所有流量都通过Xray这个代理发送。以Chrome浏览器为例Firefox设置类似打开Chrome的设置 - 高级 - 系统 - 打开计算机的代理设置Windows或直接搜索“代理设置”。在手动代理设置中填入地址127.0.0.1和端口7777。重要确保“对于以下列开头的地址不使用代理服务器”这个列表中不包含127.0.0.1和localhost。否则你对本地服务的访问将不经过Xray。保存设置。配置完成后你在浏览器里的所有访问除了本地地址都会经过Xray代理。此时你可以正常登录目标系统浏览各个页面进行各种操作。Xray会在后台安静地分析所有请求和响应。当你测试完毕回到终端按CtrlC停止Xray它就会生成一份包含所有在流量中发现的漏洞的HTML报告。3.2.4 进阶与Burp Suite联动对于专业的安全测试人员Burp Suite是标配。Xray可以与Burp完美联动形成更强大的工作流。思路是让流量先经过Burp方便我们手动测试、改包、重放再经过Xray进行自动化漏洞检测。配置步骤启动Xray被动扫描如上所述./xray webscan --listen 127.0.0.1:7777。配置Burp Suite上游代理打开Burp Suite进入User options-Connections-Upstream Proxy Servers。点击Add添加一条规则。Destination host可以留空表示所有流量或填写你的目标域名。Proxy host127.0.0.1Proxy port7777(即Xray监听的端口)勾选Support HTTP/2。配置浏览器代理指向Burp将浏览器的代理设置为Burp Suite默认的监听端口通常是127.0.0.1:8080。此时的流量路径变为浏览器 - Burp Suite (8080) - Xray (7777) - 目标网站这样你既可以利用Burp进行手动、深入的测试又能让Xray在后台自动化地查漏补缺两者报告可以相互印证效率倍增。4. 高级功能与生态集成掌握了主动和被动扫描你已经能解决80%的问题。接下来看看如何通过自定义POC和联动其他工具让Xray发挥120%的威力。4.1 自定义POC的加载与编写Xray内置的POC库虽然强大但安全漏洞日新月异特别是针对一些自研框架、特定版本组件的0day或Nday漏洞内置POC可能无法覆盖。这时自定义POC功能就至关重要。4.1.1 社区版自定义POC加载方法需要注意的是Xray社区版和高级版在POC加载方式上略有区别。社区版不支持通过--poc参数在命令行直接指定自定义POC文件。正确的方法是通过修改config.yaml配置文件来实现。准备POC文件首先你需要有自己的POC文件。POC是YAML格式的你可以从互联网上的安全社区如先知、Seebug获取或者根据公开的漏洞详情自己编写。假设你有一个检测某OA系统漏洞的POC保存为oa_system_rce.yml放在./my_pocs/目录下。修改配置文件打开config.yaml找到phantasm配置段这是Xray的POC引擎。修改include_poc部分phantasm: # 包含的POC支持内置POC名称自定义文件/目录 include_poc: - * # 加载所有内置POC - ./my_pocs/*.yml # 加载自定义目录下的所有yml文件 # - ./my_pocs/oa_system_rce.yml # 也可以指定单个文件 # 排除的POC可选 exclude_poc: []启动扫描修改保存后无论是主动还是被动扫描Xray都会自动加载内置POC和你自定义的POC。启动命令无需额外参数./xray webscan --url http://target.com --html-output report.html。4.1.2 编写一个简单的POC了解POC结构有助于你理解和修改别人的POC。一个最简单的POC包含以下几个部分name: poc-example-test rules: - method: GET path: /api/test expression: | response.status 200 response.body.bcontains(b\test_keyword\) detail: author: your_name links: - https://example.com/vulnname: POC的唯一标识。rules: 检测规则。这里定义了一个规则发送GET请求到/api/test如果响应状态码是200且响应体包含test_keyword这个字符串则认为匹配成功存在漏洞迹象。detail: 漏洞详情如作者、参考链接。实操心得自定义POC的调试是个细致活。建议先用--json-output参数输出JSON格式的报告里面会包含每个POC执行的详细请求和响应方便你判断规则是否写对了。另外切勿在未授权的情况下使用自定义POC扫描任何非自有资产这不仅是法律问题也可能因为POC编写不严谨而对目标造成意外影响。4.2 与Rad联动高效资产发现Xray擅长漏洞检测但在资产发现爬取网站目录、链接方面虽然内置了爬虫有时可能不够深入或快速。长亭科技的另一款开源工具Rad正是一个专注于Web目录快速爬取的工具。两者联动可以实现“Rad发现资产Xray检测漏洞”的自动化流水线。4.2.1 Rad的安装与使用Rad的安装与Xray类似从GitHub发布页下载对应平台的二进制文件即可。解压后得到一个rad可执行文件。Rad的基本使用方式是./rad -t http://target.com -text-output urls.txt-t: 指定目标。-text-output: 将爬取到的所有URL输出到文本文件。4.2.2 与Xray被动扫描联动联动的精髓在于让Rad爬取到的每一个URL都自动流经Xray的被动扫描代理进行漏洞检测。首先启动Xray被动扫描监听./xray webscan --listen 127.0.0.1:7777 --html-output rad_xray_report.html然后使用Rad并指定Xray作为其HTTP代理./rad -t http://target.com -http-proxy http://127.0.0.1:7777此时的工作流是Rad开始爬取target.com它发出的每一个请求都会先发送到127.0.0.1:7777即Xray代理。Xray接收到请求后一方面将其转发给目标网站以获取响应供Rad继续分析链接另一方面会记录这个请求和响应并进行漏洞检测。Rad爬取结束后Xray会生成一份包含所有在Rad爬取过程中发现的漏洞的报告。这种组合拳非常高效特别适合在对一个陌生目标进行初步、快速的安全评估时使用。Rad能快速摸清网站的接口和目录结构而Xray则同步完成安全检测。5. 实战问题排查与性能调优工具用得好不仅要会基本操作更要能解决实际运行中遇到的问题并根据环境调整到最佳状态。5.1 常见错误与解决方案以下是我在长期使用中总结的一些典型问题问题现象可能原因解决方案运行./xray version提示“权限被拒绝”或“无法执行”文件没有可执行权限Linux/macOS。在终端执行chmod x xray。启动扫描后立即退出无任何输出1. 杀毒软件删除了文件。2. 命令行参数格式错误。1. 检查文件是否存在在杀软中添加信任。2. 仔细检查命令例如--url后面必须跟一个完整的URL。被动扫描启动成功但浏览器无法上网浏览器代理设置错误可能将本地地址也代理了。检查浏览器代理设置确保127.0.0.1和localhost在“不使用代理”的列表中。扫描速度非常慢或大量请求超时1. 目标服务器响应慢。2.config.yaml中scanner.max_parallel并发数设置过高被目标限流。3. 网络延迟高。1. 增加scanner.timeout如30秒。2.显著降低scanner.max_parallel如改为5-10这是最常见原因。3. 考虑在离目标更近的网络环境运行。报告中没有发现漏洞但手动测试存在1. 漏洞对应的检测插件未启用。2. POC规则不够精确或漏洞需要特定条件触发。3. 扫描深度或范围不够。1. 检查config.yaml中的plugins配置确保相关插件已启用。2. 对于复杂漏洞被动扫描结合手动测试更有效。3. 调整爬虫配置或使用Rad扩大资产发现范围。使用HTTPS目标时被动扫描报证书错误Xray的代理默认使用自签名证书浏览器不信任。需要将Xray的CA证书导入到系统的受信任根证书颁发机构。具体方法首次用浏览器访问某个HTTPS网站时Xray会提示你访问http://127.0.0.1:7777下载证书。下载后安装并信任该证书。此操作有安全风险请仅在测试环境中进行并测试完毕后及时移除证书。5.2 性能调优与最佳实践要让Xray跑得又快又稳以下几点经验值得参考目标选择与拆分不要动不动就用一个工具去扫整个主域名如*.example.com。这既不道德效率也低。应该先通过子域名枚举、端口扫描等手段确定具体的测试目标如app.example.com,api.example.com然后针对性地扫描。配置是灵魂不要永远用默认配置。扫描前花5分钟根据目标特点调整config.yaml。对内网系统可以适当提高max_parallel(如30-50)减少timeout(如5秒)。对公网复杂应用务必降低max_parallel(如5-10)增加timeout(如15-30秒)并在crawler.exclude中排除图片、静态资源等无关路径。针对API接口扫描可以关闭或减少爬虫深度更多依靠被动扫描或手动导入接口文档如Swagger URL进行扫描。报告分析与验证Xray的报告是起点不是终点。对于它报出的中高危漏洞务必进行手动验证。特别是SQL注入、命令执行这类漏洞尝试用报告中的Payload去复现确认其真实性和危害等级。自动化工具难免有误报直接提交误报报告会严重影响你的专业信誉。法律与授权红线这是最重要的“最佳实践”。绝对不要在未获得明确书面授权的情况下对任何不属于你或你未被允许测试的系统进行漏洞扫描。这不仅违法还可能构成犯罪。即使是内部测试也最好在隔离的测试环境进行避免影响生产系统。工具的安装和使用只是第一步真正体现价值的是如何将它融入你的安全工作中如何解读它的结果以及如何用专业的态度去对待安全测试这件事。Xray是一个强大的助手但它不能替代安全工程师的思考和判断。把它用好了它能成为你发现风险、加固系统的千里眼和顺风耳。