xray:漏洞扫描利器

anchorubik   ·   发表于 2023-06-15 16:07:41   ·   安全工具

简介

长亭科技旗下的一款网络安全漏洞扫描工具,用于检测和评估web应用程序的安全性。具有一下特点:检测速读快、检查范围广、代码质量高、高级可定制以及安全无危害。属于不开源的项目,用户直接下载xray的可执行文件,即可运行该工具

xray使用了与burpsuit一样的盈利模式:社区版、高级版和企业版

xray目前支持检测的漏洞:

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)
XStream 系列漏洞检测 (key: xstream)
POC 框架 (key: phantasm)

下载和安装

XRAY是一款不开源的漏扫工具,

提供两种下载渠道:

  1. 官方下载:https://github.com/chaitin/xray
  2. 非官方渠道(高级版,版本相对落后与官方版本):https://www.iculture.cc/software/pig=30388

大家根据自己的求进行下载

基本使用

初始化

xray属于命令行执行的工具,并未提供图形化界面。所以,在我们下载好程序之后,将其解压到一个目录,然后通过cmd或者powershell进入这个目录


不过在正式运行之前,我们需要执行一次命令,用于初始化配置文件:


执行完成之后,回到目录就能发现先他有了最初的配置文件


在修改配置文件的情况下,我们就已经能够简单的使用xray来扫描一部分的网站了。

xray存在两种运行方式:

  1. 主动扫描
  2. 被动扫描

主动扫描

主动扫描类似于SQLmap工具,用户通过指令设置需要扫描的功能、提供需要扫描的目标、设定结果保存的格式即可完成一次攻击

xray_windows_amd64.exe ws --url "http://testphp.vulnweb.com" --html-output 1.html

这个是一个简单的示例,当我们在cmd中执行命令之后,xray就会列出可攻击的poc和会测试的点:


当探测到漏洞之后,会在终端以红色内容来输出漏洞信息:


比如上面就发现了目标站点存在 .idea配置文件信息泄露漏洞,此时我们就可以通过它同的poc去验证这个漏洞是否真实存在:


通过在终端里面看,并不是非常的方便,当xray扫描完成之后,xray会根据用户设定的保存格式,将所有检测到的漏洞都输出到对应的文件里面,比如我们在最开始使用的 —html-output 指令,就是让xray将结果以html形式输出:


这样我们就可以通过访问这个文件来获取漏洞的详细信息


然后我们就可以通过这样在网页上查看到它具体的漏洞信息。在xray的返回结果里面,有两个比较重要的字段:target和 pluginname/vulntype
target : 保存了存在漏洞的url地址
pluginname/vulntype: 则记录了url中存在的漏洞。
当然,这个知识记录了简单的信息。当我们想要看某个漏洞的具体细节时:可以通过点击 ID 列前面的加号,来展开这个漏洞:


然后就可以查看到对应漏洞的细节:URL、payload和请求包。

通过这个演示之后,我想大家应该都掌握了xray的基本用法,接下来就是去查看他的一些具体的功能和使用参数了。
xray_windows_amd64.exe -h 查看xray的帮助信息:


在我当前使用的这个xray工具,能够实现一下攻击:

webscan      ws    web扫描任务
servicescan  ss    服务扫描
subdomain    sd    子域名扫描
poclint      pl,lint  检测poc的规范情况
burp-gamma   btg   将bp的poc转换成xray的poc格式
transform          将其他与语言的脚本转化成gamma脚本
reverse            运行独立的反向连接服务器
convert            扫描结果之间的转换(html -> json, json -> html)
genca              初始化ca证书
upgrade            更新xray
version            版本信息
x                  查看说有poc的可用性

对于安全测试人员来说,主要使用的是webscan、servicescan和subdomain

webscan

xray_windows_amd64.exe ws -h 通过这条命令,就可以查看到当前webscan的帮助信息:

--list    -l                           列出所有的plugin
--plugins value, --plugin value        检测指定的plugin
--poc value, -p value                  检测指定的poc
--level value                          指定poc的危害等级,只使用某个级别的poc(low,medium,high,critical),需要要使用多个级别时,用逗号分隔
--tags value                           指定运行某个标签的poc
--listen value                         监听一个地址,进行被动扫描
--basic-crawler value, --basic value   爬虫模式扫描,自动探测网站的所有url连接,并且进行扫描
--url-file value, -uf value            从文件中读取url,并对这些url进行测试
--burp-file value, --bf value          读取bp的请求包,进行测试
--url value, -u value                  指定单条url进行测试
--data value, -d value                 指定测试post传参点(username=admin)
--raw-request file, --rr file          加载原生http请求
--force-ssl, --fs                      配置访问https网站
--json-output file, --jo file          以json格式保存扫描结果
--html-output file, --ho file          以html格式保存扫描结果
--webhook-output value, --wo value     根据xray的格式保存结果

接下来进行演示:

列出所有可用的plugin

xray_windows_amd64.exe ws -l 列出所有的可用plugin

指定plugin模块

xray_windows_amd64.exe ws --plugins xss,dirscan -u "http://testphp.vulnweb.com" --ho 2.html指定扫描模块进行扫描

指定poc进行扫描

xray_windows_amd64.exe ws --poc poc-yaml-manageengine-servicedesk-cve-2017-11512-lfi -u "http://testphp.vulnweb.com" --ho 5.html 指定poc进行扫描,需要将poc写在xray的可执行目录下

使用网页爬虫进行漏洞测试

xray_windows_amd64.exe ws --basic-crawler "http://testphp.vulnweb.com" --ho 6.html 使用网页爬虫,爬取网站上所有的链接,并将链接加入到测试队列中


在使用爬虫模式时,只能对单个url链接进行爬虫模式扫描

批量网站扫描

xray_windows_amd64.exe ws --uf target.txt --ho 5.html 将目标站点放入文件中,实现批量目标扫描

在实际工作中,可以通过选择一种扫描方式,然后利用 —poc和—plugins的组合,来控制扫描使用的poc。

servicescan

xray 中最常见的是 web 扫描,但是 xray 将会逐渐开放服务扫描的相关能力,目前主要是服务扫描相关的 poc。同样的,通过一个案例来进行演示:


很显然,内置的 servicescan的poc相对来说量还是有点少的,不过也有肯能是我的操作不对,那就查看一手帮助信息:
xray_windows_amd64.exe ss -h 查看帮助信息


从帮助信息中不难看出,新的功能就3个:

--target value, -t value            指定目标
--module value, -m value            指定目标服务器的中间件,目前只支持 tomcat和weblogic
--target-file value, --tf file      指定扫描使用的poc的路径

从这里就能看出,有点点的鸡肋了。

subdomain

xray也推出了子域名查询的功能,不过它属于高级版和企业版才有的功能,所以换个非官方的xray,试一手,尝尝鲜:
xray.exe subdomain --target "zkaq.cn" --html-output 5.html 扫描目标站点的子域名


当成功扫到域名之后,会在终端以绿色字体显示


感觉他的实现方式有点在暴力破解,又好像有在调用dns进行查询,每太看懂。
简单演示完了之后,接下就试去查看帮助信息:
xray.exe subdomain -h 查看子域名暴破的帮助信息


ok,不难看出,和 serverscan 大差不差。

被动扫描

代理模式下的基本架构为,扫描器作为中间人,首先原样转发流量,并返回服务器响应给浏览器等客户端,通讯两端都认为自己直接与对方对话,同时记录该流量,然后修改参数并重新发送请求进行扫描。
主动扫描已经能够帮助我们完成一些内容漏洞发现了,但是,在我看来xray更更核心的功能是他的被动扫描模块。
在使用被动扫描模式之前,我们需要先初始化一份ca证书,并且将证书导入到浏览器中:

生成证书

xray.exe genca初始化证书

初始化监听

xray.exe ws --listen 127.0.0.1:8082 --ho 6.html 初始化xray的监听地址


通过这样的方式,xray就已经开始进行监听了。之后只需要将浏览器的代理只想xray的代理地址,xray的被动扫描功能就能体现出来的


当我将浏览导入好证书、设置好代理之后,访问bbs.zkaq.cn,然后我的xray就开始去扫描站点了


这样,xray就能有效的对一些需要登录的功能点进行测试,并且,他的测试是你访问了这个站点url之后,它检测到数据包了,才会去进行检测。不过在使用xray被动模式时,需要进行一些设置,不然可能会误伤其他站点。就比如我现在,并没有去设置xray的配置文件,然后它对一外站也进行测试

配置文件修改

再上面的测试中,我们一直使用的都是默认配置,xray再默认情况下是对政府网站和校园网站禁止访问的,如果你再用xray去测试一些校园src的时候,可能就会因为配置的原因而无法进行扫描。
所以在工作和使用中,大家需要及时去修改和调整xray的配置文件。
默认情况下,第一此运行xray,xray就会在目录下生成配置文件


这些.yaml后缀的文件就是xray的配置文件,其中config.ymal中包含了最基础的xray配置:

http           基础的http请求配置
plugins        扫描时使用的插件和poc
reverse        反连平台,有一部分poc时需要通过反连平台来确定漏洞是否存在。
mitm           被动扫描
basic-crawler  主动扫描中的爬虫设置

在这些配置中,最基础的配置是http、mitm和basic-crawler三个项目

http

在http中,我们需要修改的内容就包括一下三个点

proxy: 能帮助用户吟唱自己的真实IP,同时对于一些网站的防护(基于IP尽心的防护)
max_qps: 设置发包速率,防止发包过快,导致一些站点崩溃
headers: 设置请求头,可以往里面插入一些请求头的内容

mitm

在mitm中,我们需要修改的东西不多,就也就三个点:


一个设置允许和禁止xray访问的域名,一个设置上层代理。配置方式,大同小异,知识这里的配置只影响被动扫描功能

hostname_allowed:   # 设置允许访问域名,*通配符
- "*.ncu.edu.cn"
- "*.jxnu.edu.cn"
hostname_disallowed:  # 设置不允许访问的域名
- "*google*"
- "*firefox*"
- "*bing.com"
- "*.gov.cn"
- "*.edu.cn"

upstream_proxy: 'http://127.0.0.1:8080'  # 设置上游代理,隐藏个人IP
basic-crawler

爬虫需要设置的内容可能稍微偏多一些


爬虫没有单独设置代理,它的代理使用的http配置项中的代理来实现隐藏IP或者防护的。

max_depth: 1
max_count_of_links: 10

hostname_allowed:   # 设置允许访问域名,*通配符
- "*.ncu.edu.cn"
- "*.jxnu.edu.cn"
hostname_disallowed:  # 设置不允许访问的域名
- "*google*"
- "*firefox*"
- "*bing.com"
- "*.gov.cn"
- "*.edu.cn"

完成这些基础配置后,绝大部分的工作场景都能使用了

用户名金币积分时间理由
Track-魔方 220.00 0 2023-06-15 16:04:40 一个受益终生的帖子~~

打赏我,让我更有动力~

3 条回复   |  直到 8个月前 | 1428 次浏览

seraphim
发表于 9个月前

感谢分享,辛苦了

评论列表

  • 加载数据中...

编写评论内容

2677017545
发表于 8个月前

xray谢谢整理

评论列表

  • 加载数据中...

编写评论内容

RE
发表于 8个月前

xary慎用

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.