
詳解軟體測驗中的安全測驗
- 一、💿安全測驗概念
- 1、安全測驗概述
- 2、安全測驗與軟體生命周期的關系
- 3、常規測驗與安全測驗的不同
- (1)測驗目標不同
- (2)假設條件不同
- (3)思考域不同
- (4)問題發現模式不同
- 二、🔍安全測驗基本原則
- 1、培養正確的思維方式
- 2、盡早測驗和經常測驗
- 3、選擇正確的測驗工具
- 4、盡可能測驗源代碼
- 5、測驗結果檔案化
- 三、🔦常見安全漏洞
- 1、SQL注入
- (1)定義
- (2)案例
- (3)如何防范SQL注入
- 2、XSS跨站腳本攻擊
- (1)XSS命名
- (2)定義
- (3)xss攻擊程序
- (4)如何防御
- 3、CSRF跨站請求偽造攻擊
- (1)定義
- (2)攻擊程序
- (3)如何攻擊
- (4)CSRF和XSS的不同之處
- (5)如何防范CSRF
- (6)Referer
- 四、🩸滲透測驗
- 1、滲透測驗的定義
- 2、滲透測驗的特點
- 3、滲透測驗流程主要步驟
- 4、滲透測驗流程
- (1)明確目標
- (2)收集資訊
- (3)掃描漏洞
- (4)驗證漏洞
- (5)分析資訊
- (6)滲透攻擊
- (7)整理資訊
- (8)撰寫測驗報告
- 五、🛠?常見安全測驗工具
- 1、Web漏洞掃描工具-AppScan
- (1)定義
- (2)AppScan的掃描程序
- 2、埠掃描工具-Nmap
- (1)定義
- (2)Nmap的具體功能
- 3、抓包工具-Fiddler
- (1)定義
- (2)Fiddler的功能
- 4、Web滲透測驗工具-Metasploit
- (1)定義
- (2)Metasploit的具體功能
- (3)Metasploit的作用
- 六、🔚結束語
前面我們講過黑白盒測驗和性能測驗,但是呢,對于一個軟體來說,安全測驗也是非常重要的,就像封面所示,內容很誘人,一旦用戶點擊進去,就很容易讓其執行非本意的操作,試想下結果……不堪設想,因此,做好軟體安全測驗,共同營造一個良好的軟體環境是至關重要的,
在下面的這篇文章中,將講解關于軟體測驗中的安全測驗,一起來學習吧~
一、💿安全測驗概念
1、安全測驗概述
安全測驗是在IT軟體產品的生命周期中,特別是產品開發基本完成到發布階段,對產品進行檢驗以驗證產品符合安全需求定義和產品質量標準的程序,
2、安全測驗與軟體生命周期的關系
安全測驗貫穿于軟體的整個生命周期,如下圖所示:

3、常規測驗與安全測驗的不同
(1)測驗目標不同
普通測驗以發現 Bug 為目標;
安全測驗以發現安全隱患為目標,

(2)假設條件不同
普通測驗假設導致問題的資料是用戶不小心造成的,介面一般只考慮用戶界面;
安全測驗假設導致問題的資料是攻擊者處心積慮構造的,需要考慮所有可能的攻擊途徑,

(3)思考域不同
普通測驗以系統所具有的功能為思考域;
安全測驗的思考域不但包括系統的功能,還有系統的機制、外部環境、應用與資料自身安全風險與安全屬性等,

(4)問題發現模式不同
普通測驗以違反功能定義為判斷依據;
安全測驗以違反權限與能力的約束為判斷依據,

二、🔍安全測驗基本原則
1、培養正確的思維方式
安全測驗人員要有創造性思維,創造性思維能夠幫助我們站在攻擊者角度思考各種無法預期的情況,同時能夠幫助我們猜測開發人員是如何開發的,如何繞程序式防護邏輯,以某種不安全的行為模式導致程式失效,

2、盡早測驗和經常測驗
安全性缺陷和普通 Bug 沒什么區別,越早發現修復成本越低,要做到這一點,最開始的就是在軟體開發前期對開發和測驗團隊進行常見安全問題的培訓,教會他們學會如何檢測并修復安全缺陷,
雖然新興的第三方庫、工具以及編程語言能夠幫助開發人員設計出更安全的程式,但是新的威脅不斷出現,開發人員最好能夠意識到新產生的安全漏洞對正在開發的軟體的影響,測驗人員要轉變思維方式,從攻擊者角度的各個細節測驗應用程式,使軟體更加安全,

3、選擇正確的測驗工具
很多情況下安全測驗需要模擬黑客的行為對軟體系統發起攻擊,以確保軟體系統具備穩固的防御能力,模擬黑客行為就要求安全測驗人員擅長使用各種工具,如漏洞掃描工具、模擬資料流行為的前后臺相關工具、資料包抓取工具等,
現在市面上提供了很多安全掃描器或者應用防火墻工具可以自動完成許多日常安全任務,但是這些工具并不是萬能的,作為測驗人員,我們要準確了解這些工具能做什么,不能做什么是非常重要的,切不可過分夸大或者不當使用測驗工具,

4、盡可能測驗源代碼
使用源代碼掃描工具對軟體進行代碼掃描,一方面可以找出潛在的風險,從內對軟體進行檢測,提高代碼的安全性;另一方面也可以進一步提高代碼的質量,黑盒的滲透測驗和白盒的源代碼掃描內外結合,可以使軟體的安全性得到極大程度的提高,

5、測驗結果檔案化
測驗總結的時候,明智且有效的做法是將測驗行動和結果清晰準確地記錄在檔案中,產生一份測驗報告,該報告最好包括漏洞型別、問題引起的安全威脅及嚴重程度、用于發現問題的測驗技術、漏洞的修復、漏洞風險等,
一份好的測驗報告應該幫助開發人員準確定位軟體安全漏洞,從而有效進行漏洞修補,使軟體更安全可靠,

三、🔦常見安全漏洞
1、SQL注入
(1)定義
所謂 SQL 注入就是把 SQL 命令人為的輸入 URL 、表格域、或者其他動態生成的 SQL 查詢陳述句的輸入引數中,最終達到欺騙服務器執行惡意的 SQL 命令,
(2)案例
案例1:
str SQL=“select * from users where (name=‘“+username+”’) and (pw=‘“+password+”’); ”
str SQL=“select * from users where (name=‘1’ or ‘1’=‘1’) and
(pw=‘1’ or ‘1’=‘1’); ”
案例2:
str SQL=“select * from users where (name=‘張三’;DROP TABLE users;--)”
Select *from users where name=‘張三’;
DROP TABLE users
(3)如何防范SQL注入
SQL 注入是風險非常高的安全漏洞,我們可以在應用程式中對用戶輸入的資料進行合法性檢測,包括用戶輸入資料的型別和長度,同時,對 SQL 陳述句中的特殊字符(如單引號、雙引號、分號等)進行過濾處理,
由于 SQL 注入攻擊的 Web 應用程式處于應用層,因此大多防火墻不會進行攔截,除了完善應用代碼外,還可以在資料庫服務器端進行防御,對資料庫服務器進行權限設定,降低 Web 程式連接資料庫的權限,撤銷不必要的公共許可,使用強大的加密技術保護敏感資料并對被讀取走的敏感資料進行審查跟蹤等,
2、XSS跨站腳本攻擊
(1)XSS命名
XSS 全拼為 Cross Site Scripting ,意為跨站腳本,其縮寫原本為 CSS ,但這與 HTML 中的層疊樣式表(Cascading Style Sheets)縮寫重名了,為了區分就將跨站腳本改為了 XSS ,
(2)定義
XSS (Cross Site Scripting)是 Web 應用系統最常見的安全漏洞之一,它主要源于 Web 應用程式對用戶輸入檢查和過濾不足,攻擊者可以利用 XSS 漏洞把惡意代碼注入到網站中,當有用戶瀏覽該網站時,這些惡意代碼就會被執行,從而達到攻擊的目的,
(3)xss攻擊程序
先用一張圖來演示XSS的攻擊程序:

XSS攻擊程序有以下4個步驟:
- 攻擊者通過郵件或其他方式誘使用戶點擊包含惡意代碼的鏈接,例如攻擊者通過E-mail向用戶發送一個包含惡意代碼的網站
home.com, - 用戶點擊鏈接后,瀏覽器會在用戶毫不知情的情況下執行鏈接中包含的惡意代碼,
- 將用戶與
home.com互動的cookie和session等資訊發送給攻擊者, - 攻擊者拿到這些資料之后,就會偽裝成用戶與真正的網站進行會話,從事非法活動,
(4)如何防御
對于 XSS 漏洞,最核心的防御措施就是對用戶的輸入進行檢查和過濾,包括 URL 、查詢關鍵字、 HTTP 頭、 POST 資料等,僅接受指定長度范圍、格式適當、符合預期的內容,對其他不符合預期的內容一律進行過濾,
除此之外,當向 HTML 標簽或屬性中插入不可信資料時,要對這些資料進行相應的編碼處理,將重要的 cookie 標記為 http only ,這樣 javascript 腳本就不能訪問這個 cookie ,避免了攻擊者利用 javascript 腳本獲取 cookie ,
3、CSRF跨站請求偽造攻擊
(1)定義
CSRF (Cross-Site Request Forgery)為跨站請求偽造,它是一種針對 Web 應用程式的攻擊方式,攻擊者利用 CSRF 漏洞偽裝成受信任用戶的請求,來訪問受攻擊的網站,
(2)攻擊程序
下面用一張圖來演示 CSRF 的攻擊程序:

(3)如何攻擊
在 CSRF 攻擊中,當用戶訪問一個信任網站時,在沒有退出會話的情況下,攻擊者誘使用戶點擊惡意網站,惡意網站會回傳攻擊代碼,同時要求訪問信任網站,這樣用戶就在不知情的情況下將惡意網站的代碼發送到了信任網站,
(4)CSRF和XSS的不同之處
XSS 是盜取用戶資訊偽裝成用戶執行惡意活動,而 CSRF 則是通過用戶向網站發起攻擊,
如果將 XSS 攻擊程序比喻為小偷偷取了用戶的身份證去辦理非法業務,則 CSRF 攻擊則是騙子“劫持”了用戶,讓用戶自己去辦理非法業務,以達到自己的目的,
(5)如何防范CSRF
CSRF 漏洞產生的原因主要是對用戶請求缺少更安全的驗證機制,防范 CSRF 漏洞的主要思路就是加強后臺對用戶及用戶請求的驗證,而不能僅限于 cookie 的識別,
例如,使用 http 請求頭中的 Referer 對網站來源進行身份校驗,添加基于當前用戶身份的 token 驗證,在請求資料提交前,使用驗證碼填寫方式驗證用戶來源,防止未授權的惡意操作,
(6)Referer
HTTP Referer 是請求頭的一部分,代表網頁的來源(上一頁的地址),當瀏覽器向 Web 服務器發送請求的時候,一般會帶上 Referer ,告訴服務器此次訪問是從哪個頁面鏈接過來的,服務器由此可以獲得一些資訊用于處理,
四、🩸滲透測驗
1、滲透測驗的定義
滲透測驗是利用模擬黑客攻擊的方式,評估計算機網路系統安全性能的一種方法,這個程序是站在攻擊者角度對系統的任何弱點、技術缺陷或漏洞的主動分析,并且有條件地主動利用安全漏洞,
2、滲透測驗的特點
滲透測驗是一個漸進的并且逐步深入的程序,
滲透測驗是選擇不影響業務系統正常運行的攻擊方法進行的測驗,
3、滲透測驗流程主要步驟
滲透測驗的主要步驟如下圖所示:

4、滲透測驗流程
(1)明確目標
- 確定測驗需求,
- 確定客戶要求滲透測驗的范圍,
- 確定滲透測驗規則,
(2)收集資訊
在資訊收集階段要盡量收集關于專案軟體的各種資訊,例如,對于一個 Web 應用程式,要收集腳本型別、服務器型別、資料庫型別以及專案所用到的框架、開源軟體等,資訊收集對于滲透測驗來說非常重要,只有掌握目標程式足夠多的資訊,才能更好地進行漏洞檢測,
資訊收集的方式可分為兩種:
主動收集: 通過直接訪問、掃描網站等方式收集想要的資訊,這種方式可以收集的資訊比較多,但是訪問者的操作行為會被目標主機記錄,
被動收集: 利用第三方服務對目標進行了解,如上網搜索相關資訊,這種方式獲取的資訊相對較少且不夠直接,但目標主機不會發現測驗人員的行為,
(3)掃描漏洞
在這一階段,綜合分析收集到的資訊,借助掃描工具對目標程式進行掃描,查找存在的安全漏洞,
(4)驗證漏洞
在掃描漏洞階段,測驗人員會得到很多關于目標程式的安全漏洞,但這些漏洞有誤報,需要測驗人員結合實際情況,搭建模擬測驗環境對這些安全漏洞進行驗證,被確認的安全漏洞才能被利用執行攻擊,
(5)分析資訊
經過驗證的安全漏洞就可以被利用起來向目標程式發起攻擊,但是不同的安全漏洞,攻擊機制并不相同,針對不同的安全漏洞需要進一步分析,包括安全漏洞原理、可利用的工具、目標程式檢測機制、攻擊是否可以繞過防火墻等,制定一個詳細精密的攻擊計劃,這樣才能保證測驗順利執行,
(6)滲透攻擊
滲透攻擊就是對目標程式發起真正的攻擊,達到測驗目的,如獲取用戶帳號密碼、截取目標程式傳輸的資料、控制目標主機等,一般滲透測驗是一次性測驗,攻擊完成之后要執行清理作業,洗掉系統日志、程式日志等,擦除進入系統的痕跡,
(7)整理資訊
滲透攻擊完成之后,整理攻擊所獲得的資訊,為后面撰寫測驗報告提供依據,
(8)撰寫測驗報告
測驗完成之后要撰寫測驗報告,闡述專案安全測驗目標、資訊收集方式、漏洞掃描工具以及漏洞情況、攻擊計劃、實際攻擊結果、測驗程序中遇到的問題等,此外,還要對目標程式存在的漏洞進行分析,提供安全有效的解決辦法,
五、🛠?常見安全測驗工具
1、Web漏洞掃描工具-AppScan
(1)定義
AppScan 是 IBM 公司出的一款 Web 應用安全測驗工具,它采用黑盒測驗方式,可以掃描常見的 web 應用安全漏洞,
(2)AppScan的掃描程序
AppScan 的掃描程序為:探測、測驗、掃描,
在探測階段, AppScan 通過發送請求對站內的鏈接、表單等進行訪問,根據回應資訊檢測目標程式可能存在的安全隱患,從而確定安全漏洞范圍,
在測驗階段, AppScan 對潛在的安全漏洞發起攻擊, AppScan 有一個內置的測驗策略庫,測驗策略庫可以針對相應的安全隱患檢測規則生成對應的測驗輸入, AppScan 就使用生成的測驗輸入對安全漏洞發起攻擊,
在掃描階段, AppScan 會檢測目標程式對攻擊的回應結果,并根據結果來確定探測到的安全漏洞是否是一個真正的安全漏洞,如果是一個真正的安全漏洞則根據其危險程度確定危險級別,為開發人員修復缺陷提供依據,
2、埠掃描工具-Nmap
(1)定義
Nmap 是一個網路連接埠掃描工具,用來掃描網上計算機開放的網路連接埠,確定服務運行的埠,并且推斷計算機運行的作業系統,它是網路管理員用以評估網路系統安全必備工具之一,
(2)Nmap的具體功能
Nmap具體功能如下:
- 主機掃描
- 埠狀態掃描
- 應用程式版本探測
- 作業系統探測
- 防火墻/IDS逃避和欺騙
- 支持測驗物件互動腳本
3、抓包工具-Fiddler
(1)定義
Fiddler 是一個 http 協議除錯代理工具,它以代理 Web 服務器形式作業,幫助用戶記錄計算機和 Internet 之間傳遞的所有 HTTP(HTTPS) 流量,
如圖所示:

(2)Fiddler的功能
Fiddler 可以捕獲來自本地運行程式的所有流量,從而記錄服務器到服務器、設備到服務器之間的流量,此外, Fiddler 還支持各種過濾器,過濾出用戶想要的流量資料,節省大量時間和精力,
相比于其他抓包工具, Fiddler 小巧易用,且功能完善,它支持將捕獲的流量資料存檔,以供后續分析使用,
4、Web滲透測驗工具-Metasploit
(1)定義
Metasploit 是一個滲透測驗平臺,能夠查找、驗證漏洞,并利用漏洞進行滲透攻擊,它是一個開源專案,提供基礎架構、內容和工具來執行滲透測驗和廣泛的安全審計,
(2)Metasploit的具體功能
對于滲透攻擊, Metasploit 主要提供了以下功能模塊:
滲透模塊(exploit): 運行時會利用目標的安全漏洞進行攻擊,
攻擊載荷模塊(payload): 在成功對目標完成一次滲透之后,測驗程式開始在目標計算機上運行,它能幫助用戶在目標系統上獲得需要的訪問和行動權限,
輔助模塊(auxiliary): 包含了一系列的輔助支持模塊,包括掃描模塊、漏洞發掘模塊、網路協議欺騙模塊,
編碼器模塊(encoder): 編碼器模塊通常用來對我們的攻擊模塊進行代碼混淆,逃過目標安全保護機制的檢測,如殺毒軟體和防火墻等,
Meterpreter: 使用記憶體技術的攻擊載荷,可以注入到行程之中,它提供了各種可以在目標上執行的功能,
(3)Metasploit的作用
Metasploit 是一個多用戶協作工具,團隊成員可以共享主機資料,查看收集的證據以及創建主機備注以共享有關特定目標的知識,最終, Metasploit 可幫助用戶確定利用目標的最薄弱點,并證明存在漏洞或安全問題,
六、🔚結束語
對于軟體測驗來說,除了黑白盒測驗、性能測驗以外,安全測驗也尤為重要,一旦網頁有漏洞,攻擊者很容易就讓受攻擊者執行非本意的操作,這種場面并不是誰都想看到的,因此,對于軟體來說,要做好安全測驗🙋
關于安全測驗的內容就講到這里啦!如有不理解或文章有誤,歡迎評論區留言或私信我交流!
同時,有需要了解軟體測驗相關的其他內容,可到『軟體測驗』欄目進行查看學習~
- 關注公眾號 星期一研究室 ,第一時間關注學習干貨,更多有趣的專欄待你解鎖~
- 如果這篇文章對你有用,記得 一鍵三連 再走哦~
- 我們下期見!🥂🥂🥂
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287108.html
標籤:其他
上一篇:「死磕Java并發編程」說說Java Atomic 原子類的實作原理
下一篇:vim進階
