XSS是什么
跨站脚本(Cross-Site Script),由于和层叠样式表CSS缩写一样,为避免混淆,因而缩写成XSS。
XSS是一种常见的Web安全漏洞。由于Web应用程序对用户输入检测不严,导致攻击者可以把恶意代码(通常是HTML和JavaScript)注入到网页中。当其他用户访问时,恶意代码就会被执行。通常被利用发起Cookie窃取、会话劫持、钓鱼等攻击。
XSS为何如此普遍
在工作中不难发现,几乎所有测试任务或多或少都会发现XSS的存在。为何XSS会如此普遍?都是由哪些因素造成的?
首先Web浏览器本身的设计是不安全的。浏览器只会执行程序,它并不会去判断程序和数据是否恶意;其次是输入输出的交互过程中,没有足够完善的安全防护机制;然后触发XSS的方式简单丰富,只要注入恶意代码即可;最后是开发人员的水平不高和意识不足所导致。
下图为2013和2017的OWASP TOP 10,尽管XSS从第3掉到第7,但依然是十大Web安全漏洞,这也能够看出XSS漏洞的普遍和流行。
XSS有什么危害
尽管XSS如此普遍,但XSS也就能“弹个对话框而已”,能有什么危害呢?在工作中我就被开发人员这样质疑过(因为我发现的漏洞基本存在于他写的代码中,手动滑稽)。
这里要强调的是,漏洞的验证和利用是两码事。为了验证XSS漏洞是否存在,我们通常采用弹框的方式,结果显而易见。弹框只为证明漏洞存在,证明漏洞存在后才是真正利用阶段。
漏洞能利用到什么程度,能产生多大危害,取决于你如何编写注入的恶意代码。比如写入一个a标签,点击后跳转到钓鱼网站;又比如在留言处写段获取Cookie的代码,当系统管理员去查看的时候,就将管理员的会话信息返回,这样我们就能利用这个会话信息去登录系统。
XSS通常被利用于Cookie窃取、会话劫持、钓鱼,也可以获取客户端信息,控制受害者浏览器执行其他操作。当然它的危害远不止这些,简单来讲,一是能获取用户的信息,二是能操作用户的设备。所以千万不要被弹框给欺骗,XSS的危害没有你想象中的那么简单。
XSS的分类
根据特性和利用手法,XSS主要分为以下三种:反射型XSS、存储型XSS、DOM型XSS。
反射型XSS也被叫做非持久型XSS、参数型XSS,是三种XSS中最常见的一种。
对于反射型XSS的利用,攻击者一般是构造一个包含恶意代码的URL,然后通过留言、邮件或其他途径发送给受害者。当受害者点击时,恶意代码就会被执行。正因为只有在用户点击时才会触发,且只执行一次,所以才被称为非持久型、反射型。
存储型XSS,也叫做持久型XSS。和反射型XSS不一样的是,存储型XSS不需要受害者去点击什么。攻击者事先将恶意代码存储到了服务器,每当受害者访问包含恶意代码的页面,恶意代码就会被执行。
存储型XSS一般出现在留言、评论、修改个人信息等与数据库存储相关的地方,而反射型XSS出现在其他交互的地方,比如搜索、登录等。
反射型XSS和存储型XSS都会和服务器产生交互,恶意代码由服务器端通过响应包返回给客户端;而DOM型XSS不会和服务器产生交互,恶意代码由前端的JavaScript处理。
三种类型的XSS简单介绍到这里,大家先在心里留下反射型XSS、存储型XSS以及DOM型XSS的概念,后续我会通过实战的方式,更直观的展示三者之间的区别。
免责声明
安全小白团是帮助用户了解信息安全技术、安全漏洞相关信息的微信公众号。安全小白团提供的程序(方法)可能带有攻击性,仅供安全研究与教学之用,用户将其信息做其他用途,由用户承担全部法律及连带责任,安全小白团不承担任何法律及连带责任。