百科问答小站 logo
百科问答小站 font logo



DOM-based XSS 与存储性 XSS、反射型 XSS 有什么区别? 第1页

  

user avatar   zhu-wang-xiao-miao-o 网友的相关建议: 
      

前言

XSS,是跨站脚本(Cross-site scripting)的简称,这是一种网站应用程序的安全漏洞攻击,代码注入的一种,其允许恶意用户将代码注入到网页上,之后其他用户在观看网页时就会受到影响,这类攻击通常包含了HTML以及用户端脚本语言如JavaScript等。

XSS攻击,通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。

攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。因为在一开始时,这类攻击的演示案例是跨域的,所以被叫做了跨站脚本。就现在而言,是否跨域已经不再重要。

分类

XSS攻击可以分为两类:反射型和存储型,在《白帽子讲web安全》一书中则将DOM based XSS单独划分出来。前两类的划分依据是“数据存储在服务器与否”,而第三类属于历史原因被单列出来,实际可以看作是反射型。

XSS的本质,在于一部分有心人的恶意代码被当做了正常数据处理,进而导致了一系列安全事件,注入恶意代码,是XSS攻击的特征。

反射性

反射型XSS是非持久化的,需要欺骗用户自己去点击带有特定参数的XSS代码链接才能触发,一般是欺骗用户点击特定链接来进行恶意攻击,攻击代码就在url当中。

例如,将正常的网页url:

       http://www.dvwa.com/vulnerabilities/xss_r/?name=index     

改成下面这般便,可以实现恶意弹窗了:

       http://www.dvwa.com/vulnerabilities/xss_r/?name=<script>alert(Serendipity)</script>     

如果payloda改成下面这个:

       http://www.dvwa.com/vulnerabilities/xss_r/?name=<script>alert(document.cookie)</script>     

便能实现获取当前用户的cookie,这种攻击结合csrf(跨站请求伪造),例如通过 XMLHttpRequest与CORS功能将数据发送给攻击方服务器,之后便可以在千里之外模拟用户登录,进而进行恶意操作。

这类攻击也有很多防御手段,其中一种便是利用str_replace将<script>删除,但上有政策下有对策,这类方法可以使用使用双写绕过:

       http://www.dvwa.com/vulnerabilities/xss_r/?name=<scr<script>ipt>alert(document.cookie)</script>     

写到这里,忽然想到了一个很有趣的故事,之前 @lokinko 对我说:为了防止抄袭,自己会将网名lokinko随机插入到文章中,我当时随口说了句,建议将标识符改为loklokinkoinko,就是用的这个梗,也不知道他有没有get到呢?

更高级别的代码可能会使用preg_replace函数来过滤删除所有关于<script>标签,但使用<IMG src=1 onerror=alert(document.cookie)>也可以得到同样的结果。

攻击和防御都在不断地升级进化,我这里就简单写点,不再长篇大论了。

存储型

存储型XSS攻击,是指将恶意代码被当做正常数据插入到服务器上的数据库中,当用户正常访问页面的时候,恶意代码从数据库中提取出来并被触发。

这类方法和反射型最大的区别在于其攻击载荷的存储位置不同,反射型XSS的攻击载荷并不存储在服务器上,攻击时需要将链接发送给特定用户,存储型XSS的攻击载荷直接保存在了服务器上,因此很多时候是无差别攻击。

例如一个留言板被黑客利用进行XSS攻击,提交了形如<script>alert(“please follow serendipity!”)</script>的代码,那么所有访问这个留言板的用户都将可能执行这段恶意脚本。

利用存储型XSS可实现劫持访问,盗取访问者cookie或者配合csrf攻击完成恶意请求等攻击。

DOM based XSS

DOM based XSS通过恶意脚本修改页面的DOM节点来发起攻击,是发生在前端的攻击。DOM型XSS的特殊之处在于,用户的输入经过了DOM操作,特别是在innerHTML、ajax中经常出现。

一般的攻击流程大致如下:

  • 攻击者构造出特殊的URL,其中包含恶意代码,例如<script>alert(document.cookie)</script>
  • 用户打开带有恶意代码的URL
  • 用户浏览器接受到响应后执行解析,前端JavaScript取出URL中的恶意代码并执行
  • 恶意代码窃取用户数据并发送到攻击者的网站,冒充用户行为,调用目标网站接口执行攻击者指定的操作。

可以看到,其和反射型XSS的介绍,很是相似。

小感想

XSS的有趣之处,在于其过多的绕过方式,例如介绍给lokin妹妹的双写绕过等。其次,类似于知乎这类夹杂着图片、文字、视频,甚至可能有自定义的样式和html提交的富文本,此类XSS非常难以防御,并不是一个过滤就可以解决的问题。

另外,也要考虑到实际业务场景的问题,别影响了知乎er的体验(并没有)。

现在,前后端的分离,安全框架的使用,使得大量的XSS攻击消声觅迹,但是老业务里仍然还是少不了这类不安全内容的,不信,看看铁路系统的flash吧(ε=ε=ε=┏(゜ロ゜;)┛

以上,谢谢~




  

相关话题

  DOM-based XSS 与存储性 XSS、反射型 XSS 有什么区别? 
  DOM-based XSS 与存储性 XSS、反射型 XSS 有什么区别? 
  XSS 攻击时怎么绕过 htmlspecialchars 函数呢? 
  XSS 攻击时怎么绕过 htmlspecialchars 函数呢? 
  xss到底是怎么攻击的? 
  你怎么看待微软XSS游戏机运行光环无限,解析度和帧数 还不如前一代游戏机XBOXONEX? 
  XSS 攻击时怎么绕过 htmlspecialchars 函数呢? 
  xss到底是怎么攻击的? 
  你怎么看待微软XSS游戏机运行光环无限,解析度和帧数 还不如前一代游戏机XBOXONEX? 
  XSS 攻击时怎么绕过 htmlspecialchars 函数呢? 

前一个讨论
疫情期间,居家常备药品有哪些?
下一个讨论
你所知道的的统计误用或统计(概率)悖论?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利