Capabilities

Os recursos do Linux são usados para permitir que binários (executados por usuários comuns) realizem operações privilegiadas sem fornecer a eles todas as permissões de root.

Isso é diferente de SUID, prova disso que é um ls -lh não irá te trazer nenhuma dica de vulnerabilidade. Para isso, usamos o getcap, como descrito logo a seguir.

Os tipo de Capabilities são:

CAPABILITIES

TIPO

CapInh

Inherited

CapPrm

Permitted

CapEff

Effective

CapBnd

Bind

CapAmb

Ambient

Verificando Capabilities

Exibindo o Capabilities do bash atual. Verifique em Current: =

capsh --print

Outra maneira de verificar, é executando seguinte comando:

grep Cap /proc/$BASHPID/status

# Utilize o saída do comando acima para utilizar embaixo
capsh --decode=<valor_de_Cap***>

Podemos também, pesquisar por arquivos no SO que possuem permissões.

Python

cap_setgid+ep

Procurando por binários vulneráveis

Resultado de binário vulnerável, onde é possível acessar o python com o usuários atual, porém adicioando as permissões do grupo root.

Para explorar, basta executar o comando abaixo. Atente-se ao 0 que foi passado como parâmetro em os.setgid(), que o número correspondente ao grupo root. Para ver os grupos disoníveis no SO, leia o arquivo /etc/group e verifique o número correspondenet ao grupo que queira personificar. É sempre bom, pegar o grupo shadow e assim, ler o conteúdo do arquivo /etc/shadow para poder então, realizar um ataque de brute force.

cap_sys_admin+ep

Procurando por binários vulneráveis

Resultado de binário vulnerável, onde é possível acessar o python com usuário root para realizar leitura e escrita de arquivos

Agora é necessário fazer uma cópia do arquivo /etc/passwd, e alterar o hash do usuário root:

Agora vamos criar um arquivo chamado xpl.py, com o seguinte conteúdo (altere o valor da variável source ):

Agora basta executar o script e depois acessar o usuário root com a senha definida anteriormente.

cap_setuid / cap_net_bind_service+eip

Deixando o arquivo vulnerável.

Agora ao executar o comando get -r / 2>/dev/null, devemos ter algo parecido com a saída abaixo:

Pegando bash com permissão root.

cap_sys_module

Verifique se o arquivo python está com cap_sys_module+ep ativo.

Caso positivo, verifique se o python possui o kmod.

Se estiver tudo ok até aqui, execute os seguintes comandos:

Crie um arquivo chamado reverse-shell.c com o seguinte conteúdo:

Crie outro, dessa vez com o nome Makefile.

E então, execute no terminal:

Agora crie um arquivo chamado insert-kernel-module.py com o seguinte conteúdo:

No host atacante deixe o nc no modo listener para receber a conexão.

E por último, no host alvo, execute:

cap_dac_read_search+ep

Listando arquivo de um diretório

Lendo conteúdo de um arquivo

tcpdump

Deixando o arquivo vulnerável.

Agora basta utilizar o tcpdump normalmente.

tar

Primeiro verifique o Capability do tar.

Caso tenha o cap cap_dac_read_search+ep, é possível utilizar para comprimir e descomprimir qualquer arquivo.

perl

x86_64-linux-gnu-ld.bfd

Procurando por binários vulneráveis

Resultado

Copiando /etc/shadow para o diretório atual

Lendo conteúdo de /etc/shadow

CAP_SETUID

Last updated

Was this helpful?