浅谈XSS跨站脚本攻击

来源:互联网 发布:淘宝扣了48分如何申诉 编辑:程序博客网 时间:2024/05/17 06:05

简介

跨站脚本攻击(cross site script),为了避免与样式css混淆,所以简称XSS。

XSS通常是带有页面可解析内容的数据未经过处理直接插入到页面上解析导致的。

XSS攻击的危害包括:

1、盗取各类用户账号,如机器登录账号、用户网银账号、各类管理员账号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力。
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子右键
6、网站挂马
7、强制受害者机器向其他网站发起攻击

XSS攻击分类

XSS攻击主要分为三类:

1、Reflected XSS(基于反射的XSS攻击)
2、Stored XSS(基于存储的XSS攻击)
3、DOM-based or local XSS(基于DOM或本地的XSS攻击)

Reflected XSS(基于反射的XSS攻击)

可能是在页面URL参数中注入了可解析内容的数据结构而导致,如果直接获取URL中不合法的结构并直接插入页面中,则可能出现页面上的XSS。这类攻击方式主要借助URL来实施。

比如:

正常发送消息:http://www.test.com/message.php?send=Hello,World!

接受者会将接受信息并且显示Hello Word。

非正常发送消息:http://www.test.com/message.php?send=!

接收者接收消息显示的时候会将弹出警告窗口。

Stored XSS(基于存储的XSS攻击)

存储型XSS攻击脚本常常是由前端提交的数据未经过处理直接存储到数据库,然后从数据库中读取出来以后直接插入到页面导致。存储型存储型攻击方式和反射型最大的区别就是不通过URL来传播,而是利用站点本身合法的存储结构。比如评论,任何用户都可以通过站点提供的接口提交评论内容,这些评论内容都被存储到服务器的数据库。当用户访问这些评论的时候,服务器从数据库提取内容插入到页面反馈给用户。如果评论内容本身是具备攻击性内容,用户无一幸免。

再一个场景就是通过发表带有恶意跨域脚本的帖子/文章,从而把恶意脚本存储在服务器,每个访问该帖子/文章的人就会触发执行。

比如:

发布一篇文章,里面包含了恶意脚本:今天天气不错啊!

后台没有对文章进行过滤,直接保存文章内容到数据库,当其他用户看到这篇文章的时候,包含的恶意脚本就会执行。(因为大部分文章是保存整个html内容的,前端显示的时候也不做过滤,就极有可能出现这种情况。)

DOM-based or local XSS(基于DOM或本地的XSS攻击)

当用户能够通过交互修改浏览器页面中的DOM(DocumentObjectModel)并显示在浏览器上时,就有可能产生这种漏洞,从效果上来说它也是反射型XSS。通过修改页面的DOM节点形成的XSS,称之为DOMBasedXSS。

前提是易受攻击的网站有一个HTML页面采用不安全的方式从document.location 或document.URL 或 document.referrer获取数据(或者任何其他攻击者可以修改的对象)。

比如:

<HTML><TITLE>Welcome!</TITLE>Hi<SCRIPT>    var pos=document.URL.indexOf("name=")+5;    document.write(document.URL.substring(pos,document.URL.length));</SCRIPT><BR>Welcome to our system</HTML>

这个例子是个欢迎页面,name是截取URL中get过来的name参数。正常操作:http://www.vulnerable.site/welcome.html?name=Joe

非正常操作:http://www.vulnerable.site/welcome.html?name=

开发安全措施:

XSS防范的主要方法是:验证输入到页面上的所有内容来源数据是否安全,如果可能含有脚本标签等内容,则进行必要的转义。

1、首要的服务器要进行过滤,因为前端的校验可以被绕过。
2、当服务器不校验的时候,前端要以各种方式过滤里面可能的恶意脚本,例如Script标签,将特殊字符转换成html编码。

原创粉丝点击