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
-Pluck-CMS-RCE-CVE-2023-50564 — 📦 Pluck CMS 4.7.18 - Exploit RCE authentifié (CVE-2023-50564). Contournement des restrictions de téléversement et exécution à distance. 🎯 | Kitploit
Outils/GitHubGitHub/kikechans/-pluck-cms-rce-cve-2023-50564
Génération de PayloadsExploitationExploitation d'Applications WebCTFTests d'IntrusionApprentissage et Éducation
GitHubkikechans/-pluck-cms-rce-cve-2023-50564

-Pluck-CMS-RCE-CVE-2023-50564

📦 Pluck CMS 4.7.18 - Exploit RCE authentifié (CVE-2023-50564). Contournement des restrictions de téléversement et exécution à distance. 🎯

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

exploit.py 🐍💥

⚠️ Aviso legal / ético: este script es solo para entornos autorizados ✅ (CTFs, laboratorios, pentesting con permiso). No lo uses contra sistemas sin autorización ❌.

→ traduction:

exploit.py 🐍💥

⚠️ Avertissement légal / éthique : ce script est réservé aux environnements autorisés ✅ (CTF, laboratoires, pentest avec permission). Ne l'utilisez pas contre des systèmes sans autorisation ❌.

🧾 ¿Qué hace este script?

exploit_greenhorn.py automatiza una cadena de explotación típica en un panel web:

✅ Hace login en el panel (necesitas contraseña válida) ✅ Crea un ZIP en memoria (sin escribir archivos locales) 📦 ✅ Mete dentro un rev.php con una reverse shell 🔁🐚 ✅ Sube el ZIP como “módulo” al panel 🧩⬆️ ✅ “Detona” el payload abriendo la URL del PHP subido 🚀

📌 El nombre del módulo se genera aleatorio para evitar conflictos (por ejemplo: abcdefg, xqpmzui, etc.) 🎲

→ traduction:

🧾 Que fait ce script ?

exploit_greenhorn.py automatise une chaîne d'exploitation typique sur un panneau web :

✅ Se connecte au panneau (vous avez besoin d'un mot de passe valide) ✅ Crée un ZIP en mémoire (sans écrire de fichiers locaux) 📦 ✅ Y place un rev.php avec un reverse shell 🔁🐚 ✅ Téléverse le ZIP en tant que « module » sur le panneau 🧩⬆️ ✅ « Détonne » le payload en ouvrant l'URL du PHP téléversé 🚀

📌 Le nom du module est généré aléatoirement pour éviter les conflits (par exemple : abcdefg, xqpmzui, etc.) 🎲

🧰 Requisitos

Python 3.8+ 🐍

Dependencia: requests 📌

Instalación: instala la librería requests con pip (pip install requests) ✅

→ traduction:

🧰 Prérequis

Python 3.8+ 🐍

Dépendance : requests 📌

Installation : installez la bibliothèque requests avec pip (pip install requests) ✅

⚙️ Configuración (IMPORTANTE 🔧)

Dentro del script hay una sección “TUS DATOS” que debes ajustar:

RHOST_DOMAIN 🌐 → URL del objetivo (incluye http:// o https://)

LHOST_IP 🧭 → tu IP donde quieres recibir la shell (normalmente la de la VPN/tun0)

LHOST_PORT 🔌 → puerto donde vas a escuchar

PASSWORD 🔑 → contraseña del panel (el script no hace brute force)

✅ Consejo: lo más común que falle es LHOST_IP (pon la IP correcta de tu interfaz de VPN) 😅

→ traduction:

⚙️ Configuration (IMPORTANT 🔧)

Dans le script, il y a une section « TUS DATOS » que vous devez ajuster :

RHOST_DOMAIN 🌐 → URL de la cible (incluez http:// ou https://)

LHOST_IP 🧭 → votre IP où vous voulez recevoir le shell (généralement celle de la VPN/tun0)

LHOST_PORT 🔌 → port sur lequel vous allez écouter

PASSWORD 🔑 → mot de passe du panneau (le script ne fait pas de brute force)

✅ Conseil : ce qui échoue le plus souvent, c'est LHOST_IP (mettez la bonne IP de votre interface VPN) 😅

🎧 Listener (antes de ejecutar)

Antes de lanzar el exploit, abre un listener para recibir la reverse shell 👂🐚

Ejemplo: netcat escuchando en el mismo puerto que pusiste en LHOST_PORT (por ejemplo 4444). Si no estás escuchando, no llega nada 📭.

→ traduction:

🎧 Listener (avant d'exécuter)

Avant de lancer l'exploit, ouvrez un listener pour recevoir le reverse shell 👂🐚

Exemple : netcat qui écoute sur le même port que celui que vous avez mis dans LHOST_PORT (par exemple 4444). Si vous n'écoutez pas, rien n'arrive 📭.

▶️ Uso

Configura RHOST_DOMAIN, LHOST_IP, LHOST_PORT y PASSWORD ✅

Abre tu listener 🎧

Ejecuta el script con Python 🐍

Salida típica que puedes ver:

[] Objetivo: http://greenhorn.htb

[] Creando modulo limpio: xqpmzui [] Logueando... [+] Login OK. [] Subiendo payload... [*] Detonando en: http://greenhorn.htb/data/modules/xqpmzui/rev.php

[+] ¡Timeout! (Buena señal, revisa tu netcat)

😎 Ojo: el “Timeout! (Buena señal)” suele ser NORMAL ✅ Porque cuando el PHP abre la reverse shell, la petición web puede quedarse “colgada” mientras la sesión interactiva está viva 🔁

→ traduction:

▶️ Utilisation

Configurez RHOST_DOMAIN, LHOST_IP, LHOST_PORT et PASSWORD ✅

Ouvrez votre listener 🎧

Exécutez le script avec Python 🐍

Sortie typique que vous pouvez voir :

[] Objetivo : http://greenhorn.htb

[] Creando modulo limpio : xqpmzui [] Logueando... [+] Login OK. [] Subiendo payload... [*] Detonando en : http://greenhorn.htb/data/modules/xqpmzui/rev.php

[+] ¡Timeout ! (Buena señal, revisa tu netcat)

😎 Attention : le « Timeout ! (Bon signe) » est généralement NORMAL ✅ Parce que lorsque le PHP ouvre le reverse shell, la requête web peut rester « suspendue » pendant que la session interactive est vivante 🔁

Note: We must preserve code blocks/commands exactly. The lines with brackets are not code fences but plain text. We can translate the surrounding text but the bracket lines are probably intentionally showing console output. The original has "[]" and "[+]" etc. We should keep them as is but we can translate the Spanish words? Actually the output is inside the script? It's typical output lines. We need to decide. Since they're not code blocks, but they are sample output. The rule says translate natural language text, but code/commands never. These are output strings from the script, likely in Spanish. We should probably keep them verbatim because they are program output / code-related. The instruction says "NEVER translate: code blocks, shell commands, file paths, URLs, package names, technical identifiers". The lines "[] Objetivo: ..." are program output strings, not natural language narration. It's safer to keep them exactly as-is, including "Objetivo", "Creando modulo limpio", etc. But wait, the user's source is Spanish, and these output strings are in Spanish. The target language is French. Should we translate them? The output is part of the tool's actual output, which is code behavior. Typically we don't translate code output. Also the instruction: "If you cannot translate a technical term safely, leave it untranslated". But these are not technical terms, they are user-facing strings. However, since they represent actual console output from the script, translating them would be incorrect for a README about a tool (users would see Spanish output). Better to keep them verbatim. The same for "Login OK." which is English already. We'll keep those lines as is.

Let's continue with the rest.

🧠 ¿Cómo funciona por dentro? (explicado fácil)

Genera un nombre aleatorio de módulo 🎲

Crea un ZIP en memoria 📦 (estructura plana, sin carpetas internas)

Dentro mete rev.php con una reverse shell que conecta a tu LHOST_IP:LHOST_PORT 📡

Hace login en /login.php 🔑 (incluye Referer para compatibilidad)

Sube el ZIP a /admin.php?action=installmodule ⬆️🧩

Ejecuta el payload accediendo a /data/modules/<module_name>/rev.php 🚀🐚

→ traduction:

🧠 Comment ça fonctionne à l'intérieur ? (explication simple)

Génère un nom de module aléatoire 🎲

Crée un ZIP en mémoire 📦 (structure plate, sans dossiers internes)

Y place rev.php avec un reverse shell qui se connecte à votre LHOST_IP:LHOST_PORT 📡

Se connecte sur /login.php 🔑 (inclut le Referer pour la compatibilité)

Téléverse le ZIP vers /admin.php?action=installmodule ⬆️🧩

Exécute le payload en accédant à /data/modules/<module_name>/rev.php 🚀🐚

Note: The route paths and file names are unchanged.

🧪 Troubleshooting (si algo falla)

❌ Login fallido

Revisa PASSWORD 🔑

Confirma que el endpoint es /login.php

En labs a veces toca reiniciar la máquina/servicio 🔄

❌ No llega la shell

Verifica LHOST_IP 🧭 (la IP correcta, normalmente tun0)

Confirma que estás escuchando en el puerto correcto 🔌🎧

Prueba otro puerto si hay filtrado (por ejemplo 443 o 9001) 🚧

❌ 404 al detonar

Puede que no se haya instalado el módulo 🧩

Algunas instalaciones cambian rutas; revisa la estructura de /data/modules/ 📁

→ traduction:

🧪 Dépannage (si quelque chose échoue)

❌ Échec de la connexion

Vérifiez PASSWORD 🔑

Confirmez que le endpoint est /login.php

Dans les labs, il faut parfois redémarrer la machine/service 🔄

❌ Le shell n'arrive pas

Vérifiez LHOST_IP 🧭 (la bonne IP, généralement tun0)

Confirmez que vous écoutez sur le bon port 🔌🎧

Essayez un autre port en cas de filtrage (par exemple 443 ou 9001) 🚧

❌ 404 lors de la détonation

Il se peut que le module n'ait pas été installé 🧩

Certaines installations changent les chemins ; vérifiez la structure de /data/modules/ 📁

Note: The heading "Troubleshooting" is English, but it's a common term. Since the original uses it, we can keep it as is, or translate to "Dépannage"? The instruction says translate natural language. "Troubleshooting" is a natural language word, but it's a heading in English. Since the source text uses the English word inside Spanish, it's likely intended as a technical term. I'll translate to "Dépannage" for idiomatic French, but maybe keep "Troubleshooting" as is? Actually the original heading is "🧪 Troubleshooting (si algo falla)" — it's already English. In translation, we can translate the parenthetical but keep Troubleshooting? Let's think. The rule: translate natural language text. "Troubleshooting" is an English word used in the source. In French, "Dépannage" is the equivalent. Since the target is French, I'd translate it to "Dépannage" but the original uses English perhaps because it's a common technical term. However, we are translating from Spanish to French, and the Spanish text includes an English term. We should probably keep the term as-is if it's a technical term? But "Troubleshooting" is not a code identifier. The safest is to translate all natural language to French, so "Dépannage" is better. But "Login fallido" becomes "Échec de la connexion". That's fine.

Now the next part:

🛡️ Notas

No deja ZIP en disco local (todo va en memoria) ✅

Importa sys pero no se usa (si quieres, puedes limpiarlo) 🧹

Úsalo con cabeza 🧠😄

✅ Disclaimer final

Sin garantía. Solo uso educativo y autorizado. Si lo usas fuera de permiso, es tu responsabilidad 🚫⚖️

→ traduction:

🛡️ Remarques

Ne laisse aucun ZIP sur le disque local (tout se passe en mémoire) ✅

Importe sys mais il n'est pas utilisé (si vous voulez, vous pouvez le nettoyer) 🧹

Utilisez-le avec discernement 🧠😄

✅ Avertissement final

Sans garantie. Usage éducatif et autorisé uniquement. Si vous l'utilisez sans permission, c'est votre responsabilité 🚫⚖️

Let's double-check the first line: "exploit.py 🐍💥" — that's the title of the content. We translate? It's just a file name and emojis. The file name "exploit.py" remains. The emojis remain. So our response should start with that line transliterated? We need to start exactly with that. Since no translation needed, we output "exploit.py 🐍💥" as the first line.

Then we need to preserve all blank lines. The input has blank lines between sections. We must preserve that.

Let's assemble the full translation, ensuring markdown structure intact. The original text is not heavily markdown (no headers, bold, etc.), it's mostly plain text with emojis. There are bullet points with checkmarks but not markdown bullets? Actually they are lines starting with "✅" and "❌", not markdown list syntax. They are just plain text paragraphs. We should preserve them as lines.

Also note the lines like "RHOST_DOMAIN 🌐 → URL del objetivo..." are plain text, not markdown. We translate the text.

We need to ensure no code fences, no tables. Simple.

Let's write the final output exactly. We'll include all lines in order.

One nuance: In the output section, we have lines with brackets. We'll keep those exactly as in the original, including "Objetivo", "Creando modulo limpio", "Logueando", "Subiendo payload", "Detonando en". Since they are program output, not natural language. However, in the source, the line is "[] Objetivo: http://greenhorn.htb" — this is likely a console output line. We keep it. Similarly "¡Timeout! (Buena señal, revisa tu netcat)" is also output, but it's a message printed by the script. Should we translate it? This is tricky. The rule says never translate code, but output strings are part of the script's code. A translator of a README might translate them to help readers understand, but if the tool is in Spanish, the output is Spanish. Since the user asked to translate the README, not the tool, and the README is explaining what output you will see. In many translations, you keep the output as-is but add translation? But rule says "NEVER translate: code blocks, shell commands, file paths, URLs, package names, technical identifiers" — output strings are not code blocks. Yet they are part of the program's output. To be safe, we should preserve them verbatim because they are literal strings shown in the console. The instruction "Preserve ALL Markdown structure" and "Translate ONLY natural language text" doesn't clearly cover program output. But I think the safest is to keep them verbatim, as they are data/console output. The user might want to know what to expect, and translating them would change the actual output. I'll keep them.

For the line "[] Creando modulo limpio: xqpmzui" — it's also output. Keep.

Now, let's produce the final output. Ensure no extra text.exploit.py 🐍💥

⚠️ Avertissement légal / éthique : ce script est réservé aux environnements autorisés ✅ (CTF, laboratoires, pentest avec permission). Ne l'utilisez pas contre des systèmes sans autorisation ❌.

🧾 Que fait ce script ?

exploit_greenhorn.py automatise une chaîne d'exploitation typique sur un panneau web :

✅ Se connecte au panneau (vous avez besoin d'un mot de passe valide) ✅ Crée un ZIP en mémoire (sans écrire de fichiers locaux) 📦 ✅ Y place un rev.php avec un reverse shell 🔁🐚 ✅ Téléverse le ZIP en tant que « module » sur le panneau 🧩⬆️ ✅ « Détonne » le payload en ouvrant l'URL du PHP téléversé 🚀

📌 Le nom du module est généré aléatoirement pour éviter les conflits (par exemple : abcdefg, xqpmzui, etc.) 🎲

🧰 Prérequis

Python 3.8+ 🐍

Dépendance : requests 📌

Installation : installez la bibliothèque requests avec pip (pip install requests) ✅

⚙️ Configuration (IMPORTANT 🔧)

Dans le script, il y a une section « TUS DATOS » que vous devez ajuster :

RHOST_DOMAIN 🌐 → URL de la cible (incluez http:// ou https://)

LHOST_IP 🧭 → votre IP où vous voulez recevoir le shell (généralement celle de la VPN/tun0)

LHOST_PORT 🔌 → port sur lequel vous allez écouter

PASSWORD 🔑 → mot de passe du panneau (le script ne fait pas de brute force)

✅ Conseil : ce qui échoue le plus souvent, c'est LHOST_IP (mettez la bonne IP de votre interface VPN) 😅

🎧 Listener (avant d'exécuter)

Avant de lancer l'exploit, ouvrez un listener pour recevoir le reverse shell 👂🐚

Exemple : netcat qui écoute sur le même port que celui que vous avez mis dans LHOST_PORT (par exemple 4444). Si vous n'écoutez pas, rien n'arrive 📭.

▶️ Utilisation

Configurez RHOST_DOMAIN, LHOST_IP, LHOST_PORT et PASSWORD ✅

Ouvrez votre listener 🎧

Exécutez le script avec Python 🐍

Sortie typique que vous pouvez voir :

[] Objetivo: http://greenhorn.htb

[] Creando modulo limpio: xqpmzui [] Logueando... [+] Login OK. [] Subiendo payload... [*] Detonando en: http://greenhorn.htb/data/modules/xqpmzui/rev.php

[+] ¡Timeout! (Buena señal, revisa tu netcat)

😎 Attention : le « Timeout ! (Bon signe) » est généralement NORMAL ✅ Parce que lorsque le PHP ouvre le reverse shell, la requête web peut rester « suspendue » pendant que la session interactive est vivante 🔁

🧠 Comment ça fonctionne à l'intérieur ? (explication simple)

Génère un nom de module aléatoire 🎲

Crée un ZIP en mémoire 📦 (structure plate, sans dossiers internes)

Y place rev.php avec un reverse shell qui se connecte à votre LHOST_IP:LHOST_PORT 📡

Se connecte sur /login.php 🔑 (inclut le Referer pour la compatibilité)

Téléverse le ZIP vers /admin.php?action=installmodule ⬆️🧩

Exécute le payload en accédant à /data/modules/<module_name>/rev.php 🚀🐚

🧪 Dépannage (si quelque chose échoue)

❌ Échec de la connexion

Vérifiez PASSWORD 🔑

Confirmez que le endpoint est /login.php

Dans les labs, il faut parfois redémarrer la machine/service 🔄

❌ Le shell n'arrive pas

Vérifiez LHOST_IP 🧭 (la bonne IP, généralement tun0)

Confirmez que vous écoutez sur le bon port 🔌🎧

Essayez un autre port en cas de filtrage (par exemple 443 ou 9001) 🚧

❌ 404 lors de la détonation

Il se peut que le module n'ait pas été installé 🧩

Certaines installations changent les chemins ; vérifiez la structure de /data/modules/ 📁

🛡️ Remarques

Ne laisse aucun ZIP sur le disque local (tout se passe en mémoire) ✅

Importe sys mais il n'est pas utilisé (si vous voulez, vous pouvez le nettoyer) 🧹

Utilisez-le avec discernement 🧠😄

✅ Avertissement final

Sans garantie. Usage éducatif et autorisé uniquement. Si vous l'utilisez sans permission, c'est votre responsabilité 🚫⚖️

Télécharger l’outil