β

安全入门之XSS攻击

赵伊凡's Blog 37 阅读

最近公司在搞 安全 方面的东西,其实自己对这块本来也很感兴趣,记得上高中的时候也在黑防上发表过文章呢。不过那时候的漏洞现在看起来都很弱,比如sql注入什么的。不过就算是现在,也还是有不少应用仍然存在这种10年前就很流行的漏洞。(一不小心暴露了年龄)

这篇我们就来学习一下XSS攻击。

先来介绍一下什么是XSS吧。全称跨站脚本攻击(Cross Site Scripting)。(为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。)恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

看了定义我们应该知道了,XSS原理就是用户访问了攻击者嵌入了恶意脚本的 web 页面,主要是js脚本。正常用户访问之后,恶意脚本执行,导致用户损失。(比如盗号、比如窃取用户隐私数据等)

XSS攻击有很多种类型,我们这里介绍几种常用的。当然flash部分也存在,json部分也存在。然而我我也不是做flash的不了解,其实这些原理是一样的。

存储型XSS

就是把XSS脚本存储到了服务器上。怎么存储到服务器上呢?举个例子就懂了。

论坛发帖,攻击者在帖子内容中输入了恶意js攻击脚本,这样攻击脚本被存储在了服务器上,当正常用户访问的时候,就会执行这种恶意脚本。

场景懂了,可以怎么做呢,比如恶意脚本中读取用户隐私cookies。如果这个cookies没有做http-only,那么攻击者写的js可以读取cookies信息,然后发往自己的服务器。这时候正常用户一访问页面就会执行这段js脚本,把自己的cookies信息发往攻击者的服务器。有些网站把登录token存到cookies中,攻击者就可以利用这个token登录被害者帐号进行任意操作了。

同样的,攻击者还可以在js脚本中发起任意请求,比如读取私密信息的请求,将请求的结果发往攻击者服务器。这样当被害用户访问帖子的时候,就会把私密数据发出去,导致用户私密数据泄漏。

说了场景和危害,怎么解决呢,很简单,那就是对页面数据进行转义。对恶意脚本进行转义,这样恶意脚本就算被存储下来,访问的时候也不会执行。另外,也可以不让用户发帖的时候发送恶意脚本包含的一些特殊符号。

存储型XSS是最容易实现攻击的一个漏洞。

反射型XSS

反射型的意思其实很简单,我们说个例子就知道了。

比如搜索功能,我们搜索一个内容,页面会展现我们搜索的关键字,和搜索结果。假如这时候我们搜索的内容换成一段恶意js脚本,这样如果没有对展示进行转义的话,恶意脚本就会执行。

我们把这个搜索的链接发送给被害用户,那么这个用户就会中招。

别以为这个有什么实现难度,想想常见的短网址。还有如果我们对这个 域名 是比较信任的,是不是不管后面是什么都会轻易的点进去。

如何检测

直接在输入框中输入检测脚本即可。建议的三种检测脚本如下。

1) '"></script><script>alert(1)</script><"
2) '";alert(1);x="'
3) '"><img src="http://irfen.me/security-xss/x onerror=alert(1)>

我们一般选择第三种就好。如果进入页面发现弹出alert(1),说明漏洞存在。

本文原创于 赵伊凡BLOG 转载 请注明出处。

到这里我们就介绍完两种简单的XSS攻击方式了,大家可以去其他网站试试(别再我这试,肯定没有)。另外的,还有DOM型的XSS,以及flash的XSS。大家有兴趣可以自己研究下。

©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: 安全入门之XSS攻击

作者:赵伊凡's Blog
一个软件开发爱好者 专注于互联网应用开发 Java目前是我的饭碗
原文地址:安全入门之XSS攻击, 感谢原作者分享。

发表评论