XSS学习(原理篇)

来源:互联网 发布:生成对抗网络 用途 编辑:程序博客网 时间:2024/06/07 07:16

学习XSS之前,我们很有必要知道XSS到底是什么东西。其英文名是(Cross Site Scripting),意思就是跨站脚本攻击,是黑客常用的攻击手段之一,因为与层叠样式表CSS(Cascading Style Sheets)同名,为了避免混淆,故将其命名为XSS。好了,现在知道了它的名字的由来之后,最重要的就是去了解XSS的实现原理。

XSS实现原理

因为浏览器本身的设计缺陷,浏览器只负责解释执行html+css+javascript代码,并不会检验其安全性。故如果你的服务器对没有对XSS漏洞准备安全的预防措施,都会存在XSS漏洞。下面具体讲一下XSS的攻击过程:

1.用户登陆web应用程序上的网页;.该网页已经被攻击者利用各种手段注入了javascript等脚本代码;

2.服务器对用户的浏览请求做出反应,用户获取攻击者注入过代码的URL;

3.攻击者的javascript代码在浏览者的浏览器上打开;此时可能会伴随用户浏览器向攻击者发送会话令牌,然后攻击者劫持用户会话等现象的发生。

在接触了几天XSS之后,大致有以下特点:

1.XSS即是web应用程序上的计算机安全漏洞,也是黑客常用的攻击手段;对于攻击者而言,需要有很好的计算机语言基础,如JavaScript,HTML5,Ajax,Css和其他脚本语言。

2.XSS产生的主要原因是web浏览器对用户的输入过滤不足。

3.通过将代码注入到网页,虽然对Web服务器没有直接伤害,但它借助网络传播,其危害最终会反馈到服务器。

4.XSS漏洞如此普遍主要是因为web浏览器本身的设计是不安全的,开发人员在交互过程中的设计阶段忽略了XSS防护,加上大部分人还没认识到XSS的危害和错误的认为XSS就只会在浏览器上弹出一个窗口而已,加上触发跨站脚本的方式简单且众多和web2.0的流行和社交功能的迅猛发展,奠定了XSS发展的基础。

5.XSS最重要也是最核心的是利用自己构造好的XSS语句,欺骗web应用程序上的过滤器,实现绕过其安全检测,达成向网页中注入javaScript等脚本信息的目的,从而导致XSS漏洞在互联网上传播。

6.要善于利用工具提高效率,要学会利用各种编码方式提高XSS的攻击性和隐蔽性。例如,unicode,escapes,URL编码,十六进制,八进制等,同时对于特定情境下也可以利用脚本加密技术实现XSS攻击。

7.有时候配合CSRF漏洞,将会由意想不到的效果

同时XSS攻击也有一下弊端

1.XSS攻击无对应软件完成自动化攻击,且有一定几率不成功;

2.是一种被动的攻击手段,对website有http-only,crossdomiar。

下面几个概念需要理解好

1.shellcode——起初是溢出程序和蠕虫程序的核心,注入目标网页中,使用脚本编写好的代码;

2.Exploit——完整编写好的漏洞利用工具;

3.POC(Proof of Concept)——一段证明漏洞存在的程序代码片段;

4.payload——意思为有效载荷,概念验证,即是漏洞验证脚本;是组成Poc和Exp的必要组成部分。

XSS的分类

一.持久型的XSS

攻击方把恶意脚本代码固化在页面中,当其他用户访问到此页面的时候,浏览器会解析并且执行该脚本代码,进而对其他用户进行XSS攻击。最典型的例子是留言板。

二.非持久性(反射型)的XSS

攻击方通过改写网页访问的URL,使其指向攻击方已经准备好的脚本代码。典型的例子是,搜索栏中输入脚本代码。欺骗用户自己去点击链接才能触发XSS代码。

三.DOM型的XSS

攻击方利用javascript来展开攻击,用户请求一个由攻击方提供的经过专门设计的URL,包括嵌入式的javascript,服务器响应用户请求的时候不对URL进行处理,当用户浏览这个相应的时候,脚本得以触发。

0 0
原创粉丝点击