XSS跨站脚本攻击漏洞

XSS跨站脚本攻击漏洞

XSS跨站脚本攻击漏洞_第1张图片

文章目录

  • XSS跨站脚本攻击漏洞
      • 0x01 XSS 背景
      • 0x02 XSS 概论
        • 利用XSS漏洞
        • XSS攻击的类型
          • 反射型XSS:
          • 存储型XSS:
          • DOM型XSS:
      • 0x03 最常见的cookies类型
        • a.Session Cookie
        • b.Persistent Cookie
        • c.Secure cookie
        • d.HttpOnly Cookie
        • e.3rd-party cookie
        • f.Super Cookie
      • 0x04常见标签
      • 0x05 检测XSS的办法
        • 内容安全策略(CSP)
        • 输入文本验证
        • 库或框架
        • XSSer

0x01 XSS 背景

思科2018年度安全报告的结果显示,40%的能使网络瘫痪的攻击都是XSS攻击,这是最常用的攻击技术。当攻击者使用web应用程序在用户的计算机上发送或执行恶意代码时,就会发生这种特殊的攻击。

随着应用层的攻击越来越多,它已经成为网络安全的严重威胁。
对于大量应用程序来说,这已经是最大的安全性问题,特别是那些高可用性操作或优先服务中实现的应用程序,如医疗、银行、电子商务等。

根据**《2018年全球安全报告》(global security report 2018)给出的数据,平均每个应用程序大约有11个漏洞隐患。
这份报告显示,网络攻击正变得越来越具体、越来越频繁、越来越复杂。
XSS跨站脚本攻击漏洞_第2张图片
其中,所占攻击比重最大的是
跨站点脚本攻击(XSS), 占总体攻击的40%,紧接着是SQL注入24%,cross-section为7%**,本地文件包含4%,分布式拒绝服务(DDoS)为3%。

当web应用程序从受害者计算机的浏览器执行恶意代码(通常以脚本的形式)时,就会发生XSS攻击。通过这种攻击,攻击者会窃取个人信息,或者窃取用户的cookies。

根据CWE/SANS列出的前25个最危险的漏洞,分为三类

  • 组件之间的不安全交互(6个错误)
  • 风险资源管理(8个错误)
  • 多孔性防御(11处错误)

0x02 XSS 概论

为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故缩写为XSS。跨站点脚本(XSS)攻击是一种注射型攻击,攻击者在可信的网页中嵌入恶意代码,用户访问可信网页时触发XSS而被攻击。

利用XSS漏洞

web应用程序的内容可用来插入各种广告,影响商业网站的声誉或欺骗用户。
从开放会话中窃取会话cookie,并在这些会话在线时提取信息。
窃取或冒充合法用户的身份,窃取个人信息。
如果攻击者滥用这些被窃取的信息,用户的HTTP会话可能会被破坏或劫持。

XSS攻击的类型

XSS跨站脚本攻击漏洞_第3张图片

反射型XSS:

在这种类型中,攻击者放置一个脚本来窃取受害者的cookie,接收到该cookie后,攻击者可以使用受害者的权限执行操作,而不需要使用任何类型的密码。
这种攻击在搜索引擎中很常见,通常是通过表单、url、cookies、flash程序甚至视频注入代码。
通过这种方式,代码可通过第三种机制被重定向。例如,通过电子邮件,攻击者可以说服用户点击message中的链接来执行任何JavaScript代码。其结果是将用户的流量重定向到攻击者的web应用程序。如果所述Web应用程序存在XSS漏洞,则其执行将在承载该应用程序的Web站点的可信环境中执行。
XSS跨站脚本攻击漏洞_第4张图片

存储型XSS:

攻击者将HTML代码直接注入允许访问的web页面或站点。
这种攻击需要编程标记(如JavaScript脚本)。这些代码在第一次攻击后对所有用户都是永久的。
攻击者发送的数据永久地存储在服务器上,然后显示给访问网站的用户。其结果包括:允许执行代码来获得提升的特权,默认用户激活了他们的管理员帐户。
XSS跨站脚本攻击漏洞_第5张图片

DOM型XSS:

被认为是一种更复杂、鲜为人知或常见的攻击。不同之处在于,恶意代码是通过URL注入的,而不是在源代码中作为web的一部分加载的。
检测起来比较困难,它被认为是一个本地的XSS。
当一个被感染的页面被打开时,恶意代码会利用一些漏洞将自己安装到web浏览器的一个文件中,并且在没有任何预先验证的情况下执行。
与反射行XSS一样的是,这种攻击需要用户单击链接,因此web页面上的脚本选择URL变量并执行它所包含的代码。这种方法在窃取会话cookie方面更有效。
XSS跨站脚本攻击漏洞_第6张图片
泄露存储在用户cookies中的信息:用户可以在客户端创建一个脚本,该脚本一旦执行,就会执行一些活动,比如将站点中的所有cookie解析为一个特定的电子邮件地址。

通过XSS攻击窃取COOKIE

这些攻击通常用于在数据库中窃取cookies。因此,攻击者执行任意脚本,从受害者的计算机中提取个人信息。

默认情况下,cookie是维护用户和web应用程序之间的会话身份验证的机制。但是,它们有固有的安全弱点,允许攻击这些会话的完整性。建议使用HTTPS协议来保护cookie,但是性能方面的成本很高,特别是对于那些高分布度的应用程序。

另一方面,即使启用了HTTPS协议,cookie也可以以多种方式公开。大多数cookie以文本文件或小型数据库的形式存储在用户的计算机中,如SQLite格式(Mozilla Firefox)。它的目标是存储与导航首选项、会话、凭据,诸如浏览器类型或用于访问网站的设备类型等相关的信息。

0x03 最常见的cookies类型

a.Session Cookie

这个类型的cookie只在会话期间内有效,即当关闭浏览器的时候,它会被浏览器删除。
设置session cookie的办法是:在创建cookie不设置Expires即可。

b.Persistent Cookie

持久型cookie顾名思义就是会长期在用户会话中生效。当你设置cookie的属性Max-Age为1个月的话,那么在这个月里每个相关URL的http请求中都会带有这个cookie。所以它可以记录很多用户初始化或自定义化的信息,比如什么时候第一次登录及弱登录态等。

c.Secure cookie

安全cookie是在https访问下的cookie形态,以确保cookie在从客户端传递到Server的过程中始终加密的。有效的降低了cookie被盗取的概率。

d.HttpOnly Cookie

目前主流的浏览器已经都支持了httponly cookie。
IE5+/Firefox 1.0+/Opera 8.0+/Safari/Chrome
在支持httponly的浏览器上,设置成httponly的cookie只能在http(https)请求上传递。也就是说httponly cookie对客户端脚本语言(JavaScript)无效,从而避免了跨站攻击时JS偷取cookie的情况。当使用javascript在设置同样名字的cookie时,只有原来的httponly值会传送到服务器。

e.3rd-party cookie

第一方cookie是cookie种植在浏览器地址栏的域名或子域名下。
第三方cookie则是种植在不同于浏览器地址栏的域名下。例如:用户访问a.com时,在ad.google.com设置了个cookie,在访问b.com的时候,也在ad.google.com设置了一个cookie。

f.Super Cookie

Super Cookie是设置公共域名前缀上的cookie。通常a.b.com的cookie可以设置在a.b.com和b.com,而不允许设置在.com上。

目前,大多数web应用程序使用cookie来维护与用户的会话状态,也就是说,cookie是在用户通过身份验证(会话cookie)后发送的。对于以后的连接,将不需要额外的身份认证,因为验证后的cookie只会在允许新请求时进行验证。

这种身份验证功能使cookies成为攻击者的潜在目标,因为它们是由网站创建的,包含少量数据,可以在发送方和接收方之间发送。

例如,一个用户第一次访问一个web页面,他的计算机上保存了一个cookie。如果用户稍后访问同一页面,网站服务器会请求相同的cookie用站点的新配置更新它,这就是用户的访问变得如此个性化的原因。

当前补救率根据类型的漏洞

此外,如图,开发人员总是面向修复或纠正最易访问或最容易的问题。例如,应用程序的错误设置的补救率为74%,未修补的库的补救率为62%。然而,最复杂和困难的解决方案仍然是XSS(38%)和SQL注入(32%)

根据XSS漏洞的类别确定修复率

0x04常见标签

****
alert("xss");
**标签**






**标签**
aa
aa
a
aa
aa
aa
**input标签**






**
**
**
**
****

**