Webアプリケーションのパストラバーサルが見つかりました。Webサーバーユーザーが読み取りアクセス権を持つすべてのファイルのコンテンツを取得できます。これをさらに活用したい。
PHP Webサイトを使用すると、次の方法でリモートアクセスを取得できる場合があります。
これは、リモートファイルの内容がinclude
またはrequire
または愚かなeval
で表示されている場合にのみ可能です。ほとんどの場合、それはfile_get_contents
およびecho
。コードを実行しません。しかし、成功した場合もあり、system
を使用してWebサーバーユーザーの権限でGETパラメーターとして渡されたものを実行する小さなシェルを自分で入手しました。
私の質問は、Javaで記述されたWebアプリケーションにも同様の脆弱性があるのですか?それは一般的ですか?どうすれば利用できますか?
コードに次のような行が含まれていない場合、Javaで実行可能ファイルを実行することは不可能です。
Runtime.getRuntime().exec(variableProvidedByUser);
ファイルがJava以外のプロセスで実行されていることがわかっている場合、アップロードの脆弱性の間接的な悪用(ファイルタイプの検証が失敗した場合)が可能です。
アプリケーションが明示的に実行しない場合、またはJavaがbyteStreamReaderを使用して読み取るだけである場合、ファイルの実行が不可能になるように、データベース内のBLOBファイルのみを実行するアプリケーションがあることに注意してください。バイトの配列を表します。
もう1つ覚えておくべきことは、Javaが仮想マシン(JVM)で実行されること、およびJavaはコンパイルされた言語であり、ユーザー空間にアクセスできないことです。任意の方法ではなく、単純にスクリプトをアップロードして実行します。