
Exploit Python pour CVE-2022-36804, permettant l'exécution de commandes à distance et le transfert de fichiers sur Bitbucket Server/Data Center vulnérables via des requêtes d'archive spécialement conçues.
Ce dépôt contient un script d'exploitation en Python pour la vulnérabilité CVE-2022-36804 d'Atlassian Bitbucket Server/Data Center. Le problème est une faille d'injection de commandes dans le flux d'archive Git, où des paramètres prefix spécialement conçus peuvent être interprétés par le serveur et exécutés comme des commandes shell.
CVE-2022-36804 est une vulnérabilité d'exécution de commandes à distance dans Bitbucket Server/Data Center. Elle a été causée par une gestion non sécurisée de la valeur prefix sur le point de terminaison d'archive, permettant à des données contrôlées par l'attaquant d'atteindre un appel shell via Git. La conséquence est une exécution de commandes non authentifiée ou authentifiée selon le chemin et le modèle de déploiement.
Ce script cible le point de terminaison d'archive vulnérable et utilise une requête spécialement conçue pour déclencher l'injection.
Ce PoC est destiné aux builds Bitbucket Server/Data Center affectés couverts par l'avis de sécurité Atlassian pour CVE-2022-36804. En pratique, la plage vulnérable comprend les anciennes versions 7.x/8.x de Bitbucket Server/Data Center antérieures aux versions corrigées répertoriées par Atlassian. Il n'est pas destiné aux builds corrigés ou mis à niveau.
Utilisez-le uniquement contre des systèmes que vous possédez ou que vous êtes explicitement autorisé à tester.
Le script envoie une requête à :
/rest/api/latest/projects/{project}/repos/{repo}/archive
avec un paramètre prefix spécialement conçu qui ressemble à :
ax%00--exec=`<command>`%00--remote=origin
L'astuce consiste à exploiter le chemin de commande par octet nul / Git afin que le serveur finisse par exécuter une commande shell à partir de la requête d'archive. Le script enveloppe la commande dans gzip + base64 si nécessaire afin que la sortie soit renvoyée de manière compacte et décodée localement.
Le script prend en charge deux modes principaux :
python cve-2022-36804_v5.py <url> <username> <password> -p <project> -r <repo> -c "whoami"
Options :
-c, --command : exécute une commande--no-encode : envoie la commande brute sans enveloppement gzip+base64-p, --project : clé de projet Bitbucket-r, --repo : slug du dépôt Bitbucketpython cve-2022-36804_v5.py <url> <username> <password> -p <project> -r <repo> -f /path/to/local.bin -o /tmp/remote.bin
Ce script lit un fichier local par morceaux, encode chaque morceau en base64 et utilise l'exploit pour le reconstruire sur le serveur au chemin cible.
requests.Session avec l'authentification de base.verify = False) pour simplifier les tests contre des points de terminaison auto-signés.Cet outil est réservé à la recherche en sécurité autorisée et aux tests contrôlés. L'utiliser contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas la permission de tester est illégal et contraire à l'éthique.