1. 程式人生 > >程式碼審計學習筆記

程式碼審計學習筆記

一、程式碼審計環境搭建

1.1 wamp/wnmp環境搭建

常用的整合環境有phpStudy、WampServer、XAMPP及AppServ。

phpStudy=Apache+Nginx+Lighttpd+PHP+MySQL+phpMyadmin+Zend Optimizer+Zend Loader官網:http://phpstudy.php.cn/downlo...

1.2 lamp/lnmp環境搭建

常用的整合環境有phpStudy for Linux、lanmp、XAMPP。

wget -c http://lamp.phpstudy.net/phpstudy.bin     #下載
chmod +x phpstudy.bin     #許可權設定
./phpstudy.bin     #執行安裝

1.3 PHP核心配置詳解

常量 含義
PHP_INI_USER 該配置選項可在使用者的PHP指令碼或Windows登錄檔中設定
PHP_INI_PERDIR 該配置選項可在php.ini .htaccess或httpd.conf中設定
PHP_INI_SYSTEM 該配置選項可在php.ini 或httpd.conf中設定
PHP_INI_ALL 該配置選項可在任何地方設定
php.ini only 該配置選項僅可在php.ini中配置

1. register_globals(全域性變數註冊開關)

該選項在on的情況下,會直接把使用者GET、POST等方式提交上來的引數註冊成全域性變數並初始化為引數對應的值,使得提交引數可以直接在指令碼中使用。PHP 5.4.0移除了該選項。

2. allow_url_include(是否允許遠端包含)

該配置為on的情況下,可以直接包含遠端檔案,當存在include ($var)且$var可控的情況下,可以直接控制$var變數來執行PHP程式碼。與之類似的配置有allow_url_fopen,配置是否允許開啟遠端檔案。

3. magic_quotes_gpc(魔術引號自動過濾)

自動在GET、POST、Cookie變數中的單引號(')、雙引號(")、反斜槓()及空字元(NULL)的前面加上反斜槓()。但是PHP 5中的magic_quotes_gpc不會過濾$_SERVER變數,導致很多類似client-ip、referer一類漏洞能夠利用。PHP 5.4之後的版本被取消。

4. magic_quotes_runtime(魔術引號自動過濾)

也是自動在單引號(')、雙引號(")、反斜槓()及空字元(NULL)的前面加上反斜槓()。與magic_quotes_gpc區別是:處理的物件不一樣,magic_quotes_runtime只對從資料庫或者檔案中獲取的資料進行過濾。PHP 5.4之後的版本被取消。

5. magic_quotes_sybase(魔術引號自動過濾)

會覆蓋magic_quotes_gpc的配置,與gpc的共同點是處理的物件一致,區別是處理方式不一樣,sybase僅僅轉義了空字元和把單引號變成了雙引號。PHP 5.4之後的版本被取消。

6. safe_mode(安全模式)

聯動配置指令有:safe_mode_include_dir、safe_mode_exec_dir、safe_mode_env_vars、safe_mode_protect_env_vars。PHP 5.4之後的版本被取消。(1) 所有檔案操作函式(unlink()、file()、include())都會受到限制。(2) 通過函式popen()、system()及exec()等函式執行命令或程式會提示錯誤。

7. open_basedir(PHP可訪問目錄)

用來限制PHP只能訪問哪些目錄。多個目錄以分號(;)分割,指定的限制實際上是字首,而不是目錄名。如:open_basedir=/www/a,/www/a和/www/ab都可以訪問,如果要將訪問僅限制在指定目錄內,應該用斜線結束路徑名。

8. disable_functions(禁用函式)

多個函式以逗號號(,)分割。

9. display_error和display_reporting(錯誤顯示)

二、審計輔助與漏洞驗證工具

2.1 程式碼編輯器

2.1.1. Notepad++

2.1.2. UltraEdit

2.1.3. Zend Stdio

2.2 程式碼審計工具

2.2.1 Seay原始碼設計系統

特點:(1) 一鍵自動化白盒審計(2) 程式碼除錯(3) 正則編碼(4) 自定義外掛及規則

2.2.2 Fortify SCA

2.2.3 RIPS

2.3 漏洞驗證輔助

2.3.1 Burp Suite

模組:Proxy、Spider、Scanner、Intruder、Repeater、Sequence、Decoder、Comparer

2.3.2 瀏覽器擴充套件

Hackbar:URL、POST資料、Referer的引數設定、編解碼。Firebug:對網頁HTML、CSS等元素進行編輯,網路功能嗅探Request和Response資料包。Live HTTP Headers:抓取瀏覽器Requset和Response資料包,支援對Request資料進行修改後再次請求。Modify:新增和修改Request中的HTTP Header的欄位。

2.3.3 編碼轉換和加解密工具

超級加解密轉換工具

2.3.4 正則除錯工具

靈者正則除錯

2.3.5 SQL執行監控工具

三、通用程式碼審計思路

四、漏洞挖掘與防範(基礎篇)

五、漏洞挖掘與防範(進階篇)

六、漏洞挖掘與防範(防範篇)

七、二次漏洞審計

八、程式碼審計小技巧

九、引數安全過濾

十、使用安全的加密演算法

十一、業務功能安全設計

十二、應用安全體系建設

參考:《程式碼審計:企業級web程式碼安全架構》 版權歸作者:尹毅 所有