Hola capybarauser, esta es una web de capybaras.
communitypenguin:pinguino123
{{pasted_image_20231116120255.png|}}
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
{{pasted_image_20231116123307.png|}}
Ahora vamos a comprobar que podemos iniciar sesión como este usuario por ssh:
{{pasted_image_20231116123424.png|}}
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
{{pasted_image_20231116123814.png|}}
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
{{pasted_image_20231116124219.png|}}
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
{{pasted_image_20231116124408.png|}}
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
{{pasted_image_20231116124704.png|}}
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;
{{pasted_image_20231116125329.png|}}
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;
{{pasted_image_20231116132519.png|}}
Y ahora reiniciamos el servicio y probamos su correcto funcionamiento:
mysql -u capybarauser -pie168
{{pasted_image_20231116125513.png|}}
Y lo mismo desde otra máquina:
{{pasted_image_20231116135412.png|}}
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:
{{pasted_image_20231116152056.png|}}
Y lo mismo dentro del mysqld:
{{pasted_image_20231116154146.png|}}
Y ahora vemos que tenemos el firewall limitando los escaneos de nmap debido a la
regla que hemos creado:
{{pasted_image_20231116125730.png|}}
Por lo que habilitamos también el acceso al puerto 22:
sudo ufw allow 22
{{pasted_image_20231116125840.png|}}
{{pasted_image_20231116125913.png|}}
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;
{{pasted_image_20231116130649.png|}}
Una vez hecho esto, es momento de crear dicho usuario:
adduser mario
{{pasted_image_20231116131019.png|}}
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
{{pasted_image_20231116131313.png|}}
Y vemos que ahora no podemos entrar como el usuario capybarauser:
{{pasted_image_20231116131432.png|}}
Pero sí con el usuario mario:
mario:pinguinomolon123
{{pasted_image_20231116131515.png|}}
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
{{pasted_image_20231116133118.png|}}
Y ahora tenemos que añadir la regla en el firewall para que permita ver desde
fuera el puerto 80:
{{pasted_image_20231116133226.png|}}
Y vemos que ahora el firewall sí permite la conexión:
{{pasted_image_20231116133318.png|}}
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:
Web de Capybaras
Bienvenido a la Web de Capybaras
Hola capybarauser, esta es una web de capybaras.
{{pasted_image_20231116133943.png|}}
Lo enviamos a la máquina community penguin dentro del directorio html:
{{pasted_image_20231116134110.png|}}
Reiniciamos el servicio de apache y la web es accesible:
{{pasted_image_20231116134544.png|}}
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)
{{pasted_image_20231116135512.png|}}
Y ahora probamos la escalada de privilegios, donde vemos correctamente el
binario de nmap:
{{pasted_image_20231116135848.png|}}
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:
{{pasted_image_20231116141459.png|}}
Y vemos que funciona bien:
{{pasted_image_20231116141553.png|}}
Y de esta forma presionando control + r y control + x podemos inyectar el
siguiente payload:
{{pasted_image_20231116141642.png|}}
{{pasted_image_20231116141711.png|}}
====== RESOLUCIÓN ======
Hacemos el escaneo de nmap:
{{pasted_image_20231116155137.png|}}
Esto es lo que corre por el puerto 80:
{{pasted_image_20231116155322.png|}}
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:
{{pasted_image_20231116155453.png|}}
tac /usr/share/wordlists/rockyou.txt > test.txt
Pero vemos que no lo ordenó bien:
{{pasted_image_20231116160321.png|}}
Y ahora aplicamos la siguiente regex:
{{pasted_image_20231116160521.png|}}
Por lo que ahora vemos que está casi corregido, donde solo quitamos los símbolos
de las primeras líneas y listo:
{{pasted_image_20231116160606.png|}}
Y ahora encuentra bien la contraseña:
{{pasted_image_20231116160648.png|}}
Y ahora usaremos el módulo de mysql_login:
{{pasted_image_20231116155620.png|}}
{{pasted_image_20231116154331.png|}}
===== PROCESO DE SECURIZACIÓN =====
Lo primero será impedir que se pueda ejecutar nano como root, por lo que lo
eliminamos de visudo:
{{pasted_image_20231129092641.png|}}
Y lo borramos:
{{pasted_image_20231129092659.png|}}
Y ahora si entramos como mario a la máquina, ya no podemos ejecutar sudo -l:
{{pasted_image_20231129093149.png|}}
También desactivamos el binario de nmap al ejecutar el comando
''find / -perm -4000 2>/dev/null'':
sudo chmod u-s $(which nmap)
{{pasted_image_20231129095301.png|}}
Y ahora vamos a cambiar la contraseña del usuario mario por una segura:
mario:dfsdfg?''2""-.,,.:_jfyHG78_
{{pasted_image_20231129093555.png|}}
Vemos que vía ssh ya no podemos acceder con la antigua contraseña:
{{pasted_image_20231129095531.png|}}
Pero sí con la nueva:
{{pasted_image_20231129095549.png|}}
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:
{{pasted_image_20231129093648.png|}}
Pero pasamos a hash la nueva contraseña:
mario:f26308b5ca39147c5480de881d400e21
{{pasted_image_20231129093755.png|}}
Y cambiamos la el contenido de la columna password:
UPDATE users
SET password = 'f26308b5ca39147c5480de881d400e21'
WHERE user = 'mario';
{{pasted_image_20231129093957.png|}}
Y comprobamos que hayamos cambiado el dato:
{{pasted_image_20231129094048.png|}}
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:
{{pasted_image_20231129094933.png|}}
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:
{{pasted_image_20231129100330.png|}}
Y ahora vemos como ya no podemos acceder a la base de datos con la contraseña
anterior:
{{pasted_image_20231129095004.png|}}
Pero sí con la nueva:
{{pasted_image_20231129095046.png|}}
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:
{{pasted_image_20231129095411.png|}}