Basic Gitea Information

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Estrutura Básica

A estrutura básica do ambiente Gitea é agrupar repositórios por organização(ões), cada uma delas pode conter vários repositórios e várias equipes. No entanto, observe que, assim como no github, os usuários podem ter repositórios fora da organização.

Além disso, um usuário pode ser membro de diferentes organizações. Dentro da organização, o usuário pode ter diferentes permissões sobre cada repositório.

Um usuário também pode fazer parte de diferentes equipes com diferentes permissões sobre diferentes repositórios.

E, finalmente, os repositórios podem ter mecanismos de proteção especiais.

Permissões

Organizações

Quando uma organização é criada, uma equipe chamada Owners é criada e o usuário é colocado dentro dela. Esta equipe dará acesso de administrador sobre a organização, essas permissões e o nome da equipe não podem ser modificados.

Os administradores da org (proprietários) podem selecionar a visibilidade da organização:

  • Pública

  • Limitada (apenas usuários logados)

  • Privada (apenas membros)

Os administradores da org também podem indicar se os administradores do repositório podem adicionar e/ou remover acesso para equipes. Eles também podem indicar o número máximo de repositórios.

Ao criar uma nova equipe, várias configurações importantes são selecionadas:

  • É indicado os repositórios da org que os membros da equipe poderão acessar: repositórios específicos (repositórios onde a equipe é adicionada) ou todos.

  • Também é indicado se os membros podem criar novos repositórios (o criador terá acesso de administrador a ele)

  • As permissões que os membros do repositório terão:

  • Acesso de Administrador

  • Acesso Específico:

Equipes e Usuários

Em um repositório, o administrador da org e os administradores do repositório (se permitido pela org) podem gerenciar os papéis atribuídos a colaboradores (outros usuários) e equipes. Existem 3 possíveis papéis:

  • Administrador

  • Escrever

  • Ler

Autenticação do Gitea

Acesso Web

Usando nome de usuário + senha e potencialmente (e recomendado) um 2FA.

Chaves SSH

Você pode configurar sua conta com uma ou várias chaves públicas permitindo que a chave privada relacionada execute ações em seu nome. http://localhost:3000/user/settings/keys

Chaves GPG

Você não pode se passar pelo usuário com essas chaves, mas se você não as usar, pode ser possível que você seja descoberto por enviar commits sem uma assinatura.

Tokens de Acesso Pessoal

Você pode gerar um token de acesso pessoal para dar a um aplicativo acesso à sua conta. Um token de acesso pessoal dá acesso total à sua conta: http://localhost:3000/user/settings/applications

Aplicações Oauth

Assim como os tokens de acesso pessoal, as aplicações Oauth terão acesso completo à sua conta e aos lugares onde sua conta tem acesso porque, como indicado na documentação, os escopos ainda não são suportados:

Chaves de Implantação

As chaves de implantação podem ter acesso somente leitura ou gravação ao repositório, então podem ser interessantes para comprometer repositórios específicos.

Proteções de Branch

As proteções de branch são projetadas para não dar controle completo de um repositório aos usuários. O objetivo é colocar vários métodos de proteção antes de poder escrever código em algum branch.

As proteções de branch de um repositório podem ser encontradas em https://localhost:3000/<orgname>/<reponame>/settings/branches

Não é possível definir uma proteção de branch no nível da organização. Portanto, todas elas devem ser declaradas em cada repositório.

Diferentes proteções podem ser aplicadas a um branch (como ao master):

  • Desativar Push: Ninguém pode fazer push para este branch

  • Ativar Push: Qualquer pessoa com acesso pode fazer push, mas não push forçado.

  • Whitelist de Push Restrito: Apenas usuários/equipes selecionados podem fazer push para este branch (mas sem push forçado)

  • Ativar Lista de Merge: Apenas usuários/equipes da lista branca podem fazer merge de PRs.

  • Ativar verificações de status: Exigir que as verificações de status passem antes de fazer merge.

  • Exigir aprovações: Indicar o número de aprovações necessárias antes que um PR possa ser mesclado.

  • Restringir aprovações a lista branca: Indicar usuários/equipes que podem aprovar PRs.

  • Bloquear merge em revisões rejeitadas: Se forem solicitadas alterações, não pode ser mesclado (mesmo que as outras verificações passem)

  • Bloquear merge em solicitações de revisão oficiais: Se houver solicitações de revisão oficiais, não pode ser mesclado

  • Dispensar aprovações antigas: Com novos commits, as aprovações antigas serão dispensadas.

  • Exigir Commits Assinados: Os commits devem ser assinados.

  • Bloquear merge se a solicitação de pull estiver desatualizada

  • Padrões de arquivos protegidos/não protegidos: Indicar padrões de arquivos para proteger/não proteger contra alterações

Como você pode ver, mesmo se conseguir obter algumas credenciais de um usuário, os repositórios podem estar protegidos evitando que você envie código para o master, por exemplo, comprometendo o pipeline CI/CD.

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización