OpenAdmin
OpenAdmin es una máquina Linux de dificultad fácil que cuenta con una instancia de CMS OpenNetAdmin obsoleta. El CMS se explota para obtener un punto de apoyo y la enumeración posterior revela credenciales de la base de datos. Estas credenciales se reutilizan para pasar de forma lateral a un usuario con pocos privilegios. Se descubre que este usuario tiene acceso a una aplicación interna restringida. El examen de esta aplicación revela credenciales que se utilizan para pasar de forma lateral a un segundo usuario. Luego se explota una configuración incorrecta de sudo para obtener un shell de root.

Reconnaissance
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina OpenAdmin. Este resultado lo almacenaremos en un archivo llamado allPorts.
A través de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. En el resultado, comprobamos que se encuentran abierta una página web de Apache y el servicioSSH.
Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.
Accederemos a http://localhost y verificaremos el resultado en un formato más cómodo para su análisis.

Web Enumeration
Accederemos a http://10.10.10.171 y nos encontraremos con la página por defecto que viene predeterminada con Apache.

Realizaremos una enumeración de directorios de la página web a través de la herramienta de gobuster. En el resultado obtenido, logramos encontrar 3 directorios de la página web.
Accederemos a los diferentes directorios (/music, /artwork y /sierra) y nos encontraremos con las siguientes páginas web.



Initial Foothold
OpenNetAdmin v18.1.1 Exploitation - Remote Code Execution
Después de revisar en las diferentes páginas, nos encontramos en que la página web ubicada en http://10.10.10.171/music dispone de una página de Loginla cual nos redirige a http://10.10.10.171/ona/.

Antes de acceder a esta nueva página, realizaremos a través de la herramienta de whatweb un reconocimiento inicial de las tecnologías que utiliza la aplicación web.
Al acceder a http://10.10.10.171/ona/ nos encontramos con la siguiente página web de OpenNetAdmin. Nos encontramos con una sesión de guest iniciada y también comprobamos que dispone de una versión v18.1.1.

Realizaremos una búsqueda de vulnerabilidades conocidas de OpenNetAdmin a través de la herramienta de searchsploit. En el resultado obtenido, comprobamos que la aplicación es vulnerable a Command Injectiony Remote Code Execution.
Realizaremos la misma búsqueda por Internet y también logramos encontrar vulnerabilidades para esta versión.

El exploit que hemos encontrado para lograr explotar la vulnerabilidad es la siguiente, realiza una solicitud mediante cURL en el cual a través de una serie de datos podemos conseguir una ejecución de comandos remotos RCE.
Explotación manual
Realizamos la explotación de la vulnerabilidad manualmente a través de cURL y comprobamos que al intentar ejecutar el comando id, en el resultado que se nos muestra confirmamos el output de la ejecución de comandos.
El siguiente paso será lograr obtener una Reverse Shell para lograr conectarnos a la máquina vulnerable. Para ello, nos pondremos en escucha para recibir la Reverse Shell.
A través del siguiente comando, lograremos explotar la vulnerabilidad presente en OpenNetAdmin indicándole que ejecute una Reverse Shell hacia nuestro equipo.
Verificamos que finalmente logramos obtener acceso a la máquina victima con el usuariowww-data.
Explotación automatizada
Por otro lado, también podemos hacer la explotación a través del siguiente exploit que nos hemos encontrado en GitHub el cual realiza la explotación de la vulnerabilidad de manera más automatizada.
Nos volveremos a poner en escucha con nc para recibir la Reverse Shell.
Ejecutaremos el exploit indicándole la URL Target donde se encuentra el OpenNetAdmin y le indicaremos que ejecute una Reverse Shell.
Comprobamos que finalmente logramos obtener acceso al sistema a través de la Reverse Shell. Al recibir la RevShell, realizaremos el tratamiento básico para lograr obtener una TTY totalmente interactiva.
Pivoting as jimmy user
Information Leakage
Revisando el directorio donde nos encontramos, verificamos un archivo llamado database_settings.inc.php de configuración de la base de datos. En dicho archivo, logramos obtener una contraseña en texto plano.
Trying access on SSH with recently found password
Probamos de comprobar si estas credenciales se reutilizan para el usuario jimmyque hemos encontrado que dispone de bash (comprobado desde el archivo /etc/passwd).
Initial Access
Internal Website found
Revisando los archivos de configuración de Apache, nos encontramos habilitado una página web interna en el puerto 52846 la cual se llama internal.openadmin.htb y tiene asignado el AssignUserIDcomo joanna. Lo cual nos sugiere que quizás joanna levante este servicio.
Port Forwarding with Chisel
Desde nuestro equipo atacante, dispondremos del binario de chisel el cual compartiremos a través de un servidor web con Python.
En la máquina víctima, nos descargaremos el binario compartido y le daremos los permisos de ejecución correspondientes.
En nuestra máquina atacante, configuraremos el chiselpara que actúe como servidor a través del puerto 1234.
A través de la máquina vícitma, indicaremos a chisel que actúe como cliente y se conecte a nuestro equipo realizando un Port Forwarding del puerto interno de la página web encontrada hacia nuestro equipo.
Desde nuestro navegador accederemos a http://localhost:52846 y comprobaremos el siguiente contenido de la página web.

Gaining Access via Webshell in a Writable Web Directory
A través del usuario jimmy, comprobamos que disponemos de permisos de escritura en el directorio /var/www/internal en el cual se está levantando esta página web interna. Por lo tanto, lo que decidimos probar es en crear un archivo llamado gzzcoo.php el cual se trate de una simple web shell para utilizarla y lograr ejecutar comandos.
Desde nuestra máquina atacante, realizaremos la comprobación de ejecución de comandos. En nuestra primera prueba, indicamos que ejecute el comando id, confirmando que la usuaria joanna ees la que ejecuta este servidor web y hemos sido capaces de ejecutar comandos remotod.s
Nos pondremos en escucha con nc para recibir la Reverse Shell.
Codificaremos en URL Encode la sintaxis de la Reverse Shell y utilizaremos la herramienta de cURLpara que realice la petición hacia nuestra web shelly logre ejecutar la Reverse Shell.
Comprobamos que disponemos de acceso al sistema con el usuario joanna y logramos visualizar finalmente la flag user.txt.
Realizaremos un tratamiento de la terminal para poder obtener una TTY totalmente interactiva.
Privilege Escalation
Abusing Sudoers Privilege (nano)
Al revisar si el usuario joanna dispone de algún permiso de sudoers, nos mostraba el siguiente mensaje de error.
Por lo tanto, lo que decidimos es en subir nuestra clave pública en las claves autorizadas SSH del usuariojoanna. Para ello, nos crearemos unas claves SSH en nuestro equipo de atacante y copiaremos el contenido de la clave pública generada.
Escribiremos en el archivo /home/joanna/.ssh/authorized_keys nuestra clave pública SSH para ganar acceso al equipo como el usuario joanna mediante SSH sin proporcionar credenciales.
Probamos de autenticarnos con el usuario joanna conectándonos mediante SSH al equipo, finalmente logramos el acceso correctamente. Ejecutaremos un export TERM=xterm para poder realizar Ctrl+L.
Ahora si ejecutamos sudo -l, ya no nos muestra el mensaje de error que vimos anteriormente. Al comprobar si este usuario dispone depermisos de sudoers, nos encontramos que el usuario puede ejecutar como sudo sin proporcionar credenciales el binario/bin/nano sobre el archivo ubicado en /opt/priv.
A través de la herramienta de searchbins nos encontramos la manera de explotar este binario como sudo y lograr obtener una Shell como usuario root.
Ejecutaremos el comando sudo /bin/nano /opt/priv para editar el archivo con permisos de sudo.
Una vez estemos dentro del archivo con el editor nano, para poder obtener una shell como root, deberemos de presionar Ctrl+R para acceder al apartado de Read file.

Una vez estemos en el modo de Read File, presionaremos la combinación de Ctrl+X para acceder a la opción de Execute Command.

Al seleccionar esta nueva opción, comprobamos que nos permite realizar una ejecución de comandos. Esto es debido que nano tiene implementado una manera para lograr ejecutar un comando en el sistema y que el output del resultado del comando se almacene en nuestro archivo en el que nos encontramos trabajando.
Teniendo esto en cuenta, podemos aprovecharnos de esto para ganar acceso a una shell a través del siguiente comando.

Verificamos que por detrás de nano, se nos ha abierto una shell en la cual podemos ejecutar comandos. Ejecutaremos /bin/bashpara obtener una bash. Finalmente logramos visualizar la flag root.txt.

Última actualización
¿Te fue útil?