HTB Helpline writeup (Japanese)
HTB Helpline writeup
Thanks egre55. I've learned a lot from this machine!
注:許可されていない外部機器に向け、掲載された内容を実行した結果
生じた損害等の一切の責任を負いかねますので、ご了承ください
一日1時間ほどしか出来ず、結局攻略まで一週間程かかってしまいました…
概要
出来るだけ詳細にと思ったのですが、無駄に長いので所々端折ります。
個人的にメインのテーマはEFSでした。やり方としてはかなり横着した感じで、ちゃんとしたやり方があります。
ポートスキャン
root@kali:~/hackthebox/Helpline# nmap -A -p- 10.10.10.132
135/tcp open msrpc Microsoft Windows RPC
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
8080/tcp open http-proxy -
_http-title: ManageEngine ServiceDesk Plus
ファイル共有からせめて情報だけでも何か取れないものかと思いましたが
全く取れない様子。大体こういう時は、webアプリを見る事にしてます。
Web application authentication bypass
アプリケーションとバージョン名で検索すると、意外にあっさりとExploitが出てきました。
変なコードが紛れてないか3回ほど読んで、大丈夫そうなのでDL。自分に馴染みのない言語で書いてあったり、妙なエンコーディングがしてあるコードは安易に実行するとひどい目に合うのでご注意ください。
実行は自己責任で、仮想環境で!
まずはguestでログイン
Cookieを先ほどの物と置き換えてF5。
Adminでログインできました
私はここでAdminパネルの"Custom Schedule"に目を付けましたが、他のやり方もあるようです。
どうやらExecutorでコマンドが実行できるらしい。
この時点で、どういう権限でこのアプリが動いているのかは不明ですが、外向きの通信が許可されているのか、試してみる価値はありそうです。
powershell in-memory attack
作戦としては単純で、nishang のTCPリバースシェルを直接ターゲットのメモリにいれ,自分のマシン(kali)に接続させます。
nishang
https://github.com/samratashok/nishang
いきなり最上位の権限が取れました。
とりあえずフラグのありかを探ります。
PS C:\Users> get-childitem -recurse
Directory: C:\Users
Directory: C:\Users\Administrator\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 12/20/2018 11:09 PM 32 root.txt
Directory: C:\Users\leo\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/15/2019 12:18 AM 526 admin-pass.xml
Directory: C:\Users\tolu\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/20/2018 11:12 PM 32 user.txt
System権限でも中を見れない…
ググると、どうもEFSっぽいなぁと。
やはりEFS
Token impersonation
EFSの復号化に必要な条件を変更せずに見るには、手っ取り早く
token impersonationをします。事前にleoのプロセスがあるのは確認済み。
admin-pass.xmlの中を見れたのは良いのですが、パッと見あまり馴染みのない文字列。
いろいろ長さを変えて検索するとSecureStringの様です。
Powershell Secure string
securestirng の復号化は2種類ありますが、当初Marshalを使用する方しか知りませんでした。こちらを使おうとすると、constraint language modeのため、はじかれます。
GetNetworkCredentialの方を試すしかなさそうです。
Getting root.txt
adminのパスワードは手に入ったのですが、psexec.pyで外部から接続すると
systemの権限のままなので、このままではroot.txtが見れません。
他のwriteupを見るとpowershellでやっていますが、私はschtasksを使うことにしました。
作戦としては単純で、meterpreter shellをadmin権限でたたかせようと言うだけです。
Getting user.txt
ユーザーの中でzacharyのパスワードのみ弱く、"Event Log Readers"に所属していたのでイベントログを調査。チマチマとやるのは性に合わないので、全部抜きます。
toluでgrep
$logfile=gc .\test.txt
ありました。
toluの権限ではタスクスケジューラを使えなかったのでadminに入れます。
後は上記と一緒。
行けました