【Web安全】XSS Attacks 跨站脚本攻击

Web安全方面,常见的攻击除了XSS,还有CSI;
初级用户没有涉及到这一块,Web安全适用于【初、中级】【前端】【服务端】开发;

预备知识:
JavaScript能力;
了解HTTP、Cookie、Ajax常识;

建议一边学一边操作代码,印象会更深刻;

XSS

XSS (Cross Site Scripting) 跨站脚本攻击(跨站攻击);
是最常见的Web应用程序安全漏洞之一;
指:攻击者在网页嵌入客户端脚本,通常是JavaScript编写的危险代码,当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的;

据上可得,XSS属于【客户端攻击】,受害者最终是【用户】;
但特别要注意的是【网络管理人员】也属于用户之一,这就意味着XSS可以进行【服务端】攻击(XSS非服务端攻击!);
因为管理员权限比普通用户大得多,一般管理员都可以对网站进行文件管理、数据管理等操作,而攻击者一般也依靠管理员身份作为跳板实施攻击;

XSS攻击最终目的是在网页中嵌入客户端恶意脚本代码;
最常用的攻击代码是JavaScript,所以若想深入研究XSS,必须精通JavaScript;

换句话说,JavaScript能达到什么效果,XSS就能达到什么效果;
这不是危言耸听,JS可以用来获取用户的Cookie,弹出窗口;那么对于存在XSS漏洞的网站,XSS就能用来盗取用户Cookie,废掉页面,导航到恶意网站;
更高端的XSS代码完全可以进行监控你的键盘操作,模仿Windows注销界面,诱导你输入用户密码,而攻击者仅仅需要在你的代码中注入JS代码;


如何挖掘XSS代码

寻找脚本程序输出显示代码,搜索关键字,显示输出那个变量,跟踪变量是否被过滤;


XSS实现原理

因为浏览器本身的设计缺陷,浏览器只负责解释执行HTML + CSS + JS代码,并不会检验其安全性。
故如果你的服务器对没有对XSS漏洞准备安全的预防措施,都会存在XSS漏洞XSS的攻击;

XSS攻击过程:
1.用户登陆web应用程序上的网页;该网页已经被攻击者利用各种手段注入了JS等脚本代码;
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的攻击方式

分成:反射性、存储型、DOM型;

反射性(非持久型)攻击

定义:
发出请求时,XSS代码出现在【URL】中,作为输入提交到服务器端;
服务器端【解析后】响应,XSS代码随相应内容齐传回给浏览器,最后【浏览器】【解析执行】XSS代码;
这个过程像一次反射,所以叫 反射性XSS(Reflected XSS Attack);

典型的例子是,搜索栏中输入脚本代码。欺骗用户自己去点击链接才能触发XSS代码。


存储型(持久型)攻击

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


DOM型 攻击

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


XSS攻击的防范手段

你可能感兴趣的:(Web安全)