a。此代码有什么样的漏洞?为什么?
b。给出一个简单的示例代码来利用它。
我对某些网络安全问题是陌生的,并且不知道如何解决这样的问题。对于这个问题的任何帮助,以及我应该寻求更多了解整个网络安全的地方,我们深表感谢。我对Kali有所了解,但是缺乏基于编程知识的问题。
ps。我是Stack Exchange的新手,如果我在错误的部分发布了此内容,请帮忙
谢谢
答案 0 :(得分:1)
您不解析用户可以提供的参数。此漏洞名称为Command Injection。 Command 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)
一个明显的安全隐患是,您只是从命令行中获取每个参数并执行它,而不管它是什么。因此,用户不仅可以执行新目录,还可以执行她想要的一切。