web-dev-qa-db-ja.com

Java webappsのパストラバーサルによるリモートアクセスの取得

Webアプリケーションのパストラバーサルが見つかりました。Webサーバーユーザーが読み取りアクセス権を持つすべてのファイルのコンテンツを取得できます。これをさらに活用したい。

PHP Webサイトを使用すると、次の方法でリモートアクセスを取得できる場合があります。

  • リクエストされたファイルのコンテンツである一部を含む応答HTMLページを取得します
  • リクエストを操作して、実行可能コードPHP=コードがWebサーバーのログファイルに書き込まれるようにします。
  • 私はログファイルの内容をGETしようとするので、PHPコードを実行します。

これは、リモートファイルの内容がincludeまたはrequireまたは愚かなevalで表示されている場合にのみ可能です。ほとんどの場合、それはfile_get_contentsおよびecho。コードを実行しません。しかし、成功した場合もあり、systemを使用してWebサーバーユーザーの権限でGETパラメーターとして渡されたものを実行する小さなシェルを自分で入手しました。

私の質問は、Javaで記述されたWebアプリケーションにも同様の脆弱性があるのですか?それは一般的ですか?どうすれば利用できますか?

2
Rápli András

コードに次のような行が含まれていない場合、Javaで実行可能ファイルを実行することは不可能です。

Runtime.getRuntime().exec(variableProvidedByUser);

ファイルがJava以外のプロセスで実行されていることがわかっている場合、アップロードの脆弱性の間接的な悪用(ファイルタイプの検証が失敗した場合)が可能です。

アプリケーションが明示的に実行しない場合、またはJavaがbyteStreamReaderを使用して読み取るだけである場合、ファイルの実行が不可能になるように、データベース内のBLOBファイルのみを実行するアプリケーションがあることに注意してください。バイトの配列を表します。

もう1つ覚えておくべきことは、Javaが仮想マシン(JVM)で実行されること、およびJavaはコンパイルされた言語であり、ユーザー空間にアクセスできないことです。任意の方法ではなく、単純にスクリプトをアップロードして実行します。

1
AXANO