e起學丨WEB安全滲透測試基礎知識(十)

各位小夥伴,e小安又來和大家一起學習啦!今天我們繼續學習WEB安全滲透測試的基礎知識第十部分。

3.11 Xpath注入

3.11.1. Xpath定義

XPath注入攻擊是指利用XPath解析器的鬆散輸入和容錯特性,能夠在 URL、表單或其它信息上附帶惡意的XPath 查詢代碼,以獲得權限信息的訪問權並更改這些信息。XPath注入攻擊是針對Web服務應用新的攻擊方法,它允許攻擊者在事先不知道XPath查詢相關知識的情況下,通過XPath查詢得到一個XML文檔的完整內容。

3.11.2. Xpath注入攻擊原理

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

在Web 應用程序的登錄驗證程序中,一般有用戶名(username)和密碼(password) 兩個參數,程序會通過用戶所提交輸入的用戶名和密碼來執行授權操作。若驗證數據存放在XML文件中,其原理是通過查找user表中的用戶名 (username)和密碼(password)的結果來進行授權訪問,

例存在user.xml文件如下:

<users> /<users>

<user> /<user>

<firstname>Ben/<firstname>

<lastname>Elmore/<lastname>

<loginid>abc/<loginid>

<password>test123/<password>

<user> /<user>

<firstname>Shlomy/<firstname>

<lastname>Gantz/<lastname>

<loginid>xyz/<loginid>

<password>123test/<password>

則在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 ”=”]

這個字符串會在邏輯上使查詢一直返回 true 並將一直允許攻擊者訪問系統。攻擊者可以利用 XPath 在應用程序中動態地操作 XML 文檔。攻擊完成登錄可以再通過XPath盲入技術獲取最高權限帳號和其它重要文檔信息。

3.12 邏輯漏洞 / 業務漏洞

3.12.1. 簡介

邏輯漏洞是指由於程序邏輯不嚴導致一些邏輯分支處理錯誤造成的漏洞。 在實際開發中,因為開發者水平不一沒有安全意識,而且業務發展迅速內部測試沒有及時到位,所以常常會出現類似的漏洞。

3.12.2. 安裝邏輯

● 查看能否繞過判定重新安裝

● 查看能否利用安裝文件獲取信息

● 看能否利用更新功能獲取信息

3.12.3. 交易

3.12.3.1. 購買

● 修改支付的價格

● 修改支付的狀態

● 修改購買數量為負數

● 修改金額為負數

● 重放成功的請求

● 併發數據庫鎖處理不當

3.12.3.2. 業務風控

● 刷優惠券

● 套現

3.12.4. 賬戶

3.12.4.1. 註冊

● 覆蓋註冊

● 嘗試重複用戶名

● 註冊遍歷猜解已有賬號

3.12.4.2. 登錄

● 撞庫

● 賬號劫持

● 惡意嘗試帳號密碼鎖死賬戶

3.12.4.3. 找回密碼

● 重置任意用戶密碼

● 密碼重置後新密碼在返回包中

● Token驗證邏輯在前端

3.12.4.4. 修改密碼

● 越權修改密碼

● 修改密碼沒有舊密碼驗證

3.12.5. 驗證碼

● 驗證碼強度不夠

● 驗證碼無時間限制或者失效時間長

● 驗證碼無猜測次數限制

● 驗證碼傳遞特殊的參數或不傳遞參數繞過

● 驗證碼可從返回包中直接獲取

● 驗證碼不刷新或無效

● 驗證碼數量有限

● 驗證碼在數據包中返回

● 修改Cookie繞過

● 修改返回包繞過

● 圖形驗證碼可OCR或使用機器學習識別

● 驗證碼用於手機短信/郵箱轟炸

3.12.6. Session

● Session機制

● Session猜測 / 爆破

● Session偽造

● Session洩漏

● Session Fixation

3.12.7. 越權

● 水平越權

攻擊者可以訪問與他擁有相同權限的用戶的資源

權限類型不變,ID改變

● 垂直越權

低級別攻擊者可以訪問高級別用戶的資源

權限ID不變,類型改變

● 交叉越權

權限ID改變,類型改變

3.12.8. 隨機數安全

● 使用不安全的隨機數發生器

● 使用時間等易猜解的因素作為隨機數種子

3.12.9. 其他

● 用戶/訂單/優惠券等ID生成有規律,可枚舉

● 接口無權限、次數限制

● 加密算法實現誤用

● 執行順序

● 敏感信息洩露

3.13 配置安全

● 弱密碼
位數過低

字符集小

為常用密碼

個人信息相關(手機號 生日 姓名 用戶名)

使用鍵盤模式做密碼

● 敏感文件洩漏

.git

.svn

● 數據庫

Mongo/Redis等數據庫無密碼且沒有限制訪問

● 加密體系

在客戶端存儲私鑰

● 三方庫/軟件

公開漏洞後沒有及時更新

本文內容出於傳遞更多信息之目的,屬於非營利性的轉載。如無意中侵犯了某個媒體或個人的知識產權,請聯繫我們,我們將立即刪除相關內容。其他媒體、網絡或個人從本網下載使用須自負版權等法律責任。


分享到:


相關文章: