
📦 Pluck CMS 4.7.18 - Exploit RCE autenticato (CVE-2023-50564). Bypass delle restrizioni di upload ed esecuzione remota. 🎯
exploit.py 🐍💥
⚠️ Avviso legale/etico: questo script è solo per ambienti autorizzati ✅ (CTF, laboratori, pentesting con permesso). Non utilizzarlo contro sistemi senza autorizzazione ❌.
🧾 Cosa fa questo script?
exploit_greenhorn.py automatizza una catena di sfruttamento tipica in un pannello web:
✅ Effettua il login nel pannello (necessita di una password valida) ✅ Crea uno ZIP in memoria (senza scrivere file locali) 📦 ✅ Inserisce un rev.php con una reverse shell 🔁🐚 ✅ Carica lo ZIP come “modulo” nel pannello 🧩⬆️ ✅ “Innesca” il payload aprendo l'URL del PHP caricato 🚀
📌 Il nome del modulo viene generato casualmente per evitare conflitti (ad esempio: abcdefg, xqpmzui, ecc.) 🎲
🧰 Requisiti
Python 3.8+ 🐍
Dipendenza: requests 📌
Installazione: installa la libreria requests con pip (pip install requests) ✅
⚙️ Configurazione (IMPORTANTE 🔧)
All'interno dello script c'è una sezione “TUOI DATI” che devi modificare:
RHOST_DOMAIN 🌐 → URL del target (include http:// o https://)
LHOST_IP 🧭 → la tua IP dove vuoi ricevere la shell (di solito quella della VPN/tun0)
LHOST_PORT 🔌 → porta su cui ascoltare
PASSWORD 🔑 → password del pannello (lo script non fa brute force)
✅ Consiglio: la cosa più comune che fallisce è LHOST_IP (imposta l'IP corretto della tua interfaccia VPN) 😅
🎧 Listener (prima di eseguire)
Prima di lanciare l'exploit, apri un listener per ricevere la reverse shell 👂🐚
Esempio: netcat in ascolto sulla stessa porta che hai impostato in LHOST_PORT (ad esempio 4444). Se non stai ascoltando, non arriva niente 📭.
▶️ Utilizzo
Configura RHOST_DOMAIN, LHOST_IP, LHOST_PORT e PASSWORD ✅
Apri il tuo listener 🎧
Esegui lo script con Python 🐍
Output tipico che puoi vedere:
[] Obiettivo: http://greenhorn.htb
[] Creando modulo pulito: xqpmzui [] Effettuando il login... [+] Login OK. [] Caricando payload... [*] Attivando su: http://greenhorn.htb/data/modules/xqpmzui/rev.php
[+] Timeout! (Buon segno, controlla il tuo netcat)
😎 Attenzione: il “Timeout! (Buon segno)” di solito è NORMALE ✅ Perché quando il PHP apre la reverse shell, la richiesta web può rimanere “in sospeso” mentre la sessione interattiva è viva 🔁
🧠 Come funziona internamente? (spiegato semplice)
Genera un nome casuale per il modulo 🎲
Crea uno ZIP in memoria 📦 (struttura piatta, senza cartelle interne)
All'interno inserisce rev.php con una reverse shell che si connette al tuo LHOST_IP:LHOST_PORT 📡
Effettua il login su /login.php 🔑 (include Referer per compatibilità)
Carica lo ZIP su /admin.php?action=installmodule ⬆️🧩
Esegue il payload accedendo a /data/modules/<module_name>/rev.php 🚀🐚
🧪 Troubleshooting (se qualcosa non funziona)
❌ Login fallito
Controlla PASSWORD 🔑
Conferma che l'endpoint è /login.php
Nei lab a volte è necessario riavviare la macchina/servizio 🔄
❌ La shell non arriva
Verifica LHOST_IP 🧭 (l'IP corretto, di solito tun0)
Conferma che stai ascoltando sulla porta corretta 🔌🎧
Prova un'altra porta se c'è filtraggio (ad esempio 443 o 9001) 🚧
❌ 404 all'attivazione
Potrebbe non essere stato installato il modulo 🧩
Alcune installazioni cambiano i percorsi; controlla la struttura di /data/modules/ 📁
🛡️ Note
Non lascia ZIP sul disco locale (tutto va in memoria) ✅
Importa sys ma non viene usato (se vuoi, puoi pulirlo) 🧹
Usalo con la testa 🧠😄
✅ Disclaimer finale
Senza garanzia. Solo uso educativo e autorizzato. Se lo usi senza permesso, è tua responsabilità 🚫⚖️