通过执行mount命令在Android中注入命令
我正在尝试执行此代码通过执行mount命令在Android中注入命令,android,Android,我正在尝试执行此代码 Process process = new ProcessBuilder().command("mount").start(); process.waitFor(); 找出sd卡的位置,然后检查它是否由vold管理,文件系统是否为vfat 我的问题是,无论如何,这段代码是否可以被压缩,并成为Android中命令注入的候选 我这边有几点 它不是用户输入,因此在这种情况下不会有命令注入。整个安卓操作系统环境是否可以改变,从而导致mount命令被滥用 干
Process process = new ProcessBuilder().command("mount").start();
process.waitFor();
找出sd卡的位置,然后检查它是否由vold管理,文件系统是否为vfat
我的问题是,无论如何,这段代码是否可以被压缩,并成为Android中命令注入的候选
我这边有几点
它不是用户输入,因此在这种情况下不会有命令注入。整个安卓操作系统环境是否可以改变,从而导致mount命令被滥用
干杯,
索拉夫
好的…目前我正在读取/proc/mounts以替换mount命令 是这样做的好方法 此解决方案的参考资料 代码如下
reader = new BufferedReader(new FileReader("/proc/mounts"));
String line;
while ((line = reader.readLine()) != null) {
// Output the line of output from the mount command
logger.debug(" {}", line);
if (line.startsWith("/dev/block/vold/")) {
如果这是正确的方法并且没有任何安全问题,任何人都可以
干杯,
Saurav正如你所说,只要你没有任何用户输入,你就不会受到这种注射的影响 您可能遇到麻烦的唯一情况是,装载二进制文件已被某个恶意二进制文件替换。要遇到这种情况,用户必须在设备上设置根目录,并用自定义ROM替换操作系统
我认为您可以假定mount命令应该正常运行。感谢synapticvoid的响应。在这种情况下,我可以以某种方式防止这种情况发生,或者提供装载二进制文件的实际路径吗?不,你不能阻止它,它完全取决于用户。如果完整路径存在风险,某些设备可能会将其置于/system/xbin或/system/bin甚至system/sbin中。您只能假设二进制文件存在并且工作正常!那不是真的。您可以显式指定路径,但必须确保它在那里。这可以通过提供你自己的来实现。但是,当没有理由运行外部命令时,这样做是毫无意义的-mount命令的查询表单执行的相同操作可以在应用程序进程中执行。我从来没有说过不可能提供路径,我只是简单地指出了这样一个事实:这是有风险的,因为二进制可能不存在,这取决于设备制造商!无论如何,这是一种低劣的方法;您应该简单地将/proc/mounts作为文本文件读取,并避免产生子进程-通常最好避免这种情况,因为它是一个相当重的操作,通常不适合Android的进程管理和总体设计理念。感谢Chris的回复。这是最好的解决方案吗?