初めに
こんにちは、今回はセキュリティに直接は関係ない話題になります。
HackTheBoxで対象マシンのWebサイトを覗きに行くとUIが不自然だったり、一部のボタンが機能していないことに気が付いた経験はありませんか?私がまさにそうです。
基本的に、本筋には関係ない問題だったので今まで放置していました。
しかしとうとう、攻略に必要な重要機能が触れないマシンに遭遇したので解決方法を調査し、まとめてみることにしました。
ほとんどの方にとっては当たり前の話かもしれませんが、私のような開発に明るくなく、本問題を放置してきた初心者に届くとよいなと願い、記事にします。
※今回はHackTheBoxのStruttedというマシンを題材にお話しをしますが、攻略方法などにはほとんど触れません。そのうち気が向いたら別記事にしたいと思います。
現象
何の話をしているか分からない方向けにまずは現象についてお話しします。
HackTheBoxでWebサイトにアクセスすると時々下記のように表示のおかしいWebサイトに遭遇するという話です。
上部のメニュー画面がやたら見にくいです。正直基本的にはそれほど困らないのですが、先日攻略に不可欠な機能が触れないマシンに遭遇し(別マシンです)、苦戦したので解決しようと決心しました。
原因
結論から言うと、外部ドメインのCSSおよびjsの読み込みに失敗していることが根本原因でした。
開発経験0の弊害が出てしまっていますね...
HackTheBoxでは通常、VMWareなどの仮想環境上に立てたkali linuxにおいてHackTheBox用のVPNを張ることでターゲットマシンと通信を行います。
その際、基本的にインターネットの外には出られない状態となっています。
一方、ターゲットマシンで稼働しているWebサイトにアクセスしてみた場合の通信はどうなっているでしょう?
開発者ツールで確認してみます。
よくよく見ていると、cdn.jsdelivr.net
からCSSとjsを読み込もうとして失敗しています。
外部ドメインから読み込もうとしているので、VPN環境下では読み込みに失敗しているみたいですね。
解決方法
解決方法1 (VPNを一時的に外す)
脳筋戦法ですが、VPNが原因なら一時的に外しましょう。
幸いにも対象マシンのstrutted.htb
からのレスポンスはすぐ帰ってくるので、レスポンスが返ってきた瞬間にVPNを外します。
した結果が以下です。
少し時間はかかりますが無事CSS(とjsも)取得できており、UIが大変綺麗になっています。初めてこれに気付いたときは感動してしまいました。
ただ、リロードの度にVPNを外して読み込ませる必要があるのが難点です。
解決方法2 (Burpを活用する)
二つ目の方法は、一つ目に比べるとやや手間ですがローカルにCSS、jsを落としておき、そちらを参照させてあげる方法です。
① 最初に開発者ツールからCSS,jsのリンクを参照し、適当なディレクトリに落としておきます。
ダウンロードし終わったら当該ディレクトリにてローカルサーバを立てておきます。
② BurpSuiteのProxyの設定のうちResponse Rewriter
にてレスポンスで外部ドメインのCSS,jsを参照している箇所をlocalhost:8000に配置したファイルのパスに変換するルールを設定しておきます。
③ これによって、CSS,jsは落としておいたローカル側のファイルが参照されるようになり、方法1同様正常な画面が返ってきます。
この方法だと一度設定さえしておけば、ローカルサーバを立てている限り綺麗なUI、jsによる機能を獲得しつづけることができるのですが、Burpの有料版でないと
Response Rewriter
がそもそも使えないのが最大の欠点です。
私の私用PCに有料版は入っていないので証跡諦めてしまいました...
あとがき
今回は、HackTheBoxでWebサイトの見た目や挙動がおかしい場合の解決方法について解説しました。CSSが読み込めない分にはUIがおかしいだけで済みますが、jsが足りてないせいで重要な機能が発火しないなんてことがあると困ってしまいますよね...
どちらの方法も不便な点がありますので、もしもっとスマートな方法等があればご教示いただけますと幸いです。