web-dev-qa-db-ja.com

POSTリクエストの代わりにHTTP GETを使用すると、ソースコードがリークする可能性がありますか?

POSTページへのリクエストの代わりにGETリクエストが送信された場合、ウェブサイトのサーバー側コードをリークすることは可能ですか?アイデアは、POST http://<server url>/index.phpなどのWebページに対して要求が行われ、POST要求を介して渡されるパラメーターが読み取られ、サーバー側のコードがPHP =が実行され、HTML出力がユーザーに返されます。ただし、GET要求がWebページに対してサーバーに送信された場合、サーバーはサーバー側のコードを実行せず、単にindex.phpを最後に返します。ユーザーがサーバー側コードをリークします。

これは一般的な脆弱性であると聞きましたが、これが存在するシナリオを見つけることができません。また、通常どのサーバー構成でこの脆弱性が発生する可能性がありますか?

ありがとう

ジョン

2
John

ただし、ウェブページのGETリクエストがサーバーに送信された場合、サーバーはサーバーサイドコードを実行しません。サーバーサイドコードをリークしているエンドユーザーにindex.phpを返すだけです。

あなたの仮定は間違っています。 GETまたはPOSTは、ソースコードリークに関連するものを変更しません。これらは同じ方法で処理され、結果は通常返されるHTMLになります。

POSTとGETの主な違い:

  • GETリクエストはアドレスバーに完全に表示され、POSTは表示されません

    GETリクエストをパスワードでブックマークすると、パスワードも記録されます。POSTは記録されません。

  • GETリクエストはWebサーバーログに完全に書き込まれます。POST通常は

    誰かがウェブサーバーのログを読み取った場合、すべてのリクエストのすべての情報はGETから読み取ることができますが、POSTからは読み取れません

POSTを使用すると、サイトに対してCSRF攻撃を実行するのが少し難しくなりますが、ソースリークとはまったく関係がありません。

4
ThoriumBR

私が見つけることができる最も近い一致は この脆弱性 です。

この脆弱性の単純な悪用ケースは、サイト上の任意のPHPファイルのソースコードを取得することです。これは、単純な「-s」クエリパラメータで実行できます

たとえば、ページがexample.com/foo.phpあなたは単に-s 作る example.com/foo.php-s。これにより、脆弱なシステムのソースコードが明らかになります。

ただし、記事には、これにはGETリクエストが必要であるとは記載されていませんが、ブラウザでリクエストを変更するだけでGETを使用する方が簡単です。

3
SilverlightFox