このトピックに関する私の最初の理解は、これらの攻撃を回避するために、リクエストで利用可能な一部のジャンク文字を防ぐ必要があるということです.
これを使用する前に、すべてのリクエスト パラメータのパターン マッチングによってこれを解決することにしました。インターネット上で入手可能な投稿のほとんどは、Null Byte に関するものであり、与えられた例は、ファイル IO がこの攻撃の主な犠牲者であることを示しています。以下は私の質問です
- null バイトが影響を与える可能性があるのはファイル IO だけですか、それとも他の操作もこの攻撃の犠牲になりますか?
- null bye 攻撃に対して安全になるようにリクエスト パラメータをフィルタリングする場合、注意が必要な文字/文字列/パターンは何ですか? 私はリストを持っていますが、完全なものではないと確信しています。%00、\0、16 進数の 0x00
私が参照している記事は次のとおりです。
http://projects.webappsec.org/w/page/13246949/Null%20Byte%20Injection
http://www.perlmonks.org/index.pl?node_id=38548
http://hakipedia.com/index.php/Poison_Null_Byte
前もって感謝します
より明確にするために:
最初の投稿では、私が話している Java の脆弱性を指摘しています。文字列serverlogs.txt%00.dbは Java で許可されていますが、C/C++ に関しては、これはserverlogs.txtです。C %00 は null バイトに置き換えられ、serverlogs.txt の後で文字列が終了します。したがって、そのような文字は避ける必要があります。これは、どのような文字を許可してはならないかを理解しようとしているものです。
String fn = request.getParameter("fn");
if (fn.endsWith(".db"))
{
File f = new File(fn);
//read the contents of “f” file
…
}