嚴(yán)老師的干貨分享
——成都正厚軟件
安全測試在做什么?
掃描?在很多人的眼中,做安全的就是整天拿個工具在哪里做掃描操作,使用各種不同的工具做掃描。是的,掃描是安全測試的很重要的一部分,掃描可以快速有效的發(fā)現(xiàn)問題。掃描工具的易用性、方便性決定了重要地位。但是掃描工具的局限性、程序的不夠靈活等缺點(diǎn)也是顯而易見的。不管是掃描報告的分析、漏洞的深度挖掘、測試的組織等等的工作都離不開安全測試人員,所以只能說掃描工具減輕了測試人員的工作量,是安全測試的一種手段。
安全的本質(zhì)是什么?
信任、人性(網(wǎng)絡(luò)安全的漏洞是人)、止損、攻防
1.概念定義:
敏感數(shù)據(jù):敏感數(shù)據(jù)的具體范圍取決于產(chǎn)品具體的應(yīng)用場景,產(chǎn)品應(yīng)根據(jù)風(fēng)險進(jìn)行分析和判斷。典型的敏感數(shù)據(jù)包括口令、銀行帳號、大批量個人數(shù)據(jù)、用戶通信內(nèi)容和密鑰等。個人數(shù)據(jù):指直接通過該數(shù)據(jù)或者結(jié)合該數(shù)據(jù)與其他的信息,可以識別出自然人的信息。
匿名化:指對個人數(shù)據(jù)進(jìn)行的更改(例如單向散列、截短、替換等,如需保留個人數(shù)據(jù)真實(shí)值與替換值之間的對應(yīng)關(guān)系,可以使用對稱加密或映射表方式,但密鑰/映射表必須由數(shù)據(jù)所有者控制),使原來有關(guān)個人的信息不再能歸屬到一個可識別的自然人,或推理這種歸屬需要耗費(fèi)過多、不相稱的時間、費(fèi)用和精力
2.我們應(yīng)該如何去著手
如何著手去做這個系統(tǒng)安全測試呢?作為一個測試人員要**系統(tǒng)整體的安全,這就需要有一個整體的結(jié)構(gòu)的框架,就像蓋房子一樣,先造鋼筋混凝土框架,然后磚塊去填充它。這里的鋼筋混凝土框架就是安全特性方向,其實(shí)就是從整體方向上的一個劃分,可以有如下簡單的劃分。
2.1.測試的特性
安全特性:操作系統(tǒng)安全、數(shù)據(jù)庫安全、WEB安全、軟件的發(fā)布和安裝安全、協(xié)議與接口攻防、敏感數(shù)據(jù)保護(hù)、手機(jī)端安全、靜態(tài)代碼分析。
2.1.1.操作系統(tǒng)安全操作系統(tǒng)安全我們可以把它分為以下幾塊:系統(tǒng)漏洞(操作系統(tǒng)補(bǔ)?。?、系統(tǒng)配置(安全加固),業(yè)界權(quán)威工具Nessus,其他如retina、綠盟、天鏡等。開源的工具可以使用OpenVAS。
2.1.2.數(shù)據(jù)庫
數(shù)據(jù)庫安全我們可以把它分為以下幾塊:數(shù)據(jù)庫漏洞(補(bǔ)?。?shù)據(jù)庫配置特產(chǎn)(安全加固),工具可以使用Ngs。2.1.3.web安全
數(shù)據(jù)庫安全我們可以把它分為以下幾塊:身份驗(yàn)證、驗(yàn)證碼、會話管理、權(quán)限管理、敏感信息傳輸、安全審計(jì)、信息泄露、輸入校驗(yàn)、輸出編碼、上傳下載、異常處理、注釋代碼等,容器的安全(tomcat),應(yīng)用軟件安全(nginx、負(fù)載均衡軟件、jquery等),掃描工具:appScan、awvs2.1.4.軟件的發(fā)布與安裝安全發(fā)布件的完整性校驗(yàn)(簽名、哈希)防病毒:需要安裝的軟件需要經(jīng)過常用的殺毒軟件(如360、卡巴斯基、金山毒霸等)的掃描,**沒有病毒特種碼,以免被殺軟處理掉。2.1.5.協(xié)議與接口攻防業(yè)務(wù)交互數(shù)據(jù)在網(wǎng)絡(luò)中使用的協(xié)議安全性測試,協(xié)議測試工具:codenomical對外開放的端口:系統(tǒng)對外開放的端口必須是必須的,禁止開放無用端口端口掃描工具:Nmap,近端可以直接在服務(wù)器上使用命令查看接口:接口接受的數(shù)據(jù)需要做嚴(yán)格的處理,接口數(shù)據(jù)嚴(yán)格校驗(yàn)測試2.1.6.敏感數(shù)據(jù)保護(hù)識別敏感數(shù)據(jù):密碼、秘鑰、會話標(biāo)識;個人信息、商業(yè)機(jī)密、客戶信息等保護(hù):加密、存儲位置、傳輸方式;獲取數(shù)據(jù)脫敏、匿名化
2.1.7.手機(jī)端安全1、app的簽名、反逆向2、用戶隱私3、文件權(quán)限4、網(wǎng)絡(luò)通訊5、運(yùn)行時解釋保護(hù)6、組件權(quán)限保護(hù)7、升級8、3rd庫2.1.8.靜態(tài)代碼分析(純白盒)白盒測試主要是通過對代碼的瀏覽來發(fā)現(xiàn)問題,當(dāng)然問題的類型可能是跟我們黑灰盒總結(jié)的一致,拿出來單獨(dú)講是因?yàn)槠洳煌谄渌臏y試方式。1、危險函數(shù)、方法2、工具檢測3、邏輯漏洞
灰盒:結(jié)合白盒和黑盒的一些思路,在實(shí)際的代碼審計(jì)中建議采用灰盒的方式,在需要的地方對代碼進(jìn)行動態(tài)調(diào)試查看。審計(jì)中思路可以考慮如下這些部分:
1、涉及敏感數(shù)據(jù)的時候,檢查是get、post哪種形式發(fā)送數(shù)據(jù)Get傳輸?shù)臄?shù)據(jù)會被記錄在代理、瀏覽器、web容器tomcat等的日志中
2、提交銘感數(shù)據(jù)的時候是否有防止csrf的token、refer、驗(yàn)證碼等
3、sql注入1)Statement和preparestatement2)mybitas框架 #和$
4、XSS我們用的antisamy只能過濾基于標(biāo)簽的XSS偽造,其他的無法過濾,需要做二次過濾
5、邏輯:此處是指,邏輯思路不合理,不符合安全的一些思想,如權(quán)限最小化等等
6、參數(shù)范圍是否造成dos或者影響系統(tǒng)性能
7、權(quán)限校驗(yàn)、越權(quán):橫、縱、多步驟關(guān)聯(lián)性
8、session會話管理1)常規(guī)cookie及session形式2)把token作為session的形式,特別注入登錄用戶和token的綁定關(guān)系
9、參數(shù)是否是簡單形式,是否可以造成遍歷
10、代碼中使用的第三方插件、開源軟件是否是嘴新、是否有安全漏洞
11、代碼中所使用的加密算法,是否是安全的
12、跳轉(zhuǎn)中的redirect形式中不要帶敏感信息,會被發(fā)回客戶端重新請求的,相當(dāng)于把這些參數(shù)放在了get請求
13、SSRF服務(wù)端請求偽造,注意url中含有另外一個url的請求1)源碼中使用urlconnection 支持的協(xié)議除了http和https以外,還有file、ftp、jar、mailto等2)request、httpurlconnecttion、httpClient、URL等發(fā)起網(wǎng)絡(luò)請求
14、加密算法的使用,是否使用的是不合場景的弱算法
15、數(shù)據(jù)插入自增Id攻擊數(shù)據(jù)傳入過來做插入動作,并且使用spring自動綁定對象方法獲取數(shù)據(jù),之后使用生成的插入sql,此時自動增長id不要寫到更新語句中,如果寫入可能造成惡意注入integer范圍最da值2147483647,使功能不可用dos
16、Spring自動綁定參數(shù),參數(shù)擴(kuò)展攻擊后臺使用的對象參數(shù)自動綁定獲取,相應(yīng)的sql使用了自動的if是否為null和為空的判斷條件,前臺可以根據(jù)猜測注入隊(duì)形的相應(yīng)的屬性實(shí)現(xiàn)非預(yù)料結(jié)果。