Dark
TAG -> Dockerlabs | CTF
Como en todos los laboratorios de hacking que hemos desplegado, lo primero que hacemos siempre es verificar conectividad con la máquina víctima, usado el comando ping
de la siguiente manera:
Resultado
El ttl
es de 64, lo más probable que estemos frente a una máquina Linux, el siguiente paso es crear nuestras carpetas de trabajo con mkt
y luego hacer un escaneo primario con nuestra herramienta de Python.
Resultado
Vemos 2 puertos abiertos, 22 -> ssh y el puerto 80 -> Apache, este último puerto contiene una web que como título tiene darkweb, antes de seguir podemos hacer un escaneo con nmap
de versiones y posibles vulnerabilidades comunes.
Resultado
Vemos información similar, así que podemos pasar a la web a buscar más información.
Página web
Nos dice que ingresemos una URL, podemos probar a levantar un servidor en nuestro equipo y pasar esa URL a la máquina víctima a ver si hace la solicitud.
Luego de ingresar la URL http://10.10.10.1/test
vemos el siguiente resultado en nuestra terminal.
En la web vemos que se queda colgado en un archivo llamado process.php
, antes de seguir viendo estas cosas, podemos intentar hacer Fuzzing web y verificar la existencia de más archivos.
Resultado
Vemos los archivos:
process.php
info
index.html
Veamos que nos dice el archivo info el cual llama la atención.
Encontramos el siguiente mensaje luego de ingresar a la URL -> http://10.10.10.2/info
, nosotros como atacantes tenemos acceso a la máquina 10.10.10.2, porque tenemos una IP en esa red que es la 10.10.10.1, pero no tenemos conexión con ningún equipo que tenga IP 20.20.20.3, por lo cual deberemos llegar de alguna manera a esa web, primero es interesante saber que en la web de la 10.10.10.2 si ponemos la URL -> http://20.20.20.3
nos muestra lo siguiente.
En cambio, si lo hacemos en nuestro equipo no llegamos a esa web, por lo cual ahora sabemos que la máquina 10.10.10.2 tiene acceso al equipo 20.20.20.3, ya que debe tener alguna interfaz de red configurada con una IP de esa red, por lo cual nuestro objetivo es pivotar de la 10.10.10.2 a la máquina 20.20.20.3, si recordamos en la nota también mencionan a un tal toni, que tal si hacemos fuerza bruta con hydra
a este usuario para ver si tiene credenciales débiles.
Resultado
Y después de esperar un rato encontramos la contraseña banana para el usuario toni, como es un caso de pivoting usaré pwncat-cs para la interacción con la shell.
Entro al cli
de pwncat-cs y nos conectamos vía ssh.
Perfecto ya tenemos conexión con la máquina intermedia, ahora veamos si de verdad tiene otra interfaz de red, esto lo podemos hacer de 2 maneras, una, ejecutado el siguiente comando en la máquina víctima.
Que como podemos ver tiene 2 IP, y la segunda manera seria usando uno de los módulos que trae pwncat-cs incorporado.
Donde también podemos ver las 2 interfaces de red, como no es necesario escalar privilegios aquí, ya que el objetivo se encuentra en la máquina 20.20.20.3, pasaremos a hacer pivoting de una vez, en este punto deberíamos utilizar chisel
para nosotros tener acceso a la máquina 20.20.20.3, aunque teniendo acceso a la maquina2 desde la maquina1 no es necesario de primera, por lo cual desde la página web de la maquina1 veré el contenido de la web de la maquina2.
Es interesante el parámetro que utiliza el input
de esta web, dice cmd, así que lo primero que se viene a la mente es si podemos ejecutar comandos desde hay, como desde nuestra web no podemos acceder a la maquina2, podemos enviar información mediante curl
desde la maquina1 el cual si tiene acceso a la maquina2, lo haríamos de la siguiente manera.
Y vemos que efectivamente podemos ejecutar comandos desde hay, por lo cual ahora intentaremos establecer una [[Reverse Shells]], primero que todo debemos pasar socat
a la maquina1 para poder que la maquina2 nos vea por decirlo así, tenemos muchas formas de pasar socat
a la maquina1, en mi caso usaré las funcionalidades que me ofrece pwncat-cs.
Después de pasar el binario compilado de socat
con la función upload, le doy permiso de ejecución y lo que are ahora es, ponerme en escucha por el puerto 111, desde pwncat-cs de la siguiente manera.
Luego entro a la shell de la maquina1 y ejecuto el siguiente comando con el binario de socat
.
Con este comando la maquina1 se pondrá en escucha por el puerto 111 y lo que pase por hay lo redirija al puerto 111 de mi maquina donde yo estoy en escucha para recibir una [[Reverse Shells]], ahora simplemente puedo enviar mediante curl
desde la maquina1 lo siguiente.
En mi caso lo pondré dentro de un script junto a un sleep
de 3 segundos y luego de dar permisos de con chmod
lo ejecuto.
Como podemos ver, ahora hemos recibido una reverse shell que no es más que de la maquina2, aunque diga la IP 10.10.10.2 es porque pasa por ese túnel mediante socat
, podemos usar pwncat-cs para comprobarlo.
Estamos como el usuario www-data
y la IP es 20.20.20.3, ahora entraremos a una shell y veremos si podemos escalar privilegios.
No tenemos la contraseña de www-data
para ver que cosas puede ejecutar como root, pero si encontramos un binario SUID interesante -> curl
, el cual si podemos ejecutarlo como root, podemos usar herramientas como searchbins
para ver la manera de explotar estos tipos de binario.
Con esto ya nos podemos dar una idea de como explotar el binario curl
y volveros root, vamos a seguir los siguientes pasos.
Luego de copiar el passwd
lo modificamos con nano
dejándolo de la siguiente manera:
Luego guardamos con Ctrl + o luego Enter y salimos.
Ahora los últimos pasos finales:
Y si todo funciono correctamente, habremos modificado el /etc/passwd
de tal manera que el usuario root no necesitaría contraseña y podemos convertirnos en root de la siguiente manera:
Con esto podemos dar por concluido el laboratorio de pivoting, usando pwncat-cs en varias ocasiones para entrar a la shell o salir de una [[Reverse Shells]] uso el atajo Ctrl + d.
Last updated