HTB Arkham writeup-Java Encrypted Deserialization attack(Japanese)
概要
今回はJavaデシリアライズアタックが大きな山場でした。RCEするには暗号化が必要で、ysoserial+アルファのペイロードが必要でした。これでもmediumか...といった感じの難易度。リバースシェルを取ってからは、意外とすんなりと。HTBで仲良くなった中東かどこかのRed Teamerと競っていたので、雑な感じでのクリアです。 競り勝ったのは良いんですが、親父と年が近い!と言われて落ち込みました...そんな若かったのかあいつ。
そもそもキーが手に入らないとRCEが成立しないので、まあでたらめにインジェクトしても500が返って来るのが関の山でしょう。
アタック成立までに見た参考資料
- https://medium.com/abn-amro-red-team/java-deserialization-from-discovery-to-reverse-shell-on-limited-environments-2e7b4e14fbef
- https://securitycafe.ro/2017/11/03/tricking-java-serialization-for-a-treat/
- https://www.n00py.io/2017/11/exploiting-blind-java-deserialization-with-burp-and-ysoserial/
- https://stackoverflow.com/questions/22814/how-to-decode-viewstate
- https://www.synacktiv.com/ressources/JSF_ViewState_InYourFace.pdf
- https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html?source=post_page---------------------------
- https://medium.com/@D0rkerDevil/how-i-found-a-1500-worth-deserialization-vulnerability-9ce753416e0a
- https://gist.github.com/cdowns71/76d99ad0829ceef3a83761dbeee3b66d
- https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf
- https://github.com/joaomatosf/jexboss
アタックツリー的な物
ポートスキャン
作戦
パッと見で、ファイル共有をちゃんと見る→変なポートで動いてるWebアプリ→それでも駄目なら80かな?という印象。まさかあんなに苦戦するとは...
SMB
enum4linux。あら…
それではsmbclient
何かあるのは良いんですが、暗号化されてました。
個人的にブルートフォースをかける前に、無駄でも良いから色々やってみる主義で forensicツールのforemostをかけてみます。
http://foremost.sourceforge.net/
Originally developed by the United States Air Force Office of Special Investigations and The Center for Information Systems Security Studies and Research , foremost has been opened to the general public.
かっちょええっすね。
bakとか、アレなやつでは。
やはり何らかのキーぽいです。
これか...?と思いながら当初の予定通り8080へ。
8080
どうも文脈としては開発途中という設定な感じで、完全に動作はしませんでした。 subscriptionのみが動作していたので、そこをburpで見てみるとやはり。
先ほどググった公式ドキュメントにも
- Base64 is used for all encoding and decoding.
- DES is the default encryption algorithm
- ECB is the default mode
- PKCS5Padding is the default padding
- HmacSHA1 is the default MAC algorithm
とあるし、じゃあysoserialでペイロードを作って、この通りやったらいけるのでは と思いました(実際その通りではあったんですが)。早速pythonで!と思いましたが、結局どうなってんのこれ?というところがいまいち理解できず。
wHo0wmLu5ceItIi%2BI7XkEi1GAb4h12WZ894pA%2BZ4OH7bco2jXEy...
見た目でURLエンコードされてるのは分かるので、URL・b64デコード
Àz4ÂbîåÇ´¾#µä-F¾!×eóÞ)æx8~Ûr£\LµE)VUVÇðÔïBÙà9´ÜÀö¡ãaêñ£HÖï;µ:Jz¥Rg¸\ëLYXRñMb
DESだよな...あ、行けた。PKCS5PaddingとHmacSHA1は?
と色々試行錯誤をしますが、まったく動かず。色々とググっているうちに 資料の8番を見つけます。あーHMACお尻に付けるのかというのがようやく分かったので、自機にpingをするようなコードをインジェクトすると、pingバックを確認。cmdからpowershellを使って、リバースシェルを実行させることにしました。
FUD
既存のメジャーどころのツール全滅で、強力なEDRでもいるのかな?と思いながらnc64.exeを送ってみた所、これは大丈夫でした。ホワイトリストにでも入ってるのか?と思いながら。
Internal Enumeration
"whoami " はalfredで、”Downloads”ディレクトリでzipファイルを見つけました。
中身はbatmanのパスワード入りOSTファイル。(下記は添付してあった画像ファイル)
UAC bypass
またschtasksです。便利なもので。