Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Gitea-template-sync-Path-Traversal-Privilege-Escalation-CVE-2026-38526- — PoC e write-up para a escalada de privilégios do "Nexus" do HackTheBox: serviço de sincronização de templates do Gitea executado como root, vulnerável a path traversal através de objetos Git forjados. Apenas para uso educacional. | Kitploit
Ferramentas/GitHubGitHub/shirouuu/gitea-template-sync-path-traversal-privilege-escalation-cve-2026-38526-
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebPós-ExploraçãoCTFTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Labs e Prática
GitHubshirouuu/gitea-template-sync-path-traversal-privilege-escalation-cve-2026-38526-

Gitea-template-sync-Path-Traversal-Privilege-Escalation-CVE-2026-38526-

PoC e write-up para a escalada de privilégios do "Nexus" do HackTheBox: serviço de sincronização de templates do Gitea executado como root, vulnerável a path traversal através de objetos Git forjados. Apenas para uso educacional.

Ver Repositório
há 6h 47mAinda não revisado

Nexus — PoC de Escalação de Privilégios Local

Path traversal no template-sync do Gitea via objetos Git forjados → root

Um exploit de prova de conceito para escalação de privilégios na máquina HackTheBox Nexus. Um serviço systemd pertencente ao root sincroniza repositórios de template do Gitea para o disco sem sanitizar os nomes das entradas, permitindo que um usuário autenticado de baixo privilégio escreva arquivos arbitrários como root através de directory traversal — usado aqui para implantar uma chave SSH em /root/.ssh/authorized_keys.


⚠️ Aviso Legal

Este código é fornecido para fins educacionais e testes de segurança autorizados apenas — ou seja, ambientes de laboratório como o HackTheBox, ou sistemas que você possui ou tem permissão escrita explícita para testar. O uso não autorizado contra sistemas que você não controla é ilegal. O autor não assume nenhuma responsabilidade pelo uso indevido.

Se a máquina Nexus ainda estiver ativa no HackTheBox, não publique nem compartilhe este exploit — as regras do HTB proíbem a distribuição de soluções para máquinas ativas.


Resumo da Vulnerabilidade

ClassePath Traversal (CWE-22) → Escalação de Privilégios Local
Componentegitea-template-sync.service (custom /etc/gitea/template-sync.py)
Executa comoroot, acionado a cada ~60s por gitea-template-sync.timer
Causa raizos.path.join() em nomes não sanitizados obtidos de objetos Git tree
ImpactoUsuário autenticado de baixo privilégio → root

O script de sincronização lê arquivos de repositórios marcados como templates no Gitea e os escreve no sistema de arquivos local. O caminho de destino é construído aproximadamente assim:

root@kitploit:~
dest = os.path.join(base_dir, name)   # name comes straight from the Git tree
open(dest, "w").write(content)

os.path.join() não neutraliza sequências ... Uma entrada de tree cujo nome é um caminho de traversal (por exemplo, ../../../../../root/.ssh/authorized_keys) portanto faz com que o processo privilegiado escreva fora do diretório pretendido.


Por que objetos Git forjados?

O Git armazena conteúdo e nomes separadamente:

  • um blob contém o conteúdo bruto de um arquivo (sem nome);
  • uma tree mapeia name → object (é aqui que o nome do arquivo reside);
  • um commit aponta para uma tree de nível superior.

O nome do arquivo em uma entrada de tree é apenas texto, então ele pode ser .. — mas o cliente Git padrão recusa criar tal entrada, justamente para prevenir este ataque.

Este PoC contorna essa verificação do lado do cliente escrevendo objetos Git brutos diretamente em .git/objects/ (calculando os ids SHA-1 manualmente) e criando refs/heads/main manualmente. O repositório enviado então contém uma entrada de tree chamada .., que o processo de sincronização root resolve e segue.


Cadeia de Ataque (contexto completo da máquina)

  1. Foothold — upload irrestrito de arquivos no Krayin CRM (CVE-2026-38526) → RCE como www-data.
  2. Movimentação lateral — credenciais em texto claro no .env de produção, reutilizadas como senha de sistema → SSH como um usuário de baixo privilégio.
  3. Escalação de privilégios — este PoC → root.

O tema recorrente nas três etapas: um processo privilegiado confiando em dados controlados pelo atacante sem validação (um tipo MIME falsificado, uma senha reutilizada, um nome de arquivo não sanitizado).


Requisitos

  • Executar no host alvo, como o usuário autenticado de baixo privilégio.
  • Gitea acessível em http://localhost:3000.
  • git, python3, curl e ssh disponíveis (padrão na máquina).

Uso

root@kitploit:~
chmod +x nexus_privesc.sh
./nexus_privesc.sh -t <TARGET_IP> -u <GITEA_USER> -p <GITEA_PASS> [-d DEPTH]

Exemplo:

root@kitploit:~
./nexus_privesc.sh -t 10.129.21.192 -u jones -p 'REDACTED' -d 5

O que o script faz

  1. Gera um par de chaves SSH ed25519 (/tmp/.exploit_key).
  2. Solicita um token da API do Gitea via autenticação básica.
  3. Cria um repositório e o marca como template.
  4. Forja objetos Git brutos codificando uma tree de traversal .. que mapeia para /root/.ssh/authorized_keys, com a chave pública do atacante como conteúdo.
  5. Envia o repositório envenenado.
  6. Aguarda o timer de sincronização pertencente ao root (~60s).
  7. Faz login como root com a chave implantada.

Monitore a sincronização no alvo com:

root@kitploit:~
tail -f /var/log/template-sync.log

Uma execução bem-sucedida registra uma linha como:

root@kitploit:~
synced: ../../../../../root/.ssh/authorized_keys

Ajustando DEPTH

DEPTH é o número de níveis .. necessários para subir do diretório de sincronização/staging até a raiz do sistema de arquivos (/). Se a sincronização for bem-sucedida no log mas o SSH root falhar, o traversal caiu no nível errado — tente novamente com -d 4 ou -d 6. O valor exato pode ser confirmado lendo o caminho de staging em /etc/gitea/template-sync.py.


Remediação

  • Nunca construa caminhos de sistema de arquivos a partir de nomes não confiáveis apenas com os.path.join(). Normalize e confine os caminhos, por exemplo:

    root@kitploit:~
    base = os.path.realpath(base_dir)
    dest = os.path.realpath(os.path.join(base, name))
    if not dest.startswith(base + os.sep):
        raise ValueError("path traversal blocked")
    
  • Rejeite nomes de entradas de tree que contenham .., caminhos absolutos ou separadores de caminho.

  • Execute o serviço de sincronização sob uma conta dedicada de baixo privilégio, não root.

  • Habilite receive.fsckObjects = true no Gitea para rejeitar objetos enviados malformados.


Referências

  • CWE-22 — Improper Limitation of a Pathname to a Restricted Directory (Path Traversal)
  • CVE-2026-38526 — upload irrestrito de arquivos no Krayin CRM (etapa de foothold)
  • Git internals — objects (blob / tree / commit): https://git-scm.com/book/en/v2/Git-Internals-Git-Objects
  • MITRE ATT&CK — T1068 Exploitation for Privilege Escalation

Autor

<your name / handle> — para uso educacional no HackTheBox.

Baixar ferramenta
FlagDescriçãoPadrão
-tIP alvo (para o SSH root final)— (obrigatório)
-uNome de usuário do Gitea— (obrigatório)
-pSenha do Gitea— (obrigatório)
-dNúmero de níveis .. para alcançar / a partir do diretório de sincronização5