当前位置: 首页 > news >正文

怎样建官方网站开个人网站如何赚钱

怎样建官方网站,开个人网站如何赚钱,嘉兴城乡建设局门户网站,筑楼人官方网1 成因 开发者在某种开发需求时,需要引入对系统本地命令的支持来完成某些特定的功能,此时若未对用户的输入做严格的过滤,就可能发生命令注入。 2 造成命令注入的类或方法 Runtime类:提供调用系统命令的功能 ①Runtime.getRuntim…

1 成因

开发者在某种开发需求时,需要引入对系统本地命令的支持来完成某些特定的功能,此时若未对用户的输入做严格的过滤,就可能发生命令注入。

2 造成命令注入的类或方法

  • Runtime类:提供调用系统命令的功能

    ①Runtime.getRuntime():获得JVM运行时的环境

    ②Runtime.getRuntime().exec(cmd)执行用户输入的cmd命令

    存在命令注入的代码如下:

    protected void doGet (HttpServletRequest req, HttpServletRequest resp) throws ServletException, IOException{String cmd = req.getParameter("cmd");Process process = Runtime.getRuntime().exec(cmd);InputStream in = process.getInputStream();ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();byte[] b = new byte[1024];//获取1M的一个缓冲区int i = -1;while((i=in.read(b)) != -1)//判断是否读完{byteArrayOutputStream.write(b,0,i);}PrintWriter Out = resp.getWriter();out.print(new String(byteArrayOutputStream.toByteArray()));
    }
    
  • ProcessBuilder:可以创建操作系统进程

    //利用指定的操作系统程序和参数构造一个进程生成器。
    ProcessBuilder(String… command) //设置此进程生成器的操作系统程序和参数。 
    command(List<String> command) 
    command(String… command) //设置此进程生成器的工作目录。
    directory(File directory) //返回此进程生成器环境的字符串映射视图。 environment方法获得运行进程的环境变量,得到一个Map,可以修改环境变量 
    environment() //使用此进程生成器的属性启动一个新进程。
    start() 
    
  • Groovy

    execute():可执行shell命令,eg:

    def command = "git log"
    def proc = command.execute()//执行git log的命令
    proc.waitFor()
    def status = proc.exitValue()
    

    result = sh(script: "shell command", returnStdout: true).trim()

    GroovyShell()

    //直接执行Groovy代码
    GroovyShell shell = new GroovyShell();shell.evaluate("\'calc\'.execute()");
    //通过加载本地脚本
    //1.
    GroovyShell shell = new GroovyShell();
    Script script = shell.parse(new File("src/main/java/ysoserial/vulndemo/GroovyTest.groovy"));
    script.run();
    //2.
    GroovyShell shell = new GroovyShell();
    shell.evaluate(new File("src/main/java/ysoserial/vulndemo/GroovyTest.groovy"));
    //通过加载远程脚本
    GroovyShell shell = new GroovyShell();shell.evaluate(new URI("http://127.0.0.1:8888/GroovyTest.groovy"));
    

3 连接符进行命令注入

在这里插入图片描述

如下代码不存在命令注入漏洞

protected ByteArrayOutputStream ping(String url) throws IOException{Process process = Runtime.getRuntime().exec("ping " + url);InputStream in = process.getInputStream();ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();byte[] b = new byte[1024];int i = -1;while((i = in.read(b)) != -1){byteArrayOutputStream.write(b,0,i);}return byteArrayOutputStream;
}

若注入www.baidu.com&ipconfig时,java环境会把他当做完整的字符串,不会被当作两条命令执行。

对于Java环境中的命令注入,连接符的使用存在一些局限。

4 正确处理可控参数

public Process exec(String command) throws IOException {return exec(command, null, null);}
public Process exec(String command, String[] envp) throws IOException {return exec(command, envp, null);}
public Process exec(String cmdarray[]) throws IOException {return exec(cmdarray, null, null);}
public Process exec(String[] cmdarray, String[] envp, File dir)throws IOException {return new ProcessBuilder(cmdarray).environment(envp).directory(dir).start();}

当传入的参数类型为字符串时,会先经过StringTokenizer的处理,主要是针对空格以及换行符等空白字符进行处理,后续会分割出一个cmdarray数组保存分割后的命令参数,其中cmdarray的第一个元素为所要执行的命令。经过处理后的参数www.baidu.com&ipconfig成为ping命令的参数,因此此时的连接符&并不生效,从而无法注入系统命令。

http://www.yayakq.cn/news/939363/

相关文章:

  • 本地网站构建h5怎么制作进入下一页
  • 厦门网站改版WordPress移除顶部恢复
  • jsp做门户网站军事新闻最新消息报道
  • a站为什么会凉网页制作WordPress模板
  • 南宁网站建设开发蓝色网站模版
  • 化工材料 技术支持 东莞网站建设Wordpress循环一行3个div
  • 与电子商务网站建设有关实训报告企业融资渠道有哪些
  • 南充做网站的公司电子商务网站建设方案推荐
  • 网站logo是什么意思国内可用的免费云端服务器
  • php网站开发实例编程韩国美食做视频网站有哪些
  • 济南优化网站个人网站做企业备案
  • 手机网站整站模板下载前端开发培训费用
  • 漳州本地网站哪里有建设网站中的视频下载
  • 泉州seo网站推广二手交易网站建设内容策划
  • 泰州做网站优化小程序发布流程怎么弄
  • 南京建设网站公司自学网站查分数
  • 做淘宝的导购网站装修设计案例网站
  • 爱站网seo综合查询消防有哪些网站合适做
  • 电子商务网站建设与管理考试拖拽式在线网页制作工具
  • uzi视频网站谁做的网站建设课程体系
  • 品牌网站建设解决郑州网站建设优化
  • 中信建设有限责任公司客户南京seo排名外包
  • 学校做网站难吗网站主页图片
  • 衡量网站质量的标准网络公司免费做网站
  • 如何控制一个网站软件开发asp网站开发框架
  • asp商品网站源码没网站做cpa
  • 用sql2000做网站中企动力科技股份
  • 网站建设与规划试卷网络推广公司哪里好
  • php网站 mysql数据库提高手机性能的黑科技软件
  • 餐饮连锁网站建设怎么建设电子邮箱网站