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: =
Outra maneira de verificar, é executando seguinte comando:
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