web-dev-qa-db-ja.com

パストラバーサルエクスプロイト

私はこのURLをテストすると次のURLをテストするため、パストラバーサルに対して脆弱であると思われるApacheサーバーを持っています:http://localhost/ATI/../test.txt

これはhttp://localhost/test.txtに変更され、サーバーはtest.txtファイルの内容を表示します。

ただし、このURLをテストすると、http://localhost/ATI/../../../../../../../../../../../../../../../../../../../etc/Apache2/apach2.confhttp://localhost/etc/Apache2/Apache2.confに変更されるため、サーバーは404 Not found responseを提供し、Apache2.confファイルのコンテンツを表示しません。

私の最初の質問は、サーバー上のApacheのデフォルト設定を変更していないという事実に関して、パストラバーサル攻撃に対して安全であることを意味しますか?

そして私の2番目の質問は、サーバーがWebサーバーフォルダーのルートを越えてトラバースすることを許可しないのはなぜですか?つまりWebサーバーのlocalhostフォルダー以外の外部ファイルにアクセスできないのはなぜですか?サーバーに脆弱性がある場合、どのようにパストラバーサルを利用できますか?

1
A.B.

Apache自体は、構成されたDocumentRootの外のファイルを提供するべきではありません。

説明している動作は、ブラウザがURLを変換してからサーバーに送信することが原因であると考えられます。

代行受信プロキシを使用する場合、http://localhost/ATI/../test.txt、ブラウザは実際にhttp://localhost/test.txtおよびhttp://localhost/ATI/../../../../../../../../../../../etc/Apache2/apach2.confhttp://localhost/etc/Apache2/Apache2.confがサーバーに送信されます。

パストラバーサルの脆弱性を確認する場合は、プロキシを使用する必要があります。

4
Dinu

Telnetを使用して、実際に悪意のある要求を送信します。 Dinu Sが指摘したように、ブラウザはリクエストを混乱させており、Apacheはこれらのファイルを提供するべきではありませんAT ALL。チェックするには:

$ telnet 127.0.0.1 <server-port>

次に、手動でリクエストを入力します。

 GET /../../../../../../../../../../../../../../../../../../../etc/Apache2/apach2.conf HTTP/1.1

Apache.confファイルで応答する場合は、脆弱です。そうでない場合は、404または503で応答する必要があります。

1
Ohnana