Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cotonti-commentswidget-poc — Sicherer lokaler Proof of Concept für die PHP-Object-Injection-Schwachstelle in Cotonti CommentsWidget (CAN-2026-2035973 / CVE-2026-71294). | Kitploit
Tools/GitHubGitHub/harshrajsinghania/cotonti-commentswidget-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationLernen & Bildung
GitHubharshrajsinghania/cotonti-commentswidget-poc

cotonti-commentswidget-poc

Sicherer lokaler Proof of Concept für die PHP-Object-Injection-Schwachstelle in Cotonti CommentsWidget (CAN-2026-2035973 / CVE-2026-71294).

Repository anzeigen
vor 14h 47mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Cotonti CommentsWidget PHP Object Injection PoC

Sicherer lokaler Proof of Concept für die PHP-Object-Injection-Schwachstelle, die in der CommentsWidget-Implementierung von Cotonti identifiziert wurde.

Schwachstelle

  • Projekt: Cotonti
  • Betroffene Komponente: plugins/comments/inc/CommentsWidget.php
  • CWE: CWE-502 — Deserialisierung nicht vertrauenswürdiger Daten
  • CVE/Kandidat: CAN-2026-2035973 / CVE-2026-71294
  • Forscher: Harsh Raj Singhania

Der verwundbare Codepfad akzeptiert den GET-Parameter ci und übergibt angreiferkontrollierte Daten durch base64_decode() an PHPs unserialize(), ohne einzuschränken, welche Klassen instanziiert werden dürfen.

Konzeptionell ist die verwundbare Operation:

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

Wenn ein serialisiertes Objekt übergeben wird, kann PHP die vom Angreifer kontrollierte Klasse instanziieren und Magic Methods wie aufrufen. In einer größeren Anwendung kann dies gefährlich werden, wenn geeignete Gadget-Klassen verfügbar sind.

__wakeup()

Der eingereichte Fix ändert die Deserialisierung zu:

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

und validiert, dass der resultierende Wert die erwartete Array-Struktur aufweist, bevor er verwendet wird.

Was dieser PoC demonstriert

poc.php führt drei lokale Tests durch:

  1. Verwundbares Verhalten — uneingeschränktes unserialize() instanziiert DangerousGadget und löst dessen __wakeup()-Methode aus.
  2. Behobenes Verhalten — allowed_classes => false verhindert, dass die Gadget-Klasse instanziiert wird, und verhindert somit den Seiteneffekt von __wakeup().
  3. Strukturelle Validierung — ein serialisierter Wert mit unerwarteter Form wird von der Validierungslogik des Fixes abgelehnt.

Der PoC verwendet /tmp/pwned_by_cotonti_poc.txt nur als harmlosen Sentinel, der zeigt, dass __wakeup() ausgeführt wurde. Er führt nicht einen Betriebssystembefehl aus. Die Zeichenkette id && whoami existiert nur als Platzhalterwert in der command-Eigenschaft des Gadgets.

Anforderungen

  • PHP CLI mit Unterstützung für serialize() / unserialize()
  • Eine lokale Testumgebung

Eine Cotonti-Installation ist nicht erforderlich, da das verwundbare und das behobene Deserialisierungsverhalten direkt reproduziert werden.

Ausführen des PoC

Aus dem Repository-Verzeichnis:

root@kitploit:~
php poc.php

Die erwartete Ausgabe ähnelt:

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.

Das Skript entfernt seine Sentinel-Datei vor dem Beenden.

Behebung

Deserialisieren Sie keine angreiferkontrollierten Daten mit uneingeschränktem PHP unserialize().

Für diesen Codepfad ist die demonstrierte Gegenmaßnahme, die Klasseninstanziierung zu deaktivieren:

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

Der deserialisierte Wert sollte außerdem gegen die exakte Struktur validiert werden, die von der Anwendung erwartet wird, bevor sein Inhalt verwendet wird.

Referenzen

  • Upstream-Sicherheitsproblem: https://github.com/Cotonti/Cotonti/issues/1888
  • Upstream-Fix-Pull-Request: https://github.com/Cotonti/Cotonti/pull/1889
  • Cotonti-Projekt: https://github.com/Cotonti/Cotonti

Verantwortungsvolle Nutzung

Dieses Repository ist für Sicherheitsforschung, Verifikation und defensives Testen gedacht. Führen Sie den PoC nur in Umgebungen aus, die Ihnen gehören oder für die Sie ausdrücklich autorisiert sind, Tests durchzuführen. Verwenden Sie ihn nicht, um Systeme ohne Genehmigung anzugreifen.

Namensnennung

Harsh Raj Singhania — Schwachstellenforschung, Proof of Concept und Offenlegung.

Tool herunterladen