Máquina Alpine (Vulnyx)

Comenzamos con averiguar la dirección IP de la Máquina Victima, para ello primeramente utilizaremos la herramienta netdiscover, para ello ejecutamos el siguiente comando:

$ netdiscover -i eth1 -r 10.0.2.0/24

  • Kali (Máquina Atacante): 10.0.2.4
  • Máquina Victima: 10.0.2.51
Comprobamos si tenemos conexión con la Máquina Victima, para ello ejecutamos el siguiente comando:

$ ping -c 1 10.0.2.51


Como se puede comprobar por el TTL nos enfrentamos a una Máquina Linux.

A continuación, realizamos con la herramienta nmap un reconocimiento de los servicios, para ello ejecutamos el siguiente comando:

$ nmap -Pn -p- 10.0.2.51 -sVC


Como podemos comprobar la Máquina Victima tiene abiertos los puertos 22 80, y vemos que nos redirige al dominio alpine.nyx.

Lo agregamos al archivo /etc/hosts, para ello ejecutamos el siguiente comando:

$ nano /etc/hosts


Comprobamos que es lo que corre por el puerto 80.


A continuación, realizamos con la herramienta gobuster un fuzzing web, para ello ejecutamos el siguiente comando:

$ gobuster dir -u http://alpine.nyx/ -w /usr/share/seclists/Discovery/Web-Content/common.txt -x html,php,js.txt


Encontramos el fichero login.html.

Accedemos a el.


Encontramos un panel de login, visualizamos el código fuente de la pagina web, para ello abrimos el inspector del navegador.


Encontramos las credenciales testuser:WinterIsComing! en un comentario HTML.

Accedemos con las credenciales obtenidas.


Estamos dentro, investigamos la pagina web navegando por los diferentes apartados.


En el apartado Settings, encontramos las credenciales developer:SummerVibes2024! para acceder a la Máquina Victima vía ssh.

A continuación, nos conectamos por ssh, para ello ejecutamos el siguiente comando:

$ ssh developer@10.0.2.51

Introducimos la contraseña obtenida anteriormente.

¡¡¡Somos developer!!!

Encontramos el fichero README.txt, que dice:

=== Notas de desarrollo de SnowPeak ===

Hola desarrollador:

¡Bienvenido al entorno de desarrollo de SnowPeak!

RECORDATORIOS IMPORTANTES:

1. El usuario sysadmin administra el código de la aplicación web en su directorio.

2. Usamos Git como canal de implementación.

3. ¡No olvides revisar los limpiadores!

Si necesitas acceso elevado, contacta con el administrador del sistema.

Administración

Hace referencia a Git, por lo tanto, nos vamos al directorio /home/sysadmin/webapp, para ello ejecutamos el siguiente comando:

$ cd /home/sysadmin/webapp

Encontramos el fichero .git.

Visualizamos los commits, para ello ejecutamos el siguiente comando:

$ git log


Vemos que en uno de los commits encontramos un backup de una clave privada id_rsa del usuario sysadmin, la visualizamos, para ello ejecutamos el siguiente comando:

$ git show 02f9a1879dbfa40703a6bcbd985e5a19542c24c8


Nos la copiamos en un archivo, para ello ejecutamos el siguiente comando:

$ nano id_rsa

Utilizamos el fichero id_rsa para conectarnos via ssh a la Máquina victima, para ello ejecutamos los siguientes comandos:

$ chmod 600 id_rsa
$ ssh -i id_rsa sysadmin@10.0.2.51

¡¡¡Somos sysadmin!!!.

Encontramos el fichero README.txt, que dice:

=== Notas de administración del sistema ===

TAREA COMPLETADA:

[x] Configurar el repositorio Git de la aplicación web

[x] Configurar las claves SSH para el acceso remoto

[x] Limpiar archivos confidenciales del repositorio Git

PENDIENTE:

[ ] Explicar la estrategia de limpieza automatizada. Actualmente se ejecuta cada dos minutos.

- Equipo de administración del sistema

Hace referencia a una tarea pendiente sobre una limpieza automatizada, la cual, se ejecuta cada dos minutos, por lo tanto, parece una tarea programada.


En el directorio /opt/scripts, encontramos el script cleanup.sh, sobre el que dispongo de permisos de escritura y lo ejecuta el usuario root.

A continuación, en nuestra terminal de nuestra Máquina Atacante y con la ayuda de la herramienta de netcat (nc) nos ponemos a la escucha por el puerto 443 por donde vamos a recibir la conexión, para ello ejecutamos el siguiente comando:

$ nc -lvnp 443

Agregamos una reverse shell en el script cleanup.sh, para ello ejecutamos el siguiente comando:

$ nano cleanup.sh

Esperamos a que se ejecute el script.

¡¡¡Ya somos root!!!.

Ya podemos leer las flags de user root.