Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
rapid-reset-check — 一款 Go CLI,可通过 ALPN 枚举协商 HTTP/2 的 HTTPS 端点,以识别需要针对 CVE-2023-44487 进行缓解审查的系统。采用安全默认配置,执行非利用性且经证书验证的 TLS 检查。 | Kitploit
工具/GitHubGitHub/ramonzx6/rapid-reset-check
漏洞扫描器配置审计信息收集Web安全网络安全
GitHubramonzx6/rapid-reset-check

rapid-reset-check

一款 Go CLI,可通过 ALPN 枚举协商 HTTP/2 的 HTTPS 端点,以识别需要针对 CVE-2023-44487 进行缓解审查的系统。采用安全默认配置,执行非利用性且经证书验证的 TLS 检查。

查看仓库
1天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Rapid Reset Check

rapid-reset-check 是一个小巧的 Go CLI 工具,用于快速盘点那些暴露 HTTP/2、因而需要进行 CVE-2023-44487 缓解审查的 HTTPS 端点。

该扫描器刻意避免任何攻击性利用行为。它会解析每个目标,建立经过证书验证的 TLS 连接,通过 ALPN 提供 h2 与 http/1.1,记录对端的选择,然后关闭连接。它不会发送任何 HTTP 请求、HTTP/2 连接前言、数据流、RST_STREAM 帧或洪泛流量。

[!IMPORTANT] 协商出 h2 只是一种暴露观测结果,并非服务存在漏洞或未打补丁的证明。远程握手无法验证某个 HTTP/2 实现在 Rapid Reset 限制、补丁级别、上游来源或 DDoS 防护方面的情况。

为什么采用这种方法?

CVE-2023-44487 是一种滥用 HTTP/2 快速创建与取消流的拒绝服务攻击技术。要针对在线服务验证该问题的存在,本身就需要发送可能造成干扰的流量。而此工具回答的是安全的第一步问题:哪些被测 TLS 端点当前协商了 HTTP/2,因而需要运维人员核实其缓解措施?

基于 TLS 的 HTTP/2 通过 RFC 9113 定义的 h2 ALPN 标识符进行通告。Google 建议对请求路径上的每个支持 HTTP/2 的服务器、代理和负载均衡器进行核实或修补;参见其 CVE-2023-44487 指南。

安装发布版二进制

运行该工具不需要安装 Go。请从最新 GitHub 发布页面下载适用于您平台的压缩包:

平台发布资产
Linux x86-64rapid-reset-check_<version>_linux_amd64.tar.gz
Linux ARM64rapid-reset-check_<version>_linux_arm64.tar.gz
macOS Intelrapid-reset-check_<version>_darwin_amd64.tar.gz
macOS Apple siliconrapid-reset-check_<version>_darwin_arm64.tar.gz
Windows x86-64rapid-reset-check_<version>_windows_amd64.zip
Windows ARM64rapid-reset-check_<version>_windows_arm64.zip

解压压缩包后,运行 rapid-reset-check --version。在 Windows 上,可执行文件名为 rapid-reset-check.exe。

每次发布都附有 SHA256SUMS。在 Linux 上,可在同一目录下使用以下命令校验下载的压缩包:

root@kitploit:~
sha256sum --ignore-missing --check SHA256SUMS

在 macOS 上,将 shasum -a 256 <archive> 的输出与 SHA256SUMS 中对应的行进行比对。公开发布的正式版压缩包还带有 GitHub 工件证明(artifact attestation),可通过 GitHub CLI 进行校验:

root@kitploit:~
gh attestation verify <archive> --repo ramonzx6/http-script-json

从源码构建

  • Go 1.22 或更高版本

无需安装 Node.js、cURL、nghttp2 或 WHOIS。

root@kitploit:~
go test ./...
go build -o rapid-reset-check ./cmd/rapid-reset-check

源码构建在 --version 中显示为 dev;发布版构建则从发布标签中获取版本号。

快速开始

请仅扫描您拥有或获授权评估的端点。

扫描一个或多个公开端点:

root@kitploit:~
./rapid-reset-check example.com api.example.com:8443

裸主机名会被规范化为 443 端口上的 HTTPS。仅含权威(authority)的 HTTPS URL 也同样接受:

root@kitploit:~
./rapid-reset-check https://example.com https://api.example.com:8443

扫描仓库自带的 JSON 目标列表:

root@kitploit:~
./rapid-reset-check --input json/urls.json

使用标准输入以实现自动化:

root@kitploit:~
printf '["example.com", "api.example.com"]' | ./rapid-reset-check --input -

运行 ./rapid-reset-check --help 可查看所有限制与输出选项。

输入

--input 接受原始的 JSON 数组格式:

root@kitploit:~
[
  "example.com",
  "api.example.com:8443",
  "https://www.example.net"
]

同时支持 {"urls": [...]} 与 {"targets": [...]} 这两种对象形式。位置参数目标与 --input 被有意设计为互斥。规范化后重复的端点只会被扫描一次,且每次运行最多接受 4,096 个输入目标。

只有 HTTPS 端点属于扫描范围。凭据、非根路径、查询、片段、不支持的协议、格式错误的端口以及有歧义的主机名都会被拒绝,而不会被静默改写。

评估结果

评估结果含义
h2_observed_review_required至少一个通过验证的 TLS 对端选择了 h2。请审查该路径上的每个 HTTP/2 组件;这并非漏洞判定。
h2_not_observed_on_tested_path所有所选地址均完成了经验证的握手,且均未选择 h2。这是针对某一时间点的路径观测结果,并非安全保证。
indeterminateDNS、连接、超时、TLS、证书或地址数量限制方面的问题导致无法完成完整观测。
not_scanned_policy解析出的地址被扫描器的网络安全策略排除。
invalid_target输入格式有误,或超出所支持的 HTTPS 权威(authority)范围。

报告中包含每个尝试过的解析地址、协商出的 ALPN、TLS 版本与加密套件、有限的证书身份/有效期数据、计时信息、策略决策、被省略地址的数量、明确的完整性标志以及汇总信息。它不收集响应体、响应头、Cookie 或原始证书。

安全默认设置

  • TLS 证书与主机名都会经过验证。可使用 --ca-file 添加私有 CA;不存在不安全验证模式。
  • 环回、私网、链路本地、组播、未指定、CGNAT、文档、基准测试及其他保留地址默认会被阻止。仅对您获授权评估的内部端点使用 --allow-private。
  • 每次连接都会固定 DNS 解析结果,同时保留原始主机名用于 SNI 与证书验证。
  • 连接并发数、每个地址的超时时间以及每个目标可解析的地址数量均设有上限。
  • 扫描器不会自动重试,也不会跟随重定向,因为它从不发送 HTTP 请求。请逐个提交您需要评估的 HTTPS 权威(authority)。

示例选项:

root@kitploit:~
./rapid-reset-check \
  --format json \
  --timeout 5s \
  --concurrency 4 \
  --max-addresses 8 \
  example.com > report.json

用于获授权的私有 PKI 端点:

root@kitploit:~
./rapid-reset-check \
  --allow-private \
  --ca-file ./internal-root-ca.pem \
  service.internal:8443

退出码 0 表示每个目标都产生了完整的 ALPN 观测结果。退出码 1 表示至少有一个目标无效、被策略阻止或结果不确定;报告仍会照常写入。命令行用法与配置错误返回 2。观测到 h2 本身不会改变退出码,因为它是盘点信号,而非漏洞判定。

解读结果并采取行动

对于每个 h2_observed_review_required 结果:

  1. 识别外部可见的 TLS 终结节点,以及其后方所有支持 HTTP/2 的代理、负载均衡器、网关与源站服务器。
  2. 对照各厂商发布的 CVE-2023-44487 安全公告,逐一核对其产品与版本。
  3. 应用最新补丁,并遵循厂商的重置/限流指导。
  4. 确认边缘 DDoS 防护能够保护源站,且无法通过其他主机名、地址或端口绕过。
  5. 通过可信的资产清单或遥测数据验证配置与补丁状态。不要将本扫描器的 ALPN 结果当作已完成修复的证据。

局限性

结果取决于具体的主机名、DNS 应答、网络路径、TLS 端点与扫描时间。CDN、任播(anycast)、分流 DNS、负载均衡、备用端口及未经测试的地址都可能产生不同的结果。该扫描器不会:

  • 判断某个服务器是否存在漏洞、已修补、已缓解或是否安全;
  • 测试 Rapid Reset 行为或发送任何重置帧;
  • 检查明文 HTTP/2(h2c)、QUIC/HTTP/3、重定向、隐藏在边缘之后的源站或非 HTTPS 服务;
  • 根据可伪造的 Server 头或 CDN 指纹推断补丁状态;
  • 取代配置审查、资产清单、厂商指导或在隔离环境中进行的授权负载测试。

开发

root@kitploit:~
gofmt -w ./cmd ./internal
go vet ./...
go test ./...
go test -race ./...
go build ./...

测试套件使用本地 TLS 测试夹具,不会扫描公开服务。

自动化发布

由 Release Please 根据 Conventional Commit 消息管理发布版本与 vX.Y.Z 标签。日常开发无需创建或推送标签:

  1. 合并到 main 分支的提交会使 Release Please 打开或更新一个包含版本与变更日志改动的发布 PR。
  2. 合并该发布 PR 后,会创建版本标签和一个草稿版 GitHub Release。
  3. 同一个工作流会对打了标签的源码进行测试,交叉编译全部六个压缩包,生成校验和与溯源信息,上传资产,并发布该草稿。

fix: 用于补丁级变更,feat: 用于次要变更,主版本变更请使用破坏性变更标记(!)或 BREAKING CHANGE: 页脚。维护者需要启用一次 设置 > Actions > 常规 > 工作流权限 > 允许 GitHub Actions 创建和批准拉取请求,Release Please 才能管理其 PR。

如果 Release Please 创建标签后资产发布失败,该版本会保持为草稿。修复问题后,请使用该既有的 vX.Y.Z 标签手动重新运行 Release 工作流。请勿创建或推送替代标签。

下载工具