web-dev-qa-db-ja.com

PHP

ダミーのウェブサイトで侵入テストを行っています。このウェブサイトでPHP Shellをアップロードできましたが、2つの問題があります:

  • PHPセーフモードが有効になっている
  • 権限が低い

PHPセーフモードをバイパスし、書き込み権限を取得して完全に侵入できるようにするための方法はありますか?

Screenshot of C99 Shell

3
codeur

PHPのsafe_modeは非推奨の機能です。これはPHP=レベルで共有サーバーのセキュリティ問題を解決するためのものでした。これは決して良いアイデアではなかったため、=の時点でこの機能は非推奨になり削除されましたPHP 5.4(ターゲットが実行中PHP 5.3.10これは古くなっています。)この回答は、safe_modeが最初から優れたアイデアではなかった理由を示しています。 PHPのsafe_modeをバイパスして特権を昇格させるという2つの部分が含まれています。

Safe_modeをバイパスする

Safe_modeの問題に取り組むとき、最初に注意すべき重要なことは、標準的な解決策は1つではなく、それは実際にはターゲットの構成(および少しの運)に依存します。以下は、うまくいくかもしれないテクニックの概要です。

  • pcntl_exec -運がよければ、PCNTL拡張が有効になります。そうであれば、safe_modeディレクティブの影響を受けないため、コードを実行するために使用できます。有効になっているかどうかを確認するには、echo function_exists('pcntl_exec');コマンドを実行します。
  • LD_PRELOADトリック-あまり知られていない事実は、safe_modeがアクセス可能な環境変数を制限する一方で、この設定を有効にするには、_safe_mode_allowed_env_vars_ディレクティブを設定する必要があります(var_dump(ini_get('safe_mode_allowed_env_vars'));を実行してその値を確認できます運が良ければ、空の文字列が返されます。つまり、環境に対するsafe_modeの制限が事実上無効になり、LD_Preloadトリックを説明どおりに使用して here を実行し、safe_modeをバイパスしてコードを実行できます。
  • Safe_modeをバイパスする別のオプションは、ターゲット上で利用可能でPHP以外のサーバー側テクノロジーを使用するシェルをアップロードすることです。最も一般的な候補はPerlですが、これについてはすでに説明していません。 PythonまたはRubyが使用可能かどうかを確認することもできます。どちらも使用できない場合は、 SSI Shell それが機能するかどうかを確認してください。
  • 最後に重要なことですが、PHPインタープリターの外部でコードが実行される可能性がある脆弱性を悪用します。最近公開されたそのような脆弱性は多数あり、ターゲットが古いバージョンを実行しているため、最も脆弱です。 CVE-2016-9137 などの脆弱性を見つけてコードを実行できる可能性があります。

特権の昇格

少し運が良ければ-書き込み権限の欠如はsafe_modeディレクティブの影響であり、したがってバイパスされるため、書き込み権限が付与されます。しかし、そのような運がない場合は、OSレベルで特権を昇格させる必要があります。このようなエスカレーションを実行するには、いくつかの方法があります。

ここまでたどり、この時点まですべてがうまくいったならおめでとうございます。これでターゲットを完全に侵害し、ルートレベルのシェルができたので、今度は書き上げの時間です。また、新たに得たすべての知識を覚えておく必要があります。大きな力には大きな責任が伴います。

2
Drag0nR3b0rn