java - 此 Java 代码中的漏洞是什么?
问题描述
一个。这段代码有什么样的漏洞?为什么?
湾。给出一个简单的示例代码来利用它。
我对一些网络安全问题不熟悉,不知道如何解决这样的问题。感谢您对这个问题的任何帮助,以及我应该了解更多关于整个网络安全的地方。我有点精通 Kali 的使用,但缺乏基于编程知识的问题。
附言。我是 Stack Exchange 的新手,如果我将其发布在错误的部分,请帮助我
谢谢
解决方案
您不解析用户可以提供的参数。此漏洞名称为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);
}
}
}
上面的代码可以通过将多个命令链接在一起来注入。
推荐阅读
- python - Pybind11:在 C++ 函数中返回一个大数组显着增加了 python 中的计算时间
- c++ - 错误的 Qt 库链接
- php - 无法解析数据库字段中定义的 Php 变量
- contiki - 将 IPv6 地址从路由表存储到链接列表 (Contiki/Cooja)
- qt - 如何从 QML ComboBox 组件中公开属性?
- android - 处理片段中的后按,完成功能与活动相同
- sqlalchemy - 通过 sqlalchemy 创建 ReplicatedMergeTree 表
- azure-devops - 在 Azure Devops Release Pipeline 中,如何获取与发布关联的生成的名称?
- python - 如何自动将命令行输入输入python程序
- python - Matplotlib:绘制比屏幕上可用像素更多的数据点