<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 反序列化漏洞 序列化就是把一個對象變成可以傳輸的字符串,目的就是為了方便傳輸。 反序列化和序列化是兩個正好相反的過程。 ### 反序列化漏洞的原理: 序列化和反序列化本身并不存在問題。但當反序列化的數據可被用戶控制,那么攻擊者即可通過構造惡意輸入,讓反序列化產生非預期的對象,在此過程中執行構造的任意代碼。 php比較少,Java中出現的很多,因為php中還需要滿足后臺不正當的使用了PHP中的魔法函數的條件 * PHP反序列化函數: serialize(),unserialize() * Java反序列化函數: ObjectOutputStream的writeObject()和ObjectInputStream的readObject()。 php常見的幾個魔法函數: ```php #魔法函數前邊都會有__ __construct()當一個對象創建時被調用 __destruct()當一個對象銷毀時被調用 __toString()當一個對象被當作一個字符串使用 __sleep() 在對象在被序列化之前運行 __wakeup將在序列化之后立即被調用 ``` ### PHP反序列化漏洞實戰 在線反序列化工具:https://www.w3cschool.cn/tools/index?name=unserialize ``` # 已序列化數據 O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";} # 反序列化后的結果 Array{ [__PHP_Incomplete_Class_Name]=>S [test]=><script>alert('xss')</script> } ``` 怎么構造payload呢 通過更改序列化之后的變量值,之后將payload寫入一個接受序列化數據的API中就可以了 小結 回看整個過程就是 對象通過序列化變為字符串,我們對字符串做手腳,再交給有漏洞的地方進行反序列化 ## 反序列化漏洞防御: ### 類的白名單校驗機制: 對所有傳入的反序列化對象,在反序列化過程開始前,對類型名稱做一個檢查,不符合白名單的類不進行反序列化操作。很顯然,這個白名單肯定是不存在Runtime的。 ### 禁止JVM執行外部命令Runtime.exec 這個措施可以通過擴展 SecurityManager 可以實現。 ### PHP防御 1. 安全配置好php相關參數:禁止某些php函數, 服務器便是用這個來禁止php的執行命令函數。 ``` # 禁止用這些函數來執行系統命令。 disable_functions =system,passthru,shell_exec,exec,popen ``` 2. 升級中間件 3. 嚴格控制傳入變量,嚴謹使用魔法函數 ### weblogic防御 1. 過濾T3協議,限定可連接的IP 2. 設置Nginx反向代理,實現t3協議和http協議隔離 3. JEP290(JDK8u121,7u131,6u141),這個機制主要是在每層反序列化過程中都加了一層黑名單處理 ### 原生反序列化防御 1. 不要反序列化不可信的數據 2. 給反序列數據加密簽名,并確保解密在反序列之前 3. 給反序列化接口添加認證授權 4. 反序列化服務只允許監聽在本地或者開啟相應防火墻 5. 升級第三方庫 6. 升級JDK,JEP290
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看