安全测试整理
?
一、安全測(cè)試的目的:
為了盡可能的發(fā)現(xiàn)安全漏洞
二、安全測(cè)試的基本步驟:
收集信息—>熟悉環(huán)境—>梳理功能—>評(píng)估風(fēng)險(xiǎn)—>制定計(jì)劃—>執(zhí)行測(cè)試—>輸出結(jié)果
1、如何熟悉環(huán)境:a. 測(cè)試在哪兒執(zhí)行:瀏覽器還是APP
b. 測(cè)試有沒(méi)有前置條件:內(nèi)部系統(tǒng)還是外部系統(tǒng)?是否需要特定賬號(hào)才能使用
c. 系統(tǒng)特殊屬性:是否是行業(yè)專(zhuān)門(mén)系統(tǒng),是否需要其他預(yù)先只是儲(chǔ)備
2、功能是否已就緒:一般在功能測(cè)試基本完成之后進(jìn)行安全測(cè)試
3、制定計(jì)劃(設(shè)置場(chǎng)景,設(shè)計(jì)用例)
4、執(zhí)行測(cè)試
三、通常容易出現(xiàn)的安全漏洞
1、CSRF攻擊
(跨站請(qǐng)求偽造,通過(guò)偽裝來(lái)自受信任用戶的請(qǐng)求來(lái)利用受信任的網(wǎng)站)
如:某用戶轉(zhuǎn)賬操作:http://www.mybank.com/Transfer.php?toBankId=11&money=1000。轉(zhuǎn)賬操作成功后訪問(wèn)某個(gè)網(wǎng)站(或鏈接圖片),該網(wǎng)站有如下代碼:<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=10000>。訪問(wèn)成功后該用戶賬戶就少了10000人民幣了~
其原理是因?yàn)樵撚脩粼L問(wèn)銀行操作網(wǎng)站后,該網(wǎng)站沒(méi)有唯一標(biāo)識(shí)認(rèn)證用戶,因此在短時(shí)間再次訪問(wèn)該鏈接不能辨認(rèn)是否是用戶自己在進(jìn)行轉(zhuǎn)賬操作,進(jìn)而操作成功,這樣用戶在不知情的情況下就損失了10000元,就算再次去銀行查賬也只會(huì)認(rèn)為是用戶自己轉(zhuǎn)出10000元。
那么如何檢測(cè)某個(gè)地方是否存在CSRF攻擊:通過(guò)fiddler或Charles抓包查看接口是否有唯一標(biāo)識(shí)(如:在增刪改的表單提交接口上,若沒(méi)有csrftoken或者refer校驗(yàn),則存在csrf漏洞)
?
2、XSS
(跨站腳本攻擊,目的是在頁(yè)面中輸入可被控制的HTML代碼。所以有輸出的地方就有可能又XSS)
如:設(shè)計(jì)上出現(xiàn)失誤:允許用戶在頁(yè)面中輸出HTML代碼,如下頁(yè)面
?
?
該頁(yè)面源代碼為:
?
?
試著在輸入框中輸入:abcd123,得到結(jié)果為
也就是說(shuō)我們輸入的字符會(huì)被原封不動(dòng)的輸出來(lái),那么如果在該輸入框中輸入如下JS代碼:
<script>alert(‘xss’)</script>會(huì)出現(xiàn)什么情況呢?由此看來(lái)XSS的原理就是利用輸出的環(huán)境來(lái)構(gòu)造代碼。XSS就是在頁(yè)面執(zhí)行你想要的JS,(以上舉例摘抄某博客,寫(xiě)的比較基礎(chǔ),比較容易懂:http://netsecurity.51cto.com/art/201408/448305_all.htm)
以上例子輸入代碼點(diǎn)擊提交,成功彈出對(duì)話框,基本就可以確定存在XSS漏洞了。
那么如何檢測(cè)某個(gè)地方是不是存在XSS,通過(guò)舉例也應(yīng)該了解一些了。整理下來(lái):
- 確定輸入點(diǎn)&確定輸出點(diǎn)
- 構(gòu)造攻擊向量:--></textarea>/><img src=x οnerrοr=alert(1)/><!--
- 刷新頁(yè)面,查看是否有彈框?
3、SQL注入
SQL注入詳解:
(一)https://baijiahao.baidu.com/s?id=1568598718373461&wfr=spider&for=pc
(二)
https://m9.baidu.com/feed/data/landingpage?s_type=news&dsp=wise&nid=3745639765741583179&p_from=4
(三)https://baijiahao.baidu.com/s?id=1568598718373461&wfr=spider&for=pc
?
原理:SQL語(yǔ)句中有允許用戶任意控制的通過(guò)把SQL命令插入到Web表單提交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。后果極其嚴(yán)重,可以導(dǎo)致數(shù)據(jù)庫(kù)被攻擊者完全控制,甚至導(dǎo)致服務(wù)器崩潰。所以,有參與到數(shù)據(jù)庫(kù)語(yǔ)句構(gòu)造的地方就有可能有SQL注入。
如:一個(gè)簡(jiǎn)單的登錄頁(yè)面,代碼方法中userName和?password?是沒(méi)有經(jīng)過(guò)任何處理,直接拿前端傳入的數(shù)據(jù)。輸入正常數(shù)據(jù),合并的SQL為:
SELECT COUNT(*) FROM Login WHERE UserName='admin' AND Password='123456'
?
?
如果我輸入:admin’?--,密碼隨便輸,合并的SQL語(yǔ)句變?yōu)?#xff1a;
SELECT COUNT(*) FROM Login WHERE UserName='admin'-- Password='123'
其中--為注釋符,后面語(yǔ)句則被省略而登錄成功了。如圖:
?
?
這是最簡(jiǎn)單的一種SQL注入。常見(jiàn)的SQL注入語(yǔ)句詳見(jiàn)(也可自行百度)
“http://blog.csdn.net/ywb201314/article/details/52401511”
那么如何檢查是否存在SQL注入呢?一個(gè)簡(jiǎn)單的方法:隨手在參數(shù)后面加一個(gè)英文半角單引號(hào)(‘)
原因:單引號(hào)在SQL語(yǔ)句中通常是閉合字符串,一般程序無(wú)需閉合字符串,而是在代碼中替用戶完成這整個(gè)過(guò)程,用戶新增的單引號(hào)會(huì)使得程序的閉合亂序,往往頁(yè)面就會(huì)報(bào)錯(cuò)。
4、鑒權(quán)失當(dāng)
鑒權(quán)失當(dāng)有多種,通常只有在有權(quán)限控制的功能中出現(xiàn)。
- 低權(quán)限用戶可以控制高權(quán)限用戶才能使用的功能稱為【垂直越權(quán)】
- 同等級(jí)用戶間可以互相訪問(wèn)原本只有對(duì)方才能訪問(wèn)的功能稱為【水平越權(quán)】
- 某個(gè)功能在特定情況下才能訪問(wèn),但可以被繞過(guò)稱為【上下文越權(quán)】
鑒權(quán)失當(dāng)其實(shí)是一個(gè)邏輯漏洞,常見(jiàn)的:管理后臺(tái)容易出現(xiàn)越權(quán)
測(cè)試方法:
- 準(zhǔn)備兩個(gè)或者更多個(gè)不同權(quán)限的賬號(hào)
- 拷貝相關(guān)的URL,交給拎一個(gè)權(quán)限的賬號(hào)訪問(wèn)
- 如果能看到前一個(gè)賬號(hào)的信息,就證明問(wèn)題存在
5、上傳漏洞
允許文件上傳的地方就可能出現(xiàn)上傳漏洞(用于利用上傳漏洞來(lái)控制服務(wù)器的工具:WebShell)
測(cè)試方法:用同種語(yǔ)言寫(xiě)一個(gè)“hello Word”,上傳這個(gè)文件至這個(gè)程序,如果在頁(yè)面中程序被執(zhí)行了,(輸出源代碼不算數(shù)),則說(shuō)明存在上傳漏洞
6、敏感信息泄露
?
轉(zhuǎn)載于:https://www.cnblogs.com/wnana/p/8434768.html
總結(jié)
- 上一篇: 直播系统搭建关键步骤与要点!
- 下一篇: pfSense介绍