はじめに
本記事はTryHackMeのWriteupです。
RoomはTakeOver、Difficulty(難易度)はEasyです。
TakeOverはサブドメインの列挙を行なうことで、フラグを取得します。
このRoomでは、サブドメインを調査する方法について学ぶことができます。
TakeOver
準備作業としてマシンを起動後、/etc/hosts
ファイルにIPアドレスと、futurevera.thmのドメイン名を記入します。
以下はポートスキャンの結果です。試しにgobusterも実行しましたが、特にフラグにつながるようなヒントは見つかりませんでした。
##################
# Port scan tool #
##################
*Detailed scan :1
*Full scan :2
***Select scanning method by number***
1
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-10 17:36 JST
Nmap scan report for 10.10.139.197
Host is up (0.24s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 dd:29:a7:0c:05:69:1f:f6:26:0a:d9:28:cd:40:f0:20 (RSA)
| 256 cb:2e:a8:6d:03:66:e9:70:eb:96:e1:f5:ba:25:cb:4e (ECDSA)
|_ 256 50:d3:4b:a8:a2:4d:1d:79:e1:7d:ac:bb:ff:0b:24:13 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Did not follow redirect to https://futurevera.thm/
|_http-server-header: Apache/2.4.41 (Ubuntu)
443/tcp open ssl/http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_ssl-date: TLS randomness does not represent time
|_http-title: FutureVera
| tls-alpn:
|_ http/1.1
| ssl-cert: Subject: commonName=futurevera.thm/organizationName=Futurevera/stateOrProvinceName=Oregon/countryName=US
| Not valid before: 2022-03-13T10:05:19
|_Not valid after: 2023-03-13T10:05:19
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.26 seconds
Scan completed
ブラウザを起動してアクセスすると、サイトが表示されます。
ルームの説明内容を踏まえて、ヒントはサブドメインだと思われるため、以降ffufを用いてサブドメインの列挙を行います。
ffuf
ワードリストは、SecListsのsubdomains-top1million-5000.txt
ファイルを使用します。
$ ffuf -w /<Your dir path>/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -u https://<Ip address> -H "Host: FUZZ.futurevera.thm"
上記のコマンドを実行すると以下の様な出力がえられます。
[Status: 200, Size: 4605, Words: 1511, Lines: 92, Duration: 236ms]
* FUZZ: vpn
[Status: 200, Size: 4605, Words: 1511, Lines: 92, Duration: 236ms]
* FUZZ: www
[Status: 200, Size: 4605, Words: 1511, Lines: 92, Duration: 236ms]
* FUZZ: ns1
[Status: 200, Size: 4605, Words: 1511, Lines: 92, Duration: 236ms]
Size
の振る舞いから効率よく調査するためには、以下のようにオプションを付与する必要があります。
$ ffuf -w /<Your dir path>/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -u https://<Ip address> -H "Host: FUZZ.futurevera.thm" -c -fs 0,4605
-H
オプションは、HTTPヘッダーを指定します。HostヘッダーをFUZZ.futurevera.thm
として指定することで、サブドメインのFUZZ
がリストの値に置換されます。
-fs
オプションは、ステータスコードのフィルタリングを行います。上記の例では4605のステータスコードを除外しています。
上記オプションを付与して実行すると、2個のサブドメインが検出されました。
[Status: 200, Size: 1522, Words: 367, Lines: 34, Duration: 237ms]
* FUZZ: support
[Status: 200, Size: 3838, Words: 1326, Lines: 81, Duration: 236ms]
* FUZZ: blog
証明書の確認
ffufの実行結果から2つのサブドメインを列挙することができました。
タスクの説明を参考にしながら/etc/hosts
ファイルにsupport.futurevera.thm
を追加します。
ブラウザからsupport.futurevera.thm
にアクセスします。
サーバ証明書を確認すると、Subject Alt Names
から新しいサブドメインを発見しました。
同じように/etc/hosts
ファイルに新しいサブドメインを追記します。
上記サブドメインを辿ると、フラグが見つかります。
おわりに
想像力があればすぐに解ける場合もあると思いますが、ffufツールの重要性を学びました。