Glitch

La maquina glitch es una maquina sencilla, que para hacer una intrusión debemos vulnerar un parametro en el cual inyectaremos codigo node js para asi poder escalar privilegios haciendo uso de un archivo .firefox y de doas

20231107223147.png

Metodología

  • Enumeración

    • Escaneo de puertos

    • Enumeración del puerto 80

    • Cambio de Token

    • Fuzzing

  • Explotación

    • Node js RCE

  • Escalar Privilegios

    • User

    • V0id

    • root

Walkthrough

Enumeración

Escaneo de puertos

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

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. 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.

Enumeración de servicios y versiones

-p80: Esta opción especifica los puertos que se van a escanear. En este caso, se están escaneando los puertos 80. 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

En la web solo tenemos una imagen

20231107223507.png

Hacemos ctrl + u vemos el codigo fuente

20231107224659.png

Tenemos una ruta de una api por lo que podemos ir a la ruta

En la ruta encontraremos un texto en base64

Cambio de Token

El cual nos servira para usar como token, haciendo uso de cookie-editor una extensión del navegador

20231107225644.png

Ahora recargamos la web y podemos visualizar otra contenido en la web

Fuzzing

Teniendo la ruta /api/, vamos a enumerar subdirectorios

Encontramos el direcotio items

Hacemos una petición a sitio web y nos devuelve el texto there_is_a_glitch_in_the_matrix

Explotación

Despues de un buen tiempo pensando y enumerando descubrir que en la ruta http://[IP-VICTIM]/api/items existe un paramatro

Con wfuzz hacemos fuzzing y encontramos el parametro que haciendo uso de esto podemos ejecutar comandos

El siguiente post de ibreakarrow-up-right nos ayudara a explotar esta vulnerabilidad

Node js RCE

Haciendo uso de burpsuite vamos a enviar nuestra petición, tenemos la peticion :

Enviamos la petición

20231108104248.png

Antes de enviar, ponemos a la escucha nc y tendremos el contenido /etc/passwd

¡Vamos, podemos ejecutar comandos!

Revershell

Para obetener una shell haremos lo siguiente:

  • Primero, creamos una archivo index.html en donde tendra nuestra revershell

  • Segundo, iniciamos un servidor en python

Ahora vamos a obtener una shell en la maquina victima

Enviamos nuestra petición y obtenemos nuestra shell

Escalada de privilegios

Usuario user

20231108104800.png

Luego realizaremos un tratamiento de la tty

Enumerando encontraremos un directorio que es .firefox ddel cual podemos extraer credenciales.

Nos traemos a nuetra máquina atacante. Para copiar a nuestra maquina usaremos nc, haciendo lo siguiente

  • Atacante

  • Victima

Haciendo uso de firefox_decrypt.pyarrow-up-right podemos desencriptar las credenciales

Usuario V0id

Haciendo uso de las credenciales podemos logueanos como el usuario v0id

En la pista nos dice que sudo is bloat.. Buscando algo de información nos damos con el siguiente post de exploit-notes.hdks.orgarrow-up-right

Usuario root

Abusando de las congifuraciones podemos ejecutar comandos con doas

20231108115645.png

¡VAMOS!

Happy hacking

Last updated