web-dev-qa-db-ja.com

Javaファイル名にnullバイトインジェクションは可能ですか?

11
AviD

以下のリソースに応じて:

javaではNull Byteインジェクションが可能であると結論付けることができます。

14
anonymous

ヌルバイトインジェクションは、文字列の処理方法の不一致に依存します。

例えばJavaは、文字列の内容とは無関係に文字列の長さを格納しますが、Cは文字列の先頭から始まり、Nullバイトをチェックして文字列の終わりを示します。

その結果、Javaコードは、「/ etc/shadow%00.jsp」のような文字列に対して「要求されたファイルは.jspで終了する」のようなチェックを実行できます(%00はnullを表します)この文字列を "new FileInputStream()"に渡すと、trueが返され、基になるOS(WindowsとLinuxの両方)が "/ etc/shadow"を開こうとします。

(Windowsで/ etc/shadowを開こうとすることの関連性は、読者の練習問題として残されています:-))

7
Rogan Dawes

Java 7 update 40(2013年9月頃にリリース)で、ファイル名のnullバイトインジェクションが修正されました。そのため、最終的に修正されました。

5
Dave Wichers