Hello Cyber-Spartans!!
Hoy vamos a realizar una prueba de penetración hacia un servidor de base de datos Oracle.
Si quieres practicar haciendo las diferentes actividades que presentaré durante este tutorial, te invito a revisar la máquina Silo de HackTheBox.
Antes de empezar quiero aclarar que todo mi contenido publicado se hace con fines educativos, informativos y éticos.
No me hago responsable del mal uso que puedan darle.
Con este tutorial aprenderás:
Cómo realizar un simple escaneo de puertos con Nmap.
Cómo realizar un ataque de fuerza bruta para descubrir un SID de Oracle TNS.
Aprender a utilizar la ODAT - (Oracle Database Attack Tool).
Cómo atacar un servidor Oracle con Metasploit Framework.
Cómo realizar un análisis forense con Volatility.
Cómo extraer los hashes de contraseñas en un memory dump.
Cómo realizar una escalada de privilegios mediante la técnica del pass the hash.
Como siempre vamos a empezar a enumerar nuestra víctima, Para ello realizaremos un simple escaneo con Nmap, de la siguiente manera.
Con el resultado del escaneo anterior, pudimos apreciar que este servidor probablemente tenga Windows Server 2008 R2 y por otro lado tiene habilitado el puerto 80 (Microsoft IIS httpd 8.5).
Para este pentesting, vamos a centrarnos en el puerto 1521, que indica ser un servicio oracle-tns.
Fuerza bruta para identificar el SID
Para continuar, vamos a auditar esta base de datos Oracle con la herramienta ODAT. ODAT Es una herramienta de pentesting de código abierto diseñada para atacar y auditar la seguridad de los servidores de Oracle Database.
Los siguientes pasos son:
Enumerar la versión de la base de datos Oracle
Descubrimiento de SIDs (Un ID es represtando como una “instancia de base de datos” única)
Obtener una cuenta de usuario (A travez de bruteforcing)
Explotacion / Escalacion de privilegios.
Podemos utilizar el siguesser de ODAT para descubrir bien:
Fuerza bruta para encontrar credenciales correctas
A partir de los resultados, identificamos 4 posibles SIDs (SAMPLE,SCAN4,XE,XEXDB).
A continuación, tendremos que identificar las credenciales válidas para autenticarse en la base de datos.
Para esta tarea, podemos utilizar un módulo auxiliar de metasploit llamado oracle_login.
Muy bien. Encontramos una credencial válida.
Otra manera de lograr para detectar credenciales validas, es utilizando una lista de credenciales por defecto.
Unas credenciales válidas significan que podemos conectarnos a la instancia XE y empezar a consultar la base de datos en busca de posible información. Resulta que scott también tiene el privilegio SYSBDA. Piensa en ello como algo parecido a sudo - te da flexibilidad extra y mayores privilegios en caso de que quieras hacer alguna alteración de la base de datos, administración de usuarios y la lista continúa.
Oracle Database Penetration Testing
Ahora que tenemos un SID y unas credenciales válidas, podemos conectarnos a la base de datos para la enumeración manual.
Para empezar, podemos consultar los privilegios y las funciones de los usuarios.
Como puedes ver, scott es un usuario con pocos privilegios en el sistema. Para poder obtener acceso al shell, podríamos necesitar escalar nuestro privilegio a DBA primero y realizar algunos ataques conocidos a Oracle. Para lograr esto fácilmente, podemos utilizar una herramienta llamada ODAT (Oracle Database Attack Tool). Es una herramienta de código abierto utilizada para automatizar los ataques a una base de datos Oracle.
Antes de poder utilizar ODAT, necesitamos instalarlo primero en Kali. Puedes consultar esta guía de instalación para instalarlo con éxito.
Usando ODAT - (Oracle Database Attack Tool)
Inicialmente, ejecutaremos todos los módulos de la ODAT en nuestro servidor víctima.
La biblioteca DBMS_XSLPROCESSOR está habilitada y por lo tanto nos permite poner cualquier archivo en la máquina.
En primer lugar, crearemos un simple archivo de texto y comprobaremos si podemos subirlo con éxito a wwwroot.
Como puedes ver, podemos subir el archivo con éxito. Comprobemos usando curl.
Ahora que podemos cargar en el sistema de destino, podemos generar fácilmente un shell inverso con ASPX usando msfvenom, cargarlo usando ODAT, y activarlo para obtener acceso al shell.
Tras subir nuestra shell, iniciaremos el framework de Metasploit y lo configuraremos para que escuche en los puertos previamente indicados.
Posteriormente, solo debemos hacer una peticion a la ruta http://10.10.10.82/shell.aspx y en una consola establecer un oyente para recibir nuestra shell inversa.
Listo, ya tenemos un Shell y con él podemos ejecutar comandos en el servidor.
Privilege Escalation
Como puedes ver, hay un archivo llamado “Oracle issue.txt” en el directorio Desktop. Esto podría contener una pista para nuestro vector de escalada de privilegios.
El archivo de texto menciona un volcado de memoria. Eso es una buena señal para nosotros, porque hay una alta probabilidad de que ese volcado de memoria contenga información valiosa. Muchas herramientas analizarán la memoria por nosotros y sacarán cosas valiosas como contraseñas. Así que está bastante claro que tenemos que hacer un poco de análisis de memoria.
Tras descargar el archivo zip, lo descomprimimos y descubrimos que contiene un volcado de memoria. Utilizamos la herramienta de volatilidad para investigar el volcado.
Uso de Volatility para extraer contraseñas
Después de descargar el volcado de memoria, podemos utilizar volatilidad en él para realizar el análisis forense. Volatility está integrado en Kali, por lo que no hay necesidad de hacer una instalación adicional. Si no estás familiarizado con Volatility, puedes consultar esta hoja de trucos del SANS.
Para el paso inicial, necesitaríamos identificar la versión del sistema operativo de la máquina donde se tomó el volcado de memoria para que los plugins de volatilidad sean precisos. Aunque podemos simplemente emitir un comando systeminfo en nuestra sesión de shell, también podemos identificar esto usando un plugin de volatilidad llamado imageinfo.
Uno de los plugins útiles que podemos utilizar en esta situación es lsadump. El plugin lsadump vuelca los secretos LSA descifrados del registro. Esto expone información como la contraseña por defecto (para sistemas con autologin habilitado), claves públicas RDP, y credenciales usadas por DPAPI.
Como puedes ver en los resultados de lsadump, fuimos capaces de adquirir una contraseña en texto plano DoNotH@ckMeBro!.
Como el servicio SMB es accesible a través de la red, podemos utilizar winexe para iniciar sesión a través de SMB.
Otra forma en la que podríamos haber escalado privilegios es a través del plugin hivelist.
Ahora podemos volcar los hashes suministrando las direcciones relacionadas al SYSTEM y SAM.
Nota: Para utilizar hashdump, se debe especificar la dirección virtual de la columna SYSTEM con el parametro -y y la dirección virtual de la columna SAM con el parametro -s
Podríamos intentar descifrar estos, pero primero, vamos a intentar el ataque pass the hash: