今回は、HTB(Hack The Box)Labの「Starting Point」のTier 1マシン「Crocodile」を攻略していきます。

「Crocodile」の攻略では、nmapやGobusterといったツールを使います。

マシンを攻略する前に、ツールの使い方について簡単に調べておくと、効率的に学習を進められます。


なお、本記事では、Kali LinuxからHTBへVPN接続して、マシンを攻略します。

まだ、環境構築が済んでいない方は、以下の記事をご覧ください。


サイバーセキュリティ入門‐環境構築編1|VirtualBoxの導入

サイバーセキュリティ入門‐環境構築編2|Kali Linuxの導入と初期設定

サイバーセキュリティ入門‐環境構築編3|HTBのアカウント作成とVPN接続


※本サイトでは、HTBの記事作成ガイドラインに沿って、記事を作成しています。


1.「Crocodile」の学習準備

まずは、以下の手順に従って、「Crocodile」の学習準備を済ませましょう。



上記の手順は、別の「Starting Point」マシン攻略でも流れは共通です。

今回初めて「HTBのマシン攻略」に触れるという方は、以下の記事で学習準備について詳しく解説しているので、参考にしてください。


サイバーセキュリティ入門‐実践編1|実際にHTBのマシン「Meow」を攻略してみよう


1-1.取得したIPアドレスを変数に入れておこう

上記の「Start Machine」からマシンを起動したあと、画面にIPアドレスが表示されます。

マシンの攻略では、このIPアドレスを度々使うのですが、毎回入力するのは手間です。

そこで、IPアドレスに名前をつけて保存し、簡単に使えるようにしましょう。


ターミナルを開き、以下のコマンドを実行します。

$ exportIP={IPアドレス}


これで、IPアドレスを以下のように、「$IP」で使えるようになりました。


変数の使用例

$ echo $IP
$ ftp $IP
$ nmap $IP


1-2.回答時の注意点

HTBのVPNに接続する際、フルトンネル(全ての通信が強制的にHTBにルーティングされる)になることがあります。

そうした場合、Webブラウザで開いている学習ページへのアクセスも「HTB内部ネットワーク経由」になり、接続が不安定になる場合があります。

その結果、「Task」や「Submit Flag」の送信時、通信エラーが発生する場合があります。


「Task」や「Submit Flag」の送信に失敗する場合は、以下の方法を試してみてください。



2.Task1「What Nmap scanning switch employs the use of default scripts during a scan?」

設問の意味は、「Nmapでスキャンする際に、デフォルトスクリプトを使用するスイッチはどれですか?」です。


Task1の正解は「-sC」です。


デフォルトスクリプト(NSE)については、「Sequel」マシン攻略でも触れているので、参考にしてください。


3.Task2「What service version is found to be running on port 21?」

設問の意味は、「ポート21で実行されているサービスのバージョンは何ですか?」です。


では以下のコマンドで、実際にポートスキャンを実行して、調べてみましょう。

なお、「-p21」というポート番号を指定するオプションを使って、スキャンする方法もあります。


$ nmap -sV -sC –top-ports 100 –open $IP

※「-sV」:サービス名とバージョンを検出する

※「-sC」:NSEのデフォルトスクリプトを実行する

※「–top-ports 100」:よく使われるポート上位100個をスキャンする

※「–open」:開いているポートだけ表示する


すると、以下のようなスキャン結果が返ってきます。

https://i.gyazo.com/f2c7394069383c67d81b862e2f7b4284.png

上記のスキャン結果から、Task2の正解は「vsftpd 3.0.3」だと分かります。


4.Task3「What FTP code is returned to us for the "Anonymous FTP login allowed" message?」

設問の意味は、「「匿名FTPログインが許可されました」というメッセージに対して、どのようなFTPコードが返されますか?」です。


実際にftpにログインすると、以下のようなメッセージが表示されます。

https://i.gyazo.com/804f1d55fff2b3840d95bdf4397781ed.png

よって、Task3の正解は「230」です。


5.Task4「After connecting to the FTP server using the ftp client, what username do we provide when prompted to log in anonymously?」

設問の意味は、「FTPサーバーに接続した後、匿名でログインするように求められた場合、どのようなユーザー名を入力すればよいですか?」です。


Task4の正解は「anonymous」です。


匿名FTPについては、「Fawn」マシンの攻略でも触れているので、ぜひ参考にしてください。


6.Task5「After connecting to the FTP server anonymously, what command can we use to download the files we find on the FTP server?」

設問の意味は、「FTPサーバーに匿名で接続した後、FTPサーバー上で見つけたファイルをダウンロードするには、どのようなコマンドを使用すればよいでしょうか?」です。


Task5の正解は「get」です。


FTPの基礎的な操作についても、「Fawn」マシンの攻略で解説しているので、ぜひ参考にしてください。


7.Task6「What is one of the higher-privilege sounding usernames in 'allowed.userlist' that we download from the FTP server?」

設問の意味は、「FTPサーバーからダウンロードする「allowed.userlist」に含まれる、権限が高いと思われるユーザー名の1つは何ですか?」です。


まずは、以下のコマンドでftpに接続します。


$ ftp $IP


すると、ログインユーザー名を問われるので、「anonymous」と入力しましょう。

ログインに成功すると、以下のようなメッセージが表示され、プロンプトが「ftp>」というふうに切り替わります。

https://i.gyazo.com/8d97b9695785642c7ac4945b197bd4ee.png

では、以下のコマンドで、ftpサーバー上に存在するファイル一覧を取得してみましょう。


ftp> ls


すると、以下のようなデータが返ってきます。

https://i.gyazo.com/f9d294e4982175cfae208b5de9097161.png

上記からは、このftpサーバー上に「allowed.userlist」「allowed.userlist.passwd」という2種類のファイルが存在することが分かります。

では、getコマンドで、allowed.userlistをダウンロードしましょう。


ftp>get allowed.userlist


以下のように表示されれば、無事にダウンロードできています。

https://i.gyazo.com/6655bb3c937cbd84049b37e28d51dd5b.png

ダウンロードに成功していれば、ローカルの「kali」に「allowed.userlist」が存在しているはずです。

allowed.userlistを開くと、以下のようなデータが表示されます。

https://i.gyazo.com/bde7f12b9f518bbbb7f4f7e5b9dfaac1.png

上記から、Task6の正解は「admin」だと分かります。


8.Task7「What version of Apache HTTP Server is running on the target host?」

設問の意味は、「対象ホスト上で稼働しているApache HTTP Serverのバージョンは何ですか?」です。


では、Task2で実行したポートスキャンの結果をもう一度見てみましょう。

https://i.gyazo.com/7a50fd7c4fef05eb560cd399e0cdfd19.png

スキャン結果から、Task7の正解は「Apache httpd 2.4.41」と分かります。


9.Task8「What switch can we use with Gobuster to specify we are looking for specific filetypes?」

設問の意味は、「Gobusterで特定のファイルタイプを指定するには、どのスイッチを使えばよいですか?」です。


Task7の正解は「-x」です。


参考:gobuster/README.md at master


10.Task9「Which PHP file can we identify with directory brute force that will provide the opportunity to authenticate to the web service?」

設問の意味は、「ディレクトリの総当たり攻撃によって、Webサービスの認証に使われるPHPファイルはどれか特定できますか?」です。


ディレクトリの総当たり攻撃には、Gobusterというツールを使います。

Gobusterの使い方について詳しくは、「Appointment」マシンの攻略記事で解説しているので、ぜひ参考にしてください。


今回は設問で、「PHPファイル」と指定されているので、Task8の「-x」というオプションを使って、通常のディレクトリとphpファイルを対象に、ブルートフォースを行います。

では、ターミナルで、以下のコマンドを実行しましょう。


$ gobuster dir -u $IP-w /usr/share/wordlists/dirb/common.txt -x php

※「dir」:ディレクトリ探索の指定

※「-u」:対象URLの指定

※「-w」:使用するワードリスト(今回は/usr/share/wordlists/dirb/common.txt)の指定

※「-x」:ファイルタイプの指定


すると、以下のようなスキャン結果が返ってきます。

https://i.gyazo.com/668cf0955d2b724e2a698afa3dd1185c.png

スキャン結果から、Task7の正解は「login.php」だと分かります。


11.Submit Flag

nmapによるスキャン結果によると、80番ポートで、Webサーバーが動いています。

では、このWebサーバーには、どのようなディレクトリが存在するのでしょうか。


まずは、先ほど、Gobusterで得たスキャン結果をもう一度見てみましょう。

https://i.gyazo.com/7b1ba2a9d439e10aac1a9c95b57abf40.png

スキャン結果を見ると、



という5つのディレクトリがあるようです。


では、一番falagがありそうな「{IPアドレス}/dashboard」をブラウザで開いてみましょう。

すると、ルーティングにより、「{IPアドレス}/login.php」に飛ばされ、以下のようなログイン画面が表示されます。

https://i.gyazo.com/2a815f6106decad56f6e4a2af79114ed.png

Task6より、「admin」というユーザー名は分かっています。

しかし、パスワードがわかりません。


そこで、Task6で、21番ポートで動いているftpサーバーから「allowed.userlist」をgetコマンドで取得したことを思い出しましょう。

よく見ると、ftpサーバーには「allowed.userlist.passwd」というログインパスワードが記載されたファイルもあります。

そこで、ftpサーバーにもう一度接続し、以下のコマンドで「allowed.userlist.passwd」をダウンロードしましょう。


ftp>get allowed.userlist.passwd


ダウンロードした「allowed.userlist.passwd」の中身を見ると、以下のようなデータが入っています。

https://i.gyazo.com/df07cbcc02e6e34e191eb9c3882f2bad.png

Task6のユーザー名のデータを合わせると、



という組み合わせで、管理者としてログインできそうです。

早速試してみましょう。

すると、無事ログインに成功し、以下のような画面が表示されます。

https://i.gyazo.com/0a4507ef1a24d7e2b32f9d79c1d2c067.png

ダッシュボード上部に「Here is your flag: c7110277ac44d78b6a9fff2232434d16」という記載があるので、このflagを提出しましょう。

これにて、「Crocodile」のマシン攻略完了です。

お疲れ様でした。


12.あとがき

今回は「Crocodile」というマシンの攻略を通して、nmapやGobusterといったツールの操作や、ftpサーバーの設定ミスから生じる脆弱性について学習しました。

今回使ったスキャンツール類は、ほかのCTF問題でもよく使用するので、使い方を覚えておきましょう。

今後も引き続き、「Starting Point」のマシンを攻略していくので、ぜひご覧ください。