PHPネットワークセキュリティにおけるコマンド実行の脆弱性の生成と性質

脆弱性の原因

  • コード層は厳密にはフィルタリングされません。アプリケーションがコマンドを動的に実行する危険な機能を直接的または間接的に使用しており、この機能の動作パラメータが制御可能である
  • システムの脆弱性によりコマンドインジェクションが発生する

脆弱性の性質

アプリケーションは、システム コマンドを実行するために一部の関数を呼び出す必要がある場合があります。サーバーがユーザーが提供するパラメーターを厳密にフィルタリングしないと、ユーザーが悪意のあるコードを送信してサーバーで実行され、コマンド実行の脆弱性が発生する可能性があります。

関与する機能

  • 1.システム
  • 2.exec()
  • 3.shell_exec()
  • 4.パススルー()
  • 5.popen()
  • 6. バッククォート

コマンド実行の脆弱性の害

  • 1. Webサーバープログラムの権限(Webユーザー権限)を継承してシステムコマンドを実行します。
  • 2. Web サーバーの権限を継承し、ファイルの読み取りと書き込みを行う
  • 3. リバウンドシェル
  • 4. ウェブサイト全体を制御する
  • 5. サーバー全体の制御

コマンド実行の脆弱性に対する防御

  • 1. 実行コマンド関数の使用を最小限にするか、disable_functions を無効にします。
  • 2. コマンドを実行する関数を入力する前に、パラメータをフィルタリングし、機密文字をエスケープします。
  • 3. パラメータ値は可能な限り引用符で囲み、結合する前に addslashes を呼び出してエスケープします。

コマンド実行関連機能の使用

システム()

  • 説明: 文字列をOSコマンドとして実行可能、独自の出力機能付き
  • テスト参照コード:

実行()

  • 説明: 文字列は OS コマンドとして実行できますが、出力はなく、実行結果を出力する必要があります。
  • exec() はデフォルトで最後の行のデータのみを出力します
  • すべての結果を出力したい場合は、トロイの木馬のような exec(ifconfig,$arr); print_r($arr); というパラメータを追加できます: <?php exec($_REQUEST[123],$) arr);print_r ($arr)?>
  • テスト参照コード

 

 

シェル_exec()

  • 説明: コマンドを実行すると、完全な情報が文字列形式で返されますが、関数はエコーされず、実行結果を出力する必要があります。
  • テスト参照コード

1

2

3

4

5

6

<?php

if(isset($_GET['cmd'])){

    print shell($_GET['cmd']);

}

?>

payload:?cmd=whoami

パススルー()

  • 説明: system() と同様に外部コマンドを実行しますが、この関数は実行を出力せずに結果を直接出力します。
  • テスト参照コード

1

2

3

4

5

6

<?php

if(isset($_GET['cmd'])){

    passthru($_GET['cmd']);

}

?>

payload:?cmd=whoami

ポペン()

  • 説明: OS コマンドは実行できますが、この関数はコマンドの結果を返さず、ファイル ポインタを返します。
  • テスト参照コード

1

2

3

4

5

6

7

<?php

if(isset($_GET['cmd'])){

    $cmd=$_GET['cmd'].">>1.txt";

    popen($cmd,'r');

}

?>

payload:?cmd=whoami

バックティック

  • 注: バックティック [``] 内の文字列も OS コマンドに解析されます。
  • バッククォートの後ろで実行されるコードは実際にはshell_exec()を呼び出すため、shell_exec()が無効になっている場合はバッククォートを使用できません。
  • テスト参照コード

1

2

3

4

5

6

7

<?php

if(isset($_GET['cmd'])){

    $cmd=$_GET['cmd'];

    print `$cmd`;

}

?>

payload:?cmd=whoami

これで、php ネットワーク セキュリティにおけるコマンド実行の脆弱性の生成と性質に関するこの記事は終わりです。

おすすめ

転載: blog.csdn.net/2302_76405773/article/details/130616168