# Vias Ocultas

## Preparación de laboratorio

Link: <https://ctf.academia-ciberseguridad.com/machines>

CyberConquer usa imágenes Docker para poder levantar los laboratorios, en este caso procedemos a descargar el archivo .zip, ¡No es necesario loguearse!

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FzIGhThpRnB8bijrQcYMI%2Fimage.png?alt=media&#x26;token=83167ff5-5560-4a41-bd10-af64d58dd649" alt="" width="321"><figcaption></figcaption></figure>

Una vez descargado el archivo zip, procedemos a descomprimirlo con el comando:

·         `unzip vias_ocultas.zip`

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FOQS2Rh0ka6WBVTSAuTHC%2Fimage.png?alt=media&#x26;token=7c685dcb-d8af-45ff-93db-6972ab289769" alt=""><figcaption></figcaption></figure>

Para correr el laboratorio ejecutamos el archivo “script.sh” seguido el archivo .tar

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FcEyVHinfXxz1pUemia67%2Fimage.png?alt=media&#x26;token=c0cc2233-e571-48c9-92ae-e86ce6336fcb" alt=""><figcaption></figcaption></figure>

Una vez ejecutado el comando nos aparecerá un banner donde podremos ver la IP de la maquina y un prompt donde podremos colocar las banderas a nivel usuario, un vez habiendo encontrado esa bandera aparecerá el prompt para la bandera root.

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FJyfrr0ADp4nZ7mwmaQTa%2Fimage.png?alt=media&#x26;token=a4d8ebad-0846-47a3-841f-43f22c8fc422" alt=""><figcaption></figcaption></figure>

## Enumeración

Una vez levantado el laboratorio comprobamos la conexión con la maquina mandándole 3 paquetes ICMP utilizando ping

·         `ping -c 3 172.17.0.3`

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FWAfDFX2NtF57jrwmJEgr%2Fimage.png?alt=media&#x26;token=dc7e0029-a554-4e5c-a5cb-6519a7a6b867" alt=""><figcaption></figcaption></figure>

Una vez comprobando la conexión procedemos a enumerar puertos abiertos, servicio y sus versiones para identificar el vector de ataque, utilizando la herramienta nmap:

·         `sudo nmap -p- --open -sS -n 172.17.0.3 -oG AllPorts`

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FitwFAcMFkDDnMEmCxAGi%2Fimage.png?alt=media&#x26;token=7ad082a2-f0a2-4aac-a4ec-3554790ef6d2" alt=""><figcaption></figcaption></figure>

Identificamos 4 puertos abiertos, usando la bandera -sV miraremos la versión de cada servicio para ver si hay alguna vulnerabilidad en algo de estos mismos. Ya habiendo identificado los puertos abiertos hacemos el escaneo solo hacia esos puertos y no a todos con la bandera -p-.

·         `sudo nmap -p22,80,139,445 -sS -sV -Pn -n 172.17.0.3 -o Ports_Version`&#x20;

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FovUfy7zT44aVwXJ8nOU6%2Fimage.png?alt=media&#x26;token=d6b0f450-68e8-4918-867b-5f37a974c6d1" alt=""><figcaption></figcaption></figure>

Analizamos la página del puerto 80 para ver si podemos encontrar información relevante:

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FzIRUpfTjGNN9Jp8l9kdd%2Fimage.png?alt=media&#x26;token=0fe2c506-01f2-48c7-a227-df1441e86599" alt=""><figcaption></figcaption></figure>

Con la herramienta dirsearch buscamos archivos o directorios ocultos:

·         `dirsearch -u http://172.17.0.3/`

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FBTrsqnaLRFhEDJOGdkGR%2Fimage.png?alt=media&#x26;token=f8fe783d-8ce6-4ddf-aa15-d3fe1d3e0d9a" alt=""><figcaption></figcaption></figure>

Al ver que no hay información relevante o directorios ocultos, revisamos otro servicio en el cual podamos encontrar nuestro vector de ataque.\
\
Al revisar nuestro escaneo con nmap identificamos 2 puertos peculiares, el 139 y 445, estando usando el servicio de samba, nos vamos a concentrar en este servicio.

Usaremos smbmap para enumerar archivos compartidos:

·       `smbmap -H 172.17.0.3`

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2F7KeYr9SvYLhj9TYXuiMD%2Fimage.png?alt=media&#x26;token=f6d13fb6-b685-4b29-9882-87bb556c100d" alt=""><figcaption></figcaption></figure>

Identificamos que podemos leer la carpeta llamada “desarrollo”, ingresamos para ver qué podemos encontrar, utilizaremos la herramienta smbclient:

·        `smbclient //172.17.0.3/desarrollo -N`  &#x20;

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FSJvogtZw2BDxeDYNYoKa%2Fimage.png?alt=media&#x26;token=df3db484-bea1-4881-b03a-c9908b9535ba" alt=""><figcaption></figcaption></figure>

Encontramos un archivo llamado todo.txt, lo extraemos a nuestra maquina para poder abrirlo, o igual podemos leerlo en el mismo servidor smb con el comando more, pero siempre es importante guardar evidencia de todo.

Al leer el archivo encontramos algo muy interesante, en la indicación de cambiar la contraseña dejaron codificada en base64.

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FaBRDlsKcdby7pq2pUpq2%2Fimage.png?alt=media&#x26;token=291a7c26-ecf0-4053-b2cf-ebb10d5c78fe" alt=""><figcaption></figcaption></figure>

Podemos saber eso con la herramienta dcode.fr: <https://www.dcode.fr/cipher-identifier>

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FzPsB9qBr0sejwSHxnhyC%2Fimage.png?alt=media&#x26;token=93e60ea3-2575-43dd-ac50-c8f0fb5954d4" alt="" width="563"><figcaption></figcaption></figure>

Para decodificar la frase utilizamos el siguiente comando:

·         echo "Y2hhcmxpZTEyM3Bhc3M=" | base64 -d > pass.txt&#x20;

·         -d: Indicamos que decodifique la cadena de texto que le pasamos

·         >: Indicamos que lo pase a un archivo, en este caso pass.txt

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FQKWjlIDsumiE1Fo3GIwq%2Fimage.png?alt=media&#x26;token=44bc746e-f1f7-4d30-99a8-3d30c7e42008" alt=""><figcaption></figcaption></figure>

Encontramos una contraseña, ahora nos hace falta encontrar un usuario, para ello usaremos una herramienta muy buena llamada enum4linux, para poder enumerar usuarios, al igual que archivos compartidos y mucha más información importante:\ <br>

·        `enum4linux -U 172.17.0.3 > usersmb` &#x20;

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2F4NkzqDG7BwsdwNbVuLGk%2Fimage.png?alt=media&#x26;token=cd42f745-7f2b-4440-881a-98116f04393d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FJPFh4BmaMdr0pQhu3q5w%2Fimage.png?alt=media&#x26;token=a1e021e2-2304-4d51-b860-bda5adbf69e1" alt=""><figcaption></figcaption></figure>

¡Bingo!, tenemos credenciales, usuario y contraseña, procedemos a loguearnos por el servicio samba, ahora podemos entrar a la carpeta usuarios:

·        `enum4linux 172.17.0.3`

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FaAnOrk11aX60dnsA56GR%2Fimage.png?alt=media&#x26;token=91ebf734-9226-4b46-932e-a9a6e058229a" alt=""><figcaption></figcaption></figure>

En este caso usé enum4linux para ver nuevamente las carpetas compartidas, pero es lo mismo que con smbmap, a diferencia que enum4linux nos brinda mucha más información al respecto.

## Explotación

Nos conectamos nuevamente usando smbclient, pero ahora especificamos un usuario con la bandera -U:

·         `smbclient //172.17.0.3/usuarios -U charlie` &#x20;

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FfltZHYYrskU7mBRpCpMb%2Fimage.png?alt=media&#x26;token=fef8f749-10a2-4bb1-b556-39f199a167d3" alt=""><figcaption></figcaption></figure>

Listamos carpetas dentro y encontramos dos, vamos revisando una a una para poder encontrar información relevante,

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2Fu5pBCr2WdKF2DJE3cWgQ%2Fimage.png?alt=media&#x26;token=f8f5c5d3-d4b7-4ce9-9d55-79cda4a74ee8" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FjYmaMRTBx9sydzAJbHVu%2Fimage.png?alt=media&#x26;token=68709087-cc26-4028-8a3c-c1c4c3cc0fe6" alt=""><figcaption></figcaption></figure>

El archivo .bash\_history encontramos una posible contraseña y otro usuario developer, intentamos usarla en el servicio ssh por el puerto 22, no sin antes guardar la contraseña en un archivo .txt, recuerden, siempre es importante guardar todo lo que encontremos.

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FmeGLzls7aNvT2xMZrtVi%2Fimage.png?alt=media&#x26;token=a86ced30-8ace-4f60-822e-e126bee89712" alt=""><figcaption></figcaption></figure>

Listo, entramos al servidor por ssh, listamos archivos, leemos la flag y pegamos, para procedemos a buscar elevar privilegios para encontrar la bandera root

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FHXKnwlO21mKVxPaurlpN%2Fimage.png?alt=media&#x26;token=8fc43492-c5ca-4a94-a568-02bbb7e5d523" alt=""><figcaption></figcaption></figure>

## Post-Explotación

Procedemos a buscar una manera de aprovechar algún servicio o archivo por permiso SUID para elevar nuestros privilegios a root.

&#x20;

Para buscar archivos con permisos SUID, ejecutamos el siguiente comando:

·        `find / -perm -4000 -type f 2>/dev/null`

·         Buscamos desde raiz todos los archivos que tengan permisos de root

·         Los demás lo mandamos al /dev/null

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FkHZ20Lo6jUkiFA7zPHQV%2Fimage.png?alt=media&#x26;token=9e14955c-a132-433e-9721-44c2b4913990" alt=""><figcaption></figcaption></figure>

Encontramos uno muy peculiar “find”, para saber aprovecharlo, podemos ir a la página gtfobins: <https://gtfobins.github.io/>

Buscamos find, para que nos indique como aprovecharnos de esto:

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2F9Q7WicWdD6P8gZ4G3nP4%2Fimage.png?alt=media&#x26;token=67b04be8-63d7-4b46-a543-7e00a852dad8" alt=""><figcaption></figcaption></figure>

Estando ahí vamos a la sección SUID, y buscamos los comandos que necesitamos, es importante aclarar que no siempre se necesitan todos los comandos que indican, ya es cuestión que vayamos probando, en este caso, al usar todo lo que nos indica nos da un error,

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FpZW0luJuDIHGfN5pf2bI%2Fimage.png?alt=media&#x26;token=9a0a4a2f-e16e-4931-a03c-d7d2f685dbcd" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FZ9QQ3QWLaLTKJQzuREjp%2Fimage.png?alt=media&#x26;token=c5fe2565-aa7a-4d48-9151-d19aeb7511fd" alt=""><figcaption></figcaption></figure>

Al ejecutarlo tal cual, el comando sudo hará que nos pida contraseña, la cual no tenemos, en este caso, solo ponemos lo siguiente:

·        `find . -exec /bin/sh -p \; -quit`

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FJVUfezwwVuKwWBWUhj1S%2Fimage.png?alt=media&#x26;token=9c49eb37-20bc-4f21-ac1b-bc8ce912f24a" alt=""><figcaption></figcaption></figure>

Eso nos dará enseguida un sh como usario root, procedemos a movernos a la carpeta root y leemos la flag, la pegamos en el script del laboratorio y listo.

<figure><img src="https://2635113826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5daWhBxoDFtT9Z7bT21e%2Fuploads%2FwnuxtDRgkxzN9TwccqEp%2Fimage.png?alt=media&#x26;token=2a6111e2-f4a8-44d0-b605-eb3e323eb813" alt=""><figcaption></figcaption></figure>
