企業(yè)網(wǎng)站滲透測(cè)試中網(wǎng)站代碼審計(jì)的基礎(chǔ)方法
這幾天整理了下網(wǎng)站滲透測(cè)試中基礎(chǔ)部分的第三節(jié),我們SINE安全滲透工程師對(duì)代碼安全審計(jì),手工滲透測(cè)試檢查代碼的危險(xiǎn)漏洞方法,找出安全問題重點(diǎn),配合工具掃描來達(dá)到測(cè)試漏洞的目的,本測(cè)試重點(diǎn)僅限于客戶授權(quán)才能操作,切記忽非法嘗試入侵!以下方法只是提供網(wǎng)站安全檢測(cè)的具體參考意見。
1.5. 代碼審計(jì)
1.5.1. 簡(jiǎn)介
代碼審計(jì)是找到應(yīng)用缺陷的過程。其通常有白盒、黑盒、灰盒等方式。白盒指通過對(duì)源代碼的分析找到應(yīng)用缺陷,黑盒通常不涉及到源代碼,多使用模糊測(cè)試的方式,而灰盒則是黑白結(jié)合的方式。
1.5.2. 常用概念
1.5.2.1. 輸入
應(yīng)用的輸入,可以是請(qǐng)求的參數(shù)(GET、POST等)、上傳的文件、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)等用戶可控或者間接可控的地方。
1.5.2.2. 處理函數(shù)
處理數(shù)據(jù)的函數(shù),可能是過濾,也可能是編解碼。
1.5.2.3. 危險(xiǎn)函數(shù)
又常叫做Sink Call、漏洞點(diǎn),是可能觸發(fā)危險(xiǎn)行為如文件操作、命令執(zhí)行、數(shù)據(jù)庫(kù)操作等行為的函數(shù)。
1.5.3. 自動(dòng)化審計(jì)
一般認(rèn)為一個(gè)漏洞的觸發(fā)過程是從輸入經(jīng)過過濾到危險(xiǎn)函數(shù)的過程,而審計(jì)就是尋找這個(gè)鏈條的過程。
1.5.3.1. 危險(xiǎn)函數(shù)匹配
白盒審計(jì)最常見的方式是通過搜尋危險(xiǎn)函數(shù)與危險(xiǎn)參數(shù)定位漏洞,比較有代表性的工具是Seay開發(fā)的審計(jì)工具。這種方法誤報(bào)率相當(dāng)高,這是因?yàn)檫@種方法沒有對(duì)程序的流程進(jìn)行深入分析,另一方面,這種方式通常是孤立地分析每一個(gè)文件,忽略了文件之間復(fù)雜的調(diào)用關(guān)系。
具體的說,這種方式在一些環(huán)境下能做到幾乎無漏報(bào),只要審計(jì)者有耐心,可以發(fā)現(xiàn)大部分的漏洞,但是在高度框架化的代碼中,能找到的漏洞相對(duì)有限。
1.5.3.2. 控制流分析
在后來的系統(tǒng)中,考慮到一定程度引入AST作為分析的依據(jù),在一定程度上減少了誤報(bào),但是仍存在很多缺陷。
服務(wù)熱線: