本記事は脆弱性"&'<<>\ Advent Calendar 2016の15日目の記事です。
Bitbucketに2つXSSを報告したお話です。
XSS on branch name (upon delete)
![alert-2.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53690%2Fc61c1bf1-c19d-2dfb-1571-f899a81679df.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=396eed02e4ed8dbac7f50457b05132a7)
画像が全てです。ブランチを削除した時に表示されるメッセージがエスケープされていなかったためXSSが可能でした。ワンタイムですがStored XSSのため、任意のブラウザで発現可能でした。言うまでもなくユーザーインタラクションが必要なため、弱めのXSSです。
XSS with issue title and commit message
Issueを git commit -m "fix #1"
としてコミットメッセージからresolveした場合、Web UI上ではコミットメッセージ内のIssue番号がIssueのタイトルで置換されて表示される仕様でした。その際、Issueタイトルがエスケープされずに表示されていたため、
-
"><script>alert(document.domain)</script>
というタイトルのissueを立てる。 -
git commit -m "fix #1" && git push
でこのissueをresolveする。
という手順でStored XSSが作れました。
![alert.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53690%2Ff31807e3-7f35-2dda-c529-4f1933165306.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=c5150e55b46fe8ea39d095d788d43138)
![s_tag.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F53690%2Fac00de90-c779-207b-f296-a1c8c9df5aca.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f77ca41cae3fbe452772208f1e0f60fc)
これはログイン状態に関わらずIssueのページに誘導するだけで発現させられた他、Bitbucketトップページの"Recent Activity"の中にも表示されており、Bitbucket上で自分をフォローしている全てのユーザーのトップページにXSSを仕込めるようになっていたため、強力なXSSでした。
結果
AtlassianのSecurity Hall of Fameに名前を載せてもらった他、Tシャツを貰いました。
おわり