官网:https://xray.cool
下载地址:https://github.com/chaitin/xray/releases 1.9.11
使用文档:https://docs.xray.cool/tools/xray/Scanning
与burpsuite联动: https://xz.aliyun.com/news/7563
参考:https://blog.csdn.net/lza20001103/article/details/143217355

0、配置文件
# 被动代理配
hostname_allowed: [192.168.1.107,www.baidu.com]   表示只允许对列表中的地址进行扫描
config.yml:配置文件中调整默认参数max_conns_per_host 50和max_qps 500 ,改成10 100能减轻服务器压力防止被封ip
1、查看版本
./xray_darwin_arm64 version

____  ___.________.    ____.   _____.___.
\   \/  /\_   __   \  /  _  \  \__  |   |
 \     /  |    _  _/ /  /_\  \  /   |   |
 /     \  |    |   \/    |    \ \____   |
\___/\  \ |____|   /\____|_   / / _____/
      \_/       \_/        \_/  \/

Version: 1.9.11/eb0c331d/COMMUNITY

[xray 1.9.11/eb0c331d]
Build: [2023-05-18] [darwin/arm64] [RELEASE/COMMUNITY]
Compiler Version: go version go1.17.12 linux/amd64
2、主动用法
  • 主动扫描容易被封,被动扫描不容易被封
(1) 使用基本爬虫进行扫描
./xray_darwin_arm64 webscan --basic-crawler http://192.168.1.105/ --html-output 192_168_1_105_win7.html
./xray_darwin_arm64 webscan --url http://192.168.1.105/ --html-output 192_168_1_105_win7.html
-----------
webscan: 表示使用web扫描模块
--url: 表示只对指定url单个页面进行扫描
--basic-crawler: 会对整个网站进行全面扫描并检测漏洞,范围最大
-html-output: 输出到自定义html文件

(2) 使用某个模块进行扫描
./xray_darwin_arm64 webscan -l
./xray_darwin_arm64 webscan --plugins xss,sqldet,ssrf --url http://xx.com
./xray_darwin_arm64 webscan --poc poc-go-weblogic-cve-2023-21839,poc-go-apache-log4j2-rce --url http://xx.com
---------------------------
-l:查看所有可用漏洞模块
--plugins:会扫描通用漏洞比如xss sql注入,告诉你漏洞是否存在
--poc:会直接利用已知漏洞进行攻击或试探,并告诉你漏洞是否利用成功

(3) 对服务进行扫描
./xray_darwin_arm64 servicescan --target 192.168.1.105:80
------------------------
servicescan:会对目标开发的服务进行扫描,比如http,tomcat ftp等

3、被动扫描
  • xray对同一个请求页面只扫描一次,它有去重机制,第二次请求是可以增加一些字段或修改请求方式可以避免触发去重机制
(1) 生成证书
./xray_darwin_arm64 genca
(2) 双击ca.crt 并搜索x-ray设置始终信任
(3) 创建代理
./xray_darwin_arm64 webscan --listen 127.0.0.1:9090 --html-output proxy.html
(4) 设置系统代理指向xray
wifi设置——详细信息——代理 或command+空格搜索代理

在这里插入图片描述

(5) 任意浏览器访问任意内容流量都会先转发给xray,并交由xray进行漏洞扫描,然后再发到目标服务器,不用时关闭代理即可
浏览器访问目标——>流量经过系统代理——>流量发给xray——>目标
4、xray联动burpsuite

(1) 先启动代理服务

./xray_darwin_arm64 webscan --listen 127.0.0.1:9090 --html-output proxy.htm

(2) 设置系统代理指向xray(这个好像不用开启)
(3) 启动burpsuite——settings——upstream proxy servers,如果未保存项目下次需要重新添加一下
在这里插入图片描述
(4) 其他都不变,然后打开burpsuite内置浏览器去访问目标,就能看到xray的扫描信息

burpsuite内置浏览器访问目标——>burpsuite拦截流量——>发送给xray——>目标
通过burpsuite拦截流量并发送给repeater/intruder进行修改/破解,然后流量会经过xray并分析每次修改/爆破后request和response是否存在可利用漏洞或弱点

扫描结果分析
[Vuln: brute-force]         Vuln表示漏洞扫描插件  brute-force是插件名称 暴力破解
Target           "http://192.168.1.107/DVWA/vulnerabilities/brute/?username=admin&password=root&Login=Login" 目标url
VulnType         "form-brute/default"    漏洞类型描述:基于暴力的
username         map["field":"username" "value":"admin"]      扫描字段 username
password         map["field":"password" "value":"password"]  扫描字段 password,如果是弱口令这个可能是真的密码
from_url         "http://192.168.1.107/DVWA/vulnerabilities/brute/?username=sss&password=sdfs&Login=Login"  也是目标url的意思

[Vuln: sqldet]             漏洞扫描插件:sql注入漏洞插件
Target           "http://192.168.1.107/DVWA/vulnerabilities/brute/?username=admin&password=root&Login=Login"
VulnType         "error-based/default"  漏洞类型描述:发现错误返回字段,说明可能存在报错注入
Payload          "admin'and/**/extractvalue(1,concat(char(126),md5(1301585049)))and'"    攻击payload,使用这个语句进行攻击测试
Position         "query"    注入点位于HTTP请求中的位置,query表示?后面,比如?username=xxz
ParamKey         "username"   注入参数
ParamValue       "admin'and/**/extractvalue(1,concat(char(126),md5(1301585049)))and'"    注入参数的值(这里拼接了payload)
type             "heuristic"           本次注入的方式:试探
title            "extractvalue function error based case"   标题“基于extractvalue报错注入函数的探测

[Vuln: baseline]      漏洞扫描插件 :baseline表示基础插件
Target           "http://192.168.1.109/sqli-labs/Less-61/?id=1%27and%2F%2A%2A%2Fextractvalue%281%2Cconcat%28char%28126%29%2Cmd5%281566487991%29%29%29and%27"  目标url(拼接payload)
VulnType         "sensitive/server-error"   漏洞类型描述:扫描到了服务器错误并包含明感信息

[Vuln: sqldet]            漏洞扫描插件: 基于sql注入的
Target           "http://192.168.1.109/sqli-labs/Less-61/?id=1"       目标url
VulnType         "blind-based/default"                                            漏洞类型描述:盲注类型
Payload          "1'and(select*from(select+sleep(3))a/**/union/**/select+1)='"      payload:时间盲注
Position         "query"         注入位置在?后面
ParamKey         "id"            注入参数
ParamValue       "1'and(select*from(select+sleep(3))a/**/union/**/select+1)='"        注入参数对应的值(值+payload)
n_time           "3065"                                                                                                 拼接payload后响应时间 3秒,与sleep(3)吻合
stat             "{\"normal\":{\"samples\":[1773,16,33,108,58,76],\"avg\":344,\"std_dev\":639.7476064824315,\"sleep_time\":3},\"sleep_0_time\":61,\"quick_check\":{\"samples\":[3065],\"sleep\":3},\"verify\":{\"samples\":[4013,4072,4142],\"sleep\":4}}"       使用的算法
title            "Generic MySQL time based case ['string']"                                  标题:基于mysql时间盲注
type             "time_based"                                                                               注入方式:时间时间盲注
avg_time         "344"                                                                                        正常请求平均响应时间 344毫秒 =0.3秒
std_dev          "639"                                                                                         正常请求较大波动时间 0.6秒
sleep_time       "3000"                                                                                     payload使用延时注入时间
p_time           "61"                                                                                            正常请求较小波动时间 0.06

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐