Shikata Ga Nai

Private? There is no such things.

Juice ShopのAPI-only XSSをやってみた

Hello there, ('ω')ノ

 

フロントエンドアプリケーションをまったく使用せずに。

永続的なXSS攻撃を実行しなさいと。

 

f:id:ThisIsOne:20210701133650p:plain

 

まずは、JavaScriptのコードでapiを検索して。

どこでapiが使用されているのかのあたりをつけて。

 

f:id:ThisIsOne:20210701134640p:plain

 

製品を表示させて選択したりと。

 

f:id:ThisIsOne:20210701134758p:plain

 

apiへのリクエストをリピータへ。

 

f:id:ThisIsOne:20210701135026p:plain

 

パラメータなしでapiをリクエストしてレスポンスの確認をして。

 

f:id:ThisIsOne:20210701135120p:plain

 

メソッドをGETに変更してSendしてみると。

多くのメソッドが許可されているようで。

 

f:id:ThisIsOne:20210701135258p:plain

 

ひとつの製品を選択できるかを試してみて。

 

f:id:ThisIsOne:20210701135537p:plain

 

次にJSONの内容を変更してSendしてみると。

何も変わらず。

 

f:id:ThisIsOne:20210701140949p:plain

 

次にAuthorizationの内容を解析することに。

 

f:id:ThisIsOne:20210701140819p:plain

 

JWTをインストールして。

 

f:id:ThisIsOne:20210701140853p:plain

 

Authorizationの内容を解析すると管理者の設定が。

 

f:id:ThisIsOne:20210701140736p:plain

 

とりあえず、SQLiを使用して管理者としてログインを。

 

f:id:ThisIsOne:20210701141116p:plain

 

admin@juice-sh.opでログインできて。

 

f:id:ThisIsOne:20210701141141p:plain

 

念のため、Authorizationのトークンを確認することに。

 

f:id:ThisIsOne:20210701141305p:plain

 

roleがadminになっていることが確認できて。

このトークン情報をコピーして利用することに。

 

f:id:ThisIsOne:20210701141420p:plain

 

はじめのリクエストのAuthorizationを入れ替えて。

JSONの内容もシンプルに変更してSendすると。

レスポンスの内容が変更されて。

 

f:id:ThisIsOne:20210701142037p:plain

 

よって、ここでXSSをしかけることに。

 

f:id:ThisIsOne:20210701142259p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210701142227p:plain


ちなみにProduct:3も同様に仕掛けたので、XSSの表示は下記のとおりで。

 

f:id:ThisIsOne:20210701142906p:plain

 

Best regards, (^^ゞ