一、前言
php代碼審計如字面意思,對php源代碼進行審查,理解代碼的邏輯,發現其中的安全漏洞。如審計代碼中是否存在sql注入,則檢查代碼中sql語句到數據庫的傳輸 和調用過程。
入門php代碼審計實際並無什么門檻要求,只需要理解基礎的php語法規則,以及理解各種類型漏洞的出現原因則可以開始嘗試審計php源代碼。通常的漏洞演示中sql語句會直接傳入php自帶的函數傳入數據庫執行,但在實際的軟件項目中,通常以面向對象的思想進行編程,則會涉及各種形式的封裝,調用,以及不同風格的框架,在這個條件下,只需要保持耐心跟蹤其調用過程即可。
另外關於代碼審計的思路而言,一種是通讀代碼逐行分析邏輯,另外一種是通過正則快速定位一些問題函數,再反向定位調用過程。這兩種方式也對應代碼審計的工具主流的實現思路,一種是通過語法分析的過程發現漏洞,另一者是定位問題函數實現。
不管什么方式,重點還是實戰閱讀代碼,累積經驗。
以上為個人觀點,謹慎吸收。
二、基礎知識要求
PHP語法
主流漏洞原理
三、入門閱讀 & 參考
《代碼審計入門總結》:http://bbs.ichunqiu.com/thread-8954-1-1.html
《php手冊》:http://php.net/manual/zh/
《代碼審計:企業級Web代碼安全架構》:https://read.douban.com/ebook/16642056/
四、審計實戰
基礎系列
基礎系列中的4篇文章基本是通過一些直觀的小案例來讓人理解從用戶的交互到代碼的執行這個過程中漏洞是以什么形式存在的,又是如何被利用的,初學者閱讀這幾篇文章可以讓人更加快速的理解代碼審計的過程,以及基本的審計思路。
常見WEB漏洞原理分析及利用方式——SQL注入篇 :
http://bbs.ichunqiu.com/thread-12694-1-1.html
常見WEB漏洞代碼層原理分析及利用方式——文件操作漏洞篇 :
http://bbs.ichunqiu.com/thread-13008-1-1.html
常見WEB漏洞代碼層原理分析及利用方式之Php代碼執行篇 :
http://bbs.ichunqiu.com/thread-13465-1-1.html
常見WEB漏洞代碼層原理分析及利用方式——文件操作 :
http://bbs.ichunqiu.com/thread-13408-1-1.html
高級系列
高級系列的幾篇其實就代碼審計的整個大的領域來說並不算高級,但是都有其特色,並且大部分是從真實的軟件項目開始講解,可以讓初學者理解實戰中可能會遇到的一些問題,以及實戰中的思考過程。
代碼審計之繞過后台權限限制,繼續sql注入:
http://bbs.ichunqiu.com/thread-10102-1-1.html
代碼審計之突破路徑限制刪除文件:
http://bbs.ichunqiu.com/thread-8979-1-1.html
代碼審計之任意用戶密碼找回漏洞:
http://bbs.ichunqiu.com/thread-10497-1-1.html
代碼審計之偽全局機制使用不當導致的致命后果:
http://bbs.ichunqiu.com/thread-11390-1-1.html
代碼審計之繞過addslashes總結:
http://bbs.ichunqiu.com/thread-10899-1-1.html
mel 和 bees系列都是指定了對某個實際軟件項目的審計,初學者可以跟隨作者的腳步進行挖掘,聯系,其他的類型則是一些雜亂的文章。
Melcms分析集合
代碼審計就該這么來 Mlecms Getshell:
http://bbs.ichunqiu.com/thread-13703-1-1.html
代碼審計就該這么來2 Mlecms 注入:
http://bbs.ichunqiu.com/thread-13714-1-1.html
{代碼審計思路} (通讀+審計) Mlecms(中危漏洞/不簡單):
http://bbs.ichunqiu.com/thread-11510-1-1.html
beescms分析集合
【代碼審計初探】beescms v4.0_R SQL:
http://bbs.ichunqiu.com/thread-12635-1-1.html
對Beescms SQL注入漏洞的進一步思考:
http://bbs.ichunqiu.com/thread-13606-1-1.html
代碼審計就該這么來3 beescms getshell:
http://bbs.ichunqiu.com/thread-13977-1-1.html
Beecms任意文件刪除:
http://bbs.ichunqiu.com/thread-14540-1-1.html
其他
PHP代碼審計:Null 字符問題:
http://bbs.ichunqiu.com/thread-4349-1-1.html
一個CMS案例實戰講解PHP代碼審計入門:
http://bbs.ichunqiu.com/thread-16775-1-1.html
PHP代碼審計儲存XSS形成防御加利用篇:
http://bbs.ichunqiu.com/thread-10532-1-1.html
ZZCMS的代碼審計:
http://bbs.ichunqiu.com/thread-14684-1-1.html
另外要提的一點是,不同語言編寫的web應用其實都有相似性,當你熟練了解一門語言的代碼審計過程后其實便可以進一步擴展到別的語言。你會發現基本原理是相似的,當然不同還是存在的,比如其中的addslashes和null的文章便是如此,它是php這門語言獨有的問題,其他還有的一些差異在這里不細說明。
五、i春秋課程推薦
PHP代碼審計實戰:
http://www.ichunqiu.com/course/54473
六、代碼審計工具推薦
RIPS
它能檢查出XSS ,sql注入,敏感信息泄漏,文件包含等常見漏洞;能夠采用正則方式掃描代碼發現漏洞;也可以采用自定義的語法掃描代碼發現問題。
下載鏈接:http://rips-scanner.sourceforge.net/
參考文章
工具推薦:三款自動化代碼審計工具:http://bbs.ichunqiu.com/thread-16776-1-1.html
七、關聯閱讀
Mybatis框架下SQL注入漏洞面面觀:
http://bbs.ichunqiu.com/thread-12574-1-1.html
如何用grep對PHP進行代碼審計:
http://bbs.ichunqiu.com/thread-16779-1-1.html
python 安全編碼&代碼審計:
http://bbs.ichunqiu.com/thread-16770-1-1.html
結語
本帖旨在幫助大家更好更系統的學習代碼審計,大家有任何建議望不吝賜教,
下期技術專題調研:
我們將在這兩天確定下周的技術專題,大家有想學習的指定的技術可以留言申請,我們會根據需求來調整策划專題,感謝大家支持啦!