代碼在不同環境下執行的結果也會大有不同,可能就是因為一個配置問題,導致一個非常高危的漏洞能夠利用;也可能你已經找到一個漏洞就因為你的配置問題,導致你弄了好久都無法構造成功的漏洞利用代碼。然而,在不同的PHP版本中配置指令也會有不一樣的地方,新的版本可能會增加或者刪除部分指令,改變指令默認設置或者固定設置命令,因此,我們在代碼審計之前需要非常熟悉PHP各個版本中配置文件的核心指令,才可以高效的挖掘到高質量的漏洞。
PHP_INI_*常量常量 | 含義 | PHP__INI__USER | 該配置選項可以再用戶的PHP腳本或Windows注冊表中設置 | PHP__INI__PERDIR | 該配置選項可以再php.ini ..htaccess或http.conf中設置 | PHP__INI__SYSTEM | 該設置選項可以在php.ini或http.conf中設置 | PHP__INI__ALL | 該配置選項可在任何地方設置 | php.ini only | 該設置選項僅可在php.ini中設置 |
PHP的配置文件指令多達數百項,這里就不一一做介紹了,如果對這方面有興趣的話可以去PHP配置官方說明文件中查看具體內容: http://www.php.net/manual/zh/ini.list.php
PHP常見的基本設置(1)open_basedir設置
open_basedir能限制html' target='_blank'>應用程序能訪問的目錄,檢查有沒有對open_basedir進行設置,當然有的通過web服務器來設置,例如:apache的php_admin_value,nginx+fcgi通過conf來控制。
(2)allow_url_fopen設置
如果allow_url_fopen=ON,那么PHP可以讀取遠程文件進行操作,這個容易被攻擊者利用。
(3)allow_url_include設置
如果allow_url_include=ON,那么PHP可以包含遠程文件,會導致嚴重漏洞。
(4)safe_mode_exec_dir設置
這個選項能控制php可調用的外部命令的目錄,如果php程序中有調用外部命令,那么知道外部命令的目錄,能控制程序的風險。
(5)magic_quote_gpc設置
這個選項能轉義提交給參數中的特殊字符,建議設置magic_quote_gpc=ON
(6)register_globals設置
開啟這個選項,將會導致PHP對所有外部提交的變量注冊為全局變量,后果相當嚴重。
(7)safe_mode設置
safe_mode是php的重要安全特性,建議開啟
(8)session_use_trans_sid設置
如果啟動session_use_trans_sid,會導致PHP通過url傳遞會話ID,這樣會導致攻擊者容易劫持當前會話,或者欺騙用戶使用已被攻擊者控制的現有會話。
(9)display_errors設置
如果啟動此選項,PHP將會輸出所有的錯誤或警告信息,攻擊者能利用這些信息獲取web根路徑等敏感信息。
(10)expose_php設置
如果啟動expose_php選項,那么由php解釋其生成的每個響應都會包含主機系統上所安裝的PHP版本。了解到遠程服務器上運行的PHP版本后,攻擊者就能針對系統枚舉已知的盜取手段,從而大大增加成功發動攻擊的機會。
(11)magic_quotes_sybase(魔術引號自動過濾)
magic_quotes_sybase指令用于自動過濾特殊字符,當設置為on時,它會覆蓋掉magic_quotes_gpc=on的配置,也就是說,及時配置了gpc=on也是沒有效果的。這個指令與gpc的共同點是處理的對象一致,即都是對POST/GET/Cookie進行處理。
(12)disable_functions(禁用函數)
在正式的生產環境當中,為了更安全地運行PHP,也可以使用disable_functions指令來禁止一些敏感函數的使用。當你想用本指令禁止一些危險函數是,切記要把dl()函數也加入到禁止列表,因為攻擊者可以利用dl()函數來加載自定義的PHP擴展以突破disable_function指令的限制。
相關推薦:
php代碼審計(一)-----調試函數
以上就是PHP代碼審計——2、PHP代碼審計之PHP環境簡介 的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答