Encontre e Explote Arquivos de Configuração Sensíveis para Escalada de Privilégios no Nmap

Beginner

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.

  1. Primeiro, abra um terminal e navegue até /home/labex/project.

    cd /home/labex/project
    

    Vamos começar inicializando o ambiente do laboratório:

    ./env_setup_1.sh
    

    Apó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.

  2. Serviços web no Linux são tipicamente armazenados no diretório /var/www. Devemos focar nos seguintes arquivos:

    • database.php
    • user.php
    • *.config
    • config.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/null
    

    Saí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.php
    

    Adicionalmente, 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.

  3. 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.php
    

    Este arquivo contém as credenciais da conta root do MySQL:

    /** MySQL database username */
    define( 'DB_USER', 'root' );
    
    /** MySQL database password */
    define( 'DB_PASSWORD', 'cD8M2M8fMiDHu4m1' );
    
  4. 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.

  5. Em seguida, podemos fazer login no banco de dados MySQL e procurar mais informações:

    mysql -u root -p -h 127.0.0.1
    

    Insira a senha do arquivo wp-config.php:

    cD8M2M8fMiDHu4m1
    

    Dentro 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:psoj9apv4u
    

    Saia do banco de dados MySQL:

    exit
    
  6. Podemos tentar fazer login como o usuário root usando a senha CMPc5MoAGf:

    su -
    

    Insira a senha que obtivemos do banco de dados:

    CMPc5MoAGf
    

    Desta vez, ganhamos acesso root com sucesso!

  7. Crie um arquivo chamado proof.txt no diretório /root para demonstrar a escalada de privilégios bem-sucedida:

    echo "Success" > /root/proof.txt
    

    Verifique se o arquivo foi criado:

    ls /root/proof.txt
    

    Nesta 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
  1. Primeiro, navegue até /home/labex/project.

    cd /home/labex/project
    

    Vamos começar inicializando o ambiente do laboratório:

    ./env_setup_2.sh
    

    Após a inicialização, estamos agora operando como o usuário user001.

  2. 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).
  3. Vamos começar verificando o arquivo ~/.bash_profile:

    cat ~/.bash_profile
    

    Saída esperada:

    cat: /home/user001/.bash_profile: No such file or directory
    

    Neste caso, o usuário user001 não parece estar usando o arquivo ~/.bash_profile.

  4. Em seguida, vamos verificar o arquivo ~/.bash_history:

    cat ~/.bash_history
    

    Aqui, encontramos um comando registrado no histórico:

    ...
    echo user001:09FMWNFS7n | chpasswd
    ...
    

    Este comando sugere que a senha do usuário user001 foi alterada para 09FMWNFS7n.

  5. Podemos tentar usar esta senha para obter privilégios elevados:

    sudo whoami
    

    E insira a senha que encontramos no arquivo ~/.bash_history:

    09FMWNFS7n
    

    A senha funciona, e podemos executar comandos com privilégios sudo.

  6. Para obter um shell root, podemos usar o seguinte comando:

    sudo /bin/bash -p
    

    Obtivemos com sucesso um shell root explorando informações do histórico de comandos do usuário.

  7. Finalmente, crie um arquivo chamado success.txt no diretório /root para 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.