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