Vulnhub-ICA:1 CTF Walkthrough

 



Según información de nuestra red de inteligencia, el ICA está trabajando en un proyecto secreto. Necesitamos saber cuál es el proyecto. Una vez que tengas los datos de acceso, envíanoslos. Colocaremos una puerta trasera para acceder al sistema más adelante. Simplemente concéntrate en cuál es el proyecto. Probablemente tendrás que pasar por varias capas de seguridad. La Agencia tiene plena confianza en que completará con éxito esta misión. ¡Buena suerte, agente!

El primer paso será realizar un reconocimiento de la máquina objetivo con la herramienta Netdiscover.
Netdiscover
Nuestra máquina objetivo tiene la dirección IP 192.168.50.148. Ahora con la herramienta Nmap realizaré un escaneo para averiguar los puertos abiertos de los servicios que se están ejecutando en la máquina objetivo.
nmap -sS
Escaneo SYN Scan (sS)

nmap -sV
Escaneo de detección de vesiones (sV)

Como se observa en las imagenes anteriores el puerto 80 está ejecutando un servidor web con apache 2.4.48. Lo que haré será cargar la página web en mi navegador.
Como se muestra en la imagen se está ejecutando el software qdPM versión 9.2. qdPM es un software para la gestión de proyectos.
Con la herramienta searchsploit buscaré si existe algún exploit o vulnerabilidad conocida.
searchsploit
Aquí se muestran dos vulnerabilidades para la aplicación qdPM versión 9.2. Para este caso utilizaré la segunda vulnerabilidad "Password Exposure". Lo que haré será ejecutar nuevamente search exploit con el parámetro -x para explorar el archivo php/webapps/50176.txt.
searchsploit -x
Como se muestra en la imagen anterior se indica que las cadenas de conexión y password son almacenada en un archivo yml, ubicado en el directorio http://<website>/core/config/databases.yml
database.yml
Lo que haré es descargar el archivo y analizar su contenido.
database-file-yml
Ahora con mi cliente mysql me conectaré al servidor de base de datos mysql de la maquina objetivo y analizaré su contenido.
mysql-conexion
A continuación, ejecutaré la siguiente instrucción "show databases" para enumerar las bases de datos que están ejecución.
instruccion mysql show databases
Instrucción show databeses Mysql
Aqui la base de datos que llama mi atencion es "staff" entonces ejecutaré las siguientes intrucciones mysql para analizar su contenido.
instruccion mysql use
Instrucción use Mysql

instruccion show table Mysql
Aquí las tablas que llaman mi atención son login y user. Entonces consultaré las tablas anteriores para ver qué datos almacenan.
Mysql select * login

Mysql Select * user
Como se muestra en las imágenes anteriores obtuvimos nombre de usuarios y password que están codificada en base64. Ahora con los datos anteriores crearé dos archivos uno con los nombres de usuario y otro con las password decodificadas. Con lo anterior, utilizaré ambos archivos para realizar una ataque de diccionario contra el servicio SSH que se está ejecutando en el servidor.

Decode Bases64

Con la herramienta Hydra realizaré un ataque de diccionario contra el servicio SSH.
Hydra

Como se muestra en la imagen se obtuvieron dos cuentas de usuario para conectarse al servicio SSH.

Ahora me conectaré al servicio SSH con el usuario travis.
ssh user travis
Ejecutaré el comando ls -l para listar los archivos del directorio home del usuario travis.
comando ls -l
Ahora me cambiaré de usuario al usuario dexter, para analizar los directorios del usuario dexter.
ssh user dexter
En el directorio home de dexter hay un archivo llamado note.txt en el cual hay una pista que dice "Me parece que hay una debilidad al acceder al sistema. Hasta donde yo sé, el contenido de los archivos ejecutables se puede ver parcialmente. Necesito saber si existe una vulnerabilidad o no.”

Se nos indica que hay archivos ejecutables que se pueden ver parcialmente, entonces, con la función find de Linux buscaré archivos con permisos de root.
comando find Linux
Aquí hay un archivo que llamó mi atención /opt/get_access. me cambiaré al directorio /opt y analizaré el archivo con el comando file de Linux.
comando file de Linux
Como se muestra en la imagen el archivo get_access es un archivo ejecutable para Linux. Lo que haré es ejecutarlo y observar lo que hace.
ejecucion archivo get_access
Al ejecutar el archivo lo que hace es mostrar información del sistema. Ahora con la función strings de Linux extraeré las cadenas de caracteres y las analizaré.
comando strings linux
Como se observa en la imagen se invoca la función cat de Linux, pero se invoca con su ruta relativa lo que hace que el archivo get_access sea vulnerable al secuestro de PATH.

Ahora lo que haré es crear un archivo llamado cat con permisos de ejecución y en el codificaré la siguiente instrucción.
Lo que hace está instrucción codificada en el archivo llamado cat es establecer el bit setuid para el archivo /bin/bash, este bit indica que el archivo se ejecutará con los privilegios del usuario que lo está ejecutando.

El archivo recién creado, lo cree en directorio /tmp, por lo tanto, debemos agregar al principio del PATH el directorio que creamos.
configuración PATH Linux
Ahora resta ejecutar el archivo get_access para obtener una bash con permisos de root.
bash root
Ahora podemos ejecutar el comando bash -p (bash con privilegios), y cambiarnos al directorio root
comando bash -p
Como se muestra en la imagen se encuentra nuestra flag root.txt, para mostrar el contenido de este archivo utilizaré el comando cat antes de utilizar el comando debemos de configurar nuevamente nuestro PATH.

flags root

Happy Hack!!!

Comentarios