百科问答小站 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到底是怎么攻击的? 
  DOM-based XSS 与存储性 XSS、反射型 XSS 有什么区别? 
  避免使用 eval、new Function 的方法可以降低 XSS 攻击的风险吗?为什么? 
  你怎么看待微软XSS游戏机运行光环无限,解析度和帧数 还不如前一代游戏机XBOXONEX? 
  避免使用 eval、new Function 的方法可以降低 XSS 攻击的风险吗?为什么? 
  避免使用 eval、new Function 的方法可以降低 XSS 攻击的风险吗?为什么? 
  你怎么看待微软XSS游戏机运行光环无限,解析度和帧数 还不如前一代游戏机XBOXONEX? 
  DOM-based XSS 与存储性 XSS、反射型 XSS 有什么区别? 

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





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