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.
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.
Primero, abre una terminal y navega hasta
/home/labex/project.cd /home/labex/projectComencemos inicializando el entorno del laboratorio:
./env_setup_1.shDespué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.Los servicios web en Linux se almacenan típicamente en el directorio
/var/www. Debemos centrarnos en los siguientes archivos:database.phpuser.php*.configconfig.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/nullSalida 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.phpAdemá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.
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.phpEste archivo contiene las credenciales de la cuenta root de MySQL:
/** MySQL database username */ define( 'DB_USER', 'root' ); /** MySQL database password */ define( 'DB_PASSWORD', 'cD8M2M8fMiDHu4m1' );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.
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.1Ingresa la contraseña del archivo
wp-config.php:cD8M2M8fMiDHu4m1Dentro 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:psoj9apv4uSal de la base de datos MySQL:
exitPodemos 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!
Crea un archivo llamado
proof.txten el directorio/rootpara demostrar la escalada de privilegios exitosa:echo "Success" > /root/proof.txtVerifica 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 el usuario
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
Primero, navega hasta
/home/labex/project.cd /home/labex/projectComencemos inicializando el entorno del laboratorio:
./env_setup_2.shDespués de la inicialización, ahora estamos operando como el usuario
user001.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).
Comencemos comprobando el archivo
~/.bash_profile:cat ~/.bash_profileSalida esperada:
cat: /home/user001/.bash_profile: No such file or directoryEn este caso, el usuario
user001no parece estar utilizando el archivo~/.bash_profile.A continuación, comprobemos el archivo
~/.bash_history:cat ~/.bash_historyAquí, encontramos un comando registrado en el historial:
... echo user001:09FMWNFS7n | chpasswd ...Este comando sugiere que la contraseña del usuario
user001se ha cambiado a09FMWNFS7n.Podemos intentar utilizar esta contraseña para obtener privilegios elevados:
sudo whoamiY ingresamos la contraseña que encontramos en el archivo
~/.bash_history:09FMWNFS7nLa contraseña funciona, y podemos ejecutar comandos con privilegios
sudo.Para obtener una shell de root, podemos utilizar el siguiente comando:
sudo /bin/bash -pHemos obtenido con éxito una shell de root explotando información del historial de comandos del usuario.
Finalmente, crea un archivo llamado
success.txten el directorio/rootpara 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.