转自;http://www.bitscn.com/hack/young/200708/108278.html
富文本编辑器是一个开放式的HTML内容编辑环境,必须实现文字样式、链接、图片等功能的HTML,所以用户 POST的内容必须含有HTML标签,但是任由用户输入各类HTML标签,会造成一些潜在的恶意脚本攻击,借这类情况正好分析出现XSS的情况,主要针对 IE浏览器. 网管联盟bitsCN@com
一.首先是微软建议我们可能造成恶意脚本攻击的标签.
类似如下的
网管网www_bitscn_com
tag: 网管u家bitscn.net
applet
base
basefont
bgsound
blink
body
embed
frame
frameset
head
html
ilayer
iframe
layer
link
meta
object
style
title
script
-----------------------------------
类似这类
<tag 网管朋友网www_bitscn_net
必须删除.
二.针对HTML属性值的协议攻击. 网管朋友网www_bitscn_net
tag:
中国网管联盟bitsCN.com
dynsrc=
href=
lowsrc=
src=
background=
value=
action=
bgsound= 网管bitscn_com
黑客可能利用如下协议: 网管有家www.bitscn.net
脚本伪协议 网管有家bitscn.net
vbscript:
javascript: 网管联盟bitsCN_com
文件类协议
ms-its:
mhtml:
data: 网管下载dl.bitscn.com
第三方协议
firefoxurl:
mocha:
livescript: 中国网管联盟bitsCN.com
---------------------------------
类似这类 网管朋友网www_bitscn_net
<xxx tag=xxx: 网管u家u.bitsCN.com
如: 网管联盟bitsCN_com
<IMG LOWSRC="javascript:alert('XSS')"> 网管bitscn_com
必须判断属性的用的啥协议,给个http:就好了.
三.针对普通HTML属性值的编码,黑客可利用HTML特性将属性值做编码绕过过滤. 网管联盟bitsCN@com
&# 加 ASCII格式
<IMG SRC=javascript:alert('XSS')>
<IMG SRC=javascript:alert('XSS')> 网管u家u.bitscn@com
<IMG SRC=javascript:alert('XSS')> 网管u家u.bitscn@com
---------------------------------
类似这类 网管u家u.bitscn@com
<xxx tag=&#
必须判断属性的值&转换成 & 网管u家www.bitscn.net
四.css样式style属性问题.
<XSS STYLE="xss:expression(alert('XSS'))">
<XSS STYLE="behavior: url(xss.htc);">
网管u家u.bitscn@com
style属性可以和任意字符的标签结合,因此不是<tag>的问题,必须对style属性值做过滤. 网管论坛bbs_bitsCN_com
behavior需指定域内也就是绝对路径的HTC文件,危害不大. 网管联盟bitsCN@com
expression可以构造不同的全角字符和注释符来扰乱过滤规则.
网管u家u.bitscn@com
如:
<XSS STYLE="xss:expr/*XSS*/ession(alert('XSS'))"> 中国网管联盟bitsCN.com
<XSS STYLE="xss:exprEssion(alert('XSS'))">
<div style="{ left:expression( alert('xss') ) }"> 网管网www.bitscn.com
---------------------------------
类似这类 网管有家www.bitscn.net
<xxx style="xxxxxxxxxx"
网管网www_bitscn_com
必须判断style属性的值, :( ~这里正则超级难写,实在不过滤的话,列个白名单,只允许某些值.
网管bitscn_com
五.css样式style属性其他问题.
<DIV STYLE="background-image: url(javascript:alert('XSS'))"> 网管bitscn_com
<DIV STYLE="list-style-image: url("javascript:alert('XSS')"> 网管有家bitscn.net
<DIV style="-moz-binding:url(http://xxx.com/mozxss.xml#xss)">
---------------------------------
类似这类
<xxx style="xxxxxxx:url(xxxxx)"
中国网管联盟bitsCN.com
还是判断协议头之类吧.
网管u家www.bitscn.net
六.针对普通style属性值的编码,黑客可利用HTML特性将属性值做编码绕过过滤. 网管bitscn_com
转义字符/ 加 16进制格式 网管有家www.bitscn.net
<DIV STYLE="background-image:/0075/0072/006C/0028'/006a/0061/0076/0061/0073/0063/0072/0069/0070/0074/003a/0061/006c/0065/0072/0074/0028.1027/0058.1053/0053/0027/0029'/0029">
网管u家u.bitscn@com
---------------------------------
类似这类 网管u家bitscn.net
<xxx style="xxxxxxx:/00xx/00xx" 网管有家bitscn.net
搞个正则过滤/+数字的字符串.
网管u家u.bitsCN.com
七.针对正常标签组合事件触发脚本的问题. 网管u家www.bitscn.net
黑客可以利用类似事件触发脚本: 网管u家www.bitscn.net
onload
onerror
onmousemove
onmouseout
onmouseover
onmouseup
onmouseenter
onmouseleave
onmousewheel
onscroll
.................................... 网管下载dl.bitscn.com
类似这类
<xxx on*=
如:
<img src=xx onerror=alert(/xss/)>
情况都给过滤吧. 中国网管联盟bitsCN.com
八.第三方媒体文件,崭只针对FLASH与WEB交互的问题. 中国网管论坛bbs.bitsCN.com
FLASH的Action Script比较危险,可以和用户做交互式的访问. 中国网管联盟bitsCN.com
可以设置Flash对象的AllowScriptAccess参数为never来解决问题。 中国网管论坛bbs.bitsCN.com
AllowScriptAccess 参数有三个可选值,always、never 和 sameDomain
中国网管论坛bbs.bitsCN.com
never 禁止运行对外脚本
always 可以运行对外脚本
sameDomain 只允许同一域下的Flash运行对外脚本 网管网www_bitscn_com
如
<embed src="demo.swf" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400" AllowScriptAccess="never"></embed>