Post

Psycho

Psycho

Pasos Iniciales

  • Descargar la maquina Psycho de DockerLabs
  • Teniendo la maquina en nuestro equipo debemos correr el siguiente comando para descomprimirla:
1
unzip Psycho.zip
  • Procedemos a iniciar maquina Psycho con el siguiente comando:
1
2
3
4
#Con esto damos permisos de ejecución al archivo encargado de desplegarnos la máquina.
sudo chmod +x auto_deploy.sh
#Levantamos la maquina objetivo
sudo bash auto_deploy.sh Psycho.tar

A partir de este momento ya tenemos nuestra maquina objetivo lista para comenzar a jugar con ella.


Reconocimiento y Enumeración

Para iniciar con esta máquina debemos verificar conexión con la maquina objetivo. Para ello le lanzamos el comando ping:

1
ping -c 1 172.17.0.2

Con este comando podemos ver que la maquina esta activa y tenemos alcance hacia ella.

Ahora que sabemos que el equipo este activo procedemos a realizar un escaneo de puertos, servicios y versiones utilizando la herramienta Nmap.

1
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2

Este comando al ejecutarlo con estos parámetros le estamos indicando lo siguiente:

1
2
3
4
5
6
7
-p- Escanea los 65535 puertos existentes
--open Reporta solo los puertos abiertos
-sS Realiza un stealth Scan el cual no completa el three-way handshake (SYN / SYN-ACK / RST)
--min-rate 5000 Procesa no menos de 5000 paquetes por segundo
-vvv Permitimos que nos retorne la salida conforme va procesando
-n Desactivamos resolución de DNS
-Pn Desactivamos el HostDiscovery

Analizando Resultados del Escaneo

Al ejecutar el escaneo podemos ver que la maquina tiene 2 puertos abiertos el 22 y el 80 TCP

Identificación de versiones y posibles vulnerabilidades

Ejecutamos un escaneo con los Scripts básicos de reconocimiento para identificación de versiones y vulnerabilidades

1
nmap -p 22,80 -sVC 172.17.0.2

Utilizando whatweb verificamos la página web del puerto 80 pero no obtenemos mucho

Al revisar el sitio web nos encontramos con lo siguiente

Este error en la parte inferior es curioso y puede indicar la existencia de algún parámetro

Es por ello que vamos a realizar Fuzzing de parámetros

Fuzzing

Utilizando ffuf y una wordlist podemos buscar posibles parámetros

Sin embargo, vemos demasiado ruido y la información que es relevante no la vemos por lo cual debemos filtrar

Después de un tiempo descubrimos el parámetro, el cual es “secret” por lo que trataremos de ver como lo podemos utilizar

Explotación

Después de algunas pruebas logramos dar con algo

Logramos listar todos los usuarios y vemos que tenemos un usuario luisillo y otro llamado vaxei aparte de root que tienen una shell por lo que tratamos de ver si es posible obtener alguna id_rsa de alguno de estos usuarios

Después de probar con los usuarios descubiertos encontramos que el usuario vaxei si contaba con una id_rsa por lo que la traemos a nuestra maquina atacante

Ahora que tenemos el id_rsa en nuestro equipo atacante debemos darle permisos

Después de haberle dado los permisos correctos a la id_rsa nos intentamos conectar utilizando el usuario vaxei por SSH

Elevación de Privilegios

Como logramos tener acceso con el usuario vaxei ahora debemos elevar nuestros privilegios para lo cual buscamos binarios SUID pero no encontramos nada utilizable

Ojo al verificar permisos en SUDOERS vemos que el usuario vaxei tiene permisos para ejecutar un binario perl como luisillo sin necesidad de contraseña y tal como veíamos anteriormente solo 3 usuarios tenían una bash (luisillo, vaxei y root)

Por lo que usando perl tratamos de obtener una bash del usuario luisillo

Y logramos obtener una bash con el usuario luisillo

Posteriormente volvemos a verificar los permisos de sudo

Analizando la salida de permisos del usuario luisillo vemos que tiene permisos de ejecutar como cualquier usuario el binario /usr/bin/python3 y específicamente el script /opt/paw.py

Además, al revisar los permisos el directorio opt vemos que tiene configurado permisos de lectura, escritura y ejecución a otros usuarios. Lo cual nos permitiría eliminar el archivo y recrearlo con el contenido que nos plazca

Sin embargo, a nivel de usuario no podríamos modificar directamente el archivo porque solo el propietario tiene permisos de lectura, escritura y ejecución, Por ello eliminamos el archivo y lo recreamos.

Lo editamos para que ejecute lo que nos plazca

En este caso lo vamos editar para que nos retorne una bash.. y podemos hacerlo de 2 formas

Usando la libreria OS

Usando la Liberia Subprocess

Después de editar el archivo, guardar los cambios y ejecutar nuestro archivo tenemos nuestra bash del usuario root

Y con esto hemos terminado la maquinita…

This post is licensed under CC BY 4.0 by the author.