Lo primero será descargar un Ubuntu Server:
Y esto lo instalamos en VirtualBox, teniendo en cuenta que la contraseña de la máquina para acceder vía ssh va a ser la siguiente:
communitypenguin:pinguino123
Ahora vamos a crear otro usuario que será el que se va a utilizar para hacer la intrusión a la máquina, por lo que usamos el comando useradd para crearlo. Se va a llamar capybarauser y la contraseña será cabybaramolon:
capybarauser:ie168
Ahora vamos a comprobar que podemos iniciar sesión como este usuario por ssh:
Ahora desde el usuario communitypenguin hacemos la instalación de la base de datos mysql-server:
su communitypenguin apt update apt install mysql-server
Y ahora hacemos que la base de datos siempre se inicie al ejecutar el sistema, además de comprobar que el servicio se encuentre en ejecución:
sudo su systemctl enable mysql systemctl status mysql
A continuación tenemos que hacer visible la base de datos por el puerto 3306 para que nmap pueda encontrarla, por lo que ponemos como bind-address en 0.0.0.0 la siguiente línea del siguiente archivo de configuración:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Y ahora reiniciamos el servicio de la base de datos y además aplicamos una regla para que se permita el tráfico por el puerto 3306 hacia la base de datos, además de comprobar que el firewall se encuentre disponible y funcionando correctamente:
sudo systemctl restart mysql sudo ufw allow 3306 sudo ufw enable
Ahora tenemos que habilitar el acceso al usuario capybarauser y con su contraseña para poder acceder a la base de datos, por lo que accedemos a la base de datos:
mysql
Y ejecutamos los siguientes comandos, primero para registrar el usuario capybarauser dentro de la base de datos, y luego para poder establecer el permiso de acceso para dicho usuario:
CREATE USER 'capybarauser'@'localhost' IDENTIFIED BY 'ie168'; GRANT ALL PRIVILEGES ON *.* TO 'capybarauser'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Y ahora lo mismo para que podamos entrar desde otros equipos:
CREATE USER 'capybarauser'@'%' IDENTIFIED BY 'ie168'; GRANT ALL PRIVILEGES ON *.* TO 'capybarauser'@'%' WITH GRANT OPTION;
Y ahora reiniciamos el servicio y probamos su correcto funcionamiento:
mysql -u capybarauser -pie168
Y lo mismo desde otra máquina:
Para finalizar con esta parte, tenemos que permitir que no haya límite máximo de intentos de inicio de sesión editando el fichero conf.d y añadiendo la siguiente configuración:
Y lo mismo dentro del mysqld:
Y ahora vemos que tenemos el firewall limitando los escaneos de nmap debido a la regla que hemos creado:
Por lo que habilitamos también el acceso al puerto 22:
sudo ufw allow 22
Y ahora vamos a insertar información dentro de la base de datos para que se pueda encontrar el usuario mario con la contraseña pinguinomolon123:
mysql
CREATE DATABASE IF NOT EXISTS pinguinasio_db;
USE pinguinasio_db;
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
user VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
INSERT INTO users (user, password) VALUES ('mario', 'pinguinomolon123');
SELECT * FROM users;
Una vez hecho esto, es momento de crear dicho usuario:
adduser mario
Ahora lo que debemos hacer es configurar el sistema para que sólo el usuario mario pueda entrar vía ssh, de tal forma que para entrar a la base de datos haya que ser el usuario capybarauser y para entrar al sistema el usuario mario:
sudo nano /etc/ssh/sshd_config
Y vemos que ahora no podemos entrar como el usuario capybarauser:
Pero sí con el usuario mario:
mario:pinguinomolon123
EL siguiente paso será instalar un servidor web de apache para que el usuario pueda detectar el nombre de capybarauser y hacer fuerza bruta contra la base de datos:
apt install apache2 systemctl enable apache2
Y ahora tenemos que añadir la regla en el firewall para que permita ver desde fuera el puerto 80:
Y vemos que ahora el firewall sí permite la conexión:
Ahora vamos a crear un html que contenga la pista del nombre de usuario para acceder a la base de datos y la imagen de un capybara:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Web de Capybaras</title> <style> body { font-family: Arial, sans-serif; background-color: #f5f5f5; color: #333; margin: 0; padding: 0; text-align: center; } header { background-color: #4CAF50; padding: 20px; color: white; font-size: 24px; } main { padding: 20px; } footer { background-color: #4CAF50; padding: 10px; position: fixed; bottom: 0; width: 100%; } footer img { max-width: 100%; height: auto; } </style> </head> <body> <header> <h1>Bienvenido a la Web de Capybaras</h1> </header> <main> <p>Hola <strong>capybarauser</strong>, esta es una web de capybaras.</p> </main> <footer> <img src="capybara.jpg" alt="Capybara"> </footer> </body> </html>
Lo enviamos a la máquina community penguin dentro del directorio html:
Reiniciamos el servicio de apache y la web es accesible:
Ahora para escalada de privilegios, vamos a hacer que el binario nmap tenga el bit de setuid, por lo que primero instalamos nmap y luego otorgamos el permiso:
apt install nmap sudo chmod u+s $(which nmap)
Y ahora probamos la escalada de privilegios, donde vemos correctamente el binario de nmap:
Y también podemos contemplar que se pueda escalar privilegios usando el comando sudo -l con nano, por lo que ejecutamos el comando sudo visudo:
sudo visudo
Y añadimos la siguiente línea:
Y vemos que funciona bien:
Y de esta forma presionando control + r y control + x podemos inyectar el siguiente payload:
Hacemos el escaneo de nmap:
Esto es lo que corre por el puerto 80:
Vemos que tiene abierto el puerto 3306 donde corre una base de datos, y posiblemente el usuario sea capybarauser, por lo que hacemos un ataque de fuerza bruta con metasploit, pero su contraseña se encuentra al final del rockyou, por lo que tendremos que invertirle el orden:
tac /usr/share/wordlists/rockyou.txt > test.txt
Pero vemos que no lo ordenó bien:
Y ahora aplicamos la siguiente regex:
Por lo que ahora vemos que está casi corregido, donde solo quitamos los símbolos de las primeras líneas y listo:
Y ahora encuentra bien la contraseña:
Y ahora usaremos el módulo de mysql_login:
Lo primero será impedir que se pueda ejecutar nano como root, por lo que lo eliminamos de visudo:
Y lo borramos:
Y ahora si entramos como mario a la máquina, ya no podemos ejecutar sudo -l:
También desactivamos el binario de nmap al ejecutar el comando
find / -perm -4000 2>/dev/null:
sudo chmod u-s $(which nmap)
Y ahora vamos a cambiar la contraseña del usuario mario por una segura:
mario:dfsdfg?''2""-.,,.:_jfyHG78_
Vemos que vía ssh ya no podemos acceder con la antigua contraseña:
Pero sí con la nueva:
A continuación, cambiamos también la contraseña del usuario communitypenguin, ya que ahora es pinguino123 y no es segura:
communitypenguin:dfsd97834rn_:,,d,d'¡?¿¿iokfns
Y ahora vamos a actualizar la base de datos con la nueva contraseña:
Pero pasamos a hash la nueva contraseña:
mario:f26308b5ca39147c5480de881d400e21
Y cambiamos la el contenido de la columna password:
UPDATE users SET password = 'f26308b5ca39147c5480de881d400e21' WHERE user = 'mario';
Y comprobamos que hayamos cambiado el dato:
Ahora vamos a cambiar la contraseña de acceso para el usuario capybarauser, de tal forma que ahora la contraseña será la siguiente:
capyubarauser:dfiwer98g7f__.2'¡?¿dfgfJHH
Lo hacemos con los siguientes comandos:
ALTER USER 'capybarauser'@'localhost' IDENTIFIED BY 'dfiwer98g7f__.2\'¡?¿dfgfJHH'; ALTER USER 'capybarauser'@'%' IDENTIFIED BY 'dfiwer98g7f__.2\'¡?¿dfgfJHH'; FLUSH PRIVILEGES;
También actualizamos la contraseña de este usuario para el sistema en general:
Y ahora vemos como ya no podemos acceder a la base de datos con la contraseña anterior:
Pero sí con la nueva:
Ahora vamos a quitar el usuario dentro de la web en el puerto 80, por lo que editamos el fichero index.html y ponemos usuario sin más: