POSTページへのリクエストの代わりにGETリクエストが送信された場合、ウェブサイトのサーバー側コードをリークすることは可能ですか?アイデアは、POST http://<server url>/index.php
などのWebページに対して要求が行われ、POST要求を介して渡されるパラメーターが読み取られ、サーバー側のコードがPHP =が実行され、HTML出力がユーザーに返されます。ただし、GET要求がWebページに対してサーバーに送信された場合、サーバーはサーバー側のコードを実行せず、単にindex.php
を最後に返します。ユーザーがサーバー側コードをリークします。
これは一般的な脆弱性であると聞きましたが、これが存在するシナリオを見つけることができません。また、通常どのサーバー構成でこの脆弱性が発生する可能性がありますか?
ありがとう
ジョン
ただし、ウェブページのGETリクエストがサーバーに送信された場合、サーバーはサーバーサイドコードを実行しません。サーバーサイドコードをリークしているエンドユーザーに
index.php
を返すだけです。
あなたの仮定は間違っています。 GETまたはPOSTは、ソースコードリークに関連するものを変更しません。これらは同じ方法で処理され、結果は通常返されるHTMLになります。
POSTとGETの主な違い:
GETリクエストはアドレスバーに完全に表示され、POSTは表示されません
GETリクエストをパスワードでブックマークすると、パスワードも記録されます。POSTは記録されません。
GETリクエストはWebサーバーログに完全に書き込まれます。POST通常は
誰かがウェブサーバーのログを読み取った場合、すべてのリクエストのすべての情報はGETから読み取ることができますが、POSTからは読み取れません
POSTを使用すると、サイトに対してCSRF攻撃を実行するのが少し難しくなりますが、ソースリークとはまったく関係がありません。
私が見つけることができる最も近い一致は この脆弱性 です。
この脆弱性の単純な悪用ケースは、サイト上の任意のPHPファイルのソースコードを取得することです。これは、単純な「-s」クエリパラメータで実行できます
たとえば、ページがexample.com/foo.php
あなたは単に-s
作る example.com/foo.php-s
。これにより、脆弱なシステムのソースコードが明らかになります。
ただし、記事には、これにはGETリクエストが必要であるとは記載されていませんが、ブラウザでリクエストを変更するだけでGETを使用する方が簡単です。