1 什么是安全測驗
安全測驗是一種軟體測驗,可發現軟體應用程式中的漏洞,威脅,風險并防止來自入侵者的惡意攻擊, 安全測驗的目的是確定軟體系統的所有可能漏洞和弱點,這些漏洞和弱點可能導致資訊,收入損失,組織雇員或外部人員的聲譽受損,
安全測驗的目標是識別系統中的威脅并衡量其潛在漏洞,以使系統不會停止運行或被利用, 它還有助于檢測系統中所有可能的安全風險,并幫助開發人員通過編碼解決這些問題,
1.1 安全測驗舉措
- 保密 - 它可以防止向非預期接收者披露資訊,
- 完整性 - 它允許從發送者向預期接收者傳輸準確和正確的所需資訊,
- 身份驗證 - 驗證并確認用戶的身份,
- 授權 - 它指定對用戶和資源的訪問權限,
- 可用性 - 確保準備就緒的資訊,
- 不可否認性 - 它確保發送者或接收者不會拒絕發送或接收訊息,
1.2 常見的安全漏洞
1.2.1SQL注入攻擊
名詞解釋:SQL注入攻擊(SQL Injection),簡稱注入攻擊、SQL注入,被廣泛用于非法獲取網站控制權,是發生在應用程式的資料庫層上的安全漏洞,由于在設計程式時,忽略了對輸入字串中夾帶的SQL指令的檢查,被資料庫誤認為是正常的SQL指令而運行,從而使資料庫受到攻擊,可能導致資料被竊取、更改、洗掉,甚至執行系統命令等,以及進一步導致網站被嵌入惡意代碼、被植入后門程式等危害,
1.2.2 檔案上傳
名詞決議:檔案上傳漏洞是指由于程式代碼未對用戶提交的檔案進行嚴格的分析和檢查,導致攻擊者可以上傳可執行的代碼檔案,從而獲取Web應用的控制權限(Getshell),
1.2.3 權限漏洞
名詞決議:訪問控制是指用戶對系統所有訪問的權限控制,通常包括水平權限和垂直權限,訪問控制問題是所有業務系統都可能產生的邏輯類漏洞,很難通過日常的安全工具掃描或防護,通常會造成大量用戶資料泄露事件,
- 水平越權:同一權限(角色)級別的用戶之間所產生的問題,如A用戶可以未授權訪問B用戶的資料等,
- 垂直越權:不同權限(角色)級別的用戶之間所產生的問題,如普通用戶可未授權進行管理操作,未登錄用戶可以訪問需授權應用等,
1.2.4 暴力破解
名詞決議:暴力破解是指攻擊者通過遍歷或字典的方式,向目標發起大量請求,通過判斷回傳資料包的特征來找出正確的驗證資訊,從而繞過驗證機制,隨著互聯網眾多網站的資料庫被泄露,攻擊者選擇的樣本可以更具針對性,暴力破解的成功率也在不斷上升,
1.2.5 拒絕服務攻擊
名詞決議:拒絕服務攻擊(DoS,Denial of Service)是利用合理的請求造成資源過載,從而導致服務不可用的一種攻擊方式,分為針對Web應用層的攻擊、客戶端/APP的攻擊,
1.2.6 敏感資訊泄露
名詞決議:敏感資訊泄露是指包括用戶資訊、企業員工資訊、內部資料等不應當被外部訪問到的資料通過網站、介面、外部存盤等途徑被未授權泄露到外部的漏洞,資訊泄露漏洞會導致大量用戶或企業資訊被惡意利用,進行詐騙、賬戶竊取等,給用戶和企業帶來嚴重的不良影響,并且資訊一旦資訊被泄露,影響會很難消除,
1.2.7 業務邏輯漏洞
名詞決議:業務邏輯漏洞是指由于業務在設計時考慮不全所產生的流程或邏輯上的漏洞,如用戶找回密碼缺陷,攻擊者可重置任意用戶密碼;如短信漏洞,攻擊者可無限制利用介面發送短信,惡意消耗企業短信資費,騷擾用戶等,由于業務邏輯漏洞跟業務問題貼合緊密,常規的安全設備無法有效檢測出,多數需要人工根據業務場景及特點進行分析檢測,
1.2.8 跨站腳本攻擊(XSS)
名詞決議:跨站腳本攻擊(XSS, Cross Site Script)通常指黑客通過“HTML注入”篡改了網頁,插入惡意腳本,從而在用戶瀏覽網頁時,控制用戶瀏覽器的一種攻擊,XSS漏洞可被用于用戶身份竊取(特別是管理員)、行為劫持、掛馬、蠕蟲、釣魚等,XSS是目前客戶端Web安全中最重要的漏洞,
XSS按效果的不同可以分為以下3種,
- 反射型XSS攻擊:頁面僅把用戶輸入直接回顯在頁面或原始碼中,需要誘使用戶點擊才能成功,
- 存盤型XSS攻擊:XSS攻擊代碼會被存盤在服務器中,由于用戶可能會主動瀏覽被攻擊頁面,此種方法危害較大,
- DOM型XSS攻擊:通過修改頁面的DOM節點形成XSS,嚴格來講也可劃為反射型XSS,
1.2.9 跨站點請求偽造(CSRF)
名詞決議:跨站點請求偽造(CSRF, Cross Site Request Forgery),由于重要操作的所有引數都是可以被攻擊者猜到,攻擊者即可偽造請求,利用用戶身份完成攻擊操作,如發布文章、購買商品、轉賬、修改資料甚至密碼等,
2 為什么要做安全測驗
提到安全,我們一個產品一個網站最需要加強安全防范的就是資料庫,那么如果缺少了安全性測驗,在高手的sql盲注下,你的資料庫就會逐步展現在黑客的面前,無論是資料庫型別、表結構、欄位名或是詳細的用戶資訊,都有無數種手段可以讓人“一覽無余”,

2.1 權限
網站一般都規定了什么樣的用戶可以做什么事,比如版主可以修改所有人的帖子,而你普通用戶只能編輯自己的帖子,同樣游客只能看大家的帖子,這就是簡單的權限,如果少了安全性保證,那么就容易有人跳出權限做他不該做的事情,
2.2 修改提交資料資訊
比如一個支付商城,如果通過抓包抓到的提交價格,經過修改再發包可以通過,簡單來說就是本來100塊錢買的東西,抓包修改為1塊就能成功購買,這就成為了一個巨大的隱患,
2.3 類似跨站腳本的安全隱患
- HTML注入,所有HTML注入范例只是注入一個JavaScript彈出式的警告框:alert(1),
- 做壞事,如果您覺得警告框還不夠刺激,當受害者點擊了一個被注入了HTML代碼的頁面鏈接時攻擊者能作的各種的惡意事情,
- 誘捕受害者,可能會redirect到另一個釣魚的其他網站之類的,使其蒙受損失,
2.4 敏感詞的校驗
比如一個政府部門的一個網站或者app,里邊可以輸入一些有違目前制度以及一些領匯入的詞匯的問題,這樣的影響是非常大的,所以我們要避免這些影響的發生,
3 如何來做安全測驗
安全測驗是在IT軟體產品的生命周期中,特別是產品開發基本完成到發布階段,對產品進行檢驗以驗證產品符合安全需求定義和產品質量標準的程序,可以說,安全測驗貫穿于軟體的整個生命周期,下面通過一張圖描述軟體生命周期各個階段的安全測驗,如下圖所示,

上圖中的風險分析、靜態分析、滲透測驗都屬于安全測驗的范疇,與普通測驗相比,安全測驗需要轉換視角,改變測驗中模擬的物件,下面從以下維度比較常規測驗與安全測驗的不同,
3.1 測驗目標不同
普通測驗以發現Bug為目標;安全測驗以發現安全隱患為目標,
3.2 假設條件不同
普通測驗假設導致問題的資料是用戶不小心造成的,介面一般只考慮用戶界面;安全測驗假設導致問題的資料是攻擊者處心積慮構造的,需要考慮所有可能的攻擊途徑,
3.3 思考域不同
普通測驗以系統所具有的功能為思考域;安全測驗的思考域不但包括系統的功能,還有系統的機制、外部環境、應用和資料自身安全風險與安全屬性等,
3.4 問題發現模式不同
普通測驗以違反功能定義為判斷依據;安全測驗以違反權限與能力的約束為判斷依據,
4 作業中的總結

4.1 敏感詞校驗
步驟:
- 對小程式、h5、官網帶輸入框的進行敏感詞輸入、搜索,
小程式校驗:

官網校驗:
- 驗證是否對敏感詞有攔截,如有攔截則正常,如不能攔截則存在安全問題,

4.2 明文傳輸
對系統傳輸程序中的敏感內容是明文&密文進行檢查,設計到的模塊:登錄、支付、注冊的手機號、身份證、郵箱,
步驟:
- 對傳輸敏感資訊場景進行抓包,
- 分析其資料包中的相關敏感欄位是否為明文,
例如介面中手機號、座機號、姓名都是明文:

4.3 越權訪問
測驗是否可以通過url直接獲取管理員和其他用戶資訊,
步驟:
- 查看url中是否存在admin/user/system/pwd等敏感目錄,
- 當系統存在多個不同權限的管理員時,看低權限的管理員能不能訪問到高權限的管理的資源,
- 當系統存在多個需要登錄用戶,用A用戶進行登錄,記錄所瀏覽的個人資源的url和修改洗掉的操作;退出A用戶后,登錄B用戶,使用所記錄的url來直接訪問,看是否可以訪問成功或者操作成功,
4.4 非法注入
測驗系統是否對輸入進行過濾和轉移,設計到的模塊:搜索框、輸入框、備注資訊、上傳檔案、URL、輸入框、備注資訊,
步驟:
- 在系統的URL地址后面,輸入測驗陳述句:
;看是否會有彈框展示,
- 在搜索框、輸入框、備注資訊中輸入測驗陳述句:
;看是否會有彈框展示,
- 官網校驗如圖:

4.4.1 上傳檔案
步驟:
- 在上傳的檔案中輸入:
,檔案名為 test,
- 點擊上傳,查看上傳介面,將上傳的檔案名改為html檔案,然后訪問該檔案,如可以訪問則存在問題,如不能訪問則正常,
4.4.2 檔案下載
步驟:
- 點擊檔案下載,查看檔案下載介面并進行記錄,
- 修改檔案下載介面,例如 xxxxx下載介面/../對路徑進行跳轉嘗試下載其他目錄下的檔案,看是否可以正常下載,如可以下載則存在問題,如果不能下載則正常,
4.5 短信、郵箱驗證
涉及到的模塊:觸發短信、郵箱驗證碼的相關場景,
步驟:
- 操作密碼找回、獲取驗證碼獲取功能,記錄該獲取介面,
- 頻繁呼叫密碼找回、驗證驗證碼介面,看是否存在攔截,以防短信被刷,
- 查看驗證碼介面,看是否可以通過介面截取到驗證碼資訊,
- 如下京東快遞h5,短信防刷如圖所示:

4.6 密碼健壯性
測驗密碼、驗證碼驗證方式是否可靠,是否可以被暴力猜測直到命中,
步驟:
- 登錄是接入公司的統一登錄passport,可忽略,
- 驗證碼的場景,使用抓包工具,修改介面中的密碼、驗證碼,多次嘗試輸入錯誤的驗證碼,如果沒有輸入次數上限可以暴力猜測直到命中,則存在漏洞,
4.7 資料安全
檢測系統中敏感資料的存盤是否安全,
步驟:
- 檢查敏感資料是否加密存盤,檢查對應的資料庫表,防止拖庫后資訊泄露,
- 檢查敏感資料在操作界面是否進行了脫敏操作,例如:密碼的顯示隱藏選項、手機號、身份證號的展示等,
- 檢查資料設定是否安全,檢查在輸入設計錢財的邊界值,是否可以輸入符合和是否超過最大的數額,
- 定期檢測資料庫中敏感資料是否做了脫敏處理:

4.8 支付相關
設計到的場景模塊:先攬后付、達達支付、協商再投,
步驟:
- 例如在線支付、達達支付、協商再投在調取收銀臺、微信支付時,查看支付介面的呼叫,
- 查看支付頁面金額是否正確,是否存在負數的情況,
- 查看支付介面,看是否可以通過介面截取到支付密碼資訊,
作者:蘇友鵬
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505957.html
標籤:其他
