Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/harshrajsinghania/cotonti-commentswidget-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebApprendimento e Formazione
GitHubharshrajsinghania/cotonti-commentswidget-poc

cotonti-commentswidget-poc

Proof of concept locale sicuro per la vulnerabilità di iniezione di oggetti PHP in Cotonti CommentsWidget (CAN-2026-2035973 / CVE-2026-71294).

Vedi Repository
14h 46m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Cotonti CommentsWidget PHP Object Injection PoC

Proof of concept locale sicura per il problema di PHP object injection identificato nell'implementazione CommentsWidget di Cotonti.

Vulnerabilità

  • Progetto: Cotonti
  • Componente interessata: plugins/comments/inc/CommentsWidget.php
  • CWE: CWE-502 — Deserializzazione di dati non attendibili
  • CVE/Candidato: CAN-2026-2035973 / CVE-2026-71294
  • Ricercatore: Harsh Raj Singhania

Il percorso di codice vulnerabile accetta il parametro GET ci e passa dati controllati dall'attaccante attraverso base64_decode() in unserialize() di PHP senza limitare quali classi possono essere istanziate.

Concettualmente, l'operazione vulnerabile è:

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

Quando viene fornito un oggetto serializzato, PHP può istanziare la classe controllata dall'attaccante e invocare metodi magici come . In un'applicazione più ampia questo può diventare pericoloso quando sono disponibili classi gadget adatte.

__wakeup()

La correzione proposta modifica la deserializzazione in:

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

e convalida che il valore risultante abbia la struttura ad array attesa prima di utilizzarlo.

Cosa dimostra questo PoC

poc.php esegue tre test locali:

  1. Comportamento vulnerabile — unserialize() senza restrizioni istanzia DangerousGadget e attiva il suo metodo __wakeup().
  2. Comportamento corretto — allowed_classes => false impedisce l'istanziazione della classe gadget e quindi previene l'effetto collaterale di __wakeup().
  3. Validazione strutturale — un valore serializzato con una forma inattesa viene rifiutato dalla logica di validazione utilizzata dalla correzione.

Il PoC utilizza /tmp/pwned_by_cotonti_poc.txt solo come sentinella innocua che dimostra che __wakeup() è stato eseguito. Non esegue un comando del sistema operativo. La stringa id && whoami esiste solo come valore segnaposto nella proprietà command del gadget.

Requisiti

  • PHP CLI con supporto a serialize() / unserialize()
  • Un ambiente di test locale

Non è richiesta un'installazione di Cotonti perché il comportamento di deserializzazione vulnerabile e corretto viene riprodotto direttamente.

Esecuzione del PoC

Dalla directory del repository:

root@kitploit:~
php poc.php

L'output atteso è simile a:

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.

Lo script rimuove il suo file sentinella prima di terminare.

Remediation

Non deserializzare dati controllati dall'attaccante con unserialize() di PHP senza restrizioni.

Per questo percorso di codice, la mitigazione dimostrata consiste nel disabilitare l'istanziazione delle classi:

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

Il valore deserializzato dovrebbe anche essere convalidato rispetto alla struttura esatta attesa dall'applicazione prima che il suo contenuto venga utilizzato.

Riferimenti

  • Problema di sicurezza upstream: https://github.com/Cotonti/Cotonti/issues/1888
  • Pull request di correzione upstream: https://github.com/Cotonti/Cotonti/pull/1889
  • Progetto Cotonti: https://github.com/Cotonti/Cotonti

Uso responsabile

Questo repository è destinato alla ricerca sulla sicurezza, alla verifica e ai test difensivi. Esegui il PoC solo in ambienti che possiedi o che sei esplicitamente autorizzato a testare. Non utilizzarlo per attaccare sistemi senza autorizzazione.

Attribuzione

Harsh Raj Singhania — ricerca sulla vulnerabilità, proof of concept e divulgazione.

Scarica lo strumento