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

HTB htb-easy

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のウォークスルーは終了です。