资讯专栏INFORMATION COLUMN

XSS攻击实践

社区管理员 / 568人阅读

一、前言

由于浏览器同源策略,限制了页面无法引用第三方资源,无法请求不同源下面的资源,影响了web的发展,所以浏览器出让了一些安全策略来满足web的发展。

  • 通过CSP安全策略来保证浏览器可以安全的加载第三方资源;

  • 通过CORS允许浏览器跨域请求;

  • 通过PostMessage来操作DOM

但这些策略也给了黑客攻击我们的站点的机会。

web站点常见的攻击方式包括:XSS攻击CSRF攻击Sql注入攻击等。

二、XSS攻击

1、什么是XSS攻击

XSS攻击(跨站脚本攻击),黑客通过网站的漏洞,将恶意脚本插入Html页面,当用户打开站点时,由于恶意脚本和站点代码拥有同样的执行权限,恶意脚本就有可能篡改站点内容,窃取用户信息发送到第三方服务器。

恶意代码一般会做下面这些攻击:

  • 获取用户Cookies

  • 修改用户DOM,伪造登录页面

  • 生成浮窗广告

  • 监听用户输入

2、XSS攻击的分类

XSS攻击常被分为三类:存储型攻击、反射型攻击、基于DOM的XSS攻击。

前两种一般要经过服务器,所以后端研发更需要注意,而最后一种没有经过服务器,是需要前端注意避免的。

1)存储型攻击

一个真实的案例就是:2015年乌云网爆出来的,喜玛拉雅站点,编辑上传专辑名称,未对录入表单进行过滤,黑客可以上传恶意脚本到服务器。当其他用户点击这张专辑的时候,就执行了恶意脚本,恶意脚本获取用户的Cookies信息,上传到黑客的服务器,然后就可以登录用户的站点。

第一步:输入恶意脚本到站点,没有过滤,所以可以上传到服务器

image.png 第二步:当用户打开了当前页面,执行了恶意脚本,后端代码没有禁止第三方站点发出的请求,所以黑客就获取了用户的Cookies,接着就可以访问用户的站点或者调用站点的API

image.png

2)反射型攻击

反射型XSS攻击的常见模式是,黑客发现了网站存在将url的参数直接在页面上显示,并且没有过滤的情况,于是黑客就构造带有恶意脚本的链接,诱导用户点击,当用户点击了链接,就将恶意代码注入到了页面并执行,从而获取用户信息等。

反射型攻击案例:

页面中又直接渲染html的变量,直接渲染html的,如下代码,直接读取url参数query, 在页面展示,如果后端服务没有经过过滤,就有可能将query的代码引入页面中执行,造成攻击

image.png

image.png

3)基于DOM的XSS攻击

该攻击可以是一些流氓软件或攻击路由器,在http请求返回的过程中,在返回的数据中插入了恶意代码,前端站点如果没有过滤,就可能出现执行恶意代码的情况。

3、其他相关案例

1、页面读取html显示,后端通过抓取邮件内容,生成html,给到前端展示。由于邮件中可能存在一些非法标签,浏览器在解析中无法识别,就导致浏览器crash,常常使用插件或者js过滤,转译等。

2、给朋友发送一个页面的脚本,其中alert了6次,并且获取了浏览器Cookies

<!DOCTYPE html> <html lang="en">     <head>         <meta charset="UTF-8">         <title>攻击测试</title>     </head>     <body>         <script>             window.onload = () => {                 document.cookie = "username=test"                 for(let i=0; i<=5; i++){                     alert(`你被攻击了,我获取了你的Cookies${document.cookie}`)                  }             }         </script>         你被攻击了     </body> </html> 复制代码

打开页面后:

image.png 如果将其中的攻击脚本插入用户的页面中,然后向第三方服务器发送cookies,这就构成了XSS攻击

三、模拟存储型攻击

我们来模拟下存储型攻击

1、前期准备

一个恶意的脚本这里用Express搭建,端口9000

一个恶意服务

2、正常站点

另外启动一个http服务器,为我们的正常站点,端口8080。

假设,这个的网站存在漏洞,没有过滤参数,恶意脚本上传到了服务器

表单录入

3、正常站点的另一个页面

当用户打开另一个页面,可以加载了前一步录入的内容,我们发现恶意脚本已经执行

打开站点

4、恶意脚本执行

恶意脚本执行

5、恶意服务后端获取当前站点Cookies

获取Cookie

四、防止XSS攻击的办法

阻止XSS攻击,要先知道XSS攻击的原理:一般分为两个步骤。

第一步:黑客找到站点的漏洞,想站点插入恶意脚本。

第二步:读取站点的信息,发送到第三方服务器。

XSS攻击主要有以下方法注入:

  • html中的script脚本

  • 凡事可以请求第三方数据的地方:标签的属性Img的src属性、a标签的href属性、background:url()

  • js脚本的拼接特殊字符

对于后端来说,主要有以下几处常常不可信:

  • 用户输入内容

  • url参数

  • post参数

  • 第三方的链接

  • referere

  • Cookies

1、过滤关键字

对于存储型XSS攻击和反射型XSS攻击,二者由于都需要过服务器,那么只要后端开发在入库的时候最敏感代码进行过滤进行过滤,就可以避免大部分的XSS攻击。

2、前端框架和组件的使用

目前对于前端的大部分组件(富文本组件)和常见的Vue、React框架都对展示的数据,只会展示以字符串进行展示。

对于有可能嵌入恶意代码的部分也贴心的增加了提示:

如在Vue中:

<div v-html="html"></div> 复制代码

在React中:

<div dangerouslySetInnerHTML = {{__html:<div><script src="http://xxs.js"></script></div>}} ></div> 复制代码

这些可能导致XSS攻击的地方,框架都给了显著的提示,所以在页面显示这些不可控的内容前要进行过滤。

3、严格执行CSP策略

设置CSP,现在站点加载或发送请求到第三方服务器

4、给Cookie设置HttpOnly

给cookies设置了该属性,当前页面重要的Cookie就无法通过js读取,这样黑客也就无法获取用户的信息


作者:前端中后台
链接:https://juejin.cn/post/7041435485310287886
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127962.html

相关文章

  • xss注入实践和防范

    摘要:劫持用户是最常见的跨站攻击形式,通过在网页中写入并执行脚本执行文件多数情况下是脚本代码,劫持用户浏览器,将用户当前使用的信息发送至攻击者控制的网站或服务器中。预防将录入的恶意标签进行转码再存储,主要在后端录入的时候做。 xss定义 Cross Site Scripting的缩写本来是CSS,但是这样就跟Cascading Style Sheets的缩写混淆了,所以使用XSS,使用字母X...

    Rango 评论0 收藏0
  • xss注入实践和防范

    摘要:劫持用户是最常见的跨站攻击形式,通过在网页中写入并执行脚本执行文件多数情况下是脚本代码,劫持用户浏览器,将用户当前使用的信息发送至攻击者控制的网站或服务器中。预防将录入的恶意标签进行转码再存储,主要在后端录入的时候做。 xss定义 Cross Site Scripting的缩写本来是CSS,但是这样就跟Cascading Style Sheets的缩写混淆了,所以使用XSS,使用字母X...

    JinB 评论0 收藏0
  • Web安全之XSS Platform搭建及使用实践

    摘要:一背景是一个非常经典的渗透测试管理系统,原作者在年所开发,由于后来长时间没有人维护,导致目前在环境下无法运行。 一、背景 XSS Platform 是一个非常经典的XSS渗透测试管理系统,原作者在2011年所开发,由于后来长时间没有人维护,导致目前在PHP7环境下无法运行。 笔者最近花了一点时间将源码移植到了PHP7环境中,同时增加安装功能;另外还修复之前的代码的一些不严谨语法的问题,...

    shevy 评论0 收藏0
  • Web安全之XSS Platform搭建及使用实践

    摘要:一背景是一个非常经典的渗透测试管理系统,原作者在年所开发,由于后来长时间没有人维护,导致目前在环境下无法运行。 一、背景 XSS Platform 是一个非常经典的XSS渗透测试管理系统,原作者在2011年所开发,由于后来长时间没有人维护,导致目前在PHP7环境下无法运行。 笔者最近花了一点时间将源码移植到了PHP7环境中,同时增加安装功能;另外还修复之前的代码的一些不严谨语法的问题,...

    XboxYan 评论0 收藏0
  • 快速找出网站中可能存在的XSS漏洞实践(一)

    摘要:一背景笔者最近在慕课录制了一套跨站漏洞加强安全视频教程,课程当中有讲到的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些漏洞的挖掘过程记录下来,方便自己也方便他人。 一、背景 笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖...

    Jason_Geng 评论0 收藏0
  • 快速找出网站中可能存在的XSS漏洞实践(一)

    摘要:一背景笔者最近在慕课录制了一套跨站漏洞加强安全视频教程,课程当中有讲到的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些漏洞的挖掘过程记录下来,方便自己也方便他人。 一、背景 笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖...

    YPHP 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<