php核心配置
register_globals
全域性變數註冊開關
設定為on時,把get/post的變數註冊成全域性變數
php 5.4.0中移除
allow_url_include
包含遠端檔案
設定為on時,可包含遠端檔案
php 5.2後預設為off
allow_url_fopen
開啟遠端檔案
magic_quotes_gpc
魔術引號自動過濾
設定為on時,自動在get/post/cookie變數中',",\,null的前面加上\
php5不會過濾$_server變數,php5.4以後移除
magic_quotes_runtime
魔術引號自動過濾
與mq_gpc的區別:mq_runtime只過濾從資料庫/檔案中獲取的資料
php5.4以後移除
magic_quotes_sybase
魔術引號自動過濾
會覆蓋掉_gpc;僅僅轉義null和把'替換成"
php5.4以後移除
safe_mode
安全模式
聯動配置指令有很多;......
php5.4以後移除
open_basedir
php可訪問目錄
用;分割多個目錄,且以字首而非目錄劃分
php5.2.3以後範圍時php_ini_all
disable_functions
禁用函式
如果使用此指令,切記把dl()函式也加入到禁用列表
display_errors/error_reporting
錯誤顯示
d_errors為off時,關閉錯誤回顯,為on時,可配置e_reporting,等級制
。。。審計思路
1)敏感關鍵字
2)可控變數
3)敏感功能點
4)通讀**
sql注入
經常出現在登入頁面/獲取http頭/訂單處理等地方。
防範1.addslashes函式
過濾的值範圍和_gpc時一樣的
2.mysql_[real_]escape_string函式
在php 4.0.3以上,\x00 \n \r \ ' " \xla受影響
3.intval等字元轉化
上面提到的過濾方式,對int型別注入效果並不好。
4.pdo prepare預編譯
xss漏洞
輸出函式:print/print_r/echo/var_dump/printf/sprintf/die/var_export
csrf漏洞
csrf主要用於越權操作,所以漏洞自然在有許可權控制的地方,像管理後台/會員中心/論壇帖子以及交易管理等。
黑盒挖掘經驗:開啟幾個有非靜態操作的頁面,抓包看看有沒有token,如果沒有的話,再直接請求(不帶referer)這個頁面,如果返回的資料還是一樣的話,那說明很有可能有cstf漏洞了。
檔案包含漏洞
include/include_once/require/require_once
檔案包含漏洞大多出現在模組載入/模板載入以及cache呼叫的地方,比如傳入的模組名引數,實際上是直接把這個拼接到了包含檔案的路徑中。
檔案包含截斷:
1.%00;受限於gpc和addslashes,php5.3之後被修復。
2.././....;不受限gpc,同樣在php5.3之後被修復。windows下240個.或者./能夠截斷,linux2038個./組合才能截斷
檔案上傳漏洞
move_uploaded_file
1.未過濾或本地過濾
2.黑名單拓展名過濾
3.檔案頭/content-type驗證繞過
**執行漏洞
eval/assert/preg_replace/call_user_func/call_user_func_array/array_map等,還有php東陶函式$a($b)
preg_replace:讀字串進行正則處理,當pattern部分帶/e修飾符時,replacement的值會被當成php**執行。
call_user_func和array_map等數十個函式...
命令執行漏洞
system/exec/shell_exec/passthru/pcntl_exec/popen/proc_open/另外``實際上時呼叫shell_exec函式
system/exec/shell_exec/passthru會執行命令並直接回顯結果
pcntl_exec:pcntl是php的多程序處理拓展,在處理大量任務的情況下會使用到
popen/prc_open不會直接回顯結果,而是返回乙個檔案指標:popen('whoami >> d:2.txt','r')
變數覆蓋漏洞
extract/parse_str,import_request_variables則是用在沒有開啟全域性變數註冊的時候,呼叫這個函式則相當於開啟了全部變數這側,php5.4以後被取消。
extract需要一定條件,沒有第二個引數或者第二個引數extract_type為extr_overwrite/extr_if_exists時,可覆蓋。
parse_str直接覆蓋
import_request_variables把get/post/cookie的引數註冊成變數,用在register_globals被禁止時,需要php4.1~5.4。
業務邏輯漏洞
邏輯漏洞很大,這裡單說業務邏輯上面的漏洞。
支付/找回密碼/程式安裝等。
挖掘經驗:通讀**,理解業務流程。
值得關注的點:程式是否可重複安裝/修改密碼處是否可越權修改其他使用者密碼/找回密碼驗證碼是否可暴力破解以及修改其他使用者密碼/cookie是否可**/cookie驗證是否可繞過等。
php審計基礎四 變數覆蓋
1 extract 函式 extract 函式從陣列中將變數匯入到當前的符號表。該函式使用陣列鍵名作為變數名,使用陣列鍵值作為變數值。針對陣列中的每個元素,將在當前符號表中建立對應的乙個變數。當 是 b 3 a array b 1 extract a print r b b的值被覆蓋,輸出的值變成1...
php審計基礎三 php封裝協議小總結
php stdin 主要用於php cli 的輸入 應用 while line fopen php stdin r 主要用於php cli的輸出 應用 fh fopen php stdout w fwrite fh,標準輸出php stdout n fclose fh fwrite stdout,標...
PHP安裝檔案的審計
一般php程式都有乙個初始安裝的問題,如果使用了一些cms安裝後且沒有刪除安裝檔案的話,就會導致二次安裝等問題.具體但不限於以下幾種情況 無驗證功能,任意重灌覆蓋 get step 跳過限制步驟 變數覆蓋導致從新安裝 判斷lock後跳轉無exit 解析install.php.bak漏洞 其他特定功能...