unix CWE-78:操作系统命令(“操作系统命令注入”)中使用的特殊元素的不正确中和

bwntbbo3  于 2023-10-18  发布在  Unix
关注(0)|答案(1)|浏览(207)

我试图从我的应用程序在服务器上运行一些SSH命令,我得到CWE-78有人可以帮助减轻相同的错误:-*CWE-78:操作系统命令中使用的特殊元素的不正确中和(“操作系统命令注入”):详细信息:对java.lang.Runtime.exec()的调用包含一个命令注入漏洞。函数的参数是使用不受信任的输入构造的。如果允许攻击者指定命令的全部或部分,则可能使用执行进程的权限在服务器上执行命令。暴露水平取决于输入确认程序的有效性(如果有)。exec()的第一个参数包含来自变量executeCommandsArray的污染数据。受污染的数据源自对AnnotationVirtualController.vc_annotation_entry的早期调用。验证所有不受信任的输入,以确保它符合预期的格式,尽可能使用集中式数据验证例程。使用阻止列表时,请确保清理例程执行足够次数的迭代,以删除所有不允许字符的示例。大多数执行系统命令的API也有一个“安全”版本的方法,它接受字符串数组而不是单个字符串作为输入,这可以防止某些形式的命令注入 *

StringBuilder sb = new StringBuilder();
            sb.append("cat *" );
             String bashCommand= "/bin/sh";
             String optionCommand = "-c";
             String[] executeCommandsArray= new String[] 
              {bashCommand,optionCommand,sb.toString()};

            Runtime run = Runtime.getRuntime();
            Process pr = run.exec(executeCommandsArray);
            int exitcode = pr.waitFor();
vql8enpb

vql8enpb1#

在正常化器内部传递字符串缓冲区

Normalizer.normalize(sb.toString(), Normalizer.Form.NFKD));

相关问题