Hello there, ('ω')ノ
反映されたDOM XSSを。
このラボでは、反映されたDOMの脆弱性を示して。
サーバサイドのアプリケーションが要求からのデータを処理して。
応答でデータをエコーするときに発生して。
まずは、ページにアクセスして検索を。
ソースコードを確認して。
検索文字列は、下記の関数に渡されるようで。
eval('var searchResultsObj = ' + this.responseText);
レスポンスを見るとJSONに検索文字が反映されて。
Hack
⇩
"Hack"
リクエストをリピータへ。
下記の検索文字をいれてSendすると。
JSONは、引用符をエスケープしているようで。
ただし、バックスラッシュはエスケープされず。
"Hack"
⇩
"\"Hack\""
下記を検索すると。
"-alert(1)-"
⇩
"\"-alert(1)-\""
下記で検索すると。
最初の二重引用符文字をエスケープしようとして。
2つ目のバックスラッシュが追加されて。
これで、"\\"が検索文字として閉じられて。
\"-alert(1)}//
⇩
"\\"-alert(1)}//"
レスポンスを確認すると、下記のように。
最初の二重引用符文字をエスケープしようとすると、2番目のバックスラッシュが追加されます。 結果として生じる二重円記号により、エスケープが効果的にキャンセルされます。 これは、二重引用符がエスケープされずに処理されることを意味します。これにより、検索語を含める必要のある文字列が閉じられます。
算術演算子(この場合は減算演算子)を使用して、式の前に式を区切って。
alert()を呼び出して。
最後に、閉じ中括弧でJSONオブジェクトを閉じて。
2つのスラッシュで、オブジェクトの残りをコメントアウトして。
{
"searchTerm":"\\"-alert(1)
}//","results":[]}
クリアできた。
Best regards, (^^ゞ