Interesting Groups - Linux Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Às vezes, por padrão (ou porque algum software precisa disso) dentro do /etc/sudoers você pode encontrar algumas dessas linhas:
Isso significa que qualquer usuário que pertença ao grupo sudo ou admin pode executar qualquer coisa como sudo.
Se este for o caso, para se tornar root você pode apenas executar:
Encontre todos os binários suid e verifique se há o binário Pkexec:
Se você descobrir que o binário pkexec é um binário SUID e você pertence ao sudo ou admin, você provavelmente poderá executar binários como sudo usando pkexec
.
Isso ocorre porque, normalmente, esses são os grupos dentro da política do polkit. Essa política basicamente identifica quais grupos podem usar pkexec
. Verifique com:
Lá você encontrará quais grupos têm permissão para executar pkexec e por padrão em algumas distribuições linux os grupos sudo e admin aparecem.
Para se tornar root você pode executar:
Se você tentar executar pkexec e receber este erro:
Não é porque você não tem permissões, mas porque você não está conectado sem uma GUI. E há uma solução para esse problema aqui: https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903. Você precisa de 2 sessões ssh diferentes:
Às vezes, por padrão dentro do arquivo /etc/sudoers você pode encontrar esta linha:
Isso significa que qualquer usuário que pertença ao grupo wheel pode executar qualquer coisa como sudo.
Se este for o caso, para se tornar root você pode apenas executar:
Usuários do grupo shadow podem ler o /etc/shadow arquivo:
Então, leia o arquivo e tente quebrar algumas hashes.
staff: Permite que os usuários adicionem modificações locais ao sistema (/usr/local
) sem precisar de privilégios de root (note que executáveis em /usr/local/bin
estão na variável PATH de qualquer usuário, e podem "substituir" os executáveis em /bin
e /usr/bin
com o mesmo nome). Compare com o grupo "adm", que está mais relacionado à monitoramento/segurança. [source]
Em distribuições debian, a variável $PATH
mostra que /usr/local/
será executada com a maior prioridade, independentemente de você ser um usuário privilegiado ou não.
Se conseguirmos sequestrar alguns programas em /usr/local
, podemos facilmente obter root.
Sequestrar o programa run-parts
é uma maneira fácil de obter root, porque a maioria dos programas executará um run-parts
, como (crontab, quando o ssh faz login).
ou Quando um novo login de sessão ssh.
Exploit
Este privilégio é quase equivalente ao acesso root pois você pode acessar todos os dados dentro da máquina.
Files:/dev/sd[a-z][1-9]
Note que usando debugfs você também pode escrever arquivos. Por exemplo, para copiar /tmp/asd1.txt
para /tmp/asd2.txt
, você pode fazer:
No entanto, se você tentar escrever arquivos de propriedade do root (como /etc/shadow
ou /etc/passwd
), você terá um erro de "Permissão negada".
Usando o comando w
, você pode descobrir quem está logado no sistema e ele mostrará uma saída como a seguinte:
O tty1 significa que o usuário yossi está logado fisicamente em um terminal na máquina.
O grupo video tem acesso para visualizar a saída da tela. Basicamente, você pode observar as telas. Para fazer isso, você precisa capturar a imagem atual na tela em dados brutos e obter a resolução que a tela está usando. Os dados da tela podem ser salvos em /dev/fb0
e você pode encontrar a resolução desta tela em /sys/class/graphics/fb0/virtual_size
Para abrir a imagem bruta, você pode usar GIMP, selecionar o arquivo screen.raw
e escolher como tipo de arquivo Dados de imagem bruta:
Em seguida, modifique a Largura e Altura para as usadas na tela e verifique diferentes Tipos de Imagem (e selecione o que melhor mostra a tela):
Parece que, por padrão, membros do grupo root podem ter acesso para modificar alguns arquivos de configuração de serviço ou alguns arquivos de bibliotecas ou outras coisas interessantes que podem ser usadas para escalar privilégios...
Verifique quais arquivos os membros do root podem modificar:
Você pode montar o sistema de arquivos raiz da máquina host em um volume da instância, então quando a instância inicia, ela carrega imediatamente um chroot
nesse volume. Isso efetivamente lhe dá acesso root na máquina.
Finalmente, se você não gostar de nenhuma das sugestões anteriores, ou elas não estiverem funcionando por algum motivo (firewall da API do docker?), você sempre pode tentar executar um contêiner privilegiado e escapar dele conforme explicado aqui:
Docker SecuritySe você tiver permissões de escrita sobre o socket do docker, leia este post sobre como escalar privilégios abusando do socket do docker.
Geralmente, membros do grupo adm
têm permissões para ler arquivos de log localizados dentro de /var/log/.
Portanto, se você comprometeu um usuário dentro deste grupo, você definitivamente deve dar uma olhada nos logs.
Dentro do OpenBSD, o grupo auth geralmente pode escrever nas pastas /etc/skey e /var/db/yubikey se forem usadas. Essas permissões podem ser abusadas com o seguinte exploit para escalar privilégios para root: https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)