前期準(zhǔn)備:
1.獲取源碼
2.安裝網(wǎng)站
3.瀏覽網(wǎng)站結(jié)構(gòu)
掌握大局:
入口文件
index.php、admin.php文件一般是整個(gè)程序的入口,詳細(xì)讀一下index文件可以知道程序的架構(gòu)、運(yùn)行流程、包含那些配置文件,包含哪些過(guò)濾文件以及包含那些安全過(guò)濾文件,了解程序的業(yè)務(wù)邏輯
配置文件
一般類(lèi)似config.php等文件,保存一些數(shù)據(jù)庫(kù)相關(guān)信息、程序的一些信息。先看看數(shù)據(jù)庫(kù)編碼,如果是gbk則可能存在寬字節(jié)注入。如果變量的值用雙引號(hào)、則可能存在雙引號(hào)解析代碼執(zhí)行的問(wèn)題。
過(guò)濾功能
通過(guò)詳讀 公共函數(shù)文件 和 安全過(guò)濾文件 等文件,清晰掌握用戶(hù)輸入的數(shù)據(jù),哪些被過(guò)濾,哪些無(wú)過(guò)濾,在哪里被過(guò)濾了,如何過(guò)濾的,能否繞過(guò)過(guò)濾的數(shù)據(jù)。過(guò)濾的方式是替換還是正則?有沒(méi)有GPC?有沒(méi)有使用addslasher()處理?
審計(jì)方法:
1.通讀全文法
通讀全文發(fā)作為一種最麻煩的方法也是最全面的審計(jì)方法。特別是針對(duì)大型程序,源碼成千上萬(wàn)行,這要讀到什么時(shí)候。但是該方法也是一種必要的方法。了解整個(gè)應(yīng)用的業(yè)務(wù)邏輯,才能挖掘到更多更有價(jià)值的漏洞。
2.敏感函數(shù)參數(shù)回溯法
根據(jù)敏感函數(shù),逆向追蹤參數(shù)傳遞的過(guò)程。
這個(gè)方法是最高效,最常用的方法。大多數(shù)漏洞的產(chǎn)生是因?yàn)楹瘮?shù)的使用不當(dāng)導(dǎo)致的。我們只要找到這樣的一些使用不當(dāng)?shù)暮瘮?shù),就可以快速挖掘想要的漏洞。
這方面,Seay法師大大有一款神器Seay源代碼審計(jì)系統(tǒng),主要是利用正則匹配一些高危函數(shù)、關(guān)鍵函數(shù)以及敏感關(guān)鍵字。 然后,我們就可以分析判斷敏感函數(shù)的上下文,追蹤參數(shù)源頭。
3.定向功能分析法
該方法主要是根據(jù)程序的業(yè)務(wù)邏輯來(lái)說(shuō)審計(jì)的。
首先是用瀏覽器逐個(gè)訪(fǎng)問(wèn)瀏覽,看看這套程序有那些功能。根據(jù)相關(guān)功能,大概推測(cè)可能存在那些漏洞。
常見(jiàn)功能漏洞:(包括但不限于)
- 程序初始安裝
- 站點(diǎn)信息泄漏
- 文件上傳
- 文件管理
- 登陸認(rèn)證
- 數(shù)據(jù)庫(kù)備份恢復(fù)
- 找回密碼
- 驗(yàn)證碼
主線(xiàn):把握大局 ——— 定向功能 ——— 敏感參數(shù)函數(shù)回溯
參考資料:i春秋課程-代碼審計(jì)方法與步驟
|