Microsoft-IIS/7.5 Web サーバーで実行されている ASP.NET アプリケーションをペンテストしており、次の GET 要求パラメーターを送信しています。
&search=aaa%20%*+,-/;<=>^|"'bbb
パラメータの 1 つは検索で、上に表示されている値を入力しました。次のように、返された応答に値が 2 回出力されます。
最初のパラメーター:
<input name="nn" type="text" value="aaa %* ,-/;<=>^|"'bbb" class="cc" />
最初のエントリで引用符で囲まれたパラメーターは次のとおりです。
- " ==>
"
- ' ==>
'
- < ==>
<
値がエスケープされており、「」文字を正しく入力できないため、そこから抜け出す方法はないと思います。ただし、抜け出すことはできませんが、すべてのパラメーターが適切にエスケープされているわけではありません。
2 番目のパラメーター:
<strong>aaa %* ,-/;<=>^|"'bbb</strong>
すべてのキャラクターがそのまま表示されていることがわかりますが、落とし穴があります。< 文字の後には [a-zA-Z0-9] (おそらく他の文字も) 文字を含めることはできません。これは、おそらく ASP.NET フィルターによってブロックされているためです。
以下を入力すると:
&searchQuery=aaa<#script>alert('Hi');<#/script>bbb
次の出力が得られます。
<strong>aaa<#script>alert('Hi');<#/script>bbb</strong>
それにもかかわらず、制限を打破して任意の JavaScript コードを実行する方法が何かありますか?
ありがとうございました