最近公司在搞安全方面的东西,其实自己对这块本来也很感兴趣,记得上高中的时候也在黑防上发表过文章呢。不过那时候的漏洞现在看起来都很弱,比如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=x onerror=alert(1)>
我们一般选择第三种就好。如果进入页面发现弹出alert(1),说明漏洞存在。
到这里我们就介绍完两种简单的XSS攻击方式了,大家可以去其他网站试试(别再我这试,肯定没有)。另外的,还有DOM型的XSS,以及flash的XSS。大家有兴趣可以自己研究下。
©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: 安全入门之XSS攻击
很荣幸来访您的博客,留言只是证明我来过!
支持,只有支持才是访问博客的正确方式!
世事无常,但这个博客定能永保辉煌!
时间飞快,转眼年中就要到来,祝你天天愉快!
我只想默默的拜读您的博客!
闲着没事,随便逛逛,心静自然凉。
受教了!呵呵!
古人日三省其身,我从博客里吸收养分!