應用安全系列之十七 xQuery注入

2021-10-21 20:20:07 字數 2206 閱讀 1854

本系列文章主旨在於介紹一些漏洞型別產生的基本原理,探索最基礎的解決問題的措施。

關於xquery標準的詳細資訊可以參考 這裡只做簡單介紹。

xquery語言是用於查詢儲存在xml資料庫的資料的語言,它可以看做是xpath語言的乙個超集。主要用到的xquery的功能包括:

還是用員工資訊的例子,employee.xml的內容如下:

<?xml version="1.0" encoding="utf-8"?>

adeli

adel

test@123

admin

taylor

kuang

taylork

taylork@2021

user

假設組裝xquery的查詢的**如下:

string query="for $employee in doc(employee.xml)/employees/employee[username='" +username +"'] return $employee";
查詢「ade」的xquery查詢如下:doc("employee.xml")/employees/employee[username="ade"],返回的結果如下:

taylor

kuang

taylork

taylork@2021

user

和sql注入類似,如果使用者對於username輸入的內容修改為 " or ""=",就會導致查詢語句修改為:doc("employee.xml")/employees/employee[username="" or ""=""],就會查詢獲取所有使用者的資訊。或者簡單一點使用者直接輸入 *,也可以達到一樣的效果。

由上例可知,xquery注入主要是在構建xquery查詢的時候,接收了不可信的資料而且沒有做輸入驗證,並且用於動態構建查詢語句造成的。根據xquery查詢結果使用的不同環境造成的影響也不同,主要有:

洩露系統內部的資料的資訊

如果用於鑑權,可能會出現越權

也可能會導致xml資料庫資料被篡改, 可以設定符合條件的資料被update或者delete

執行惡意** 

危害這麼嚴重改如何預防呢?

如果在設計上避免使用不可信資料構建xquery是最好的。

使用最小許可權原則,以防資料被篡改。

輸入驗證,嚴格的輸入驗證對於預防注入問題來說,總是必要的。

xquery的一些擴充套件模組可以用於執行命令,建議盡量避免啟用這些擴充套件模組。

使用引數化查詢,和sql的引數化查詢preparestatement類似,示例**如下:

documentbuilde***ctory docfac = documentbuilde***ctory.newinstance();

docfac.setnamespaceaware(true);

documentbuilder builder = docfac.newdocumentbuilder();

document doc = builder.parse("employee.xml");

string queryname = request.getparameter("username");

xquery query = new xqueryfactory().createxquery(new file("queryemployee.xq"));

map queryfieldvalue = new hashmap();

queryfieldvalue.put("username", queryname);

nodelist nodes = query.execute(doc, null, queryfieldvalue).tonodes();

有時做輸入驗證會失效,例如, 人名字(o'neal)中可能會存在單引號,這是需要轉義特殊字元,需要轉義的字元和轉義方法如下:

說明&&

有時會被用於引用預定義的實體''

字串開始結束標誌""

字串開始結束標誌

參考:

Flash應用安全系列 5

qq郵箱對於跨域請求過濾不嚴,可能導致使用者郵件被持久劫持 我們知道,在瀏覽器的安全模型中,同源策略 sop same origin policy 是最為基礎的一環,它決定了web上的哪些資源是可以被指令碼訪問的,哪些資源則是被拒絕的。撇開html5中的 access control allow o...

應用安全系列之一 SQL注入

本系列文章主旨在於介紹一些漏洞型別產生的基本原理,探索最基礎的解決問題的措施,不排除有些語言或者系統提供的安全的api可以更好地更直接地解決問題,也不排除可以嚴格地輸入驗證來解決。根據it研究與顧問諮詢公司gartner統計資料顯示,75 的黑客攻擊發生在應用層。而由nist的統計顯示92 的漏洞屬...

iOS安全系列彙總

知乎專欄 書籍推薦 工具篇構建和部署 your first tweak 總結hack必備的命令與工具 後台daemon非法竊取使用者itunesstore資訊 阻止gdb依附 鍵盤快取與安全鍵盤 使用keychain dumper匯出keychain資料 二進位制和資源檔案自檢 ios7的動態庫注入...