こんにちは、ゆるいぞITチャンネルです。
今回はTryhackmeの「Simple CTF」という演習環境(ルーム)を使用してハッキングの学習していきたいと思います。
※「ハッキングラボの初期構築」、「TryHackMeへの接続方法」については下記のページをご参照ください。
※Youtubeでは動画版をご視聴いただけます。
- ハッキングスキルについて知りたい
- セキュリティの知識を学習したい
- ITインフラの知識を学習したい
※実務や演習等を除き、インターネット上のサーバへクラッキングすることは違法行為となりますのでご注意ください。
- 0.使用する環境
- 1.演習の流れ
- 2.演習問題
- 問1:How many services are running under port 1000?
- 問2:What is running on the higher port?
- 問3:What's the CVE you're using against the application?
- 問4:To what kind of vulnerability is the application vulnerable?
- 問5:What's the password?
- 問6:Where can you login with the details obtained?
- 問7:What's the user flag?
- 問8:Is there any other user in the home directory? What's its name?
- 問9:What can you leverage to spawn a privileged shell?
- 問10:What's the root flag?
0.使用する環境

ゆるいぞIT
今回はTryHackMeの演習用サーバにVPN接続して実施します。
ソフトウェア
- 仮想環境 : Virtual Box
- 攻撃用サーバ : Kali Linux
- ターゲットサーバ : TryHackMeのWebサーバ
演習環境

1.演習の流れ
大まかな流れとしてはKali LinuxからTryHackMeのWebサーバに接続し、サーバ内に仕込まれたフラグを回収することでゴールを目指すという流れになっています。
2.演習問題
問1:How many services are running under port 1000?
「ポート1000以下で実行されているサービスはいくつありますか?」ということで、まずはターゲットホストに対してnmap(ポートスキャン)を実行しましょう。
”nmap”はサーバに対して開いてるポートをスキャンする偵察用ツールになります。
$ nmap -Pn -sS -A -T4 <ターゲットホストのIPアドレス>
スキャン結果を確認すると、1000番以下のポートは「21/tcp open ftp」、「80/tcp open http」になります。

問1の答えは「 2つ 」になります。
問2:What is running on the higher port?
「上位ポートでは何が実行されていますか?」ということで、スキャン結果から分かる通り「2222/tcp open ssh」になります。

問2の答えは「 ssh 」になります。
問3:What’s the CVE you’re using against the application?
「アプリケーションに対するCVEは何ですか?」ということで、使用しているアプリケーションに関連する脆弱性は何ですか?という問題になります。
この設問ではターゲットホストのディレクトリ情報を取得する必要があるので、まずは”gobuster”を実行します。
ディレクトリの説明については下記ページをご参照ください。
$ gobuster dir -u http://<ターゲットホストのIPアドレス> -w /usr/share/wordlists/dirb/common.txt
「/simple」という隠しディレクトリが見つかりました、このディレクトリが少し怪しいので確認してみます。

ページにアクセスすると「CMS Made Simple」というソフトウェアの”version2.2.8”を使用していることが分かりました。

バージョン情報が分かったので、このソフトウェアの脆弱性を確認してみましょう。
Kali Linux上で脆弱性情報を確認する為には”searchsploit”というexploitを検索するコマンドを使用します。
$ searchsploit CMS Simple 2.2.8

「CMS Made Simple < 2.2.10 – SQL Injection」の記載からSQLインジェクション関連の脆弱性があるようです。
「/php/webapps/46635.py」に詳細情報が載っているので、こちらのファイルも確認してみます。

$ cat /usr/share/exploitdb/exploits/php/webapps/46635.py
該当する脆弱性のCVE番号が確認できました。

問3の答えは「 CVE-2019-9053 」になります。
ちなみにソフトウェアの脆弱性情報は”exploitDB”でも検索できます。

問4:To what kind of vulnerability is the application vulnerable?
「このアプリケーションには、どのような脆弱性がありますか?」ということで、さきほど確認した通りSQLインジェクションに関する脆弱性があります。
問4の答えは「 SQLインジェクション 」になります。
問5:What’s the password?
「パスワードは何ですか?」ということで、さきほどsearchsploitで見つけたプログラムを使ってターゲットホストにログインする為のアカウント情報を見つけていきます。
$ python3 /usr/share/exploitdb/exploits/php/webapps/46635.py -u http://<ターゲットホストのIPアドレス>/simple –crack -w /usr/share/wordlists/dirb/common.txt
実行結果からユーザID「mitch」、パスワード「secret」ということが分かりました。

問5の答えは「 secret 」になります。
問6:Where can you login with the details obtained?
「ターゲットホストにどうやってログインしますか?」ということで、最初に実行したポートスキャンでSSH(22番ポート)が開いていることが確認できているのでSSHでターゲットホストにログインします。
$ ssh -p 2222 mitch@<ターゲットホストのIPアドレス>

問6の答えは「 SSH 」になります。
問7:What’s the user flag?
ここまででフラグ獲得の準備が整いましたので「一つ目のフラグ(userフラグ)」をゲットしていきます。
$ ls -l

$ cat user.txt

問7の答えは「 G00d j0b, keep up! 」になります。
問8:Is there any other user in the home directory? What’s its name?
「ホームディレクトリに他のユーザーはいますか?」ということで、ターゲットホストの/home配下を確認してみるとmitch以外に「sunbath」というユーザを確認することができます。
$ ls -l /home

問8の答えは「 sunbath 」になります。
問9:What can you leverage to spawn a privileged shell?
「特権に昇格する為に何が使用できますか?」ということで、root権限になる為に何か使えそうなものを探しましょう。という問題になります。
ここではsudoコマンドを使用します。
-lオプションをつけることで特権ユーザーで実行できるプログラムを確認することができます。
$ sudo -l
「mitchは次のコマンドを実行できます」という記載があり、vimコマンドを使用するとパスワード無しでroot権限になれてしまう…ということが分かりました。

問9の答えは「 vim 」になります。
問10:What’s the root flag?
「rootフラグは何ですか?」ということで、二つ目のフラグ(rootフラグ)をゲットしていきます。
まずはさきほど確認したvimを使ってroot権限にに昇格します。
「GTFOBins」という権限昇格についてのテクニックが纏まっているサイトを参照します。

vimについて記載されているページを確認すると、下記コマンドでroot権限になれることが分かりました。

コマンドを実行するとroot権限になれました。
$ sudo vim -c ‘:!/bin/sh’

root権限になれたら「root.txt」のフラグを確認して完了になります。
# ls -l /root
# cat /root/root.txt

問10の答えは「 W3ll d0n3. You made it! 」になります。
ということで、TryHackMeの「Simple CTF」の解説は以上になります。
それではまた次回お会いしましょう!