Evasión en Linux y Bypass de Autenticación: El Arte de lo Invisible
En el panorama actual de la ciberseguridad, las restricciones de entrada y los WAF son cada vez más estrictos. Sin embargo, la flexibilidad intrínseca de los sistemas operativos y los errores humanos en el ciclo de desarrollo abren puertas a técnicas de evasión que desafían la lógica convencional de seguridad. Analizaremos dos vectores críticos: la ejecución de comandos en Linux sin utilizar una sola letra, y el bypass de autenticación mediante cabeceras de depuración olvidadas.
Autor: 0n3Z3r0 | Roles: SysAdmin Senior & Ethical Hacker.
Objetivo: Comprender cómo los atacantes evaden filtros de seguridad en Linux y explotan descuidos del ciclo de desarrollo para saltarse la autenticación.
Vectores: Bash Globbing (evasión de filtros) + Custom Headers (bypass de auth).
1. Hacking "Sin Letras": El Poder del Globbing en Bash
¿Es posible tomar el control de una consola Linux si el sistema prohíbe escribir cualquier letra del abecedario? La respuesta es sí. La clave reside en el Globbing, o expansión de comodines de Bash. Antes de ejecutar cualquier orden, Bash busca en las rutas indicadas los archivos que encajen con el patrón de símbolos, sustituyendo los comodines por los nombres reales. Un atacante puede aprovechar este comportamiento para invocar binarios del sistema sin escribir ni una sola letra.
/???/???
# Invocar base64 para leer archivos sensibles (8 chars terminados en "64")
/???/??????64 /???/????/?????.???
# Excluir archivos con guión bajo usando filtrado negativo
/???/[!_][!_][!_]
La técnica funciona porque Bash realiza la expansión antes de ejecutar la orden: si el atacante envía /???/??????64, Bash busca en directorios de tres letras un archivo de ocho caracteres que termine en "64". Al encontrar base64, lo sustituye y lo ejecuta. Los filtros que bloquean cadenas de texto (letras) no detectan nada porque nunca se escribió ninguna.
| Técnica / Concepto | Descripción |
|---|---|
* y ? (Globbing) |
* representa múltiples caracteres; ? representa exactamente uno. Bash los expande buscando archivos reales antes de ejecutar el comando. |
| Representación de rutas con símbolos | Directorios críticos como /bin/ o /etc/ (3 letras) se representan como /???/. Bash los resuelve solo. |
| Ejecución vía ruta absoluta | base64 (8 caracteres terminados en "64") se invoca como /???/??????64. Útil para codificar y extraer archivos sensibles. |
Filtrado negativo [!_] |
Excluye de la coincidencia los archivos que contienen guiones bajos, permitiendo precisar el objetivo sin nombrarlo directamente. |
| Fusing de directorios | Ejecutar un directorio fuerza un error del sistema cuyo mensaje puede revelar nombres de archivos ocultos en esa ruta. |
🎓 Explicación no técnica
Imagina que estás en una habitación donde no puedes decir el nombre de nada en voz alta. Si quieres que alguien te pase la pelota, dices: "Pásame el objeto redondo que rima con bota". La persona mira, encuentra la pelota y te la pasa. En Linux, los signos ? son ese "objeto de un carácter cualquiera": si pones los suficientes, el sistema acaba encontrando lo que buscas aunque nunca hayas dicho su nombre.
2. "Crack the Gate": Bypass de Autenticación mediante Cabeceras de Desarrollo
A menudo, la mayor vulnerabilidad de una aplicación no es un fallo técnico complejo, sino la presencia de mecanismos de depuración que nunca fueron eliminados antes de pasar a producción. Durante la fase de desarrollo, los programadores implementan "atajos" para no tener que loguearse constantemente. El problema crítico surge cuando esta lógica llega al servidor final sin ser limpiada.
<!-- X-DEF-Access header: remove before pushing to production -->
# Paso 2: Se descifra el mensaje ofuscado (ROT13) y se obtiene el valor
# Paso 3: Se inyecta la cabecera con Burp Suite / Kaido
X-DEF-Access: yes
# Resultado: sesión de administrador sin contraseña
{ "success": true, "session": "admin", "flag": "HTB{...}" }
El backend está programado para verificar si la cabecera X-DEF-Access tiene el valor yes. Si es así, la lógica de validación de la base de datos se omite por completo y el sistema otorga una sesión de administrador automáticamente. El fallo es crítico porque esta lógica nunca fue eliminada al subir la aplicación a producción.
| Técnica / Herramienta | Rol en el ataque |
|---|---|
| DevTools (F12) | Lectura del código fuente de la página de login para localizar comentarios con notas de desarrolladores. |
| CyberChef / ROT13 | Descifrado del mensaje ofuscado que revela el nombre y valor exacto de la cabecera de bypass. |
| Burp Suite / Kaido | Interceptación de la petición de login para inyectar X-DEF-Access: yes antes de que llegue al servidor. |
Custom Header (X-DEF-Access) |
Cabecera no estándar que el backend procesa para omitir la validación de credenciales y otorgar sesión de administrador. |
🎓 Explicación no técnica
Es como si un banco tuviera una puerta blindada con clave, pero el constructor dejó una nota pegada en una ventana trasera: "Si golpeas tres veces y dices 'soy el jefe', la puerta se abre sola". Lo puso para entrar rápido mientras construía el banco, pero se olvidó de quitarlo cuando abrió al público. Un atacante solo tiene que leer la nota y pronunciar las palabras mágicas.
3. Conclusión: Mitigaciones que Sí Funcionan
Estas técnicas demuestran que la seguridad no solo depende de parches de software, sino de una higiene de desarrollo estricta y un conocimiento profundo del entorno de ejecución. Las dos vulnerabilidades analizadas comparten el mismo origen: configuraciones permisivas que nadie revisó antes de llegar a producción.
| Vector | Mitigación recomendada |
|---|---|
| Globbing / evasión de shell | Restringir caracteres especiales en entradas que interactúen con la shell. Limitar binarios disponibles con entornos controlados (chroot, contenedores, allowlists). |
| Cabeceras de depuración | Usar herramientas de escaneo estático (SAST) para detectar funciones de debug antes del despliegue. Nunca confiar en cabeceras HTTP personalizadas para decisiones de autorización en producción. |
| Comentarios en código fuente | Implementar pipelines de CI/CD que detecten patrones como TODO, FIXME, claves hardcodeadas o comentarios con instrucciones de acceso antes de cada merge a producción. |
Globbing: Sistema de búsqueda de archivos mediante comodines (*, ?) en Bash. Se ejecuta antes del comando, expandiendo patrones a nombres reales.
Ruta absoluta: Dirección completa de un archivo desde la raíz del sistema (ej. /bin/cat).
ROT13: Cifrado de sustitución simple donde cada letra se desplaza 13 posiciones. Usado frecuentemente para ofuscación básica en comentarios de código.
Custom Header: Cabecera HTTP no estándar definida por el desarrollador para uso interno, como X-DEF-Access.
WAF: Web Application Firewall. Capa de seguridad que filtra tráfico HTTP/S en busca de patrones maliciosos conocidos.
> SYSTEM_READY > NODE_ONLINE