
Exploit PoC pour CVE-2025-68999 - Injection SQL de second ordre dans Happy Addons pour Elementor <= 3.20.4
Happy Addons for Elementor <= 3.20.4 — Injection SQL de second ordre authentifiée (Contributeur+)
| CVSS | 8.5 ÉLEVÉE |
| Affectées | <= 3.20.4 |
| Corrigée | 3.20.6 |
| Rôle minimum | Contributeur (edit_posts) |
| Vecteur | Réseau / Complexité faible / Privilèges faibles |
duplicate_meta_entries() dans classes/clone-handler.php copie les lignes de métadonnées de publication vers une publication clonée à l'aide d'un INSERT en masse fait maison. Elle récupère les lignes en toute sécurité avec $wpdb->prepare(), mais insère ensuite $entry->meta_key directement dans la chaîne SQL sans échappement :
$_records[] = "( $duplicated_post_id, '{$entry->meta_key}', '{$_value}' )";
// ...
$wpdb->query( $query );
Comme meta_key provient de la base de données, le code le considère comme fiable. Mais les Contributeurs peuvent définir des noms de champs arbitraires via le panneau Champs personnalisés — ils contrôlent donc ce qui se trouve dans cette colonne.
L'attaque se déroule en deux étapes :
add_post_meta() gère cela en toute sécurité — la charge utile arrive dans la base de données sans rien exécuter.duplicate_meta_entries() relit la clé et la concatène dans l'INSERT brut. MySQL exécute la sous-requête injectée.L'analyse statique ne détecte pas ce problème car la source des données dangereuses est une lecture en base ($wpdb->get_results()), que les moteurs d'analyse de taint marquent comme assainie. La frontière de stockage rompt la chaîne de taint.
Tout Contributeur peut extraire :
wp_options (clés API, identifiants de paiement)Plus de 400 000 installations actives étaient concernées au moment de la divulgation.
pip install requests
python3 poc.py https://target.com contributor p4ss
Le script s'authentifie via HTTP, stocke la charge utile d'injection comme nom de champ personnalisé, déclenche l'action Happy Clone et lit le hash divulgué depuis les champs de métadonnées de la publication clonée. La sortie est enregistrée dans hash.txt.
hashcat -m 400 hash.txt rockyou.txt
https://folks-iwd.github.io/writeups/cve-2025-68999.html
| Date | Événement |
|---|---|
| Décembre 2025 | Découverte via le diff SVN. PoC confirmé. |
| Décembre 2025 | Signalé à Patchstack Alliance avec l'analyse complète et le PoC. |
| Janvier 2026 | weDevs a publié le correctif en v3.20.6. |
| 23 janvier 2026 | CVE-2025-68999 publiée. CVSS 8.5 ÉLEVÉE attribuée. |
weDevs a remplacé tout l'INSERT fait maison par :
foreach ( $entries as $entry ) {
update_post_meta( $duplicated_post_id, $entry->meta_key, $entry->meta_value );
}
update_post_meta() appelle en interne $wpdb->update() avec des requêtes préparées pour la clé et la valeur.