【应用安全——XSS】——UTF-7 XSS

受影响浏览器版本为IE6,影响范围较小。

如果在Content-Type中没有设置charset,如下:

Content-Type:text/html

在meta标签中也没有设置字符集

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />

就可以通过字符集抢占的方式使浏览器以UTF-7解析。

<script>alert(1)</script>UTF-7编码为+ADw-script+AD4-alert(1)+ADw-/script+AD4-

但是还需要注意的是BOM头

utf-7 bom 目前知道的有4个,如下:

+/v8 | +/v9 | +/v+ | +/v/

可以通过设置BOM头修改编码,并且BOM头的优先级是最高的,只要能控制目标网页的开头是UTF-7 BOM头,即便你已经配置了

Content-Type:text/html; charset=utf-8

后续的内容仍可以以UTF-7方式编码。

从实际场景出发能控制网页开头就是Json callback。

修复建议:

1)配置默认编码,例如httpd.conf中

AddDefaultCharset UTF-8

2)针对Bom头,可以在返回网页内容最前面添加一个空格。针对Jsonp的话可以直接将Content-Type设置为application/json

测试代码:

<?php

echo $_GET[‘code’];

?>

IE6访问:
http://192.168.192.120/utf7.php?code=%2B%2Fv9+%2BADw-script%2BAD4-alert%281%29%2BADw-%2Fscript%2BAD4-

修改代码添加一个空格:

<?php

echo ” “.$_GET[‘code’];

?>

可以看到无法解析了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值