来自Area51提案
Java 文件名中是否可以进行空字节注入?
信息安全
攻击
应用安全
爪哇
2021-08-17 14:40:36
3个回答
空字节注入取决于字符串处理方式的不匹配。
例如,Java 独立于字符串的内容存储字符串的长度,而 C 从字符串的开头开始并检查空字节以指示字符串的结尾。
因此,Java 代码可以对“/etc/shadow%00.jsp”(其中 %00 表示空字节)之类的字符串执行“请求的文件是否以 .jsp 结尾”之类的检查,并在传递时返回 true “new FileInputStream()”的这个字符串将导致底层操作系统(Windows 和 Linux)试图打开“/etc/shadow”。
(尝试在 Windows 上打开 /etc/shadow 的相关性留给读者作为练习 :-))
文件名中的空字节注入已在 Java 7 更新 40(2013 年 9 月左右发布)中修复,https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8014846。所以,它终于修复了。
其它你可能感兴趣的问题