私はWebアプリケーションハニーポット用のPHPサンドボックスを開発中です。 PHPサンドボックスは、RFI攻撃の一部として注入されたかもしれないPHPファイルを解析します。安全な環境でファイルを実行し、結果を返し、PHPスクリプトの出力を埋め込む必要があります。私たちは、これが真の応答であると信じるように攻撃者をだますことを望み、攻撃の次のステップを続行します。PHPサンドボックスのセキュリティ問題
サンドボックスを構築するために、Advance PHP Debugger(ADP)を使用しました。 rename_function
とoverride_function
を使用すると、脆弱なPHP関数が書き直されました。 exec
、disk_free_space
などの一部の機能は、偽の返信を送信するために書き直されました。他のすべての関数は何も返さない。 Here'sは、考慮されている機能の完全なリストです。
また、入力スクリプトはサンドボックス内で最大10秒間だけ実行されます。その後、サンドボックスプロセス全体が終了します。
このリストは十分ですか?これによってサンドボックスはWebアプリケーションの一部として十分に安全になりますか?
このようなブロック機能を呼び出すと、さらにセキュリティ対策が講じられますか?
最後に、これはハニーポットです。だから、私たちの返信をできるだけ真の返答に近づけたいと思っています。だから、
dns_check_record
とgethostbyname
のようなDNS関数呼び出しをブロックすることで、スクリプトの実行範囲が不必要に制限されます。 (なぜ彼らが最初に存在するのかわからない)要するに、私はどの要素をリストから追加/削除すべきかを知りたい。
これについてのその他のご提案/アドバイスは高く評価されます。
実際にそれを実行せずにコードの出力?私は、ラウンドアバウトの方法で出力を集めるようにコードの非常に複雑な分析を行うことができると思いますが、それ以外のものはありますか?そして、これはあまり役に立ちませんが、私の提案はあなたがこれをやっていないということです。何かが誤ってあなたのハニーポットをスライドすると、おっと!侵害されたサーバー。それは決して楽しいものではありません。 – Corbin
なぜこれが必要なのか分かりませんか?最初にRFI攻撃を防ぐことはできませんか?または、これは潜在的に既に発生しているし、あなたのサーバー上のどのコードも侵害されていないことを確認しようとしていますか? – rdlowrey
非常に危険なプロジェクトのように聞こえます。私は、このケースで完璧なサンドボックスを確保する唯一の方法は、実際のハニーポットを別のサーバー(おそらく迅速なリロードを可能にするVM)にして、実際のサーバーにフルPHPスクリプトを2番目のサーバーに渡すことです。あなたが何かを忘れた場合、このように深刻なことは損なわれません。 – MitMaro