
Xray 扫描器进阶使用自定义 POC 与扫描调优技巧免责声明本文仅供安全学习、企业内部授权安全测试使用。严禁在未获得目标系统书面授权的情况下使用 Xray 对任何网站、服务器进行扫描与漏洞探测未经授权测试属于违法行为一切后果由操作者自行承担。前言Xray 是长亭开源的一款 Golang 编写的 Web 漏洞扫描器很多同学只会基础的webscan简单扫描只使用内置 POC遇到业务自定义漏洞、0day、小众组件漏洞时束手无策。Xray 强大之处在于支持自定义 POCyaml 格式并且提供大量参数用于扫描调优控制并发、超时、请求速率、指纹匹配、绕过 WAF。本文不讲入门基础安装直接聚焦自定义 POC 编写调试、扫描深度调优、实战踩坑适合有 Xray 基础、需要做企业内部渗透 / 安全测试的读者。版本说明本文基于 xray 社区版 v1.9POC 语法遵循 xray 原生 yaml poc不是 nuclei poc两者语法不互通一、基础回顾Xray POC 核心结构Xray 的自定义 POC 采用 YAML 格式放在pocs目录下后缀为.yml执行扫描时指定--poc加载。一个标准 POC 包含几个核心模块namePOC 名称漏洞名称set变量定义如url、randstr随机字符串rules检测规则核心包含发送 http 请求、匹配返回包expression多规则逻辑表达式true代表命中漏洞detail漏洞详情危害、参考链接、修复建议注意Xray 社区版不支持完整的复杂脚本 POC只支持 yaml 的 HTTP 请求规则高级脚本能力仅企业版支持。二、自定义 POC 编写实战示例示例 1简单 GET 型漏洞 POC路径泄露 / 简单未授权访问新建文件custom_unauth.yml放入 xray 的pocs文件夹name: custom-unauth-access set: randstr: randomLowercase(6) rules: r1: request: method: GET path: /admin/config expression: response.status 200 response.body.bcontains(badmin_password) expression: r1() detail: author: test description: 后台配置文件未授权访问漏洞 severity: high remediation: 增加登录鉴权禁止未认证用户访问该接口解读发送 GET 请求访问/admin/config匹配条件状态码 200响应包包含admin_password字符串满足条件则判定漏洞存在示例 2POST 注入类 POC带请求体、header 自定义name: custom-sql-test set: rand: randomInt(4) rules: r1: request: method: POST path: /api/user/login headers: Content-Type: application/x-www-form-urlencoded body: usernameadmin or 11-- -password123456 expression: response.status 200 response.body.bcontains(blogin success) r2: request: method: POST path: /api/user/login headers: Content-Type: application/x-www-form-urlencoded body: usernameadminpassword123456 expression: response.body.bcontains(blogin fail) expression: r1() r2() detail: severity: high description: 登录接口存在SQL注入逻辑说明r1 携带注入 payload 成功登录r2 正常账号密码登录失败两个规则同时满足判定注入存在。多规则可以使用 || ()组合实现复杂的逻辑判断减少误报。三、POC 调试技巧非常重要减少大量误报1. 单独测试 POC不启动全量扫描使用poc子命令单独验证 POC不需要跑完整 webscanxray poc --poc ./pocs/custom_unauth.yml --target https://test.example.com执行后直接输出 POC 命中结果快速验证语法和匹配规则。2. 开启详细 debug 日志查看请求响应包xray poc --poc custom_unauth.yml --target https://test.example.com --log-level debugdebug 模式可以看到完整发送的 http 包、返回包用来排查payload 没有成功发送响应包编码问题匹配字符串写错导致漏报 / 误报3. 内置常用函数set 变量randomInt(n) # 随机数字 randomLowercase(n) # 小写随机字符串 randomUppercase(n) # 大写 randomStr(n) # 混合字符 md5(str) # md5加密 base64(str) # base64编码尽量使用随机变量避免固定 payload防止目标缓存、WAF 直接拦截固定字符串。4. 匹配语法要点response.status 200 # 状态码 response.body.bcontains(bxxx) # 原始字节包含推荐避免编码乱码 response.body.contains(xxx) # 字符串包含 response.header[Server] nginx # 响应头匹配 response.raw.bcontains(bxxx) # 原始完整报文推荐优先使用.bcontains(bxxx)中文页面编码问题不容易出现匹配失败。5. POC 避坑要点不要写过于宽泛的匹配规则例如只判断 200极易产生海量误报尽量多条件组合。尽量使用多请求对比正常请求 payload 请求减少业务页面静态内容带来的误报。注意 URL 路径不要写死域名path只写 uri域名由--target传入。遇到接口需要 cookie、token 鉴权可以在 request.headers 中手动带入 Cookie适合测试已授权登录后的业务漏洞。四、Xray 扫描核心调优参数webscan 进阶基础扫描命令xray webscan --url https://test.example.com --html-output report.html下面是进阶调参用来控制并发、速率、超时、绕过、POC 范围、爬虫深度。1. 并发、速率控制防止打垮业务服务器--concurrency 10 # 单个目标并发请求数默认10业务脆弱网站调低到3~5 --requests-per-second 20 # 每秒最大请求速率限流防止触发WAF频率拦截生产业务测试并发不要开太高并发太高会把业务压垮同时 WAF 直接拉黑 IP扫描中断。2. 超时控制--http-timeout 10单位秒网络差、服务器响应慢的场景适当调大。3. 指定 POC 集合混合内置 自定义 POC只加载自定义 POC 扫描xray webscan --url https://test.example.com --poc ./pocs/custom_unauth.yml加载内置全部 POC 自定义 POCxray webscan --url https://test.example.com --poc ./pocs/只启用指定漏洞类型例如只扫 SQL 注入 自定义 POCxray webscan --url https://test.example.com --plugins sqldet --poc ./pocs/插件列表sqldet,xss,cmd,path-traversal,ssrf,xxe4. 爬虫深度调优控制页面抓取范围--depth 3爬虫深度默认 3。内网测试可以调到 5对外大网站不要设置过大会抓取海量页面扫描时间成倍增长。如果目标站点页面非常多建议关闭爬虫直接传入 url 列表--url-file target.txt只扫描指定接口。5. HTTP 请求自定义代理、Header、Cookie、UA使用代理burp 代理方便抓包观察 xray 发送的 payloadxray webscan --url https://test.example.com --proxy http://127.0.0.1:8080非常适合调试 POCXray 所有流量转发到 Burp查看每一条请求 payload 是否被 WAF 拦截。自定义请求头、Cookie登录态扫描xray webscan --url https://test.example.com \ --header Cookie: sessionxxxx;tokenabc123 \ --header User-Agent: Mozilla/5.0 Chrome适合扫描需要登录鉴权的后台接口带上 cookie 后才能访问接口并触发漏洞。6. 绕过相关参数简单规避 WAF--random-agent # 使用随机UAXray 内置一些 payload 变形策略但是社区版没有高级 WAF 绕过遇到强 WAF 大概率 payload 直接被拦截。注意不要利用参数做绕过去攻击未授权站点。7. 输出多种报告格式# html可视化报告 --html-output result.html # json格式适合导入到漏洞管理平台 --json-output result.json五、实战场景组合命令示例场景 1内网授权测试低并发加载自定义 POC带登录 Cookiexray webscan --url https://192.168.1.100/admin \ --concurrency 3 \ --requests-per-second 10 \ --header Cookie: PHPSESSIDxxxxxxxx \ --poc ./pocs/ \ --html-output admin_scan.html场景 2批量扫描 url 列表只跑自定义 POC关闭爬虫target.txt每行一个 urlxray webscan --url-file target.txt --poc ./pocs/custom_unauth.yml --depth 0 --html-output batch_result.html--depth 0关闭爬虫只扫描列表中的 url不爬取新链接。六、常见问题与踩坑总结1. 自定义 POC 不执行检查 yaml 格式YAML 对缩进极其敏感必须空格缩进不能用 Tab缩进错误直接加载失败文件后缀必须.yml放到 pocs 目录使用xray poc单独测试看是否报语法错误。2. 漏报POC 编写没问题扫描时无法命中目标有 WAF 拦截 payload用--proxy转发到 burp确认请求是否被拦截接口需要鉴权缺少 Cookie/token并发过高服务器丢包请求被重置降低并发重试。3. 大量误报匹配条件太简单只判断状态码增加多条件组合目标页面静态文本固定payload 和正常页面返回一致增加对比请求正常请求和 payload 请求做差异判断。4. 扫描速度太慢并发过低适当调高爬虫 depth 过大页面太多关闭爬虫使用 url 列表网络链路慢调高 http-timeout。5. 扫描直接被 WAF 拉黑 IP降低requests-per-second限流使用代理池拆分扫描目标分时段扫描。七、进阶建议自定义 POC 优先用于业务特有漏洞通用组件漏洞优先使用官方内置 POC官方 POC 经过大量校验误报更少。POC 编写完成后一定要在正常无漏洞站点做负向测试验证不会产生误报。扫描完成后不能直接信任扫描结果所有高危漏洞必须人工复现验证自动化扫描工具普遍存在误报。企业内部建议把自定义 POC 统一管理版本控制每次更新 POC 都做复测沉淀属于自己业务的 POC 库。八、扫描调优检查清单确认目标已经获得书面授权选择合适并发、速率保护业务确认是否需要登录 Cookie、自定义 Header选择需要加载的 POC内置 / 自定义爬虫 depth 按需设置批量扫描优先 url-filedepth 0调试 POC先用xray poc单独测试配合 burp 代理查看流量扫描结束人工复核所有高危漏洞剔除误报导出报告记录扫描参数方便复现。最后网络安全需要学习那些知识网络安全零基础入门学习路线规划初级1、网络安全理论知识2天①了解行业相关背景前景确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。非常重要2、渗透测试基础一周①渗透测试的流程、分类、标准②信息收集技术主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理利用方法、工具MSF、绕过IDS和反病毒侦察④主机攻防演练MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础一周①Windows系统常见功能和命令②Kali Linux系统常见功能和命令③操作系统安全系统入侵排查/系统加固基础4、计算机网络基础一周①计算机网络基础、协议和架构②网络通信原理、OSI模型、数据转发流程③常见协议解析HTTP、TCP/IP、ARP等④网络攻击技术与网络安全防御技术⑤Web漏洞原理与防御主动/被动攻击、DDOS攻击、CVE漏洞复现5、数据库基础操作2天①数据库基础②SQL语言基础③数据库安全加固6、Web渗透1周①HTML、CSS和JavaScript简介②OWASP Top10③Web漏洞扫描工具④Web渗透工具Nmap、BurpSuite、SQLMap、其他菜刀、漏扫等恭喜你如果学到这里你基本可以从事一份网络安全相关的工作比如渗透测试、Web 渗透、安全服务、安全分析等岗位如果等保模块学的好还可以从事等保工程师。薪资区间6k-15k到此为止大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗想要入坑黑客网络安全的朋友给大家准备了一份282G全网最全的网络安全资料包免费领取7、脚本编程初级/中级/高级在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中面对复杂多变的网络环境当常用工具不能满足实际需求的时候往往需要对现有工具进行扩展或者编写符合我们要求的工具、自动化脚本这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中想要高效地使用自制的脚本工具来实现各种目的更是需要拥有编程能力.零基础入门建议选择脚本语言Python/PHP/Go/Java中的一种对常用库进行编程学习 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP IDE强烈推荐Sublime ·Python编程学习学习内容包含语法、正则、文件、 网络、多线程等常用库推荐《Python核心编程》不要看完 ·用Python编写漏洞的exp,然后写一个简单的网络爬虫 ·PHP基本语法学习并书写一个简单的博客系统 熟悉MVC架构并试着学习一个PHP框架或者Python框架 (可选) ·了解Bootstrap的布局或者CSS。8、超级黑客这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。网络安全工程师企业级学习路线视频配套资料国内外网安书籍、文档工具当然除了有配套的视频同时也为大家整理了各种文档和书籍资料工具并且已经帮大家分好类了。一些我自己买的、其他平台白嫖不到的视频教程要学习网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】