こんにちは、ゆるいぞITチャンネルです。

それでは今回はターゲットサーバの操作を奪った後に管理者権限を取得するまでの流れを解説していきたいと思います。

管理者権限というのは「root権限」や「admin権限」とか言われたりもしますが、要するに「その権限があると何でもできちゃいますよ」っていう権限のことになりますね。

今回はTryhackmeの「RootMe」という演習環境(ルーム)を使用します。

ハッキングラボの初期構築」、「TryHackMeへの接続方法」については下記のページをご参照ください。

※Youtubeでは動画版をご視聴いただけます。

この記事はこんな人にオススメ
  • ハッキングスキルについて知りたい
  • セキュリティの知識を学習したい
  • ITインフラの知識を学習したい

※実務や演習等を除き、インターネット上のサーバへクラッキングすることは違法行為となりますのでご注意ください。

1.ラボ環境構築の流れ

ソフトウェア

  • 仮想環境 : Virtual Box
  • 攻撃用サーバ : Kali Linux
  • ターゲットホスト : TryHackMeのWebサーバ

演習環境

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

2. 演習の流れ

大まかな流れとしてはKali LinuxからTryHackMeのWebサーバに接続し、サーバ内に仕込まれたフラグを回収することでゴールを目指すという流れになっています。

最終的な目標はターゲットサーバに保存されている「user.txt」と「root.txt」に書かれたフラグ(記載内容)の入手なります。

3. 偵察(Reconnaissance)

ゆるいぞIT

まずはターゲットホストに対する偵察を実施していきましょう。

問1:Scan the machine, how many ports are open?

ターゲットマシンをスキャンした結果いくつのポートが開いているでしょうか?

まずはターゲットホストに対してポートスキャン(nmap)を実行して解放されているポートを確認しましょう。

ポートとは?
簡単にいうとサービス毎に開いているドアのようなものです。
Webサービスならhttp・https 、メールならSMTP・POP、ポートが開いておきことで、それぞれのサービスを提供できるようになります。

nmapとは?
サーバに対して開いてるポートをスキャンする偵察用ツールになります。

スキャン結果から「22番のSSH、80番のHTTP」が確認できたので、問1の答えは「2つ」になります。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

問2:What version of Apache is running?

実行されている Apache のバージョンは何ですか?

これはスキャン結果(nmap)のHTTPの項目を見ると答えが分かります。
※「Apache」はWebサーバのソフトウェアのこと

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

問2の答えは「Ver2.4.29」になります。

問3:What service is running on port 22?

ポート22で実行されているサービスは何ですか?

こちらもスキャン結果(nmap)からポート22はSSHということが分かります。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

問3の答えは「SSH」になります。

問4・問5:Find directories on the web server using the GoBuster tool. / What is the hidden directory?

Gobusterを実行して隠しディレクトリを見つけましょう。

設問の通りGobusterを実行してとディレクトリ情報を取得してみましょう。

スキャン結果を見てみると「/panel」、「/uploads」が隠しディレクトリとして見えています。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

問4・問5の答えは「/panel、/uploads」になります。

4. シェルの取得(Getting a shell)

ゆるいぞIT

次のフェーズではシェルの取得を実施します。

シェルの取得とは?
シェルの取得というのは以前解説した”リバースシェル”のことになります。
あの時はWindowsPCに対して実行して操作を奪うという流れでしたが、今回はKali Linuxと演習用サーバでセッションを張って操作を奪うという流れになります。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

リバースシェルの詳細については下記ページで解説しているので、そちらをご参照ください。

問1:user.txt

一つ目(user.txt)のフラグを取得しなさい。

フラグ取得系の演習問題は、基本的には偵察フェーズで見つけた情報を辿っていくとゴールできるようになってるので、まずはGobusterで見つけたディレクトリを見てみましょう。

/panel にアクセスすると「Select a file to upload」ということで、演習サーバにファイルをアップロードできることが分かります。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

試しに適当なファイルをアップロードしてみましょう。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

/uploads のディレクトリにアクセスしてみると、アップロードしてファイルが確認できます。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

ファイルをアップロードできるということは、操作権限を奪うためのシェルを仕込んでターゲットホストの操作を奪取できるかもしれませんので、その方法を試してみましょう。

今回はPHPベースのシェルがKali Linuxにデフォルトで用意されているので、そちらのファイルを使用して実行してみます。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

IPアドレスの部分だけKali Linuxのアドレスに変更しておきましょう。

ポート番号はデフォルトのままで問題ありません。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

このファイルを先ほどの「file to upload」のページからアップロードしてみると…

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

PHPは使用できません」というエラーが表示され、アップロードすることができませんでした。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

.exe」や「.php」などの怪しいプログラムが実行できそうなファイルはホスト側で制限しておりブロックされる可能性が高いです。

こういった場合は拡張子の変更が有効な手段になります。

ファイルの拡張子を「.phtml」に変更して再度アップロードしてみると…

今度は問題なくアップロードできましたね。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】
ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

他にも「.pht .phtml .php3 .php4 .php5 .inc」といった拡張子が使えたりします。

シェルのアップロードが完了したので、あとはKali Linux側で待ち受け処理を実行しておきます。

これで操作を奪うための準備ができたので、先ほどアップロードしたシェルを実行してみましょう。

php-reverse-shell.phtml」をダブルクリックします。

connect to <IPアドレス>」ということで、Kali Linux側で操作できるようになったら接続成功になります。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

これで操作権限が奪えたので目的である「user.txt」を取得しましょう。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

一つ目のフラグを取得することができました。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

問1の答えは「THM{y0u_g0t_a_sh3ll}」になります。

5. 権限昇格(Privilege escalation)

ゆるいぞIT

最後に権限昇格を実施してroot権限を取得していきましょう。

問1:Search for files with SUID permission, which file is weird?

SUID権限を持ったファイルを検索してみましょう。

SUID(Set User ID)権限とは?
一般的にファイルやコマンドを実行する場合、設定されている権限のユーザしか実行できないようになっていますが、管理者権限が付与されているSUIDが設定されていると権限を持たないユーザでも実行できてしまうというものになります。
要するに権限がない人がファイルやコマンドを実行しても、root権限で実行できてしまうってことですね。

まずはSUID権限を持ったファイルを探してみましょう。

検索が完了するとSUID権限がついたファイルがズラズラと表示されますが、注目するのは「/usr/bin/python」になります。

/usr/bin/python」にSUID権限がついているとPythonスクリプトが実行し放題ということになります。

なので今回はPythonを足掛かりとしてroot権限に昇格してみましょう。

問1の答えは「/usr/bin/python」になります。

問2:Find a form to escalate your privileges.

root権限へ昇格するための方法を見つけましょう。

以前も使用しましたが「GTFOBins」というサイトに権限昇格についてのテクニックが纏まっているので、そちらのサイトを参考にします。

/python にSUIDが付与されている場合は、下記コマンドを実行することでroot権限になれるようなので実行してみましょう。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

何も表示されませんが権限を確認してみるとroot権限に昇格していることが分かります。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

これで目的だったroot権限に昇格でたので、最後に「root.txt」を確認して全てのタスクが完了になります。

ターゲットホストの管理者権限(root権限)を奪取する方法【ハッキングスキル】

問2の答えは「THM{pr1v1l3g3_3sc4l4t10n}」になります。

ということで、今回は管理者権限を取得するまでの一連の流れを実施してみました。

初見だと「シェルの取得」や「権限昇格」のあたりが少し難しいと思いますが、落ち着いて情報を辿っていくと必ずゴールまで辿り着けるようになっているので、興味が出た方は各サイトを参考に挑戦してみてはどうでしょうか。

ということで、今回はここまでにしたいと思います。

それではまた次回お会いしましょう!