- 代碼審計:企業(yè)級Web代碼安全架構(gòu)
- 尹毅
- 1402字
- 2018-12-31 21:29:32
前言
代碼審計是指對源代碼進行檢查,尋找代碼中的bug,這是一項需要多方面技能的技術(shù),包括對編程的掌握、漏洞形成原理的理解,系統(tǒng)和中間件等的熟悉。
為什么需要代碼審計
代碼審計是企業(yè)安全運營以及安全從業(yè)者必備的基礎(chǔ)能力。代碼審計在很多場景中都需要用到,比如企業(yè)安全運營、滲透測試、漏洞研究等。目前已經(jīng)有不少公司在推廣微軟的軟件SDL(Security Development Lifecycle,安全開發(fā)周期),它涵蓋需求分析→設(shè)計→編碼→測試→發(fā)布→維護,安全貫穿整個軟件開發(fā)周期,其中設(shè)計、編碼和測試是整個SDL的核心,安全問題大多在這里被解決掉。其中在安全設(shè)計這塊,必須要非常了解漏洞形成原理,縱觀全局。而在代碼實現(xiàn)也就是編碼階段,安全依靠于編程人員的技術(shù)基礎(chǔ)以及前期安全設(shè)計的完善性。然后是測試,測試包括白盒測試。黑盒測試以及灰盒測試。黑盒測試也叫功能測試,是指在不接觸代碼的情況下,測試系統(tǒng)的功能是否有bug,是否滿足設(shè)計需求。而白盒測試就是我們說的代碼審計,以開放的形式從代碼層面尋找bug,如果發(fā)現(xiàn)有bug則返回修復(fù),直到?jīng)]有bug才允許軟件發(fā)布上線。
滲透測試人員掌握代碼審計是非常重要的,因為我們在滲透過程中經(jīng)常需要針對目標環(huán)境對payload進行調(diào)試。另外,如果通過掃描器掃描到Web目錄下的一個源碼備份包,通常攻擊者都會利用源碼包找一些配置文件,因為里面有數(shù)據(jù)庫、API等一類配置。如果環(huán)境有限制,比如目標站數(shù)據(jù)庫限制連接IP等,那么工具小子可能在源碼包進行的漏洞利用也就到此為止。對于懂代碼審計的人,結(jié)果完全不一樣,他可以對源碼包進行安全審計,發(fā)現(xiàn)網(wǎng)站代碼里存在的漏洞,然后利用挖掘到的漏洞進行滲透。
編程能力要求
代碼審計對編程語言的基礎(chǔ)有一定要求,至少要能看得懂代碼,這里說的看懂代碼不是簡單地理解幾個if...else語句和for循環(huán),而是能看懂代碼的邏輯,即使有很多函數(shù)沒見過,也是可以到Google去查的。都說編程在語言這塊是一通百通,只要我們對編程思想理解得非常透徹,重新接觸一種編程語言也是非常快就能上手的,所以不管你之前寫過Java還是C#程序,想玩一玩PHP的代碼審計都應(yīng)該不是什么大問題。
代碼審計環(huán)境準備
代碼審計首先要準備的是審計環(huán)境工具,不同的環(huán)境會影響漏洞的利用,所以建議Linux和Windows系統(tǒng)下的PHP環(huán)境都搭建一套,并且需要多個PHP版本。關(guān)于版本切換這塊,建議安裝phpStudy,phpStudy是一套Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader的集成環(huán)境,可以很方便地安裝和切換環(huán)境。代碼審計的工具有很多個,這里推薦使用筆者開發(fā)的Seay源代碼審計系統(tǒng)以及RIPS,二者都是免費開源工具。
除了自動化審計工具外,還有一些像Burp Suite、瀏覽器擴展以及編碼工具等審計輔助工具也都是必備的。
代碼審計思路
通常做代碼審計都是檢查敏感函數(shù)的參數(shù),然后回溯變量,判斷變量是否可控并且沒有經(jīng)過嚴格的過濾,這是一個逆向追蹤的過程。而代碼審計并非這一種手段,還可以先找出哪些文件在接收外部傳入的參數(shù),然后跟蹤變量的傳遞過程,觀察是否有變量傳入到高危函數(shù)里面,或者傳遞的過程中是否有代碼邏輯漏洞,這是一種正向追蹤的方式,這樣的挖掘方式比逆向追蹤挖掘得更全。還有一種方式是直接挖掘功能點漏洞,根據(jù)自身的經(jīng)驗判斷該類應(yīng)用通常在哪些功能中會出現(xiàn)漏洞,直接全篇閱讀該功能代碼。
可能不少新手對于學習PHP代碼審計還有一些迷茫,或許之前嘗試過學習,但一直沒有很好的進展,因為代碼審計是一門很專的技術(shù)活,要學好PHP代碼審計,需要掌握以下幾點:
? PHP編程語言的特性和基礎(chǔ)。
? Web前端編程基礎(chǔ)。
? 漏洞形成原理。
? 代碼審計思路。
? 不同系統(tǒng)、中間件之間的特性差異。
- 網(wǎng)絡(luò)安全與管理
- Node Security
- Web漏洞分析與防范實戰(zhàn):卷1
- 腦洞大開:滲透測試另類實戰(zhàn)攻略
- Getting Started with FortiGate
- 計算機病毒原理與防范(第2版)
- 硬黑客:智能硬件生死之戰(zhàn)
- ARM匯編與逆向工程:藍狐卷·基礎(chǔ)知識
- 云原生安全與DevOps保障
- 從實踐中學習密碼安全與防護
- 先進云安全研究與實踐
- 網(wǎng)絡(luò)安全監(jiān)控實戰(zhàn):深入理解事件檢測與響應(yīng)
- Real-World SRE
- 網(wǎng)絡(luò)對抗的前世今生
- 大中型網(wǎng)絡(luò)入侵要案直擊與防御