最初に、事前に、推定攻撃者が何を達成しようとしているのかわかりません。たぶん、奇妙なセッションID攻撃に対して脆弱なPHPスクリプトまたはPHPバージョンがあります。ただし、おそらく心配する必要はありません。
サーバーは期待どおりに動作しました。200は、Apacheが渡されるURLをどのように解釈するかにより、その特定の状況で予期されるコードです。
最初に、http://allrequestsallowed.com
より一般的な「Host:」ヘッダーのように扱われます(これはRFCで指定されているとは思わず、他のサーバーがこのように解釈しない可能性があることに注意してください、これはセクション5.1のRFC 2616で指定されています。 2、クライアントがそのフォームを使用することはめったにありませんが、すみません、しばらく前に書いたHTTPサーバーの実装を修正する必要があります...)。
さて、おそらく「allrequestsallowed.com」という名前のサイトはないでしょう。それでは、ApacheがHost:
認識しないホスト名のヘッダー(または同等のもの)を取得するとどうなりますか?デフォルトとして最初の仮想ホストを選択します。これは、Apacheの明確に定義され、文書化された動作です。したがって、最初の仮想ホスト(または仮想ホストが存在しない場合はメインサーバーの構成)が何であれ、その名前が何であっても引き継ぎます。
これで、指定されたURLの残りの部分は、パス/
、およびGETパラメーター(?PHPSESSID...
ビット)の2つの部分で構成されます。
これで、/
ほとんどすべてのWebサーバーにパスが存在するはずです。ほとんどの場合、それindex.html
はindex.php
スクリプトのようなものまたはおそらくスクリプトにマップされますが、もちろんこれはオーバーライドできます。
静的なHTMLファイルにマップする場合、異常なことはまったく起こりません。ファイルのコンテンツが返されます。つまり、パラメーターは単に無視されます。(特定の高度な設定ディレクティブが設定されていないと仮定すると、ほぼ確実に設定されません。)
一方、それがなんらかのスクリプトである場合、そのPHPSESSID
変数はスクリプトに渡されます。スクリプトが実際にその変数を使用する場合(この特定のケースでは、PHPの組み込みセッション処理を使用するPHPスクリプトのみが使用される可能性が高い)、その動作はコンテンツに依存します。
ただし、おそらく、/
セッションを使用してPHPスクリプトにマップしたとしても、特筆すべきことは何も起こりません。セッションIDはおそらく存在しないため、無視されるか、スクリプトにエラーが表示されます。
まれに、セッションIDが存在する場合、攻撃者は誰かのセッションをハイジャックする可能性があります。それは悪いことですが、それ自体は実際にはセキュリティホールではありません-攻撃者がセッションID情報を取得した場所であればどこでもホールになります(HTTPSを使用していない場合、ワイヤレスネットワークを探るのは良い候補です)。実際には、元々セッションが実行されていたユーザーが実行できなかったことを実行することはできません。
編集:さらに、SESSIONID内の '%5C'はバックスラッシュ文字にマップされます。これは、Windowsホストでのディレクトリトラバーサル攻撃のテストのようです。
curl -v http://allrequestsallowed.com/?PHPSESSID=5gh6ncjh00043YVMWTW_B%5CFAP -x www.example.com:80
。デフォルトの設定は、ubuntuシステムで、意味のあるコンテンツのない「Welcome to nginx」ページを返すようです。したがって、200の応答ですが、単純なキャッチオールページです。実際には、要求を他の場所またはそのようなものにプロキシするわけではありません。