1. 程式人生 > 其它 >php程式碼審計入門前必看

php程式碼審計入門前必看

  1. 首先先介紹什麼是程式碼審計?

程式碼審計:是指標對原始碼進行檢查,尋找程式碼中的bug,這是一項需要多方面技能的技術

包括:對程式設計的掌握,漏洞形成原理的理解,系統和中介軟體等的熟悉

2.為什麼要進行程式碼審計,這也是對剛進入程式碼審計領域的小白愛問的問題?

程式碼審計是企業安全運營以及安全從業者必備的基礎能力

程式碼審計在很多場景中都需要用到,比如:企業安全運營,滲透測試,漏洞研究。

目前已經有不少公司在推廣微軟的軟體SDL(Security Development Lifecycle,安全開發週期)

他涵蓋需求分析--->設計---->編碼---->測試----->

釋出------>維護,安全貫穿整個軟體開發週期

其中設計,編碼和測試是整個SDL核心,安全問題大多在這裡被解決掉。

其中在安全設計這一塊,必須要非常瞭解漏洞形成的原理,縱觀全域性。

而在程式碼實現也就是編碼階段,安全依靠於程式設計人員的技術基礎以及前期安全設計的完整性。

然後才是測試,測試包括:白盒測試,黑盒測試,灰盒測試。

黑盒測試又叫功能測試,是指在不接觸程式碼的情況下,測試系統的功能是否存在bug,是否滿足設計需求。

而白盒測試就是我們說的程式碼審計,以開放的形式從程式碼層面尋找bug,如果發現有bug則返回修復,直到沒有bug才允許軟體釋出上線

滲透測試人員掌握程式碼審計是很重要的,因為我們在滲透過程中經常需要針對目標環境對

payload進行除錯。

另外,如果通過掃描器掃描到目錄下的1一個原始碼備份包,通常攻擊者都會利用原始碼包找到一些配置檔案,因為裡面有資料庫,API等一類配置。

如果環境有限制,比如目標站點資料庫限制連線ip等,那麼工具小子可能在原始碼包進行的漏洞利用也就到此為止。

對於懂程式碼審計的人,結果就完全就不同了,它可以對原始碼進行安全審計,發現網站程式碼裡存在的漏洞,然後利用挖掘到的漏洞進行滲透。

3.這個時候有小白想說:那程式碼審計對程式設計能力的要求是什麼?

程式碼審計對程式語言的基礎有一定要求,至少要能看懂程式碼,這裡說的看懂程式碼不是簡單的理解幾個if.....else語句和for迴圈,而是能看的懂程式碼的邏輯,即使有很多的程式碼或函式沒有見過,也是可以去百度進行搜尋查詢的。

都說程式設計在語言在一塊都是一通百通,只要我們對程式設計思想理解的非常透徹,重新學習一門語言也是非常容易上手的,所以不管你之前寫過java還是C#程式,想玩一玩php的程式碼審計都應該不是什麼大的問題。

4.程式碼審計的思路

通常做程式碼審計都是檢查敏感函式的引數,然後回溯變數,判斷變數是否可控並且沒有經嚴格的過濾,這是一個逆向追蹤的過程。

而程式碼審計並非這一種手段,還可以先找出哪些檔案在接收外部傳入的引數,然後跟蹤變數的傳遞過程,觀察是否有變數傳入到高危函式裡,或傳遞的過程中是否有程式碼邏輯漏洞,這是一種正向追蹤的方式,這樣的挖掘方式比逆向追蹤挖掘的更全。

還有一種方式是直接挖掘功能點漏洞,根據自身經驗判斷該類應用通常在哪些功能中會出現漏洞,直接全篇閱讀該功能程式碼。

可能不少小白對於學習php程式碼審計還有一些迷茫,或許之前嘗試過學習,但是一直沒有很好的進展,因為程式碼審計是一門很專的技術活,要學好php程式碼審計,需要掌握以下幾點:

php程式語言特性和基礎要有

web前端基礎要有

③漏洞形成的原理要懂

④程式碼審計的思路要有

⑤不同系統和中介軟體之間的特性差異要了解