Hack The Box: Passage write-up
Passage was a medium box that really required attention to detail. It starts with noticing that there is a custom CMS that allows self-registration and has an authenticated RCE, followed by some hash cracking on some .htpasswd
files found on the server. With the password we can upgrade our privileges to the first user and then inspecting .ssh/
we notice we can just SSH into the second one. After that, a .viminfo
file hints us at a USB utility that has a vulnerability we can use to overwrite files as root.
Let’s start! The IP of the machine is 10.10.10.206
.
Enumeration
I start by enumerating open ports to discover the services running in the machine. I fire up nmap:
Result of nmap scan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Nmap 7.80 scan initiated Sun Sep 20 20:37:44 2020 as: nmap -sV -sC -oA nmap/initial 10.10.10.206
Nmap scan report for 10.10.10.206
Host is up (0.13s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 17:eb:9e:23:ea:23:b6:b1:bc:c6:4f:db:98:d3:d4:a1 (RSA)
| 256 71:64:51:50:c3:7f:18:47:03:98:3e:5e:b8:10:19:fc (ECDSA)
|_ 256 fd:56:2a:f8:d0:60:a7:f1:a0:a1:47:a4:38:d6:a8:a1 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Passage News
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Sep 20 20:38:01 2020 -- 1 IP address (1 host up) scanned in 17.28 seconds
Not too much, just SSH and HTTP on the standard ports. I’ll first add passage.htb
to my /etc/hosts
file.
Port 80 enumeration
We can see some sort of blog upon visiting the website and the first article immediately caught my attention, as Fail2Ban
is an IPS that blocks bruteforce attacks. This means that we cannot run any directory enumeration tool or sqlmap.
Main website
Fail2Ban post
By looking at the source we can see two users in the mailto:<user>@passage.htb
hrefs: nadav
and paul
.
Users enumeration
I tested a bit for SQL injection and we get something interesting when we give it a letter:
Test for SQLi I
Test for SQLi II
However this seems like a rabbit hole, I spent too much time on it and didn’t get anything out of it. I was a bit lost when, looking at the Fail2Ban
post, I noticed something interesting at the bottom: Powered by CuteNews
. The link sent me to a CMS login page that allowed registration, this is promising!
CuteNews login page
Foothold: CuteNews exploit
I registered and had access to the dashboard, now I only had to find a way to get code execution.
CuteNews register and dashboard
I googled for a bit until I came across this Github repo: https://github.com/CRFSlick/CVE-2019-11447-POC. The gist of the exploit is that we can upload a profile picture with some embedded PHP code on the metadata and then visiting the image under a certain path we can cause the server to treat it as PHP, thus leading to RCE.
RCE with CuteNews exploit
PrivEsc I: paul
Being only www-data
we need to escalate privileges. As always I downloaded LinEnum.sh
to the box and ran it. Eventually it found something juicy: .htpasswd
files that contained hashes.
.htpasswd files found by LinEnum
However, after cracking them they weren’t useful, it was just tests like admin:admin
that lead nowhere… I kept on digging and found this interesting file /var/www/html/CuteNews/cdata/users/lines
which seemed to contain base64 encoded stirngs of pickled sessions:
1
2
$ base64 -d <<< "YToxOntzOjQ6Im5hbWUiO2E6MTp7czoxMDoicGF1bC1jb2xlcyI7YTo5OntzOjI6ImlkIjtzOjEwOiIxNTkyNDgzMjM2IjtzOjQ6Im5hbWUiO3M6MTA6InBhdWwtY29sZXMiO3M6MzoiYWNsIjtzOjE6IjIiO3M6NToiZW1haWwiO3M6MTY6InBhdWxAcGFzc2FnZS5odGIiO3M6NDoibmljayI7czoxMDoiUGF1bCBDb2xlcyI7czo0OiJwYXNzIjtzOjY0OiJlMjZmM2U4NmQxZjgxMDgxMjA3MjNlYmU2OTBlNWQzZDYxNjI4ZjQxMzAwNzZlYzZjYjQzZjE2ZjQ5NzI3M2NkIjtzOjM6Imx0cyI7czoxMDoiMTU5MjQ4NTU1NiI7czozOiJiYW4iO3M6MToiMCI7czozOiJjbnQiO3M6MToiMiI7fX19"
a:1:{s:4:"name";a:1:{s:10:"paul-coles";a:9:{s:2:"id";s:10:"1592483236";s:4:"name";s:10:"paul-coles";s:3:"acl";s:1:"2";s:5:"email";s:16:"paul@passage.htb";s:4:"nick";s:10:"Paul Coles";s:4:"pass";s:64:"e26f3e86d1f8108120723ebe690e5d3d61628f4130076ec6cb43f16f497273cd";s:3:"lts";s:10:"1592485556";s:3:"ban";s:1:"0";s:3:"cnt";s:1:"2";}}}
We can see that there is a pass
field with value e26f3e86d1f8108120723ebe690e5d3d61628f4130076ec6cb43f16f497273cd
for user paul@passage.htb
. I got a few more and used hashid
to check what kind of hash it was.
Finding hash type
I assumed it was SHA-256 as it was the most common one, then started cracking and quickly got a hit for atlanta1
!
Cracking hashes
PrivEsc II: nadav
Cool! Now we are paul
, however there is still one more user, called nadav
who has more privileges. I copied the .ssh/id_rsa
private key to be able to ssh into the box more easily and then something struck me: there was an authorized_hosts
file. That was weird, since we can just copy the key to get into the box. Wondering who was stupid enough to do that I read the file and to my surprise it was nadav
! We can then just ssh as nadav
, easy as that!
Becoming nadav
PrivEsc III: root
As user nadav
I started doing recon and quickly something got my attention: an uncommon SUID binary.
Uncommon SUID binary
I googled and found an exploitDB page (https://www.exploit-db.com/exploits/41240). This was promising and too easy! All my joy quickly faded as the exploit didn’t work, no matter how many times I tried. After looking for variations of the exploit I gave up and started enumerating to see if I had missed anything. Indeed I had, there was a .viminfo
file on my home directory that contained some interesting recently edited files: /etc/dbus-1/system.d/com.ubuntu.USBCreator.conf
.
.viminfo file with interesting data
The file itself didn’t have anything too interesting.
USBCreator.conf file
I searched for any exploits and found a blogpost (https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-in-ubuntu-desktop/) with a local privilege escalation that seemed to have the key, as the author was Nadav
(good hint).
Blogpost with exploit
The main idea of the exploit is that we can create files as root, so I tested it to check that it worked and it did!
Testing the exploit
With the following command I was able to overwrite the /etc/passwd
file and then become root:
1
gdbus call --system --dest com.ubuntu.USBCreator --object-path /com/ubuntu/USBCreator --method com.ubuntu.USBCreator.Image /home/nadav/test/passwd /etc/passwd true
Weaponizing the exploit
Conclusion
This is everything, I hope you enjoyed the writeup and learned something new. It was definitely a cool box that required you pay attention to detail! If you liked it you can give me respect on Hack The Box through the following link: https://www.hackthebox.eu/home/users/profile/31531. Until next time!
Diego Bernal Adelantado