web-dev-qa-db-ja.com

Drupal 7で、777のアクセス許可が必要なときに* .phpファイルが/ filesフォルダーにアップロードされないようにする方法は?

こんにちは、最近作業しているサイトの1つが構成され、なんらかの方法でファイルフォルダーに多数のphpファイルがアップロードされ、大量のスパムの送信が開始されました。インストール中に、filesフォルダーに777のアクセス許可を設定するように求めているのはわかっていますが、アップロードされた場合にPHPスクリプトがそのディレクトリで実行されないようにする方法はあります。

screenshot

4

Drupalファイルのアップロード(コアまたはモジュール)は file_save_upload を使用する必要があり、それ自体も file_munge_filename を呼び出します。これらの2つの関数を組み合わせることで、ファイルにphpが含まれている場合でも、通常設定されているWebサーバーがそれらを実行するような方法で名前が付けられないようにする必要があります。また、コードを含むことが多いpl | py | cgi | asp | jsファイルに対する保護も備えています。

そのディレクトリに.phpファイルがあるように見えるので、ファイルがそこに到達した可能性がある他の方法を検討する必要があります。

  1. 任意のファイルのアップロードを許可するモジュールの脆弱性
  2. サーバーで実行されている他のいくつかのコードの脆弱性(Drupal以外)
  3. 安全でない構成(ユーザーがphpを実行できるようにする)を使用してこれらのファイルを直接ダウンロードし、DrupalのAPIを回避しました。
  4. ウイルスを使用してローカルコンピューターに保存されているパスワード(Filezillaなどから)を読み取る攻撃-これらは、あなたが思っているよりも一般的ですが、通常はファイルディレクトリを対象にしません。

私はいくつかのことを行うことをお勧めします:

  • ファイルの権限と所有権を確認します。これにより、どのWebサーバーユーザーがファイルをアップロードしたかがわかり、そこからファイルのアップロードに使用したコードを絞り込むことができます。または、それらがWebサーバー以外の特定のUNIXユーザーによって所有されていることに気付いた場合は、そのアカウントについて心配する必要があります。
  • ファイルがいつ作成されたかを確認する-バックアップを実行して、いつファイルが表示されたかを確認するか、ファイルのタイムスタンプを確認します(ほとんどのOSでは、ファイルの作成日時ではなく、ファイルの最終変更のみが可能です)。
  • Apacheログでこれらのファイルへのすべてのアクセスを確認し、どのIPがそれらにアクセスしているかを確認します(特にアクセスの最初の日付)。
  • Apacheログで、これらのIPから、およびそれらの日付から、サイトへの他のアクセスを確認してください。

これらの調査手順は、ファイルのアップロード方法を絞り込むのに役立ちます。理想的には、特定のイベントを見つけることができます(例:POST調査してサイトの一部のURLにアクセスすると、PHPを実行する方法です CKeditor/FCKeditor module問題 、それからあなたはそれがあなたのサイトがどのように悪用されたかを知ることができます。

サイトがどのように悪用されたかをして見つけた場合は、セキュリティの問題として報告してください: http://drupal.org/node/101494

9
greggles