(一)XSS简介
- 跨站脚本攻击XSS(Cross Site Scripting)。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS通常被用于获取Cookie、以受攻击者的身份进行操作等行为。
- XSS分为:反射型 、存储型 、DOM型
(二)反射型XSS
-
非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面,且受到XSS Auditor、NoScript等防御手段的影响较大。反射型XSS大多数是用来盗取用户的Cookie信息。 -
输入框中提交数据:<script>alert('Hack')</script> ,提交表单后,网页直接弹出了Hack弹窗,可以看到,我们插入的语句已经被页面给执行了。这种漏洞数据流向是: 前端–>后端–>前端。
(三)存储型XSS
-
攻击者能够把攻击载荷存入服务器的数据库中,造成持久化的攻击。 -
攻击者在社区写下一篇包含恶意 JavaScript代码的博客文章或评论,文章或评论发表后,所有访问该博客文章或评论的用户,都会在他们的浏览器中执行这段恶意的JavaScript代码。 -
存储型攻击大致需要经历以下几个步骤 1、首先攻击者利用站点漏洞将一段恶意JavaScript代码提交到网站数据库中 2、然后用户向网站请求包含了恶意 JavaScript脚本的页面 3、当用户浏览该页面的时候,恶意脚本就会执行,如将用户的cookie信息等数据上传到恶意服务器
(四)DOM型XSS
-
DOM型XSS一般和服务器的解析响应没有直接关系,而是在JavaScript脚本动态执行的过程中产生的。通过恶意脚本修改页面的DOM节点,是发生在前端的攻击 -
基于DOM攻击大致需要经历以下几个步骤 1、攻击者构造出特殊的URL,其中包含恶意代码 2、用户打开带有恶意代码的URL 3、用户浏览器接受到响应后执行解析,前端JavaScript取出URL中的恶意代码并执行 4、恶意代码窃取用户数据并发送到攻击者的网站,冒充用户行为,调用目标网站接口执行攻击者指定的操作。
(五)XSS危害
- 用户的Cookie被获取,其中可能存在Session ID等敏感信息。攻击者可能用对应Cookie登陆服务器。
- 攻击者能够在一定限度内记录用户的键盘输入。
- 攻击者通过CSRF等方式以用户身份执行危险操作。
- XSS蠕虫。
- 获取用户浏览器信息。
- 利用XSS漏洞扫描用户内网。
(六)XSS绕过
- 区分大小写过滤标签
<scripT>alert('hack')</scripT> - 嵌套的script标签绕过
<scr<script>ipt>alert('hack')</scr</script>ipt> - 无法使用
<script> 标签注入XSS代码,可以通过img、body等标签的事件src 注入恶意的 js 代码。<img src=1 οnerrοr=alert('hack')>
(七)XSS防御
- 过滤,如:
<script>、<img>、<a> 等标签进行过滤。 - 编码,如:
<> 在输入的时候要对其进行转换编码,防止浏览器对该标签进行解释执行的。 - 限制,对预期的输入限制长度强,制截断来。
|