安全測試之XPath注入攻擊

2021-07-09 16:01:22 字數 1740 閱讀 4761

一、xpath注入攻擊的概念

xpath注入攻擊本質上和sql注入攻擊是類似的,都是輸入一些惡意的查詢等**字串,從而對**進行攻擊。

xpath注入攻擊,是指利用xpath 解析器的鬆散輸入和容錯特性,能夠在 url、表單或其它資訊上附帶惡意的xpath 查詢**,以獲得許可權資訊的訪問權並更改這些資訊。xpath注入攻擊是針對web服務應用新的攻擊方法,它允許攻擊者在事先不知道xpath查詢相關知 識的情況下,通過xpath查詢得到乙個xml文件的完整內容。

二、xpath注入攻擊的例項

xpath注入攻擊主要是通過構建特殊的輸入,這些輸入往往是xpath語法中的一些組合,這些輸入將作為引數傳入web 應用程式,通過執行xpath查詢而執行入侵者想要的操作,下面以登入驗證中的模組為例,說明 xpath注入攻擊的實現原理。

在web 應用程式的登入驗證程式中,一般有使用者名稱(username)和密碼(password) 兩個引數,程式會通過使用者所提交輸入的使用者名稱和密碼來執行授權操作。若驗證資料存放在xml檔案中,其原理是通過查詢user表中的使用者名稱 (username)和密碼(password)的結果來進行授權訪問,

例存在user.xml檔案如下:

ben

elmore

abctest123

shlomy

gantz

xyz123test

則在xpath中其典型的查詢語句如下:

//users/user[loginid/text()='xyz'and password/text()='123test']
但是,可以採用如下的方法實施注入攻擊,繞過身份驗證。如果用 戶傳入乙個 login 和 password,例如 loginid = 『xyz』 和 password = 『123test』,則該查詢語句將返回 true。但如果使用者傳入類似 』 or 1=1 or 」=』 的值,那麼該查詢語句也會得到 true 返回值,因為 xpath 查詢語句最終會變成如下**:

//users/user[loginid/text()=''or 1=1 or ''='' and password/text()='' or 1=1 or ''='']
三、xpath注入攻擊的防範方法

(1)資料提交到伺服器上端,在服務端正式處理這批資料之前,對提交資料的合法性進行驗證。

(2)檢查提交的資料是否包含特殊字元,對特殊字元進行編碼轉換或替換、刪除敏感字元或字串。

(3)對於系統出現的錯誤資訊,以ie錯誤編碼資訊替換,遮蔽系統本身的出錯資訊。

(4)引數化xpath查詢,將需要構建的xpath查詢表示式,以變數的形式表示,變數不是可以執行的指令碼。如下**可以通過建立儲存查詢的外部檔案使查詢引數化:

declare variable $loginid as xs:string external;

declare variable $password as xs:string external;

//users/user[@loginid=$loginid and@password= $password]

(5)通過md5、ssl等加密演算法,對於資料敏感資訊和在資料傳輸過程中加密,即使某些非法使用者通過非法手法獲取資料報,看到的也是加密後的資訊。

[ 注:資訊提取自**: xpath注入攻擊及其防禦技術研究(陸培軍 南通大學) ]

安全測試之檔案上傳攻擊

檔案上傳類應用的範圍還是很廣泛的,利用這個應用同樣也可以進行攻擊。檔案上傳的方式有多種,可以通過ftp也可以通過http等,對比起來,ftp的上傳需要管理大量的使用者帳號,並且無法進行ssl編碼,安全上稍遜一籌,並且無法對不同型別的檔案進行批量分類上傳處理,同時在對上傳檔案大小 型別上無法很好的控制...

注入攻擊之sql注入

在1998年,一位名為rfp的黑客發表了一篇題為 nt web technology vulnerabilities 的文章 注入攻擊的兩個條件 1 使用者能夠克制資料的輸入 在這裡,使用者能夠控制變數 2 原本要執行的 憑藉了使用者的輸入 一般輸入乙個 單引號就能引起執行查詢語句的語法錯誤,有些伺...

注入攻擊之CRLF

crlf實際上是兩個字元 r 十六進製制編碼 0x0d n 0x0a 在日誌檔案中可偽造日誌記錄 def log failed login username log open access.log a log.write user login failed for s n username log....