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



xss到底是怎么攻击的? 第1页

  

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

前言

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

看完第一段,很多人首先会产生第一个疑问:Cross-site scripting为什么没有简称为CSS呢?

原因在于,按照先来后到的顺序,跨站脚本攻击缩写为CSS,则会与层叠样式表(Cascading Style Sheet)冲突,因此在安全领域则化名为XSS。

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

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

分类

这段主要解答一下提问的内容,即XSS攻击有那种类型, 不同类型的XSS到底是怎么进行攻击的?

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>     

如果payload改成下面这个:

       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吧(ε=ε=ε=┏(゜ロ゜;)┛





  

相关话题

  我想学习网络安全这方面,如何开始学习? 
  为何中国的网站普遍不愿意相信用户能把密码管理好? 
  在网上自称为黑客的人真的是黑客吗? 
  重要信息发到了一个错误的邮箱里,如何挽救? 
  如何看待网易邮箱至今登录界面没有https? 
  如何用C语言和windows api实现一个基本的ssl协议?(参考资料已备齐) 
  游戏行业相继制裁俄罗斯后,网传俄黑客将 PS5 系统、Steam 游戏库等全部破解,其真实性如何? 
  为什么有的程序员哪怕失业交不起房租也不愿意接触黑产? 
  想学网络安全,推荐自学还是系统学啊? 
  无线路由器被蹭网后,有被黑的风险吗? 

前一个讨论
假如春节期间你一觉醒来发现自己丢失了记忆,会发生什么事?
下一个讨论
刘涛的表演给《开端》减分了吗?





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利