此Java代码中的漏洞是什么?

时间:2019-03-04 20:58:37

标签: java security

Vulnerability Question

a。此代码有什么样的漏洞?为什么?

b。给出一个简单的示例代码来利用它。

我对某些网络安全问题是陌生的,并且不知道如何解决这样的问题。对于这个问题的任何帮助,以及我应该寻求更多了解整个网络安全的地方,我们深表感谢。我对Kali有所了解,但是缺乏基于编程知识的问题。

ps。我是Stack Exchange的新手,如果我在错误的部分发布了此内容,请帮忙

谢谢

2 个答案:

答案 0 :(得分:1)

您不解析用户可以提供的参数。此漏洞名称为Command InjectionCommand injection in Java中的示例:

import java.io.*;

public class Example2 {
    public static void main(String[] args)
    throws IOException {
        if(args.length != 1) {
            System.out.println("No arguments");
            System.exit(1);
        }
        Runtime runtime = Runtime.getRuntime();
        String[] cmd = new String[3];
        cmd[0] = "cmd.exe" ;
                cmd[1] = "/C";
                cmd[2] = "dir " + args[0];
        Process proc = runtime.exec(cmd);

        InputStream is = proc.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
}

可以通过将多个命令链接在一起来注入以上代码。

答案 1 :(得分:0)

一个明显的安全隐患是,您只是从命令行中获取每个参数并执行它,而不管它是什么。因此,用户不仅可以执行新目录,还可以执行她想要的一切。