xray Web 扫描器学习记录

admin 2023年4月26日00:23:04评论35 views字数 12732阅读42分26秒阅读模式


扫码领资料

获网安教程

免费&进群

xray Web 扫描器学习记录
xray Web 扫描器学习记录

长亭科技的 xray 扫描器的扫描效果还不错,在国内颇受好评,很有幸以前在长亭科技工作,技术氛围很好。扯得有点远了,话不多说,本文是是 xray 国光的学习记录,也可以当做新手的 xray 教程来用,不过我还是建议大家看看官方文档,只是国光我最近喜欢上了这种学习记录的感觉,学习效率很高。

简介

项目地址:https://github.com/chaitin/xray

长亭科技研发的一款完善的安全评估工具,支持常见 Web 安全问题扫描和自定义 POC,虽然 Github 有项目,但是不开源,只提供社区版本供大家使用。

基本使用

代理模式

代理模式下的基本架构为,扫描器作为中间人,首先原样转发流量,并返回服务器响应给浏览器等客户端,通讯两端都认为自己直接与对方对话,同时记录该流量,然后修改参数并重新发送请求进行扫描。这种原理和 Burpsuite 的自带的漏扫原理是一样的。

生成 ca 证书

BASH

#  生成 ca 证书
➜ ./xray genca

# 在当前文件夹生成 ca.crt 和 ca.key 两个文件
ls
ca.crt ca.key config.yaml xray

将生成的 ca 证书导入到需要代理的设备即可,这样就可以方便代理 https 的流量了

启用代理

第一次启动 xray 之后,当前目录会生成 config.yml 配置文件,选择文件编辑器打开,并按照下方说明修改。定位搜索到如下内容,将 * 改为 testphp.vulnweb.com,这是 AWVS 的官方靶场,方便检测漏扫能力。

YAML

# 配置解释见 https://chaitin.github.io/xray/#/configration/mitm
mitm:
...
restriction:
includes: # 允许扫描的域,此处无协议
- 'testphp.vulnweb.com' # 表示允许所有的域名和 path
...

监听本地的 7777 端口,并设置漏洞报告的输出的文件名为:xray-testphp.html

BASH

➜ ./xray webscan --listen 127.0.0.1:7777 --html-output xray-testphp.html

配置代理

Chrome 下的 SwitchyOmega 插件很方便添加各种代理,将 xray 的代理添加进来,然后浏览器开启 xray 代理即可:

xray Web 扫描器学习记录

开始扫描

使用刚刚设置过代理的 Chrome 浏览器访问:http://testphp.vulnweb.com

然后就可以看到 xray 界面开始输出漏洞信息,在用户和网站交互的时候,期间的连接 xray 都会进行安全检查,然后生成对应的漏洞报告:

下面是几个快速链接,可以点击用于体验更多的漏洞类型的扫描

  • http://testphp.vulnweb.com/listproducts.php?cat=1

  • http://testphp.vulnweb.com/artists.php?artist=2

  • http://testphp.vulnweb.com/redir.php?r=http://www.w3.org

可以在上面设置的输出格式里面看到对应的漏洞检测结果报告:

xray Web 扫描器学习记录

爬虫模式

爬虫模式是模拟人工去点击网页的链接,然后去分析扫描,和代理模式不同的是,爬虫不需要人工的介入,访问速度要快很多,但是也有一些缺点需要注意。

  • xray 的基础爬虫不能处理 js 渲染的页面

  • 需要首先人工配置登录 cookie,必需的 http 头等,如果登录失败,也不容易发现问题

BASH

➜ ./xray webscan --basic-crawler http://testphp.vulnweb.com/ --html-output xray-crawler-testphp.html

在这个模式下,相当于主动扫描模式,自主分析页面的链接,然后自动探测是否有漏洞。

服务扫描

xray 也支持服务扫描,目前的服务扫描的 POC 还不够多,目前只有一个 tomcat-cve-2020-1938 ajp 协议任意文件检测 poc。

参数配置目前比较简单,支持单个扫描与批量扫描:

BASH

# 快速检测单个目标
➜ ./xray servicescan --target 127.0.0.1:8009

# 批量检查的 1.file 中的目标, 一行一个目标,带端口
➜ ./xray servicescan --target-file test.file

其中 test.file 的格式为一个行一个 service,如

CODE

10.3.0.203:8009
127.0.0.1:8009

也可以将结果输出到报告中,支持多种格式:

BASH

# 将检测结果输出到 html 报告中
➜ ./xray servicescan --target 127.0.0.1:8009 --html-output service.html
➜ ./xray servicescan --target-file test.file --html-output service.html

# 将检测结果输出到 json 文件中
➜ ./xray servicescan --target 127.0.0.1:8099 --json-output service.json

完整的 servicescan 用法可以使用下面命令查看:

BASH

➜ ./xray servicescan --help
NAME:
servicescan - Run a service scan task

USAGE:
servicescan [command options] [arguments...]

OPTIONS:
--target value specify the target, for example: host:8009
--target-file value load targets from a local file, one target a line
--json-output FILE output xray results to FILE in json format
--webhook-output value post xray result to url in json format
--html-output FILE output xray result to FILE in HTML format

Aapache Tomcat AJP 文件包含漏洞(CVE-2020-1938)Vulhub 环境链接

部署完成后,使用 xray 来检测看一下效果怎么样:

xray Web 扫描器学习记录

配置

命令详解

查看 -h 基本上我们搞安全的 基本上应该都很容易理解了:

BASH

➜ ./xray -h

USAGE:
[global options] command [command options] [arguments...]

COMMANDS:
webscan Run a webscan task
servicescan Run a service scan task
poclint lint yaml poc
reverse Run a standalone reverse server
genca Generate CA certificate and key
upgrade check new version and upgrade self if any updates found
version Show version info
help, h Shows a list of commands or help for one command

GLOBAL OPTIONS:
--config FILE Load configuration from FILE
--log_level value Log level, choices are debug, info, warn, error, fatal
--help, -h show help

GLOBAL OPTIONS

全局配置 如果在这指定了,那么所有命令执行的时候都会生效

BASH

# 用于指定配置文件的位置,默认加载同目录的 config.yaml
--config FILE Load configuration from FILE

# 用于指定全局的日志配置,默认为info, 可以设置为debug查看更详细的信息
--log_level value Log level, choices are debug, info, warn, error, fatal
--help, -h show help

全局配置的使用时需要紧跟二进制程序,如:

BASH

# 正确的用法
➜ ./xray --log_level debug --config my.yaml webscan --url xxx

# 错误的用法 全局配置没有紧跟二进制程序
➜ ./xray webscan --log_level debug --config my.yaml --url xxx

COMMANDS

命令 说明
webscan xray 核心功能,用来发现探测 Web 漏洞
servicescan 服务扫描功能 用来探测服务漏洞
poclint 检测 poc 是否符合规范
reverse 启动单独的盲打平台服务
genca 用于快速生成一个根证书,主要用于被动代理扫描 HTTPS 流量时用到
upgrade 检查新版本并自动升级
version 版本信息
help 显示命令列表或一个命令的帮助
subdomain 子域名扫描 高级本才有的命令

subdomain

扫描 example.com,并将结果输出到 example.txt

BASH

➜ ./xray  subdomain --target example.com --text-output example.txtCopyErrorCopied

扫描 example.com, 并使用 console ui 交互式界面,同时记录结果到 example.txt

BASH

➜ ./xray  subdomain --target example.com --console-ui --text-output example.txt

webscan

运行 ./xray -h,可以看到

BASH

➜  xray ./xray webscan -h
NAME:
webscan - Run a webscan task

USAGE:
webscan [command options] [arguments...]

OPTIONS:
--plugins value specify the plugins to run, separated by ','
--poc value specify the poc to run, separated by ','

--listen value use proxy resource collector, value is proxy addr
--basic-crawler value use a basic spider to crawl the target and scan the results
--url-file FILE read urls from a local file and scan these urls
--url value scan a **single** url
--data value data string to be sent through POST (e.g. 'username=admin')
--raw-request FILE load http raw request from a FILE

--json-output FILE output xray results to FILE in json format
--html-output FILE output xray result to FILE in HTML format
--webhook-output value post xray result to url in json format
扫描插件
  • --plugins: 指定要运行的插件,使用 , 分隔

BASH

--plugins xss
--plugins xss,sqldet,phantasm
  • --poc: 配置本次扫描启用哪些 POC,使用 , 分隔

BASH

# 只加载一个 POC, 精准匹配
--plugins phantasm --poc poc-yaml-thinkphp5-controller-rce

# 加载内置的所有带 `thinkphp` 的 POC
--plugins phantasm --poc "*thinkphp*"

# 加载本地 `/home/test/pocs/` 目录所有的 POC:
--plugins phantasm --poc "/home/test/pocs/*"

# 加载 `/home/test/pocs/` 下包含 thinkphp 的 POC
--plugins phantasm --poc "/home/test/pocs/*thinkphp*"

该参数支持 Glob 表达式批量加载,规则还是很灵活的。

输入来源
  • --listen: 启动一个被动代理服务器作为输入,如 --listen 127.0.0.1:7777

  • --basic-crawler: 启用一个基础爬虫作为输入, 如 --basic-crawler http://example.com

  • --url-file: 批量从文件中读取 URL

  • --url: 用于快速测试单个 URL,不带爬虫,默认为 GET 请求

  • --data: 指定 data,同时变为 POST 请求

  • --raw-request: 加载一个原始的 HTTP 请求并用于扫描,类似于 sqlmap -r

输出格式
  • --json-output: 将结果输出到一个 json 文件中,输出是 JSON 格式的结构化数据

  • --html-output: 将结果输出为 html 报告

  • --webhook-output: 将结果发送到一个地址,输出是 JSON 格式的结构化数据,需要自己搭建一个 Web 服务器,接收到 xray 发送的漏洞信息

在 --json-output 和 --html-otput 参数中使用变量__timestamp____datetime__,这样文件名中对应位置会自动替换为时间戳或日期时间,避免输出到同一文件时报错。如 --html-output report-__datetime__.html 将使用 report-2019_11_01-10_03_26.html 作为报告文件名。

组合使用

将上面说的一些结合起来使用,就可以满足多种场景下的使用需求了:

BASH

# 使用xss模块 启用1111端口的代理服务器进行web漏洞扫描,输出漏洞报告到1.html中
➜ ./xray webscan --plugins xss --listen 127.0.0.1:1111 --html-output 1.html

# 将日志级别设置为debug 然后使用xss和命令执行插件 使用内置的爬虫来扫描,输出漏洞报告到1.json中
➜ ./xray --log_level debug webscan --plugins xss,cmd_injection --basic-crawler http://example.com --json-output 1.json

# 对目标资产进行POST方式漏洞检测,data为 x=y 并输出漏洞报告到1.json中
➜ ./xray webscan --url http://example.com --data "x=y" --html-output 2.html --json-output 1.json

# 对目标资产进行单个URL检测,路灯报告输出到指定的接受服务器中
➜ ./xray webscan --url http://example.com/ --webhook-output http://host:port/path

...

交互命令行

交互式的命令行就是新手福利了,提供命令自动补全提示,直接运行 xray 而不加任何参数即可启动交互式命令行。

配置文件

引擎初次运行时,会在当前目录内生成一个 config.yaml 文件。通过调整配置中的各种参数,可以满足不同场景下的需求。

在 xray 快速迭代时期,不保证配置文件向后兼容。如果出错,可以备份配置文件并重新生成。 实际上建议每次更新版本后都备份配置文件后删除并重新生成,以免错过新功能的配置。

插件配置

在具体插件配置之前,plugins 部分有个顶级配置项为 max_parallel, 表示插件的并发度。举个例子,如果需要处理 3 个请求,此时启用了三个插件 sqldet, xss, cmd_injection, 当设置 max_parallel 为 1 时,处理过程为:

POWERSHELL

sqldet, xss, cmd_injection 同时处理 request1
sqldet, xss, cmd_injection 同时处理 request2
sqldet, xss, cmd_injection 同时处理 request3

当 max_parallel 设置为 3 时,处理过程为:

BASH

sql,xss,cmd_injection 同时并发(3并发)处理 request1, request2, request3

理论上时间会算缩短 3 倍,但这个值并非越大越好,高并发意味着同一时间发包数量大幅增加,这可能会影响远程 server 的运行和 xray 对漏洞的判断,需要按需设置。

对于其他配置项,一个插件是一个配置单元,每个单元的基本格式为:

YAML

pluginName:
enabled: true/false
otherConfigrations: xxx

enabled 即为是否启用插件,所以这里只说明部分插件的特殊配置就可以了。

xss

  • ie_feature 如果此项为 true,则会将一些只能在 IE 环境下复现的漏洞爆出来,小白请不要开。

  • include_cookie 如果此项为 true, 则会检查是否存在输入源在 cookie 中的 xss

baseline

  • detect_outdated_ssl_version 是否检测过期的 SSL 版本,如果目标启用了 TLS1.1, TLS1.0, SSL3.0 都是会报一个漏洞

  • detect_http_header_config 是否检查 header 的配置,主要检查一些安全相关的 http 头有没有确实或错误

  • detect_cors_header_config 是否检查 cors 相关的问题

  • detect_server_error_page 检查响应是不是一个错误页面,支持主流框架的错误信息检测

  • detect_china_id_card_number 检查响应中有没有身份证号信息

  • detect_serialization_data_in_params 检查参数中是否存在序列化数据,支持 java,php,python

  • detect_cookie_password_leak 检测 cookie 中是否存在密码泄漏

  • detect_unsafe_scheme 检测不安全方案

  • detect_cookie_httponly 检测 cookie 是否开启 httponly

cmd_injection

detect_blind_injection 是否使用盲打来检查命令注入

dirscan

  • dictionary 配置目录字典,需要是绝对路径

  • dictionary Web 字典的路径

sqldet

  • error_based_detection 启用报错注入检测

  • boolean_based_detection 启用布尔盲注检测

  • time_based_detection 启用时间盲注检测

下面两个选项很危险,开启之后可以增加检测率,但是有破坏数据库数据的可能性,请务必了解工作原理之后再开启

  • dangerously_use_comment_in_sql 允许检查注入的时候使用注释

  • dangerously_use_or_in_sql 允许检查注入的时候使用 or

brute_force

  • detect_default_password 检测默认密码

  • detect_unsafe_login_method 检测不安全的登录方法

  • username_dictionary 弱口令用户名字典,需要绝对路径

  • password_dictionary 弱口令密码字典,需要绝对路径

如果没有配置将使用内置字典,约 Top8 用户名和 Top80 密码。配置后将做字典合并,即用户字典的与内置的做合并并去重。

phantasm

  • depth 探测深度,默认为 1, 即只在 URL 深度为 0, 和深度为 1 时运行该插件(前提是启用了该插件)

  • poc 定义默认启用哪些 POC。支持写内置 POC 名字和本地文件的绝对路径,如:

YAML

phantasm:
poc:
- poc-yaml-activemq-cve-2016-3088
- /Users/test/1.yml

这样方便自己添加自己的 POC 了

被动代理配置

这一部分主要介绍配置项中 mitm 部分相关的内容。

抓取 HTTPS 流量

对应于 ca_cert 和 ca_key 两项配置。

和 burp 类似,抓取 https 流量需要信任一个根证书,这个根证书可以自行生成,也可用下列自带的命令生成:

BASH

➜ ./xray genca

运行后将在当前目录生成 ca.key 和 ca.crt, 用户手动导入证书即可,类似于 BP 导入证书那样。

Firefox 需要单独在浏览器导入。移动端可以挂代理之后访问 http://xray/ 下载根证书

代理启用密码保护

对应于 auth 中的配置。

xray 支持给代理配置基础认证的密码,当设置好 auth 中的 username 和 password 后,使用代理时浏览器会弹框要求输出用户名密码,输入成功后代理才可正常使用。

限制漏洞扫描的范围

在 mitm 的配置中的 restrction 项指示本次漏洞的 URI 限制。

  1. includes 表示只扫描哪些域和路径。比如 *.example.com 只扫描 example.com 的子域

  2. excludes 表示不扫描哪些域和路径。比如 t.example.com 表示不扫描 t.example.com

两个都配置的情况下会取交集,这两个配置常用于想要过滤代理中的某些域,或者只想扫描某个域的请求时。

两项配置都支持 path 过滤,如果输入的中有 /, 那么 / 后面的表达式就是 path 的过滤。可以对照如下例子理解:

YAML

includes:
- 'example.com/test' # 表示允许 example.com/test 这一个路径
- "example.com/admin*" # 表示允许 example.com 下的 /admin 开头的所有 path

注意: 这里的 includes 和 excludes 均不支持端口号,如果加上将导致限制失效!

设置代理的 IP 白名单

配置中的 allow_ip_range 项可以限制哪些 IP 可以使用该代理。支持单个 IP 和 CIDR 格式的地址,如:

YAML

allow_ip_range: ["127.0.0.1","192.168.1.1/24"]CopyErrorCopied

留空则允许所有地址访问,如果来源 IP 没有在配置的地址内,使用者则会报 Proxy Failed 的错误。

队列长度配置

YAML

queue:
max_length: 10000

经典的生产者消费者问题,如果生产消费速度不匹配,就需要一个中间的队列来临时存储,这个队列的大小就是 max_length。如果 max_length 设置的过大,会造成 xray 内存占用过大,甚至可能会造成内存不足 OOM 进程崩溃。

代理请求头配置

YAML

proxy_header:
via: "" # 如果不为空,proxy 将添加类似 Via: 1.1 $some-value-$random 的 http 头
x_forwarded: false # 是否添加 X-Forwarded-{For,Host,Proto,Url} 四个 http 头

如果开启 proxy_header,代理会添加 via 头和 X-Forwarded-* 系列头。如果在请求中就已经存在了同名的 HTTP 头,那么将会追加在后面。

比如 curl http://127.0.0.1:1234 -H "Via: test" -H "X-Forwarded-For: 1.2.3.4" -v,后端实际收到的请求将会是

HTTP

GET / HTTP/1.1
Host: 127.0.0.1:1234
User-Agent: curl/7.54.0
Accept: */*
Via: test, 1.1 xray-1fe7f9e5241b2b150f32
X-Forwarded-For: 1.2.3.4, 127.0.0.1
X-Forwarded-Host: 127.0.0.1:1234
X-Forwarded-Proto: http
X-Forwarded-Url: http://127.0.0.1:1234/
Accept-Encoding: gzip

代理的代理

假如启动 xray 时配置的 listen 为 127.0.0.1:1111upstream_proxy 为 http://127.0.0.1:8080, 那么浏览器设置代理为 http://127.0.0.1:1111,整体数据流如下:

xray Web 扫描器学习记录

该配置仅影响代理本身,不会影响插件在漏洞探测时的发包行为

盲打平台配置

这里知识点比较多,反向盲打平台很多,如果大家对 xray 的这个功能感兴趣建议参考 xray 的官方文档,国光这里就不细写了。

HTTP 配置

对于 web 扫描来说,http 协议的交互是整个过程检测过程的核心。因此这里的配置将影响到引擎进行 http 发包时的行为。

漏洞扫描用的代理 proxy

配置该项后漏洞扫描发送请求时将使用代理发送,支持 httphttps 和 socks5 三种格式,如:

CODE

http://127.0.0.1:1111
https://127.0.0.1:1111
socks5://127.0.0.1:1080

基础爬虫配置

基础爬虫的配置项对应于 basic-crawler 部分,默认的配置如下,用法参照文件中的注释

YAML

basic_crawler:
max_depth: 0 # 爬虫最大深度, 0 为无限制
max_count_of_links: 0 # 本次扫描总共爬取的最大连接数, 0 为无限制
allow_visit_parent_path: false # 是否允许访问父目录, 如果扫描目标为 example.com/a/, 如果该项为 false, 那么就不会爬取 example.com/ 这级目录的内容
restriction: # 和 mitm 中的写法一致, 有个点需要注意的是如果当前目标为 example.com 那么会自动添加 example.com 到 includes 中。
includes: []
excludes:
- '*google*'

子域名配置

注意,此功能只在高级版中提供

国光测试了这个子域名功能,可以用,但是不是很强大,不如自己采集多方面接口的域名要全,感兴趣可以参考官方文档。

检查更新配置

xray 内置了一个简单的更新检查机制,会在每次启动的时候检查有无新的版本发布,如果有更新将在界面上显示最新的 release notes。 如不需要该机制,可以通过下列方法禁用:

在 config.yaml 中添加如下配置即可禁用更新检查:

YAML

update:
check: false

xray 进阶

xray 与 Burpsuite 联动

首先 xray 建立起 webscan 的监听

BASH

➜ ./xray webscan --listen 127.0.0.1:7777 --html-output bp.html

进入 Burp 后,打开 User options 标签页,然后找到 Upstream Proxy Servers 设置。

点击 Add 添加上游代理以及作用域,Destination host 处可以使用 * 匹配多个任意字符串,? 匹配单一任意字符串,而上游代理的地址则填写 xray 的监听地址。

xray Web 扫描器学习记录

BP 的 socks 代理与顶级代理服务器有冲突,不能同时勾选

接下来 BP 正常抓包,与此同时 BP 也会将我们截取到的一些流量包发到 xray 中进行漏洞检测。

xray 与 AWVS 联动

首先 xray 建立起 webscan 的监听

如果你的 AWVS 不是安装在物理机上话,那么你的 xray 应该填写你 AWVS 可以访问的地址 国光测试填写 127.0.0.1 无法与 AWVS 进行联动

BASH

➜ ./xray webscan --listen 192.168.31.53:7777 --html-output awvs.html

以 AWVS 13 为例,登入管理页后,点击 Targets, 然后点击 Add Target 添加扫描目标:

这里演示的是扫描 awvs 的在线靶站 http://testphp.vulnweb.com/

xray Web 扫描器学习记录

下滑到 HTTP 部分,填写 Proxy Server 为对应的 xray 代理,因为国光的 AWVS 是在虚拟机运行的,所以我这里填写的是我物理机的 ip 地址(之前粗心写 127.0.0.1 了没有啥反应):

xray Web 扫描器学习记录

最后扫描类型选择 仅爬取:

xray Web 扫描器学习记录

此时 AWVS 的爬虫会把请求都转发给 xray 检测漏洞了,此时 awvs.html 里面就躺好了漏洞:

Django 调用 xray

因为 xray 的新版本支持 webhook 这样很方便我们写代码调用,首先 xray 监听本地的 7777 端口,然后监听的流量进行漏洞检测,将漏洞信息同时通过 webhook 的方式传输到 http://127.0.0.1:8000/scan/xray/

BASH

➜ ./xray webscan --listen 192.168.31.53:7777  --webhook-output http://127.0.0.1:8000/scan/xray/

http://127.0.0.1:8000/scan/xray/ 这个是国光用 Django 写的接口,下面是这个接口简单的实现代码:

PYTHON

import json
from django.shortcuts import render
from django.views.generic.base import View
from django.views.decorators.csrf import csrf_exempt


class WebHook(View):
@csrf_exempt
def dispatch(self, request, *args, **kwargs):
return super().dispatch(request, *args, **kwargs)

def post(self, request):
vul_data = json.loads(request.body)
if 'detail' in str(request.body):
print('漏洞插件:', vul_data['plugin'])
print('漏洞位置:', vul_data['target']['url'])
print('漏洞分类:', vul_data['vuln_class'])

return render(request, 'test.html', {
})

因为 Django 安全机制问题,xray post 提交请求到 Django 必须填写 CSRF Token 才可以,解决方法就是手动关掉这个类的 CSRF 检测 @csrf_exempt

参考资料

  • xray 安全评估工具文档


来源:https://www.sqlsec.com/2020/04/xray.html


声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权


@

学习更多渗透技能!体验靶场实战练习


xray Web 扫描器学习记录

hack视频资料及工具

xray Web 扫描器学习记录

(部分展示)



往期推荐

【精选】SRC快速入门+上分小秘籍+实战指南

爬取免费代理,拥有自己的代理池

漏洞挖掘|密码找回中的套路

渗透测试岗位面试题(重点:渗透思路)

漏洞挖掘 | 通用型漏洞挖掘思路技巧

干货|列了几种均能过安全狗的方法!

一名大学生的黑客成长史到入狱的自述

攻防演练|红队手段之将蓝队逼到关站!

巧用FOFA挖到你的第一个漏洞

看到这里了,点个“赞”、“再看”吧



原文始发于微信公众号(白帽子左一):xray Web 扫描器学习记录

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月26日00:23:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   xray Web 扫描器学习记录https://cn-sec.com/archives/1691411.html

发表评论

匿名网友 填写信息