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属于命令行执行的工具,并未提供图形化界面。所以,在我们下载好程序之后,将其解压到一个目录,然后通过cmd或者powershell进入这个目录
在正式运行之前,我们需要执行一次命令,用于初始化配置文件:
执行完成之后,回到目录就能发现先他有了最初的配置文件
在修改配置文件的情况下,我们就已经能够简单的使用xray来扫描一部分的网站了。
xray存在两种运行方式:
- 主动扫描
- 被动扫描
主动扫描
主动扫描类似于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
查看帮助信息