Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/murrez/cve-2026-96349
ReconnaissanceGénération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionOutil d'Accès à Distance
GitHubmurrez/cve-2026-96349

CVE-2026-96349

PoC Python et outil d'exploitation de masse pour CVE-2026-96349, une RCE non authentifiée dans le plugin WordPress SiteSkite ≤2.1.8 via l'autologin par clé API et l'évaluation PHP MCP.

1il y a 1 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 →
Voir le dépôt
Partager

CVE-2026-96349 — WordPress SiteSkite ≤ 2.1.8 → chaîne RCE non authentifiée

ChampValeur
CVECVE-2026-96349
ProduitSiteSkite plugin WordPress
Affecté≤ 2.1.8
Corrigé2.2.0
CWECWE-94 — Contrôle inapproprié de la génération de code
CVSS10.0 (Critique) — avis Patchstack
Catalogue PoCbithttps://pocbit.org/pocs/
Page PoCbithttps://pocbit.org/pocs/cve-2026-96349
Marqueur de vérificationPOCBIT-96349-OK

PoC Python dans le même style que CVE-2026-102425 : menu interactif, exploit massif (par défaut), --check, -u, --lab, pool de threads, hits.txt / exploited.txt.


Nature de cette vulnérabilité

Patchstack et le programme CVE décrivent CVE-2026-96349 comme une faille d'exécution de code à distance non authentifiée dans le plugin SiteSkite. Le texte public est volontairement succinct ; le correctif du fournisseur 2.2.0 (septembre 2026) modifie profondément l'authentification et l'auto-connexion. La comparaison statique de 2.1.8 vs 2.2.0 dans ce dépôt (extract-2.1.8/, extract-2.2.0/) montre la surface d'attaque pratique que ce PoC implémente.

SiteSkite est un plugin WebOps volumineux : sauvegardes, API de portail, et MCP IA sur site (« abilities ») incluant des outils avancés qui appellent eval() sur du PHP fourni par l'attaquant (siteskite_execute_php) et l'écriture de fichiers arbitraires (siteskite_write_file). Ces abilities sont accessibles via REST et via admin-ajax.php lorsque le site est lié à une clé API SiteSkite.

L'erreur critique dans ≤ 2.1.8 est que la même clé API de longue durée sert également de jeton de connexion administrateur WordPress non authentifié :

  • AutoLoginController accepte ?token=<siteskite_api_key> sur /siteskite-autologin et, via handle_token_login(), sur n'importe quelle URL front-end incluant ?token=….
  • La comparaison utilise une simple égalité avec get_option('siteskite_api_key') (aucune signature de portail, aucun nonce à usage unique).
  • Une validation réussie appelle wp_set_auth_cookie() pour le premier administrateur, avec contournement 2FA optionnel pour Solid Security / plugins similaires.

2.2.0 supprime ce chemin : les jetons de clé API bruts sont rejetés (vérifications hash_equals, « Login Unavailable »), et la connexion exige des liens signés émis par le portail (AutologinPortalSignature). Le cœur de sécurité du mu-plugin n'honore plus les connexions par clé héritées.

Du point de vue de l'attaquant, la chaîne est la suivante :

  1. Obtenir la clé API SiteSkite du site victime (liens « Login as » du portail, journaux, fuites par referrer, sauvegardes compromises, initié, ou autre bug). Patchstack classe le problème comme RCE non authentifiée car aucun nom d'utilisateur/mot de passe WordPress n'est requis—seulement le secret porteur du plugin, souvent exposé hors site.
  2. Prouver éventuellement la session administrateur via l'autologin (/?token=KEY ou /siteskite-autologin?token=KEY).
  3. Appeler POST /wp-json/siteskite/v1/abilities/execute (ou admin-ajax.php?action=siteskite_api) avec l'en-tête X-SiteSkite-Key: KEY et exécuter siteskite_execute_php ou déposer up.php via siteskite_write_file → POCBIT-96349-OK.

Les outils MCP avancés sont activés par défaut dans 2.1.8 (McpSettings::DEFAULT_ADVANCED = '1'), donc de nombreux sites liés exposent eval une fois la clé connue.


Code affecté (référence)

ComposantComportement en 2.1.8Changement en 2.2.0
includes/Core/AutoLoginController.php?token= égal à la clé API stockée → cookie adminClé brute rejetée ; connexion HMAC du portail uniquement
includes/Mcp/Abilities/AdvancedAbilities.phpsiteskite_execute_php → eval($code)Toujours présent ; conditionné par l'authentification + les paramètres
includes/Mcp/AbilitiesRest.phpX-SiteSkite-Key → exécution des abilitiesMême surface ; l'autologin ne divulgue plus la session sans clé
includes/API/FallbackAPI.phpwp_ajax_nopriv_siteskite_api relaie les abilities lorsque la clé est valideNécessite toujours une clé / clé invité

D'autres routes REST non authentifiées (UploadRest, enregistrement OAuth) existent mais nécessitent des jetons ou PKCE ; elles ne constituent pas la chaîne principale modélisée ici.


Organisation du PoC

FichierRôle
poc.pyCLI / interactif / exploitation de masse
_engine.pyLogique HTTP, métadonnées PoCbit, serveur de labo
up.phpSonde web shell optionnelle (?pocbit=1 → marqueur)
targets.example.txtListe d'URL ; URL<TAB>api_key facultatif
extract-2.1.8/ / extract-2.2.0/Code source du fournisseur pour le diff (non requis pour exécuter le PoC)

Prérequis

  • Python 3.10+
  • pip install requests colorama

Utilisation (exploitation en priorité)

Interactif (mode par défaut = exploit)

python poc.py

Invites : mode, clé API globale facultative, fichier cible, threads (par défaut 16), délai d'expiration.

Exploitation de masse → exploited.txt

python poc.py fofa_targets.txt
python poc.py urls.txt --key YOUR_SITESKITE_API_KEY
python poc.py urls.txt -t 24 -T 25

Clés par cible (tabulation, espace ou barre verticale après l'URL) :

https://customer.example	abc123…siteskiteKey…
https://other.site|anotherKey

Clé de secours via l'environnement : SITESKITE_API_KEY ou SITESKITE_KEY.

Vérification en masse → hits.txt

python poc.py --check fofa_targets.txt

Empreinte : Stable tag de readme.txt, réponse historique /siteskite-autologin en cas de jeton manquant, version ≤ 2.1.8.

Cible unique

python poc.py -u https://target.example --check
python poc.py -u https://target.example --key SITE_SKITE_KEY

Laboratoire local (sans installation de WordPress)

python poc.py --lab

Lance 127.0.0.1:8796 avec un faux readme 2.1.8, autologin et un endpoint abilities ; doit renvoyer "exploited": true.


Flux d'exploitation (moteur)

flowchart LR
  A[Target URL] --> B{readme ≤ 2.1.8?}
  B -->|no| Z[skip / patched]
  B -->|yes| C{API key known?}
  C -->|no| N[needs_api_key]
  C -->|yes| D[POST abilities/execute]
  D --> E{siteskite_execute_php}
  E -->|marker| F[RCE verified]
  E -->|fail| G[autologin ?token=KEY]
  G --> D
  E -->|fail| H[write_file / ajax fallback]
  H --> F
  1. siteskite_execute_php avec echo POCBIT-96349-OK;
  2. Idem via le fallback admin-ajax (route=/abilities/execute)
  3. siteskite_write_file → wp-content/uploads/pocbit_96349.php
  4. eval dépose un helper pour up.php
  5. Autologin puis nouvelle tentative des abilities

Les lignes de résultat JSON incluent pocbit, pocbit_catalog, pocbit_page, les URL de CVE et verify_marker pour les pipelines de journalisation.


Découverte / FOFA (mode check)

Exemples (à adapter à votre indexeur) :

body="/wp-content/plugins/siteskite/"
header="siteskite" && body="wp-content/plugins"

Le mode Check ne fait pas de brute-force sur les clés API. Le mode Exploit nécessite une clé, sauf si vous disposez déjà de paires url\tkey issues de votre propre portail ou de renseignements sur des fuites.


Atténuation

Télécharger l’outil