Buff 日本語でウォークスルー Hack The Box Machine:
Hack The BoxのBuffのウォークスルー・ライトアップ(walkthrough/writeup)です。難易度はeasyとなっています。
※本記事はサイバー犯罪を助長するものではありません。ハッキングやクラック等の悪用は厳禁です。
目次
HTB Buff ウォークスルー・ライトアップ
Summary
local shell取得まで
ターゲットポート:TCP 8080(http)
脆弱性:ターゲットのhttpサイトは、「Gym Management System 1.0」を使って構築されていた。これにはRemote Code Executionの脆弱性が内在していた。
この脆弱性を利用して、local-shellを入手した。
local権限を取得したユーザ:「shaun」
privilege Escalation取得まで
脆弱性:ターゲットでは「CloudMe.exe ver1.11.2」が動作していた。これにはBuffer Overflowの脆弱性が内在していた。
この脆弱性を利用して、Privilege Escalationを実行した。
root権限を取得したユーザ:Administrator
Information Gathering
ポートスキャン
それでははじめます。まずはターゲット上で動作しているTCPポートをnmapで探します。nmapについてはこちらを参照ください。
nmapの結果、上画像の通り、TCPポート番号8080(http)が開いていることが分かりました。
まずはhttpサービスから調査していくことにしました。
ターゲットのhttpサービス(TCPポート番号8080)調査
まずは、httpでfirefoxにアクセスしました。その結果、以下サイトに接続しました。
また、このサイトを調査した所、このサイトが「Gym Management Software 1.0」を使って作られていました。
(以下の通り、サイトのトップページから「Contact」タブで表示されました。)
「Gym Management Software 1.0」の脆弱性調査
「Gym Management Software 1.0」の脆弱性を調査した結果、以下の通りいくつか見つけました。
そのため、「Gym Management Software 1.0」の脆弱性を利用して「local-shell」を取得する方法を検討することにしました。
local-shellの取得
「Gym Management Software 1.0」の脆弱性を利用した攻撃
上記で見つけた脆弱性の中で、Gym Management System 1.0 – Unauthenticated Remote Code Executionがターゲットでヒットしました。
以下のような形で、local-shellを取得できました。取得したshellは「shaun」でした。
netcatによるreverse-shellの取得
「shaun」ユーザのshellを取得しました。
しかし、このままでは「cd」コマンドが通らず、
ディレクトリを移動することができませんでした。
そのため、netcatを使って改めて「reverse-shell」を取得することにしました。
まず、自分のマシンで「nc.exe」をダウンロードしました。そして、自分のマシンでSimpleHttpServerを仕掛けました。

続いて、ターゲットから自分のマシンへhttp接続し、ターゲットへ「nc.exe」をダウンロードしました。
最後に、ターゲットから「nc.exe」を起動し、「reverse-shell」を取得しました。
これにより、ディレクトリの移動が可能になり、さらなる調査ができるようになりました。
Privilege Escalation
Privilege Escalationのための脆弱性調査
続いてPrivilege Escalationのための脆弱性を調査していきました。
ターゲットの内部を調査した所、ユーザ「shaun」のディレクトリの中で「CloudMe_1112.exe」を見つけました。
また、ターゲットの「tasklist」の中にも、「CloudMe.exe」が含まれていることを確認しました。
そのため、「CloudMe.exe」について調査を続けることにしました。
「CloudMe_1112.exe」の脆弱性調査
「CloudMe_1112.exe」の脆弱性を調査した結果、CloudMe 1.11.2 – Buffer Overflow (PoC)を見つけました。
そのため、Buffer Overflow(バッファオーバーフロー)経由でPrivilege Escalationを実施する方法を検討することにしました。
ターゲットと自分のマシンのトンネル化
攻撃にあたり、外部からターゲットの「CloudMe.exe」用のTCPポートが開いていないことが課題でした。
そのため、まず、ターゲットと自分のマシンをトンネル化(トンネリング)することが必要でした。
トンネル化には、Chiselを利用しました。
今回は(自分のマシンのTCPポート9001)←(ターゲットのTCPポート8888)でトンネルを繋ぐことにしました。
まず、自分のマシンで以下の通り、Chiselをダウンロード/実行しました。
続いて、ターゲットのマシンでChiselをダウンロード/実行しました。
その結果、トンネル化に成功しました。
「CloudMe 1.11.2 – Buffer Overflow (PoC)」を利用した攻撃
攻撃コードのベースはCloudMe 1.11.2 – Buffer Overflow (PoC)を利用しました。
攻撃コード内の「reverse-shell」部分は以下の通り作成しました。
攻撃コード内のIPアドレスを「127.0.0.1」に置き換えました。(トンネル化しているため、ターゲットは自分のマシンのlocal宛てになっています。)
また、「reverse-shell」部分を先程作成したものに置き換えました。

バッファオーバーフローの特性上、メモリをリークさせる必要があるため、
何度か攻撃コードを実行しました。その結果、「reverse-shell」を取得しました。
取得したshellは「administrator」ユーザでした。

flagを探す
user.txtは「C:\Users\shaun\Desktop」にありました。
root.txtは「C:\Users\Administrator\Desktop」にありました。
以上で、Buffのウォークスルーは終了です。