PHP 代碼審計基礎
![attachments-2020-03-sVjYgSsz5e7aba2fe0a37.jpg](http://static.javashuo.com/static/loading.gif)
第一部分 審計流程
- 1.用戶請求的處理流程
獲取請求php
全局過濾sql
模塊文件數據庫
C函數內容安全
M函數內容服務器
V顯示框架
- 2.通讀原文
函數集文件函數
配置文件網站
安全過濾文件url
Index文件spa
主目錄
模塊目錄
插件目錄
上傳目錄
模塊目錄
數據目錄
配置目錄
配置文件
公共函數文件
安全過濾文件
數據庫結構
入口文件
- 4.敏感關鍵字回溯參數
- 優勢:
- 高效的挖掘漏洞
- 判斷敏感觸發點的位置以及上下文,追溯參數源頭
缺點:
功能點定向審計
-
- 程序安裝
- 文件上傳
- 文件管理
- 登陸驗證
- 備份恢復
- 找回密碼
- 例子
Dami cms
帳戶功能
-
- 登陸
- 會員資料
- 找回密碼
- 註冊
- 修改密碼
- 個人投稿
- 個人訂單
第二部分 PHP核心配置
-
- 1.大小寫敏感
- directive = value(指令=值)
- foo = bar ≠ FOO = bar
-
- 2.運算符
- 空值的表達方式
- foo = ;
- foo = none;
- foo = 「none」;
-
- 3.安全模式
- safe_mode=off (PHP 5.4移除 )限制文檔存取、環境變量的讀取以及空值外部程序的運行
- 限制環節變量的讀取
- safe_mode_allowed_env_vas = string
- 指定PGP程序能夠改變的環境變量的前綴,當值爲空的時候,能夠改變任何的環境變量
- 外部程序執行目錄
- 禁用危險函數
- com 組件
- com.allow_dcom=false
- PHP設置在安全模式下(safe_mode),容許攻擊者使用com()函數穿件系統組件來執行任意命令
- 使用com函數須要在php.ini中配置extension=php_com_dotnet.dll,若是PHP VERSION<5.4.5,則不須要
- 全局變量註冊開關
- register_globals = off
- php.ini的register_globals選項的默認值設爲off,在4.2版本以前是默認開啓的,當register_globals爲on時,程序接受來自服務器的環境變量,包括表單提取的變量
- register_globals = Off,服務器獲取數據時候採用**$_GET['name']** 來獲取數據
- register_globals = On ,服務器採用POST或者GET來提交變量,都會使用全局變量來接受取值
- 魔術引號自動過濾
- magic_quotes_gpc=On PHP4.5移除
- magic_quotes_gpc=Off 在php.ini中默認關閉,會對sql語句中的單引號、雙引號、反斜槓和空字符加上反斜槓轉義,它會影響HTTP請求的數據(GET POST Cookies),同時能夠在php代碼中使用addslashes來轉義,經過stripslashes來刪除轉義
- 遠程文件
- 是否容許包含遠程文件
- allow_url_include = off
- 設置爲On的狀況下,能夠直接包含遠程文件,若包含的變量爲可控的狀況下,能夠直接控制變量來執行PHP代碼
是否容許打開遠程文件
-
-
-
- allow_url_open = on
- 容許本地PHP文件經過URL重寫的方式來打開和關閉權限,默認的封裝協議提供ftp和http協議訪問文件
- 目錄權限
- HTTP頭部版本信息
- expose_php = off
- 防止了經過http頭部泄露的php版本信息
- 文件上傳臨時目錄
- upload_tmp_dir=
- 上傳文件臨時保存目錄,若是不設置,採用系統的臨時目錄
- 用戶能夠訪問目錄
- open_basedir = E:\Local Test\WWW
- 可以控制PHP腳本只能訪問指定的目錄。
- 錯誤信息
- 內部錯誤選項
- display_errors = on
- 代表顯示php腳本的內部錯誤,錯誤回顯
- 錯誤報告級別
- error_reporting = E_ALL & ~E_NOTICE
- 將錯誤級別調到最高,顯示全部的問題,方便排錯
第三部分 代碼調試及Xdebug的配置使用
- echo
- 最簡單的輸出數據調試方法,通常用來輸出變量值或者不肯定執行到哪一個分支
- print_r var_dump debug_zval_dump
- 這個主要輸出變量的數據值,可是debug_zval_dump輸出結果會有refcount,記錄一個變量被引用的次數
- debug_print_backtrace
- exit()
![attachments-2020-03-ydebVzcc5e7ab8c3221ad.jpg](http://static.javashuo.com/static/loading.gif)
歡迎關注本站公眾號,獲取更多信息