安全測試是一種軟件測試,可發(fā)現(xiàn)軟件應(yīng)用程序中的漏洞,威脅,風(fēng)險(xiǎn)并防止來自入侵者的惡意攻擊。安全測試的目的是確定軟件系統(tǒng)的所有可能漏洞和弱點(diǎn),這些漏洞和弱點(diǎn)可能導(dǎo)致信息,收入損失,組織雇員或外部人員的聲譽(yù)受損。
安全測試的目標(biāo)是識別系統(tǒng)中的威脅并衡量其潛在漏洞,以使系統(tǒng)不會停止運(yùn)行或被利用。它還有助于檢測系統(tǒng)中所有可能的安全風(fēng)險(xiǎn),并幫助開發(fā)人員通過編碼解決這些問題。
保密 - 它可以防止向非預(yù)期接收者披露信息。
完整性 - 它允許從發(fā)送者向預(yù)期接收者傳輸準(zhǔn)確和正確的所需信息。
身份驗(yàn)證 - 驗(yàn)證并確認(rèn)用戶的身份。
授權(quán) - 它指定對用戶和資源的訪問權(quán)限。
可用性 - 確保準(zhǔn)備就緒的信息。
不可否認(rèn)性 - 它確保發(fā)送者或接收者不會拒絕發(fā)送或接收消息。
1.2.1SQL 注入攻擊
名詞解釋:SQL 注入攻擊(SQL Injection),簡稱注入攻擊、SQL 注入,被廣泛用于非法獲取網(wǎng)站控制權(quán),是發(fā)生在應(yīng)用程序的數(shù)據(jù)庫層上的安全漏洞。由于在設(shè)計(jì)程序時(shí),忽略了對輸入字符串中夾帶的 SQL 指令的檢查,被數(shù)據(jù)庫誤認(rèn)為是正常的 SQL 指令而運(yùn)行,從而使數(shù)據(jù)庫受到攻擊,可能導(dǎo)致數(shù)據(jù)被竊取、更改、刪除,甚至執(zhí)行系統(tǒng)命令等,以及進(jìn)一步導(dǎo)致網(wǎng)站被嵌入惡意代碼、被植入后門程序等危害。
1.2.2 文件上傳
名詞解析:文件上傳漏洞是指由于程序代碼未對用戶提交的文件進(jìn)行嚴(yán)格的分析和檢查,導(dǎo)致攻擊者可以上傳可執(zhí)行的代碼文件,從而獲取 Web 應(yīng)用的控制權(quán)限(Getshell)。
1.2.3 權(quán)限漏洞
名詞解析:訪問控制是指用戶對系統(tǒng)所有訪問的權(quán)限控制,通常包括水平權(quán)限和垂直權(quán)限。訪問控制問題是所有業(yè)務(wù)系統(tǒng)都可能產(chǎn)生的邏輯類漏洞,很難通過日常的安全工具掃描或防護(hù),通常會造成大量用戶數(shù)據(jù)泄露事件。
水平越權(quán):同一權(quán)限(角色)級別的用戶之間所產(chǎn)生的問題,如 A 用戶可以未授權(quán)訪問 B 用戶的數(shù)據(jù)等。
垂直越權(quán):不同權(quán)限(角色)級別的用戶之間所產(chǎn)生的問題,如普通用戶可未授權(quán)進(jìn)行管理操作,未登錄用戶可以訪問需授權(quán)應(yīng)用等。
1.2.4 暴力破解
名詞解析:暴力破解是指攻擊者通過遍歷或字典的方式,向目標(biāo)發(fā)起大量請求,通過判斷返回?cái)?shù)據(jù)包的特征來找出正確的驗(yàn)證信息,從而繞過驗(yàn)證機(jī)制。隨著互聯(lián)網(wǎng)眾多網(wǎng)站的數(shù)據(jù)庫被泄露,攻擊者選擇的樣本可以更具針對性,暴力破解的成功率也在不斷上升。
1.2.5 拒絕服務(wù)攻擊
名詞解析:拒絕服務(wù)攻擊(DoS,Denial of Service)是利用合理的請求造成資源過載,從而導(dǎo)致服務(wù)不可用的一種攻擊方式。分為針對 Web 應(yīng)用層的攻擊、客戶端 / APP 的攻擊。
1.2.6 敏感信息泄露
名詞解析:敏感信息泄露是指包括用戶信息、企業(yè)員工信息、內(nèi)部資料等不應(yīng)當(dāng)被外部訪問到的數(shù)據(jù)通過網(wǎng)站、接口、外部存儲等途徑被未授權(quán)泄露到外部的漏洞。信息泄露漏洞會導(dǎo)致大量用戶或企業(yè)信息被惡意利用,進(jìn)行詐騙、賬戶竊取等,給用戶和企業(yè)帶來嚴(yán)重的不良影響。并且信息一旦信息被泄露,影響會很難消除。
1.2.7 業(yè)務(wù)邏輯漏洞
名詞解析:業(yè)務(wù)邏輯漏洞是指由于業(yè)務(wù)在設(shè)計(jì)時(shí)考慮不全所產(chǎn)生的流程或邏輯上的漏洞,如用戶找回密碼缺陷,攻擊者可重置任意用戶密碼;如短信漏洞,攻擊者可無限制利用接口發(fā)送短信,惡意消耗企業(yè)短信資費(fèi),騷擾用戶等。由于業(yè)務(wù)邏輯漏洞跟業(yè)務(wù)問題貼合緊密,常規(guī)的安全設(shè)備無法有效檢測出,多數(shù)需要人工根據(jù)業(yè)務(wù)場景及特點(diǎn)進(jìn)行分析檢測。
1.2.8 跨站腳本攻擊(XSS)
名詞解析:跨站腳本攻擊(XSS, Cross Site Script)通常指黑客通過 “HTML 注入” 篡改了網(wǎng)頁,插入惡意腳本,從而在用戶瀏覽網(wǎng)頁時(shí),控制用戶瀏覽器的一種攻擊。XSS 漏洞可被用于用戶身份竊?。ㄌ貏e是管理員)、行為劫持、掛馬、蠕蟲、釣魚等。XSS 是目前客戶端 Web 安全中最重要的漏洞。
XSS 按效果的不同可以分為以下 3 種。
反射型 XSS 攻擊:頁面僅把用戶輸入直接回顯在頁面或源碼中,需要誘使用戶點(diǎn)擊才能成功。
存儲型 XSS 攻擊:XSS 攻擊代碼會被存儲在服務(wù)器中,由于用戶可能會主動瀏覽被攻擊頁面,此種方法危害較大。
DOM 型 XSS 攻擊:通過修改頁面的 DOM 節(jié)點(diǎn)形成 XSS,嚴(yán)格來講也可劃為反射型 XSS。
1.2.9 跨站點(diǎn)請求偽造(CSRF)
名詞解析:跨站點(diǎn)請求偽造(CSRF, Cross Site Request Forgery)。由于重要操作的所有參數(shù)都是可以被攻擊者猜到,攻擊者即可偽造請求,利用用戶身份完成攻擊操作,如發(fā)布文章、購買商品、轉(zhuǎn)賬、修改資料甚至密碼等。
提到安全。我們一個產(chǎn)品一個網(wǎng)站最需要加強(qiáng)安全防范的就是數(shù)據(jù)庫。那么如果缺少了安全性測試,在高手的 sql 盲注下,你的數(shù)據(jù)庫就會逐步展現(xiàn)在黑客的面前,無論是數(shù)據(jù)庫類型、表結(jié)構(gòu)、字段名或是詳細(xì)的用戶信息,都有無數(shù)種手段可以讓人 “一覽無余”。
網(wǎng)站一般都規(guī)定了什么樣的用戶可以做什么事。比如版主可以修改所有人的帖子,而你普通用戶只能編輯自己的帖子,同樣游客只能看大家的帖子。這就是簡單的權(quán)限。如果少了安全性保證,那么就容易有人跳出權(quán)限做他不該做的事情。
比如一個支付商城,如果通過抓包抓到的提交價(jià)格,經(jīng)過修改再發(fā)包可以通過。簡單來說就是本來 100 塊錢買的東西,抓包修改為 1 塊就能成功購買。這就成為了一個巨大的隱患。
HTML 注入。所有 HTML 注入范例只是注入一個 JavaScript 彈出式的警告框:alert (1)。
做壞事。如果您覺得警告框還不夠刺激,當(dāng)受害者點(diǎn)擊了一個被注入了 HTML 代碼的頁面鏈接時(shí)攻擊者能作的各種的惡意事情。
誘捕受害者,可能會 redirect 到另一個釣魚的其他網(wǎng)站之類的,使其蒙受損失。
比如一個政府部門的一個網(wǎng)站或者 app,里邊可以輸入一些有違目前制度以及一些領(lǐng)導(dǎo)人的詞匯的問題,這樣的影響是非常大的,所以我們要避免這些影響的發(fā)生。
安全測試是在 IT 軟件產(chǎn)品的生命周期中,特別是產(chǎn)品開發(fā)基本完成到發(fā)布階段,對產(chǎn)品進(jìn)行檢驗(yàn)以驗(yàn)證產(chǎn)品符合安全需求定義和產(chǎn)品質(zhì)量標(biāo)準(zhǔn)的過程,可以說,安全測試貫穿于軟件的整個生命周期。下面通過一張圖描述軟件生命周期各個階段的安全測試,如下圖所示。
上圖中的風(fēng)險(xiǎn)分析、靜態(tài)分析、滲透測試都屬于安全測試的范疇,與普通測試相比,安全測試需要轉(zhuǎn)換視角,改變測試中模擬的對象。下面從以下維度比較常規(guī)測試與安全測試的不同。
普通測試以發(fā)現(xiàn) Bug 為目標(biāo);安全測試以發(fā)現(xiàn)安全隱患為目標(biāo)。
普通測試假設(shè)導(dǎo)致問題的數(shù)據(jù)是用戶不小心造成的,接口一般只考慮用戶界面;安全測試假設(shè)導(dǎo)致問題的數(shù)據(jù)是攻擊者處心積慮構(gòu)造的,需要考慮所有可能的攻擊途徑。
普通測試以系統(tǒng)所具有的功能為思考域;安全測試的思考域不但包括系統(tǒng)的功能,還有系統(tǒng)的機(jī)制、外部環(huán)境、應(yīng)用和數(shù)據(jù)自身安全風(fēng)險(xiǎn)與安全屬性等。
普通測試以違反功能定義為判斷依據(jù);安全測試以違反權(quán)限與能力的約束為判斷依據(jù)。
步驟:
對小程序、h5、官網(wǎng)帶輸入框的進(jìn)行敏感詞輸入、搜索。
小程序校驗(yàn):
官網(wǎng)校驗(yàn):
驗(yàn)證是否對敏感詞有攔截,如有攔截則正常,如不能攔截則存在安全問題。
對系統(tǒng)傳輸過程中的敏感內(nèi)容是明文 & 密文進(jìn)行檢查,設(shè)計(jì)到的模塊:登錄、支付、注冊的手機(jī)號、身份證、郵箱。
步驟:
對傳輸敏感信息場景進(jìn)行抓包。
分析其數(shù)據(jù)包中的相關(guān)敏感字段是否為明文。
例如接口中手機(jī)號、座機(jī)號、姓名都是明文:
測試是否可以通過 url 直接獲取管理員和其他用戶信息。
步驟:
查看 url 中是否存在 admin/user/system/pwd 等敏感目錄。
當(dāng)系統(tǒng)存在多個不同權(quán)限的管理員時(shí),看低權(quán)限的管理員能不能訪問到高權(quán)限的管理的資源。
當(dāng)系統(tǒng)存在多個需要登錄用戶,用 A 用戶進(jìn)行登錄,記錄所瀏覽的個人資源的 url 和修改刪除的操作;退出 A 用戶后,登錄 B 用戶,使用所記錄的 url 來直接訪問,看是否可以訪問成功或者操作成功。
測試系統(tǒng)是否對輸入進(jìn)行過濾和轉(zhuǎn)移,設(shè)計(jì)到的模塊:搜索框、輸入框、備注信息、上傳文件、URL、輸入框、備注信息。
步驟:
在系統(tǒng)的 URL 地址后面,輸入測試語句: ;看是否會有彈框展示。
在搜索框、輸入框、備注信息中輸入測試語句: ;看是否會有彈框展示。
官網(wǎng)校驗(yàn)如圖:
4.4.1 上傳文件
步驟:
在上傳的文件中輸入: ,文件名為 test。
點(diǎn)擊上傳,查看上傳接口,將上傳的文件名改為 html 文件,然后訪問該文件,如可以訪問則存在問題,如不能訪問則正常。
4.4.2 文件下載
步驟:
點(diǎn)擊文件下載,查看文件下載接口并進(jìn)行記錄。
修改文件下載接口,例如 xxxxx 下載接口 /../ 對路徑進(jìn)行跳轉(zhuǎn)嘗試下載其他目錄下的文件,看是否可以正常下載,如可以下載則存在問題,如果不能下載則正常。
涉及到的模塊:觸發(fā)短信、郵箱驗(yàn)證碼的相關(guān)場景。
步驟:
操作密碼找回、獲取驗(yàn)證碼獲取功能,記錄該獲取接口。
頻繁調(diào)用密碼找回、驗(yàn)證驗(yàn)證碼接口,看是否存在攔截,以防短信被刷。
查看驗(yàn)證碼接口,看是否可以通過接口截取到驗(yàn)證碼信息。
如下京東快遞 h5,短信防刷如圖所示:
測試密碼、驗(yàn)證碼驗(yàn)證方式是否可靠,是否可以被暴力猜測直到命中。
步驟:
登錄是接入公司的統(tǒng)一登錄 passport,可忽略。
驗(yàn)證碼的場景,使用抓包工具,修改接口中的密碼、驗(yàn)證碼,多次嘗試輸入錯誤的驗(yàn)證碼,如果沒有輸入次數(shù)上限可以暴力猜測直到命中,則存在漏洞。
檢測系統(tǒng)中敏感數(shù)據(jù)的存儲是否安全。
步驟:
檢查敏感數(shù)據(jù)是否加密存儲,檢查對應(yīng)的數(shù)據(jù)庫表,防止拖庫后信息泄露。
檢查敏感數(shù)據(jù)在操作界面是否進(jìn)行了脫敏操作,例如:密碼的顯示隱藏選項(xiàng)、手機(jī)號、身份證號的展示等。
檢查數(shù)據(jù)設(shè)置是否安全,檢查在輸入設(shè)計(jì)錢財(cái)?shù)倪吔缰担欠窨梢暂斎敕虾褪欠癯^最大的數(shù)額。
定期檢測數(shù)據(jù)庫中敏感數(shù)據(jù)是否做了脫敏處理:
設(shè)計(jì)到的場景模塊:先攬后付、達(dá)達(dá)支付、協(xié)商再投。
步驟:
例如在線支付、達(dá)達(dá)支付、協(xié)商再投在調(diào)取收銀臺、微信支付時(shí),查看支付接口的調(diào)用。
查看支付頁面金額是否正確,是否存在負(fù)數(shù)的情況。
查看支付接口,看是否可以通過接口截取到支付密碼信息。
聯(lián)系客服