PHPコード監査のための環境構成


序文

PHP コード監査とは、文字通り、PHP のソース コードをレビューし、コードのロジックを理解し、コード内のセキュリティ ホールを見つけることを意味します。


1. PHPの環境構築

1.1 phpstudy および phpstorm のダウンロード設定

phpstudy と phpstorm のダウンロード構成

1.2 Xdebug の設定

Xdebug 構成

1.3 phpstudyの基本的な使い方

画像の説明を追加してください
画像の説明を追加してください
画像の説明を追加してください
画像の説明を追加してください

1.4 phpstorm の基本的な使い方

次の図に示すように、検索と置換の操作は
ここに画像の説明を挿入
ここに画像の説明を挿入

1.5 RIPRのダウンロードと使用

  1. RIPRのダウンロード

RIPS は、強力な脆弱性マイニング機能を備えたオープンソースの自動コード監査ツールです。これは PHP 言語で書かれており、PHP コードのセキュリティを静的に監査するために使用されます。
RIPSダウンロードアドレス

ここに画像の説明を挿入

ダウンロードが成功したら、それを Web サイトの直下に置くと、直接アクセスして使用できるようになります。私は、以下に示すように、パゴダの下にダウンロードして、直接アクセスしました。
ここに画像の説明を挿入

  1. RIPS使用
    ここに画像の説明を挿入
    ここに画像の説明を挿入
    ここに画像の説明を挿入

2. コード監査構成ファイル

2.5 PHP コア構成 (php.ini)

1.セーフモード

safe_mode=on は、PHP がセーフ モードをオンにしたことを意味します。セーフ モードをオンにするということは、PHP のいくつかの危険な機能が無効になるか制限されることを意味します文件操作函数就被限制使用了,只有对该文件有读写权限的用户才可以操作该函数:具体函数有如下

  • read()

如下函数被禁止使用:

  • シェル_exec()
  • exec()
2.magic_quote_gpc

magic_quote_gpc=on は、制御可能な変数について、「/」などの文字がある場合はエスケープされ、制御可能な変数が出力されるときにエスケープされないことを意味します。つまり、addlashes が入力に使用され、stripslashes()出力に使用されます

3.magic_quote_runtime

ファイル操作の場合、ファイル内に「/」などの文字が含まれる場合はエスケープされます。

4. register_global

register_globel が有効な場合、GET ['name'] は _GET['name'] と同等です。GET [名前' ]名前と同等です
如上的配置变量再PHP5.4后不在使用

5. 機能を無効にする

一部の機能を無効にします。各機能はカンマで区切られます。disable_functions で無効にされた機能はバイパスされる場合があります。

6.allow_url_include
7.allow_url_open

変数 6 と 7 は主にいくつかの PHP 疑似プロトコルに関連しています

8.オープンベース

open_basedir は、PHP が動作できるファイル ディレクトリと同じです。

2.5 mysql のコア構成

1. secure_file_priv

secure-file-priv パラメータは、LOAD DATA、SELECT ... OUTFILE、LOAD_FILE() の転送先となる指定されたディレクトリを制限するために使用されます (phpstudy:mysql.ini ファイルで設定、pagoda: /etc/my で設定secure-file-priv在mysql.ini文件或/etc/my.cnf中,如果指定文件没有该字段,可以自行添加) .cnf)

  • secure_file_priv の値は null です。これは、mysqld がインポート/エクスポートを許可されていないことを意味します。
  • secure_file_priv の値が /tmp/ の場合、mysqld のインポート/エクスポートは /tmp/ ディレクトリでのみ実行できることを意味します
  • secure_file_priv の値に特定の値がない場合は、mysqld のインポート/エクスポートに制限がないことを意味します

上に示したように、secure_file_priv が有効になっている場合、loadfile() を使用して outfile 関数にアクセスするには、次の設定が必要です。

  1. ロードファイル
  • 現在のユーザーには読み取り権限があります
  • Webサイトの絶対パスを知る
  1. 外部ファイルに
  • 現在のユーザーには書き込み権限があります
  • Webサイトの絶対パスを知る

現在のユーザーの権限を知りたい場合は、次のコマンドを使用できます。

' order by 2--   查看字段数
' union all select database(),user()--   查看当前数据库和用户
注意,如下的root表示如上user()的结果
查看当前用户是否有文件读写的权限:
1' and (select File_priv from mysql.user where user='root' and host='localhost')='Y'-- 
1' and (select File_priv from mysql.user where user='root' and host='%')='Y'-- 

mysql データベースの user テーブルには現在のユーザーの権限情報が含まれており、上記のブール値注入を使用すると、現在のユーザーが読み取りおよび書き込み権限を持っているかどうかを確認できます。

2.ベース

このパラメータは、MySQL をインストールするためのインストール パスを指定します。フル パスを入力すると、相対パスに起因する問題を解決できます。

3. データディレクトリ

このパラメータは、MySQL データベース ファイルが配置されるパスを指定します。データベース ファイルは、通常 MySQL データ ファイルと呼ばれるものです。( 宝塔面板只能够在这个路径使用into outefile)


おすすめ

転載: blog.csdn.net/qq_53568983/article/details/128759262