2015年12月17日木曜日

Bloggerの脆弱性か分からなかった話

この記事は「脆弱性"&'<<>\ Advent Calendar 2015」17日目の記事です。

本ブログでも使わせて頂いているBloggerですが、Bloggerやその他殆どのブログではスクリプトが許可されている為、スクリプトを使って何をしようとも運営側はスコープ外として脆弱性とは認めてくれません。その為スクリプトを使って運営側が嫌がることをしてやろうと考えましたw

色々見ているとBloggerのコメントやいいねがiframeによりロードされていることがわかりました。しかもURLは以下のように単純でした。

コメント
https://www.blogger.com/comment-iframe.g?blogID=Any_Blog_ID&postID=Any_Post_ID
いいね
https://apis.google.com/u/0/se/0/_/+1/fastbutton?size=medium&annotation=inline&hl=ja&url=Any_Blog_URL

その為スクリプトを使えば、いいねボタンやコメント欄を他のブログのものに変更することができます。

PoC
http://shhnjktest.blogspot.com/2015/11/test.html

以下がスクリプト。
<script>window.onload=function(){ 
frames["comment-editor"].location.replace("https://www.blogger.com/comment-iframe.g?blogID=3133629339100716711&postID=4516647146558699181"); 
document.getElementsByTagName("iframe")[1].src="https://apis.google.com/u/0/se/0/_/+1/fastbutton?size=medium&annotation=inline&hl=ja&url=http%3A%2F%2Fshhnjk.blogspot.com%2F2015%2F10%2FHow-to-use-XSS.html" 
}</script>
いいねボタンとコメント欄がリロードしたのが分かるかと思います。上記の投稿にコメントやいいねをすると、今更聞けないXSSの使い方に反映されます。もちろんユーザーにコメントして貰わないと攻撃が成功しませんが、XSS Challengeを開催したらどうでしょう?

例(これは本物のXSS Challengeです)
https://www.davidsopas.com/win-50-amazon-gift-card-with-a-xss-challenge/

50$と書くだけで15件コメントが来てますwということでGoogleに報告したところ、どう修正すればいいのかわからないので、考え中とのこと(修正しないかも)。もちろん公開の許可は貰いました。

対策

確かにブログでスクリプトを使えることは良いことなのかもしれませんが、ブログを読みたいユーザーがいいねボタンやコメントなど、ブログ記事以外のものも信頼できないのは困ります。なので、出来ればSandboxドメインを作り、iframeでブログ記事を表示するようにすればいいんじゃないでしょうか。これにより、親フレームのコンテンツは変更出来なくなります。更に親フレームのリダイレクトを防ぎたい場合は、iframeにsandbox属性を付けることで、スクリプトはいいけど親フレームはリダイレクトさせないなど詳細に権限を与えられます。唯一問題なのはCookie Bombです。これはSandboxドメインでスクリプトの実行が可能な為、Sandboxドメイン全部が見れなくなってしまいます。この問題はサイトというよりCookieそのものの問題なのでどうしようもなさそうです。

ということで、ブログにコメントやいいねをする際はくれぐれも気をつけましょうw

ではでは。

0 件のコメント:

コメントを投稿