程式碼安全丨第六期:XPath注入漏洞樣例

1、什麼是XPath注入漏洞?

XPath是一種用來在記憶體中導航整個XML樹的語言,它使用路徑表達式來選取XML文檔中的節點或者節點集。

XPath注入是指程式使用外部輸入動態構造用於從XML資料庫檢索數據的XPath表達式,但它沒有過濾或錯誤地過濾該輸入,這使攻擊者可以控制查詢的結構。攻擊者可以控制從XML資料庫中選擇的資訊,並可能使用該功能來控制應用程式流,修改邏輯,檢索未經授權的數據或繞過重要檢查(例如身份驗證)。

 

2、XPath注入漏洞的構成條件有哪些?

①數據是從不可靠的來源(包括但不局限於不可靠用戶的輸入資訊或是不可靠用戶可能更改的文件)進入應用程式的;

②用戶輸入未經過驗證,被查詢語句直接使用並執行。

 

3、XPath注入漏洞會造成哪些後果?

關鍵詞:繞過驗證;讀取重要數據;

①控制應用程式流程(例如繞過身份驗證),從而進行一些未授權的行為;

②攻擊者可以讀取未授權的XML內容。

 

4、如何防範修補XPath注入漏洞?

①使用參數化的XPath查詢(例如使用XQuery)。這有助於確保數據平面和控制平面之間的分離;

②對用戶輸入的數據提交到伺服器上端,在服務端正式處理這批數據之前,對提交數據的合法性進行驗證。檢查提交的數據是否包含特殊字元,對特殊字元進行編碼轉換或替換、刪除敏感字元或字元串,如過濾[ ] 『 「 and or 等全部過濾,像單雙引號這類,可以對這類特殊字元進行編碼轉換或替換;

③通過加密演算法,對於數據敏感資訊和在數據傳輸過程中加密。

 

5、XPath注入漏洞樣例: