XXE與XML注入的區別
https://www.cnblogs.com/websecurity-study/p/11348913.html
XXE又分為內部物體和外部物體,我簡單區分為內部物體就是自己構造一個功能體,外部物體就是可以引入外部檔案,
原理
服務器加載外部物體宣告<!ENTITY 物體名稱 SYSTEM "URI">,導致被入侵,如下用PHP語言舉例,
PHP代碼案例:
$xmlfile = file_get_contents("php://input"); // php://input 是個可以訪問請求的原始資料的只讀流, 獲取客戶端輸入的內容
$dom = new DOMDocument(); // 初始化XML決議器
$dom->loadXML($xmlfile); // 加載客戶端輸入的XML內容
$xml = simplexml_import_dom($dom); // 獲取XML檔案節點,如果成功回傳simpleXMLElement物件,如果失敗回傳Flase
$xxe = $xml->xxe; //獲取simpleXMLElement物件中的節點 xxe
$str = "$xxe \n";
echo $str;
防止的XXE,一行代碼解決:
檢測
黑盒檢查:
建議查看 https://www.cnblogs.com/mysticbinary/p/12668547.html
白盒檢測:
查看代碼里面是否使用了LodXML( )函式,
防護
// 在加載檔案代碼上面宣告
libxml_disable_entity_loader(true); //禁止使用外部物體
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59843.html
標籤:PHP
