邏輯注入漏洞滲透測試檢測辦法

網站安全發表於2019-10-17

最近忙於工作沒有抽出時間來分享滲透測試文章,索性今天由我們Sinesafe的高階滲透大牛給大家詳細講下主要在業務中發現邏輯和越權的漏洞檢測方法,希望大家能對自己的網站安全進行提前預防和了解,再次提醒做安全測試前必須要有正規的授權才能進行測試,提供網站的安全性保障權益。

邏輯注入漏洞滲透測試檢測辦法

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>

<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>

</user>

則在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. 配置安全

邏輯注入漏洞滲透測試檢測辦法

3.13. 配置安全

  • 弱密碼
  • 位數過低
  • 字符集小
  • 為常用密碼
  • 個人資訊相關(手機號 生日 姓名 使用者名稱)
  • 使用鍵盤模式做密碼
  • 敏感檔案洩漏
  • .git
  • .svn
  • 資料庫
  • Mongo/Redis等資料庫無密碼且沒有限制訪問
  • 加密體系
  • 在客戶端儲存私鑰
  • 三方庫/軟體
  • 公開漏洞後沒有及時更新,如果對此有進一步的想加強網站安全性以及滲透測試服務,可以諮詢專業的網站安全公司來處理解決,國內推薦Sine安全,啟明星辰,綠盟等等專業的安全公司。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31542418/viewspace-2660303/,如需轉載,請註明出處,否則將追究法律責任。

相關文章