白帽子讲Web安全 第三章 跨站脚本攻击(XSS)

本文详细介绍了XSS攻击的三种类型及其应用案例,并提供了多种防御手段。包括反射型、存储型和DOMBasedXSS的特点,以及如何通过构造技巧实现攻击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XSS----Cross Site Script;
XSS攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
 
1、XSS根据效果划分三类:
1)反射型XSS(非持久型XSS):简单的把用户输入的数据“反射”给浏览器。黑客往往需要诱导用户点击一个恶意链接,才能攻击成功。
2)存储型XSS(持久型XSS):存储型会把用户输入的数据存储在服务器端。这种具有很强的稳定性。
3)DOM Based XSS:通过修改页面的DOM形成的XSS。
 
2、XSS攻击
XSS Payload---用以完成各种具体功能的恶意脚本。
    1) 最常见:通过读取浏览器的Cookie对象,发起“Cookie”劫持攻击。
    2)通过模拟GET\POST请求操作用户的浏览器。
    3)XSS钓鱼
     eg:模拟登陆框获取用户名,密码。
    4)识别用户浏览器
     alter(navigator.userAgent);
    5)识别用户安装的软件
          eg:在IE 中可以通过判断ActiveX控件的classid是否存在,来推测用户是否安装了该软件。
          try{
               var obj=new ActiveXObject('XunLeiBHO.ThunderIEHelper');
          }catch(e){
               //异常就不存在
          }
    6)获取用户真实的IP地址
          eg:在XSS攻击框架“Attack API”中就有获取本地IP地址的API。
               
 
3、XSS攻击平台
     Attack API
     BeEF
     XSS-Proxy
 
4、XSS Worm (XSS蠕虫)
     Samy Worm
     
 
5、调试JavaScript
     Firebug
     Fiddler
     HttpWatch
 
6、XSS 构造技巧
     1)利用字符编码:
     2)绕过长度限制
          eg:利用onclick事件加载XSS Payload
                 location.hash----- 用于标识位置,一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)。
                   利用注释
     3)使用<base>标签
          <base>----定义页面上的所有使用“相对路径”标签的hosting地址。可以放置页面的任意地方,作用于位于它后面的所有标签
          eg:
          <base href="http://www.baidu.com"/>
          <script src="x.js"></script>
 
      4)window.name--- 可设置或返回存放窗口的名称的一个字符串。可跨域、跨页面传递数据。
 
7、XSS 防御
     1)HttpOnly:浏览器禁止页面的javaScript访问带有HttpOnly属性的cookie------------------可以防止cookie劫持
     2)输入检查:服务器端要过滤特殊、敏感字符。
     3)输出检查:使用编码或转义
     eg:HtmlEncode\JavascriptEncode
            在Protocal与host中使用严格的URLEncode
     4)处理富文本
          过滤富文本时,事件应严格禁止
          使用白名单禁止一些危险标签,只保留比较安全的标签存在
          使用白名单过滤属性、事件
          尽可能禁止用户自定义CSS \style
     5)防御DOM Based XSS
          在“$var”输出到<script>时,应该执行一次javascriptEncode;
          在document.write输出到HTML页面时,要分具体情况:如果输出到方法或者脚本里,则需要在做一次javascriptEncode,如果输出到HTML页面或属性,则要做一次HtmlEncode。
          javaScript到HTML:
          document.write();
          document.writeln();
          xxx.innerHTML();
          xxx.outerHTML();
          innerHTML.replace;
          document.attachEvent();
          window.attachEvent();
          document.location.replace();
          document.location.assign();
          javaScript的输出:
          页面中的所有的inputs框;
          window.location(href\hash等)
          window.name
          document.referrer( 返回载入当前文档的来源文档的URL。 )
          document.cookie
          localstorage
          XMLHttpRequest返回的数据

转载于:https://www.cnblogs.com/qingchun-com/p/5998450.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值