Resolución del CTF SHINED
Enumeración
Escaneo de puertos
Realizamos un escaneo de todos los puertos para saber cuáles están activos.

Los parámetros utilizados son:
- -p- : Escaneo de todos los puertos. (65535)
- -sS : Realiza un TCP SYN Scan para escanear de manera rápida que puertos están abiertos.
- -sC : Realiz una escaneo con los scripts basicos de reconocimiento
- -sV : Realiza un escaneo en buqueda de los servicios
- –min-rate 5000: Especificamos que el escaneo de puertos no vaya más lento que 5000 paquetes por segundo, el parámetro anterior y este hacen que el escaneo se demore menos.
- -n: No realiza resolución de DNS, evitamos que el escaneo dure más tiempo del necesario.
- -Pn: Deshabilitamos el descubrimiento de host mediante ping.
Nos encontramos ante un panel de busqueda

Al no tener mas rutas, vamos a fuzzear indicando por extensiones «php, txt, html y sh«.

Nos encuentra un «access.php» y lo primero que se me viene a la cabeza es un LFI, así que vamos a intentar fuzzear que con suerte suena la campana, antes de nada necesitamos saber cual es el parámetro que no va a indicar la ruta.

Y efectivamente nos encontramos con un LFI, en la cual podemos ver usuarios y enumerar al usuario «cifra«.

Al estar los puertos ssh abierto vamos a intentar acceder a la id_rsa del usuario cifra.

Esta id_rsa esta desprotegida, le damos permisos y entramos como el usuario cifra.

Estamos en un contenedor.

Pero buscando entre direcotiros nos encontramos un ocn archivo llamabo «contabilidad.xlsm». Así que vamos a traérnoslo a nuestra maquina y ver de que se trata
Vemos que es un formato de archivo utilizado por Microsoft Excel para almacenar hojas de cálculo con macros.


Con el comando olevba podemos ver el archivo desde Linux.

Y no encontramos con lo que parece un usuario y contraseña, con la cual podemos entrar mediante ssh con el usuario Leopoldo.

Dentro del usuario Leopoldo, buscando entre directorios nos encontramos dos archivos sh, el cual me llama la atencion «backup.sh», un wildcard, no obastante vamos a urilizar pspy32 para confirmar que es una tarea cron.

Nos traemos pspy a la maquina victima y lo ejecutamos dándole permisos de ejecución.

Como vemos es una tarea programada, lo que no sindica que puede ejecutar cualquier programa /tarea que este en el directorio «home/leopoldo/Desktop/scripts«
El único símbolo, ‘*’ , es lo que hace que este guion aparentemente seguro sea un vector PE fácil. Cuando se usa el operador comodín ‘’, bash lo interpreta como esto:

Buscando por internet nos encontramos con la siguiente pagina para la escalada de privilegios con wildcards.
Vamos a crear dos archivos que van a indicar puntos de control para las tareas programadas.

Esto nos indicar que ejecute unas bash del archivo «privesc.sh».
Y ahora con una archivo prives.sh vamos a indicarle que nos copie una bash el el directorio /tmp con permisos de ejecución.

Esperamos un poco a que se complete la tarea y llegue a los puntos de control y tenemos una bash con permisos de ejecución de root,
