程式碼審計基礎--白盒測試

Vdieoo發表於2020-10-30

程式碼審計原理

檢查原始碼中的安全缺陷,檢查程式原始碼是否存在安全隱患,或者有編碼不規範的地方,通過自動化工具或者人工審查的方式,對程式原始碼逐條進行檢查和分析,發現這些原始碼缺陷引發的安全漏洞,並提供程式碼修訂措施和建議。

基本思路

主要由三個方面組成:

關鍵詞

功能(一般框架中)

通讀程式碼

 

 

關鍵詞

對一些存在漏洞的關鍵函式名進行定向篩選。

 

功能

對可能存在漏洞的相關功能進行審計,常見的有:

程式初始安裝

站點資訊洩漏

檔案上傳

檔案管理

登陸認證

資料庫備份恢復

找回密碼

驗證碼

 

通讀程式碼

通讀全文發作為一種最麻煩的方法也是最全面的審計方法,但是該方法也是一種必要的方法。

瞭解整個應用的業務邏輯,才能挖掘到更多更有價值的漏洞。

 

 

語言特性—PHP

PHP目錄結構

放引用的庫或者外掛,資料夾名字一般叫 librarie、lib、plugin

PHP專案中 vendor 資料夾是PHP的包管理器安裝依賴程式碼存放的路徑

檢視程式碼資料夾一般叫 layout、theme、template、view

控制器資料夾一般叫 controller

公用的一些程式碼資料夾一般叫 common

一些工具函式可能放在 helper/util/tool 資料夾裡

配置檔案放在 config 資料夾裡

components 或 modules: 這裡有mvc的程式碼,把功能互相獨立出來

route.php: 對不同的url呼叫不同的程式碼

 

語言特性—Java

 

Java程式碼審計輔助工具

Jetbrains IDEA(IDE)

Sublime text(文字編輯器)

JD-GUI(反編譯)

Fernflower(反編譯)

Bytecode-Viewer

Eclipse(IDE)

NetBeans(IDE)

 

語言特性—ASP.NET

一般來說,在 asp.net 應用中,需要進行觀察的檔案有:aspx.cs、.cs、.ashx 和 dll檔案

aspx.cs 是頁面後的程式碼,aspx負責顯示,伺服器端的動作就是在aspx.cs定義的

.cs是類檔案,公共類之類的

.ashx 是一般處理程式,主要用於寫 web handler,可以理解成不會顯示的 aspx頁面,不過效率更高

dll 就是 cs檔案編譯之後的程式集

 

程式碼審計小結

 

通過搜尋引擎查閱相關函式的用法和作用,見的多了自然就進入這個領域了。初學程式碼審計,會有大批程式碼看不懂,只有死磕下去,才會看懂越來越多的程式碼,也為了以後審計邏輯漏洞打下基礎。但是,也不能盲目死磕一個不會的點,這個度只能自己把握。

另外,要有一種屬於個人的審計思路,每個人的習慣不同,程式碼審計的方式也就不同。

當然一定要記住最上邊說的三個方向點!危險函式,功能,通讀程式碼

 

 

相關文章