程式碼審計學習筆記
一、程式碼審計環境搭建
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程式碼安全架構》 版權歸作者:尹毅 所有