Está en la página 1de 28

Debemos encontrar dos banderas.

Donde a partir de un escaneo de puertos pude


saber que hay un servicio Web, FTP. Además, gracias a un script de Nmap pude saber
que la aplicación LimeSurvey está ejecutándose en el servidor web. Luego, logre
acceder a su panel de administración mediante las credenciales por defecto, logrando
saber su versión y explotando la vulnerabilidad RCE asociada a su versión mediante
un exploit escrito en Python encontrado en Exploit-DB. Luego, para la escalada de
privilegio horizontal, aproveche que un usuario local estaba ejecutando la herramienta
Ghidra en su modo Debug, logrando ejecutar una reverse Shell con los privilegios del
usuario. Luego, para la escalada vertical, aproveche que un script en Python podía ser
ejecutado con los privilegios de root mediante el comando sudo, para utilizar la técnica
Pytthon Library Hijacking y generar una reverse Shell mediante una biblioteca
maliciosa.
En este caso debemos acceder al sistema destino y obtener las
banderas. Para ello empezaremos utilizando el comando openvpn
con el fin de establecer una conexión VPN con la red virtual
dónde está la máquina Ghizer. Para ello utilizaremos el
archivo de configuración, que lo podemos descargar en la
plataforma de Tryhackme, que puede incluir información
como la dirección del servidor VPN, los certificados y
claves de seguridad, la configuración de encriptación, etc.

Luego de que se establece la conexión VPN se crea una interfaz


virtual de red en nuestra máquina. Donde se enruta todo el tráfico
de red a través de esa interfaz.

Además, la plataforma de Tryhackme nos muestra la dirección IP de la máquina


Ghizer.
Luego pasaremos a la fase de Escaneo y Enumeración con el fin de
poder escanear los puertos del nodo. Además, obtendremos los
servicios que se han levantado en los puertos abiertos, las
versiones de los servicios, y el sistema operativo de la máquina
Ghizer. Para ello utilizaremos `Nmap`. Donde le pasaremos los
siguientes parámetros:
- El parámetro -sC o –script=”default” para utilizar todos los scripts
de la categoría default con el fin de realizar un escaneo y detección
de los puertos de manera avanzada.
- El parámetros -sV con el fin de conocer las versiones de los
servicios levantados en los puertos abiertos.
- El parámetro -n para evitar la resolución DNS, y el parámetro –
max-rate para indicarle el número máximo de paquetes por segundo
que va a utilizar Nmap para el escaneo con el fin de evitar
sobrecargar la red con el tráfico generado por la herramienta.
- El parámetro -Pn para evitar que Nmap, que realice ningún tipo de
sondeo o ping hacia el sistema destino con el fin de determinar si el
host está vivo o activo, y realice el escaneo de puertos
directamente.
- El parámetro -p- para realizar un escaneo de los 65535 puertos del
nodo y el parámetro –open con el fin de que nos muestre
información solo de los puertos abiertos.
Los resultados que obtuvimos del escaneo vienen a ser:
 Un programa servidor web Apache levantado en el puerto 80.
Además, gracias al script http-tittle obtuvimos el valor de la etiqueta
HTML title de la página web de la aplicación LimeSurvey que es
utilizado para crear y administrar encuesta en línea, es decir, se
pueden diseñar cuestionarios personalizados, distribuirlos a traves
de varios canales, recopilar sus respuestas y analizarlo.
 Un sitio web creado y gestionado por el CMS WordPress. Además,
las conexiones para realizar al sitio web utilizan el protocolo de
cifrado TLS/SSL en el puerto 443 con el fin de cifrar la comunicación
entre el servidor web y el cliente (navegadores web).
 Un supuesto programa servidor FTP en el puerto 21, pero no logro
detectar el programa servidor FTP lo que es muy raro. Además, al
parecer el supuesto servidor FTP permite las conexiones anónimas.
Ahora intentaremos conectarnos al servidor FTP mediante una conexión
anónima.

Podemos observar que cuando intentamos conectarnos al servidor FTP y


enumerar los recursos compartidos obtenemos un mensaje de error como
si el servidor FTP estuviese inactivo o inoperativo en ese momento.
Ahora accederemos a la interfaz web de la aplicación LimeSurvey a traves
de nuestro navegador web y accederemos a su panel de administración,
pero antes tendremos que autenticarnos en un login.
Podemos observar que logramos acceder al panel de administración a
traves de las credenciales por defecto admin:password. Además, podemos
visualizar que la versión de la aplicación es 3.15.9.
Ahora buscaremos en el motor de búsqueda de Google y en la
herramienta de línea de comando searchsploit que viene a ser una copia
de Exploit-DB, vulnerabilidades relacionadas a la versión de la aplicación.
Podemos observar que la versión 3.15.9 de la aplicación si presenta la
vulnerabilidad RCE.
Ahora descargaremos el exploit escrito en Python de la searchsploit para
automatizar la explotación.

Podemos observar que logramos acceder al sistema destino mediante la


vulnerabilidad RCE.
Ahora convertiremos nuestra reverse Shell en una Shell más estable e
interactiva con el fin evitar de que se cierre con errores simples. Luego,
buscaremos vectores de escalada privilegio de manera manual en el
sistema de archivos del sistema destino.
Ahora realizaremos una enumeración automatizada con Linpeas sobre el
sistema de archivos del sistema destino con el fin de buscar vectores de
escalada privilegio.
Podemos observar que la herramienta determino que solo hay una cuenta
de un usuario local llamado veronica a parte de root, y logro encontrar una
contraseña, pero no nos especifica la ruta del archivo donde lo encontró
solo nos dice que lo encontró en un archivo de configuración PHP. Por lo
tanto, buscaremos todos los archivos llamados config.php en el sistema de
archivos del sistema destino.
Podemos observar que logramos encontrar cuatro archivos de
configuración PHP en el sistema destino, y si utilizamos el comando cat y
grep sobre ellos, logramos encontrar las credenciales de un usuario, pero
si suponemos que se reutilizo estas credenciales en las credenciales de
inicio de sesión de la cuenta del usuario local veronica, nuestra suposición
será incorrecta.
Otro de los resultados obtenidos de la herramienta Linpeas vienen a ser
las credenciales para acceder a la base de datos MySQL utilizada por el
CMS Wordpress. Luego, si nos conectamos al servidor MySQL, lograremos
enumerar los registros de la tabla wp_users de la base de datos utilizada
por el CMS Wordpress para la autenticación al momento de acceder a su
portal de administración. Además, nos percatamos que las credenciales
del usuario Anny eran para acceder al portal de gestión del CMS.
Otro de los resultados de la herramienta viene a ser los estados de las
conexiones de red en el sistema destino. Donde podemos observar que el
protocolo IPP esta utilizando puerto 631. Además, hay un servicio
desconocido utilizando el puerto 18001 y que solo admite conexiones
locales, es decir, del mismo sistema. Además, si realizamos una
enumeración manual en el directorio home del usuario local veronica, nos
topamos con un directorio llamado ghidra_9.0, que contiene el archivo
ejecutable de la herramienta Ghidra Además, si enumeramos los procesos
que se están ejecutando en el sistema destino, nos topamos con un
proceso que nos indica que el usuario local verónica está ejecutando la
herramienta en su modo Debug.
Ahora buscaremos en el motor de búsqueda de Google, si la herramienta
Ghidra y el puerto 18001 presentan alguna relación.
Si escogemos el segundo resultado de la búsqueda, nos toparemos con un
articulo que nos habla sobre que el modo Debug de Ghidra en su versión
9.0 genera una vulnerabilidad RCE ya que, al ejecutar la herramienta en
ese modo, se utilizara el protocolo JDWP en el puerto 18001 por defecto
con el fin de que la herramienta pueda depurar programas escrito en Java.
Además, la configuración por defecto de este modo admitirá conexiones
en todos sus interfaces de red al puerto 18001. Por lo que cualquier
sistema de las subredes a la que está conectada, podrá conectarse al
depurador Ghidra y ejecutar los siguientes comandos para generar una
reverse Shell.
Ahora en nuestro caso, la herramienta Ghidra ha sido ejecutado en su
modo Debug pero se ha modificado su configuración por defecto para que
no admita conexiones al puerto 18001 en todo sus interfaces de red sino
solamente conexiones locales aun así debido a que hemos obtenido
acceso al sistema destino, podemos utilizar los siguientes comando para
generar una reverse Shell con los privilegios del usuario quien ha
ejecutado la herramienta en su modo Debug, en este caso, sería veronica.
No nos olvidemos de habilitar el puerto 1800 en modo listening en nuestro
sistema antes de ejecutar los comandos.

De esta manera realizamos una escalada de privilegios aprovechando el


modo Debug de Ghidra.
Ahora convertiremos nuestra reverse Shell en una Shell más estable e
interactiva con el fin evitar de que se cierre con errores simples. Luego,
buscaremos vectores de escalada privilegio de manera manual en el
sistema de archivos del sistema destino.
Ahora realizaremos una enumeración manual sobre el sistema de archivos
del sistema destino con el fin de buscar vectores de escalada privilegio.
Podemos observar que el usuario root ha configurado una tarea cron en el
crontab general del sistema, pero no viene a representar un vector de
escalada de privilegios ya que no podemos modificar la variable de
entorno PATH configurada en el archivo crontab general por lo que no
podemos realizar una suplantación del archivo binario bash. Además,
tampoco podemos acceder al directorio root con el fin de observar el
contenido de ese script en Bash ya que no tenemos los permisos
suficientes. Luego, enumeramos los programas que puede ejecutar el
usuario local veronica con los privilegios de otros usuarios a traves del
comando sudo, y nos encontramos con un script en Python.
Ahora observamos los comandos de este script en Python y los permisos
que tenemos sobre el.
Podemos observar que el script va a codificar el mensaje “tryhackme is the
best”, que este formato de bytes, en base64, e imprimir el mensaje
codificado en formato de bytes. Además, no tenemos los permisos de
modificar su contenido, solo de poder observar su contenido.
Ahora aprovechando que este script en Python importa la biblioteca
base64, utilizaremos la técnica Python library hijacking que consiste en
crear una biblioteca maliciosa, que me generara una reverse Shell, con el
nombre de base64 en el mismo directorio actual del script base con el fin
de cuando Python busque la biblioteca en el directorio actual, cargue
nuestra biblioteca maliciosos en ves de la legitima.
De esta manera logramos realizar una escalada privilegio vertical.
Ahora buscaremos las dos banderas.

También podría gustarte