Popcorn 日本語でウォークスルー Hack The Box Machine:

HTB htb-medium

Hack The BoxのPopcornのウォークスルー・ライトアップ(walkthrough/writeup)です。難易度はmediumとなっています。
※本記事はサイバー犯罪を助長するものではありません。ハッキングやクラック等の悪用は厳禁です。

HTB Popcorn ウォークスルー・ライトアップ Hack The Box

Summary

local shell取得まで

ターゲットポート:TCP 80(http)
脆弱性:ターゲットのwebサイトでは、「Torrent Hoster」が動作していた。これは、Torrent Hoster – Remount Uploadの脆弱性が内在していた。
これを利用して、reverse-shell用のスクリプトをターゲットにアップロードし、起動することでshellを取得した。
local権限を取得したユーザ:「www-data」

privilege Escalation取得まで

脆弱性:ターゲットのLinuxOSでは、Linux Kernel 2.6.37 ‘Full-Nelson.c’ Local Privilege Escalationの脆弱性が内在していた。これを利用してroot権限を取得した。
root権限を取得したユーザ:root

Information Gathering

ポートスキャン

それでははじめます。まずはターゲット上で動作しているTCPポートをnmapで探します。nmapについてはこちらを参照ください。

nmapの結果、上画像の通り、TCPポート番号22(ssh),80(http)が開いていることが分かりました。
まずはhttpサービスから調査していくことにしました。

ターゲットのhttpサービス調査

まずは、httpでfirefoxにアクセスしました。その結果、以下サイトに接続しました。
なんらかのサイトが動いているようです。しかし、この段階では何が動いているか分かりませんでした。

gobusterを使用して、ターゲットのフォルダ階層を調査しました。
その結果、「torrent」というフォルダを見つけました。

この「torrent」にアクセスした所、以下が表示されました。


どうやら、「Torrent Hoster」というアプリケーションが動いているようでした。

「Torrent Hoster」の脆弱性調査

「Torrent Hoster」の脆弱性を調査した所、Torrent Hoster – Remount Uploadが見つかりました。

そのため、「Torrent Hoster」経由でreverse-shellを取得する方法を検討することにしました。

local shellの取得

「Torrent Hoster」の脆弱性を利用してreverse-shellを取得する

まず、「Torrent Hoster」のアカウントを作成することにしました。先程の画面の「Sign up」から以下の通り、アカウントを作成しました。

続いて「Upload」タブをクリックしました。その画面で、以下の通り任意の「torrent」イメージをアップロードしました。

その後、アップロードした「torrent」イメージに対して、以下の通り「Edit this torrent」を選択しました。

すると、以下のようなポップアップが表示されました。どうやら「Update Screenshot」から何かファイルがアップロードできるようでした。
ここからreverse-shell用のファイルをアップロードしていきました。

まず、reverse-shell用のファイルをpentestmonkeyからダウンロードしました。
ダウンロードしたファイルは「php-reverse-shell.php」とし、自分のマシンのIPアドレスとポート番号に変更しました。

ただしこのままだと、このアップローダーは画像ファイル(「.jpg .jpeg .gif .png」)しか添付を許可していませんでした。

そこで、BurpSuiteを使用しました。

BurpSuiteを起動し、以下の通り、「Submit Screenshot」から「php-reverse-shell」をアップロードしました。

すると、BurpSuite側で、以下の通り表示されたので、「Content-Type」を「application/x-php」から「image/jpeg」に変更しました。
変更後は、BurpSuite側で「Forward」をクリックしました。

そうすると、以下の通り、「php-reverse-shell.php」がアップロードされたことが分かりました。

ファイルのアップロード先を探すために、再度gobusterを利用した所、「torrent/upload」というパスを見つけました。

「torrent/upload」にアクセスした所、以下の通りアップロード先を見つけました。

netcatを仕掛けて、上記画像のphpファイルをクリックした所、reverse-shellを取得しました。
取得したshellは「www-data」でした。

Privilege Escalation

Privilege Escalationの脆弱性調査

linpeasを使ってターゲット内を調査しました。
すると、ターゲットのOSが以下であることが分かりました。

Linux version2.6.31-14-generic-pae

このLinux versionの脆弱性を調査した所、Linux Kernel 2.6.37 (RedHat / Ubuntu 10.04) – ‘Full-Nelson.c’ Local Privilege Escalationを見つけました。
こちらの攻撃コードを自分のマシンに「15704.c」としてダウンロードしました。

Linux Kernelの脆弱性を利用した攻撃

以下の通り、wgetを使用して自分のマシンからターゲットへ「15704.c」をダウンロードしました。
「15704.c」をコンパイルし、実行した所、root権限を取得することができました。

flagを探す

user.txtは「/home/george」にありました。
root.txtは「/root」直下にありました。

以上で、Popcornのウォークスルーは終了です。