軟體安全測試之SQL隱碼攻擊

牛耳教育發表於2020-12-09

安全測試之SQL隱碼攻擊

1、安全測試在專案整體流程中所處的位置

一般建議在整合測試前根據產品實現架構及安全需求,完成安全性測試需求分析和測試設計,準備好安全測試用例。在整合版本正式轉測試後,即可進行安全測試。如果產品質量不穩定,前期功能性問題較多,則可適當推後安全測試執行。

2、安全測試在安全風險評估的關係說明

安全風險是指威脅利用漏洞對目標系統造成安全影響的可能性及嚴重程度。其中威脅是指可能對目標系統造成損害的潛在原因,包括物理環境威脅、人為威脅等。漏洞也稱弱點,是應用系統本身存在的,包括系統實現中的缺陷、配置中的漏洞等。外部威脅利用系統的漏洞達到破壞系統安全執行的目的。

3、注意事項

安全測試的執行,對於被測系統,或多或少都會存在一些影響(比如效能、垃圾資料),只能在測試環境中進行;不允許在正式環境執行,避免系統存在漏洞導致丟失資料和資料庫損壞。

本規範最主要目的是為了發現安全漏洞,至於發現一個漏洞以後更深一步的滲透測試在這裡不會涉及。例如針對暴力破解測試,我們只給出驗證存在暴力破解漏洞的可能,但不會提供暴力破解的方法。

本文件中所有提及的測試工具的使用,請遵循公司相關規定。

如果是內部試驗環境進行測試,可以考慮去除一些防護措施或裝置(如防火牆),這樣能保證發現問題的全面性。

本文件根據最嚴格的方式對目標進行測試,如果專案系統對安全的要求不高且有自身的安全策略規定時,可以視情況對測試項進行部分測試。例如密碼策略測試項中,測試人員可以根據測試目標的密碼位數要求進行測試,而不需要完全依照測試項裡面規定的位數進行測試。Web安全測試方法

安全測試之SQL隱碼攻擊

4、安全功能驗證

功能驗證是採用軟體測試當中的黑盒測試方法,對涉及安全的軟體功能,如:使用者管理模組,許可權管理模組,加密系統,認證系統等進行測試,主要驗證上述功能是否有效,不存在安全漏洞,具體方法可使用黑盒測試方法。

4.1、漏洞掃描

漏洞掃描是指基於漏洞資料庫,通過掃描等手段對指定的遠端或者本地計算機系統的安全脆弱性進行檢測,發現可利用的漏洞的一種安全檢測(滲透攻擊)行為。

漏洞掃描技術是一類重要的網路安全技術。它和防火牆、入侵檢測系統互相配合,能夠有效提高網路的安全性。通過對網路的掃描,網路管理員能瞭解網路的安全設定和執行的應用服務,及時發現安全漏洞,客觀評估網路風險等級。網路管理員能根據掃描的結果更正網路安全漏洞和系統中的錯誤設定,在黑客攻擊前進行防範。如果說防火牆和網路監視系統是被動的防禦手段,那麼安全掃描就是一種主動的防範措施,能有效避免黑客攻擊行為,做到防患於未然。

4.2、模擬攻擊實驗

模擬攻擊測試是一組特殊的黑盒測試案例,以模擬攻擊來驗證軟體或資訊系統的安全防護能力,可使用冒充、重演、訊息篡改、服務拒絕等方法來實現。

4.3、偵聽技術

在資料通訊或資料互動過程,對資料進行擷取分析的過程。目前最為流行的是網路資料包的捕獲技術。

5、SQL隱碼攻擊案例分析

首先輸入網址:http://demo.testfire.net/如下圖:

安全測試之SQL隱碼攻擊

這個網址的正確使用者名稱是:jsmith,密碼:Demo1234

當前我們在使用者名稱中輸入:a’OR1=1–+

密碼只需要隨意輸入,

然後單擊【Login】,神奇的一幕出現了,居然登入成功了。為什麼出現了這個問題呢?就是因為網站在登入程式碼編寫的時候沒有使用預編譯物件。

6、那什麼是SQL隱碼攻擊安全問題呢?

SQL隱碼攻擊是針對一種資料庫而言的,而不是針對網頁語言。在任何使用了資料庫查詢環境下都可能存在。常見的資料庫包括:MSSQL、Oracle、Informix、Db2、Access、Sybase等。

所謂SQL隱碼攻擊,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。

SQL隱碼攻擊受到的威脅,(但不限於)以下幾種情況:資料洩漏、修改現有資料、插入新資料、任意的檔案系統訪問、任意的網路訪問、系統洩漏。

針對不同的資料庫系統使用的一些函式會有所不同,不過從測試是否存在SQL隱碼攻擊的角度考慮,只需要進行幾個最基本的判斷語句就可以了。

相關文章