Shocker 日本語でウォークスルー Hack The Box Machine:
Hack The BoxのSockerのウォークスルーです。難易度はeasyとなっています。
※本記事はサイバー犯罪を助長するものではありません。悪用は厳禁です。
目次
HTB Shocker ウォークスルー
サマリー
local shell取得まで
ターゲットポート:TCP 80 (HTTP)
脆弱性:ShellShock(CVE-2014-6271)によるRemote Code Execution
local権限を取得したユーザ:shelly
privilege Escalation取得まで
脆弱性:Misconfiguration(解釈によっては違うかも)。ユーザshellyはperlをsudoで実行できた。そのため、perlを使用して/bin/shを実行し、root権限を取得した。
Information Gathering
ポートスキャン
それでははじめます。まずはターゲット上で動作しているTCPポートをnmapで探します。nmapについてはこちらを参照ください。
上画像の通り、TCP80(http)が動作していることが分かりました。試しにfirefoxでhttpアクセスしてみます。
ターゲット上の「Don’t Bug Me!」というhttpサイトにアクセスできました。ただ、このページは、画像のみを表示させるものでした。このページにはログイン機能等も無く、reverse shellを取得することも出来なさそうなので、フォルダ階層を調査してみることにしました。
httpサーバ上の階層調査
httpサーバ上の階層調査にはGobusterを使用します。Gobusterについてはこちらを参照ください。※参照先は英語になっています。
上画像の通り、「cgi-bin」というフォルダがあるようです。ただし「Status 403」のため、firefoxでアクセスしても何も表示されませんでした。そのため、別のツールを使用して、「cgi-bin」フォルダ上に何かファイルがないかを調査します。
別のツールはdirsearchを使用しました。dirsearchについてはこちらを参照ください。※参照先は英語になっています。

dirsearchを使って「cgi-bin」上のファイルを調査した所、「user.sh」というファイルが存在することが分かりました。
「cgi-bin」に関する脆弱性を検索した所、ShellShock(CVE-2014-6271)を見つけました。この脆弱性を軸にLocal shellを取得することにしました。
Local shell取得
サンプルコードの実行
ShellShockに関しては、こちらを参考にサンプルコードを実施しました。

上画像の通り、サンプルコードが成功し、「/etc/passwd」が取得できました。続いてlocal shellの取得を目指します。
local shellの取得
reverse shellのコードは、こちらを参考しました。
無事にlocal shellを取得しました。※私のIPアドレスは塗りつぶしています。
ユーザー名は「shelly」のようです。
shellyのホームディレクトリに移動し、「user.txt」を発見しました。これでlocal shellの取得は完了です。
Privilege Escalation取得
ローカルユーザが使用できるsudoの調査
続いてprivilege Escalation(root権限の取得)を検討していきます。まずは、「shelly」ユーザがsudoで何か実行できるかを調査しました。
上画像で「(root) NOPASSWD: /usr/bin/perl」とあるように、sudoでperlが実行できるようです。そのため、perlで実行できる特権昇格コマンドを試してみることにしました。
perlによるroot権限の取得
rootへの特権昇格のコマンドは、こちらを参考しました。
上記画像の通り、root権限を取得しました。また、rootディレクトリ上に「root.txt」を発見しました。privilege Escalationまで完了したので、Shockerのウォークスルーは以上です。ありがとうございました。