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
cotonti-commentswidget-poc — Preuve de concept locale sécurisée pour la vulnérabilité d'injection d'objet PHP Cotonti CommentsWidget (CAN-2026-2035973 / CVE-2026-71294). | Kitploit
Outils/GitHubGitHub/harshrajsinghania/cotonti-commentswidget-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebApprentissage et Éducation
GitHubharshrajsinghania/cotonti-commentswidget-poc

cotonti-commentswidget-poc

Preuve de concept locale sécurisée pour la vulnérabilité d'injection d'objet PHP Cotonti CommentsWidget (CAN-2026-2035973 / CVE-2026-71294).

Voir le dépôt
il y a 14h 47mPas 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

Cotonti CommentsWidget PHP Object Injection PoC

Preuve de concept locale sûre pour le problème d'injection d'objet PHP identifié dans l'implémentation CommentsWidget de Cotonti.

Vulnérabilité

  • Projet : Cotonti
  • Composant affecté : plugins/comments/inc/CommentsWidget.php
  • CWE : CWE-502 — Désérialisation de données non fiables
  • CVE/Candidat : CAN-2026-2035973 / CVE-2026-71294
  • Chercheur : Harsh Raj Singhania

Le chemin de code vulnérable accepte le paramètre GET ci et transmet des données contrôlées par l'attaquant via base64_decode() dans le unserialize() de PHP sans restreindre les classes pouvant être instanciées.

Conceptuellement, l'opération vulnérable est :

root@kitploit:~
$ci = @unserialize(base64_decode($ci));

Lorsqu'un objet sérialisé est fourni, PHP peut instancier la classe contrôlée par l'attaquant et invoquer des méthodes magiques telles que . Dans une application plus large, cela peut devenir dangereux lorsque des classes gadget appropriées sont disponibles.

__wakeup()

Le correctif soumis modifie la désérialisation en :

root@kitploit:~
$ci = @unserialize(base64_decode($ci), ['allowed_classes' => false]);

et valide que la valeur résultante possède la structure de tableau attendue avant de l'utiliser.

Ce que cette PoC démontre

poc.php effectue trois tests locaux :

  1. Comportement vulnérable — unserialize() sans restriction instancie DangerousGadget et déclenche sa méthode __wakeup().
  2. Comportement corrigé — allowed_classes => false empêche l'instanciation de la classe gadget et donc l'effet de bord de __wakeup().
  3. Validation structurelle — une valeur sérialisée avec une forme inattendue est rejetée par la logique de validation utilisée par le correctif.

La PoC utilise /tmp/pwned_by_cotonti_poc.txt uniquement comme sentinelle inoffensive montrant que __wakeup() s'est exécuté. Elle n'exécute pas de commande système. La chaîne id && whoami n'existe que comme valeur de remplacement dans la propriété command du gadget.

Prérequis

  • PHP CLI avec support de serialize() / unserialize()
  • Un environnement de test local

Aucune installation de Cotonti n'est requise car le comportement de désérialisation vulnérable et corrigé est reproduit directement.

Exécution de la PoC

Depuis le répertoire du dépôt :

root@kitploit:~
php poc.php

La sortie attendue est similaire à :

root@kitploit:~
[!] DangerousGadget::__wakeup() triggered
[TEST 1] VULNERABLE: __wakeup() executed during unrestricted unserialize().
[TEST 2] FIXED: object instantiation was blocked; no sentinel was created.
[TEST 3] FIXED: invalid serialized structure rejected by validation.

Summary:
- Vulnerable path allows a serialized attacker-controlled object to be instantiated and invokes __wakeup().
- Fixed path uses allowed_classes=false, preventing the gadget class from being instantiated.
- Structural validation rejects values that do not match the expected array shape.
- No real command execution is performed by this PoC; the command property is only a placeholder.

Le script supprime son fichier sentinelle avant de se terminer.

Remédiation

Ne désérialisez pas de données contrôlées par l'attaquant avec le unserialize() PHP sans restriction.

Pour ce chemin de code, l'atténuation démontrée consiste à désactiver l'instanciation de classes :

root@kitploit:~
unserialize($data, ['allowed_classes' => false]);

La valeur désérialisée doit également être validée par rapport à la structure exacte attendue par l'application avant que son contenu ne soit utilisé.

Références

  • Problème de sécurité amont : https://github.com/Cotonti/Cotonti/issues/1888
  • Pull request de correction amont : https://github.com/Cotonti/Cotonti/pull/1889
  • Projet Cotonti : https://github.com/Cotonti/Cotonti

Utilisation responsable

Ce dépôt est destiné à la recherche en sécurité, à la vérification et aux tests défensifs. Exécutez la PoC uniquement dans des environnements que vous possédez ou que vous êtes explicitement autorisé à tester. Ne l'utilisez pas pour cibler des systèmes sans autorisation.

Attribution

Harsh Raj Singhania — recherche sur la vulnérabilité, preuve de concept et divulgation.

Télécharger l’outil