Shikata Ga Nai

Private? There is no such things.

XSSの基本的な診断手順をなるべく詳細にかいてみた③

Hello there, ('ω')ノ

 

XSSについては、反射型と保存型をやってきたので。

次にDOMベースについて。

ページにデータを書き出すのにJavaScriptだとdocument.write関数を使用して。

document.write関数は、location.searchからのデータを使用して呼び出すわけで。

下記のようなページを見るとデータベースへアクセスすると考えられるので。

SQLインジェクションも考えられて。

まずは、文字列を入力して検索してみると。

 

f:id:ThisIsOne:20211019191343p:plain

 

検索文字列が反映されているので。

どのように表示されているかを探ることに。

 

f:id:ThisIsOne:20211019191404p:plain

 

ちなみに検索にヒットすると下記のような表示となって。

 

f:id:ThisIsOne:20211020072152p:plain

 

レスポンスを確認していくと、まずは検索文字列が表示される箇所が見つかって。

 

f:id:ThisIsOne:20211019191543p:plain

 

さらに見ていくとJava Scriptのdocument,writeで何かを表示していて。

 

f:id:ThisIsOne:20211019192401p:plain

 

ブラウザのソースコードを確認してみると。

レスポンスにあるqueryが、検索文字列だということがわかって。

 

f:id:ThisIsOne:20211019192457p:plain

 

ちなみに検索にヒットした場合だと、ソースコードとページの関係は下記のとおりで。

 

f:id:ThisIsOne:20211020072451p:plain

 

再度、レスポンスに戻ってJava Scriptのqueryの処理について確認してみると。

検索文字列の取り扱いがわかってきたので。

 

f:id:ThisIsOne:20211019192608p:plain

 

queryに下記の文字列をいれてimgタグが閉じれるかを確認することに。

 '">'

 

f:id:ThisIsOne:20211019192846p:plain

 

検索エリアに入力してみると。

 

f:id:ThisIsOne:20211019192757p:plain

 

imgタグが閉じられて、残りの宙ぶらりんとなった文字が誤って表示されたので。

脆弱性の可能性があると判断して。

 

f:id:ThisIsOne:20211019193040p:plain

 

imgタグを閉じて、そのあとにペイロードを挿入してみることに。

 

f:id:ThisIsOne:20211019193201p:plain

 

ペイロードが機能したようで、ポップアップが表示されて。

 

f:id:ThisIsOne:20211019193216p:plain


念のため、このエンドポイントについてアクティブスキャンを。

f:id:ThisIsOne:20211019193550p:plain

 

ペイロードは異なるものの、同様のDOMベースのXSSの脆弱性が検出されて。

 

f:id:ThisIsOne:20211019193854p:plain

 

Best regards, (^^ゞ