XSS攻击——每周小讲堂

我们从一个很蠢的例子开始。

假设网站上有一个很简单的输入框,如果输入123并提交,就会保存并显示在url上。

比如现在填一段JS代码字符串并提交,就会得到一个包含所填内容的链接,并会执行JS代码,比如弹一个弹框,从而就可以诱导用户做一些事情,这是一个很简单的XSS攻击的示例。

XSS攻击,也叫跨站攻击,即Cross Site Script Execution(通常简写为XSS,因为CSS与层叠样式表同名,故改为XSS) 是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

跨站脚本漏洞(Cross Site Scripting,常简写作XSS)简单来讲就是Web应用程序在将数据输出到网页的时候存在问题,导致攻击者可以将构造的恶意数据显示在页面的漏洞。因为跨站脚本攻击都是向网页内容中写入一段恶意的脚本或者HTML代码,故跨站脚本漏洞也被叫做HTML注入漏洞(HTML Injection)。

一般的XSS分为三类:非持久型XSS、持久性XSS和DOM Based XSS。

非持久型的就是上面例子中那种,即插即用,本质是构造一个有问题的URL,诱导用户去点就行了。因为这个URL前面的部分往往是正规网站的链接,所以会取得用户的信任,不太注意的人点了就会运行攻击者想要的脚本,前往特定网站或者获取Cookie。

持久型的也叫存储型的XSS,它会把一些恶意的文本提交到数据库,你在访问正常页面的时候把这段恶意文本读出来,也会出问题,比如留言板、博客、新闻发布系统等就容易出这种问题。

基于DOM的XSS攻击不太常见,页面上有时候会用JS来指定在特定的地方显示特定的内容,通过改变URL来修改显示的内容,达到欺骗用户的目的。

上面说到利用XSS攻击来弹窗,但实际上可以做很多事情,比如盗取Cookie,从而冒充身份来登录特定网站。还有钓鱼攻击,通过构造一个URL,把原来的页面强制覆盖掉,生成一个新的表单,让用户输入用户名和密码,不太熟悉的用户可能直接就输入了,也就被攻击者获取了。还有蠕虫攻击,新浪原来就中过一次蠕虫攻击,攻击者通过XSS漏洞提交了一个脚本,用户点链接的时候就会调用特定的JS,其作用是让用户自动关注某个微博,并且自己也自动发个微博让大家去点该链接,传播给其他用户。

总的来说,XSS本质上都是运行一段特定的代码,你想做什么都可以,但大部分也是个愿者上钩的事情,因为是用户自己点了才会出事,所以还是要自己多加留意。

作为开发者,挖掘自己系统XSS漏洞的方法有扫描工具检测(比如BruteXSS)、手工测试和源码分析。用扫描工具比较方便,手工测试则要自己去试着构造一些攻击。

漏洞防范主要是要记得使用HttpOnly和完善输入输出的检查。HttpOnly不是在过滤,而是禁止JS访问HttpOnly属性的Cookie,也就不会有XSS攻击获取Cookie的行为了。输入输出检查则是要确定输入内容可信,比如尖括号、感叹号这些在常用输入上是不会有的,发现了就要判断,此外,类似IP地址、邮箱、电话其本身是有格式规范的,输出是要对信息做编码处理,这也能过滤掉恶意的字符。

测试就分黑盒测试和白盒测试了。黑盒就是把自己当黑客,把系统给黑掉,从黑客的视角去分析,当做不知道网站是怎么运作的,尝试去攻击它。白盒就是阅读代码找常见的漏洞了。

讲者:司玮辰

后台开发者

整理:欧霄

本文来自企鹅号 - 柒零贰大队媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维

Ubuntu10.04 sudoers文件损坏又没有root密码修复

Ubuntu10.04 sudoers文件损坏又没有root密码修复 昨天遇到一个案子: 一台GIT服务器是安装的Ubuntu10.04的系统,上面有几个普...

17820
来自专栏武军超python专栏

2018年8月9号飞机大战项目答辩得到的经验和基本的win终端命令

今天遇到的新单词: adapter n适配器 virtual adj 虚拟的 interface n接口 corporation n公司,法人

12430
来自专栏smy

怎样提高网站访问速度缩短网页加载时间

本文主要参照http://developer.yahoo.com/performance/rules.html,结合多年网站开发经验总结而来。 1、减少页面HT...

37870
来自专栏IMWeb前端团队

再见2015 再见cmd

本文作者:IMWeb yisbug 原文出处:IMWeb社区 未经同意,禁止转载 2015年已经快要过去了,你是否还在使用有着十几年历史的cmd命令行...

33790
来自专栏cs

wechat作弊

菜鸟一个最多跳60多分,看到 微信小游戏跳一跳外挂教程(安卓版)的教程,自己尝试了一下,ubuntu17环境,python2,python3公存在,开始失败了,...

38090
来自专栏云计算教程系列

CentOS 如何配置NTP加入NTP池项目

准确的计时对于几乎所有服务或软件都至关重要。在分布式平台上运行的电子邮件,记录器,事件系统和调度程序,用户身份验证机制和服务都需要准确的时间戳来按时间顺序记录事...

17800
来自专栏沈唁志

如何在Ubuntu 16.04上安装PrestaShop

如果您曾经考虑过开设在线商店,您可能会感受到各种免费的开源电子商务解决方案。虽然有这么多的选择意味着几乎可以肯定有一个可用的有效解决方案适合您的特定情况,但它也...

33730
来自专栏IT笔记

前后端分离之Vue项目构建测试打包发布

写在开始 其实之前对前后端分离研究过一段时间,中间由于项目进度耽搁也就不了了之了,最近项目中部分使用到了Vue,恰逢前端小伙伴们居然说要使用这个东西,也许是前端...

38790
来自专栏生信技能树

点击此文,无需转发,即可下载上千个免费R包

写在前面: 谨以此文献给那些“奋斗”在转发送别人资源,为了博人眼球,而践踏别人的辛勤的劳动成果的公众号们。 当然了,R包本来就是免费的,你只是不会下载而已,所以...

43780
来自专栏腾讯NEXT学位

React 16 加载性能优化指南(上)

公司的新项目迁移到了 React 16 和 Webpack 4.0,写一篇文章来总结一下。

71350

扫码关注云+社区

领取腾讯云代金券