DOE AGORA Qualquer valor

Técnicas de Escalação de Privilégios (Básico para Avançado) no Linux

Técnicas de Escalação de Privilégios (Básico para Avançado) no Linux

Parte-3

Ali AK
Redações de InfoSec

·

Confira a primeira e a segunda parte desta série AQUI -- AQUI .

Nesta parte desta série, abordarei mais 3 técnicas e o formato será o mesmo da parte anterior. Primeiro um pouco de teoria e depois prática no sistema Linux.

7. Escalonamento de Privilégios: NFS

Teoria

O NFS permite que um sistema compartilhe diretórios e arquivos com outros em uma rede. Ao usar o NFS, usuários e programas podem acessar arquivos em sistemas remotos quase como se fossem arquivos locais.

metodologia NFS é simples;

1. Verifique o arquivo de configuração do NFS (se o destino tiver o NFS instalado, ele estará em /etc/nfs).

2. Olhe para o diretório que tem “nenhuma abóbora de raiz desabilitada”.

3. Monte esse diretório NFS vulnerável (sem root squash desabilitado) em seu sistema local.

4. Crie sua carga útil e defina permissão de gravação e execução nessa carga útil (faça isso com privilégio de root em seu sistema local).

5. Todas essas ações serão sincronizadas no diretório NFS do sistema de destino, portanto, basta acionar a carga útil a partir daí.

“O root squash é um mapeamento especial da identidade do superusuário remoto (raiz) ao usar a autenticação de identidade (o usuário local é o mesmo que o usuário remoto). No root squash, o uid 0 (root) de um cliente é mapeado para 65534 (ninguém)”.

“O root squash é uma técnica para evitar o escalonamento de privilégios na máquina cliente por meio de executáveis ​​suid Setuid. Sem root squash, um invasor pode gerar suid binários no servidor que são executados como root em outro cliente, mesmo que o usuário do cliente não tenha privilégios de superusuário. Portanto, protege as máquinas dos clientes contra outros clientes mal-intencionados.”

Prático

tmp e todos os diretórios dentro dele não têm root squash desabilitado.

Na sua máquina (lado do atacante)

Monte esse compartilhamento de nfs de destino
Montado com sucesso
Crie uma carga útil nesse compartilhamento e defina o suid da raiz.
No lado do destino, executa essa carga setuid.

8. Escalonamento de Privilégios: Variável de Ambiente

Teoria

As variáveis ​​de ambiente permitem que você personalize como o sistema funciona e o comportamento dos aplicativos no sistema. Por exemplo, a variável de ambiente pode armazenar informações sobre o editor de texto ou navegador padrão, o caminho para arquivos executáveis ​​ou a localidade do sistema e as configurações de layout do teclado.

Metodologia da Variável de Ambiente é simples;

  • Verifique se há LD_PRELOAD (com a opção env_keep)
  • Escreva uma carga útil compilada como um objeto compartilhado (.so)
  • Execute o programa com o LD_PRELOAD apontando para o nosso arquivo .so

LD_PRELOAD é uma função que permite que qualquer programa use bibliotecas compartilhadas Se a opção “env_keep” estiver habilitada podemos gerar uma biblioteca compartilhada que será carregada e executada antes que o programa seja executado. Observe que a opção LD_PRELOAD será ignorada se o ID do usuário real for diferente do ID do usuário efetivo.

Prático

Verifique se o sistema tem a variável de ambiente LD_PRELOAD definida. (A maioria das distribuições Linux por padrão tem isso ativado)
Compilar a carga útil
Execute o LD_PRELOAD com nosso payload compilado (objeto compartilhado)

9. Escalonamento de Privilégios: Curingas

Teoria

Os curingas são úteis de várias maneiras para um sistema GNU/Linux e para vários outros usos. Os comandos podem usar curingas para executar ações em mais de um arquivo por vez ou para localizar parte de uma frase em um arquivo de texto. Existem muitos usos para curingas, existem duas maneiras principais diferentes de usar curingas, eles são padrões de globbing/curingas padrão que são frequentemente usados ​​pelo shell. A alternativa são as expressões regulares, populares com muitos outros comandos e populares para uso com pesquisa e manipulação de texto.

Verifique isso para aprender o básico sobre diferentes curingas e seu comportamento.

Metodologia Wildcard é simples;

  • Verifique se algum script tem uso de curinga dentro dele.
  • Procure truques de manipulação de curinga AQUI desse comando usado com curinga.
  • Explorar e obter o acesso de proprietário desse script.

Prático

No script do Cronjob acima (compress.sh), há um * curinga usado com o programa tar e está sendo executado a cada 1 minuto com privilégios de root.

Funcionamento do script: O script está mudando sua localização para o diretório inicial do “usuário” e, em seguida, criando um arquivo tar de todos os arquivos/diretórios (*) disponíveis no diretório inicial do “usuário” e salvando-o no diretório /tmp/backup.)

Sabemos que o tar possui opções internas que nos permitem executar ações. Confira esta PÁGINA .

Vamos criar um script de shell reverso simples.

Em seguida, crie um arquivo (cujo nome será a opção tar build-in — checkpoint-action: permite executar um script ou alguma ação.)

Opção de ação de ponto de verificação aqui chamando nosso script de shell reverso.

“se usarmos comandos tar, quando o tar será executado. O tar reconhecerá os nomes dos arquivos e os aceitará como um comando integrado, em vez de apenas um arquivo/nome normal.”

Depois que o tar for executado novamente, ele acionará o shell.elf e obteremos nosso shell de destino.

Se você quiser nos apoiar, pode fazê-lo através do link “compre-me um café” fornecido abaixo.

Ali AK
Redações de InfoSec

WHOAMI > Pesquisador de Segurança | Red Teamer | Jogador CTF competitivo em tempo parcial. Aprendendo coisas novas todos os dias e ajudando aspirantes a hackers. twitter.com/LE0_Hak

Comentários

Ebook

Postagens mais visitadas