DaVinci>Root

Jeeves HTB WriteUp

Jeeves HTB

Presentación

Jeeves es una máquina windows que corre un servicio de jenkin que es un servidor para automatizar tareas open sources, la primera vez que hice la máquina daba con un archivo keepass que contenía claves, pero esta vez no fue necesaria para escalar privilegios, abusamos del privilegio SeImpersonatePrivilege para lograr convertirnos en administrador, y jugamos con JuicyPotato para explotar el mismo, y para ver las flag de root cuenta con un ADS (Alternate Data Stream) que esta es una característica propia de sistema de ficheros NTFS permite incluir metainformación en un fichero. ADS-Alternate Data Stream

Reconocimiento

En la fase de reconocimiento como siempre realizamos la identificación de puertos y servicios en dos pasos, en la primera parte exportando el output en formato grep a un archivo llamado allports:

nmap -p- --open -v -n --min-rate 5000 10.10.10.63 -oG allports

Este es un escaneo de todos los puertos -p-, -v verbosity para que nos represente el output por pantalla a medida que descubre puertos abiertos, -n para que no aplique resolucion DNS y -Pn para que asuma que todos los puertos estan up.

[*] IP Address: 10.10.10.63
[*] Open ports: 80,135,445,5000

Puertos y Servicios

Con el fin de conocer un poco más de los servicios que se están ejecutando y lanzar una serie de script básico de reconocimiento para dichos puertos y servicios.

nmap -p80,135,445,50000 -sCV -A -oN allservices 10.10.10.100
Starting Nmap 7.92 ( https://nmap.org ) at 2022-07-11 10:53 EDT
Nmap scan report for 10.10.10.63
Host is up (0.49s latency).
Not shown: 996 filtered tcp ports (no-response)
PORT      STATE SERVICE      VERSION
80/tcp    open  http         Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-title: Ask Jeeves
|_http-server-header: Microsoft-IIS/10.0
135/tcp   open  msrpc        Microsoft Windows RPC
445/tcp   open  microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
50000/tcp open  http         Jetty 9.4.z-SNAPSHOT
|_http-title: Error 404 Not Found
|_http-server-header: Jetty(9.4.z-SNAPSHOT)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2008|10 (90%), FreeBSD 6.X (85%)
OS CPE: cpe:/o:microsoft:windows_server_2008:r2 cpe:/o:microsoft:windows_10 cpe:/o:freebsd:freebsd:6.2
Aggressive OS guesses: Microsoft Windows Server 2008 R2 (90%), Microsoft Windows 10 1511 - 1607 (85%), FreeBSD 6.2-RELEASE (85%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: Host: JEEVES; OS: Windows; CPE: cpe:/o:microsoft:windows

Aquí podemos identificar dos servicios http en diferente puertos, puerto 80 y 50000 respectivamente, web server de Microsoft IIS y Jetty 9.4.x un Java Web Server; es bueno identificar estas versiones para luego buscar en exploit-DB o seachsploit vulnerabilidades asociadas a las mismas, que quizás para nuestra version enumerada solo aparece un Information Disclosure en un archivo txt.

Podemos observar el OS que detecta nmap windows_server_2008 r2 que podemos comprobar una vez ganemos accesos con el comando system info.

Enum SMB puerto 445

Si intentamos conectarnos al servicio de SMB haciendo uso de smbclient a través de un null session para nos reporta session setup failed: NT_STATUS_ACCESS_DENIED; por lo que necesitaríamos credenciales para listar y enumerar dicho servicio.

smbclient -L //10.10.10.63 -N 

Puertos 80 y 50000

Bien el servidor web en la http://10.10.10.63/ nos muestra un buscador como la siguiente imagen y que sin importar que introducimos nos envia a /error.html, que no es más que una imagen de error ASP.NET !ay ASP.NET framework, por allí inicie viendo video de Gavilanch2 en youtube!; ok seguimos..

Jeeves HTB

Mencionar que aplicar fuzzing a directorio tampoco arroja nada a diferencia del servicio en el puerto 50000.

Jeeves HTB

Ya hablamos sobre Jetty 9.4.x y posibles vulnerabilidades asociadas; y el fuzzing arroja:

gobuster dir -u http://10.10.10.63:50000/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,php,html

Y así se ve nuestro Jenking!

Jeeves HTB

Como mencioné en la introdución automatiza la creación y prueba de software, y de ser asi permite la ejecución de comandos, como podemos ver en la siguiente imagen, permite ejecutar windows batch, shell, groovy entre otros, si investigamos un poco más.

En una consola groovy podemos ejecutar una reverse shell, mientras estamos en escucha, podemos ejecutar el siguiente script de groovy, Groovy-ReverseShell, como se ve en la siguiente imagen.

Jeeves HTB

Ejecutamos y aquí esta nuestra shell;

Jeeves HTB

Escalando Privilegios

Jeeves HTB

Lo que suelo hacer antes de escalar privilegios o para iniciar, es moverme a un directorio con capacidad de escritura, cualquiera del listado de applocker bypass windows, en este caso C:\Windows\Temp crear un directorio priv para comprobar capacidad de escritura y traemos el Juicy-Potato.

En esta ocasión tambien agregue el nc.exe para enviarme una consola a otro puerto ya que el priv de SeImpersonatePriv ejecuta esta tarea como el administrador como se puede ver en la siguiente imagen:

Jeeves HTB

recibimos la conexión mientras estamos en escucha con el comando:

rlwrap nc -nlvp 4444

Root Flag --> Alternate Data Stream

En la siguiente imagen observamos que al momento de intentar ver la flag, nos dice look deeper :)

Jeeves HTB

Para listar dicha flag luego de listar deeper con el comando:

dir /R

la data en stream se puede leer si la rediregimos al comando more <

more < hm.txt:root.txt:$DATA

!As simple as that!

🖱️by: @DaVinciRoot