`
aroon2008
  • 浏览: 3902 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA提权执行Windows指令

 
阅读更多

1 前言

       **平台要求实现FTP账户同步。FTP账户同步分为两步,第一步将平台用户写入FTP服务器(FileZilla Server)配置文件中(Dom4J读写XML文件),第二部重启FTP服务(指令为net stop/strat “FileZilla Server”)。

       在实际测试过程中,我们发现只有Administrator用户才能执行重启FTP服务,如果当前登录的不是Administrator用户,即使该用户是管理员也不能执行重复FTP服务的操作。系统会提示:



 

为解决该问题,需要对当前用户进行提权操作。本次调研了三种可行方案。

2方案一PSToolspsexec

2.1简介

pstoolssysinternals出的一个功能强大的nt/2k远程管理工具包。
它的主页为http://www.sysinternals.com/
下载地址为http://www.sysinternals.com/files/Pstools.zip

2.2Psexec指令说明

psexec是一个远程执行工具,你可以像使用telnet一样使用它。
它的使用格式为:
psexec \\
远程机器ip [-u username [-p password]] [-c [-f]] [-i][-d] program [arguments]
它的参数有:
-u
后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。(如果没有-p参数,则输入命令后会要求你输入密码)
-c <[
路径]文件名>:拷贝文件到远程机器并运行(注意:运行结束后文件会自动删除)
-d
不等待程序执行完就返回,(比如要让远程机器运行tftp服务端的时候使用,不然psexec命令会一直等待tftp程序结束才会返回)
-i
在远程机器上运行一个名为psexesvc进程

2.3使用说明

  1. psexec.exe拷贝进工程下的指定目录
  2. JAVA代码中用Runtime.getRuntime().exec()执行以下指令:指定目录/PsExec.exe -accepteula -u administrator –p 密码net stop/strat “FileZilla Server”

 

3方案二NIRCMD

3.1简介

       NirCmd是一套免费的命令行指令,提供许多控制Windows的参数。让你运行命令行的方式,来执行一些常用的动作,例如开启或关闭光驱,增加或减少计算机音量。让你在执行一些常用的动作时,可以更加的有效率。

3.2Elevate指令说明

 

elevate [Program] {Command-Line Parameters}

仅适用于 Windows Vista/7/2008 ,以管理员权限运行。如果Program包含空格符,则需要用引号括起来。

示例:
elevate notepad.exe
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS
elevate "c:\program files\my software\abc.exe"

3.3使用说明

  1. nircmd.exe拷贝进工程下的指定目录
  2. JAVA代码中用Runtime.getRuntime().exec()执行以下指令:指定目录/ nircmd.exe elevate net stop/strat “FileZilla Server”

4方案三SUBINACL

4.1简介

       Subinacl微软提供的用于对文件、注册表、服务等对象进行权限管理的工具软件。

       官方下载地址:

http://www.microsoft.com/en-us/download/details.aspx?id=23510

4.2Subinacl指令说明

Subinacl的命令语法为:

SUBINACL /SERVICE \\MachineName\ServiceName

/GRANT=[DomainName\]UserName[=Access]

运行此命令,用户必须具有管理员权限才能成功完成。

如果省略 MachineName,则假定为本地计算机。

如果省略 DomainName,在本地计算机帐户的搜索。

可以对组进行授权。

Access 可以接受的值如下所示:

F : Full Control

R : Generic Read

W : Generic Write

X : Generic eXecute

L : Read controL

Q : Query Service Configuration

S : Query Service Status

E : Enumerate Dependent Services

C : Service Change Configuration

T : Start Service

O : Stop Service

P : Pause/Continue Service

I : Interrogate Service

U : Service User-Defined Control Commands

 

4.3使用说明

 

  1. 下载subinacl.msi
  2. 安装subinacl.msi
  3. 打开cmd,输入net config workstation,红圈中为当前登录的用户名“局域网_aaa”
  4.  切换用户,使用administrator用户登录
  5. 打开cmd
  6. 进入subinacl.msi安装目录下,默认为C:\Program Files (x86)\Windows Resource Kits\Tools
  7. 执行指令Subinacl  /service  “FileZilla Server”  /grant=局域网_aaa=TO该指令意味着将FileZilla Server服务的启动和关闭权限赋给用户“局域网_aaa”
  8. 切换用户,使用局域网_aaa登录,在cmd中执行net stop/Start “FileZilla Server”,可成功执行。

 

5方案对比

方案

优点

缺点

方案一PSTools

通用性较好,测试Win7WinServer2008下均可实现服务重启

程序需知道Administrator用户密码,有安全隐患。

方案二NIRCMD

Win7下可实现服务重启

无需管理员密码

WinServer2008弹框需输入Administrator密码,上线环境中不适用。

方案三SUBINACL

一次性配置,仅开放指定权限

程序无需知道Administrator密码。

较安全。

需以administrator用户登录安装配置

 

 

 

经过上述三种方案的比较,综合考虑,建议选择第三种方案。

  • 大小: 2.8 KB
  • 大小: 80.3 KB
分享到:
评论

相关推荐

    java 调用doc命令

    这个方法允许Java程序在运行时执行外部程序或命令。例如,如果我们要在CMD中打开一个.doc文件,可以这样做: ```java String command = "wordpad.exe path_to_your_file.doc"; try { Process p = Runtime....

    Java查看汇编指令工具(32位、64位)win系统.7z

    在Java中,JVM(Java虚拟机)会将字节码转化为机器码,这包括汇编指令,以执行程序。 要查看Java的汇编指令,我们需要一个能够解析JVM字节码并展示其对应汇编代码的工具。一个常用的工具是JITWatch,它是由Adobe...

    超详细!java访问windows共享目录并下载文件

    在描述中提到的"调用cmd命令",就是指利用这些方法执行Windows的命令行指令,如`net use`命令来挂载网络共享目录。 2. **访问Windows共享目录**: - Windows的网络共享通常使用SMB(Server Message Block)协议。...

    JAVA中如何执行DOS指令_.docx

    在Java编程中,有时我们需要执行操作系统级别的命令,例如DOS指令,这通常涉及到与操作系统的交互。Java提供了Runtime类的exec()方法来实现这个功能。本文将深入探讨如何在Java中执行DOS指令以及需要注意的一些关键...

    windows java环境一键配置.zip

    Java开发环境在Windows上的配置是一项基础且重要的任务,对于初学者和专业开发者来说,这个过程可能涉及多个步骤,包括下载JDK、安装、配置环境变量等。"windows java环境一键配置.zip" 提供了一个便捷的方式来完成...

    java程序产品包模板-内置linux和Windows通用shell启动停止脚本(无需系统安装Java运行环境).zip

    内置linux和Windows通用shell启动停止脚本(无需系统安装Java运行环境).zip”提供了一套适用于Java程序的通用打包方案,特别强调了其能够在Linux和Windows操作系统上无缝运行,且不依赖于系统的Java运行环境。...

    java 调用windows的一些可执行文件

    在Java编程环境中,有时我们需要与操作系统进行交互,例如调用Windows系统的可执行文件或批处理文件来执行特定任务。这通常通过Java的Runtime类或ProcessBuilder类实现。这两个类允许我们构建命令行指令并执行它们,...

    java执行shell指令

    总结,Java执行shell指令主要通过`Runtime.getRuntime().exec()`和`ProcessBuilder`实现。理解它们的工作原理和注意事项是Java开发者必备的技能,尤其在处理系统集成和自动化任务时。同时,要时刻关注命令执行的安全...

    Java运行环境Java运行环境

    1. **Java虚拟机(JVM)**:JVM是Java运行的核心,它负责解释和执行Java字节码,将代码转化为机器可理解的指令。JVM实现了内存区域,如堆、栈、方法区等,确保了程序的正常运行和垃圾回收。 2. **类加载器**:在JVM...

    Java实现的类似copy命令

    用Java实现的copy命令,类似windows命令行的copy命令,能够给复制任何类型文件

    使用IDEA和hsdis-amd64.dll工具查看运行Java代码生成的汇编指令

    3. **运行Java程序**:现在,当你的Java程序运行时,JVM将会输出汇编指令。然而,这种输出通常被淹没在大量的日志信息中。为了更好地查看和分析,你可以使用`jmh`插件的`VisualVM`或者`JProfiler`等可视化工具。 4....

    最新版windows graalvm-ce-java11-windows-amd64-21.3.0.zip

    总之,"最新版windows graalvm-ce-java11-windows-amd64-21.3.0.zip"提供了一个强大的开发和运行环境,它在Windows平台上为Java 11应用带来了卓越的性能和跨语言的能力,适用于各种开发场景,尤其是对性能有高要求的...

    java7运行库

    9. **子文件"java7运行库.exe"**:这个文件很可能是Java 7运行库的安装程序,用户可以通过运行这个可执行文件在Windows操作系统上安装Java 7环境,包括JRE和必要的工具。 10. **安全增强**:Java 7提升了安全特性,...

    最新JAVA运行库,一个运行JAVA的环境

    1. **Java虚拟机(JVM)**:JVM是Java程序执行的引擎,它解析并执行字节码,将这些抽象指令转化为特定平台的机器码,使得Java程序可以在不同的硬件和操作系统上运行。 2. **Java类库**:提供了大量的API(应用程序...

    java用bat运行程序

    在IT行业中,尤其是在Windows操作系统环境下,我们经常需要执行一些Java程序。为了方便快捷地运行这些程序,我们可以将它们封装到批处理(.bat)文件中。这样,只需双击.bat文件,就可以自动调用Java虚拟机(JVM)...

    java仿Windows画图

    在Java编程语言中,开发一个仿Windows画图程序是一项挑战性的任务,因为它涉及到图形用户界面(GUI)的设计和绘图功能的实现。这个程序通常会使用Java的Swing或JavaFX库来创建交互式的画布,允许用户进行基本的绘图...

    java程序的运行机制详细分析

    - 因此,无论是在Windows、Linux还是Mac OS等不同操作系统上,只要安装了对应的JVM版本,Java程序就可以顺利运行。 #### 二、Java程序的执行过程详解 Java程序的执行过程可以分为几个步骤: 1. **源代码编译**:...

    Java 编译 运行 一键 批处理

    它可以执行的指令有: t Java文件名 [/?][e][r]或[c] [a] 注意:请不要输入文件的扩展名 [/?] 读取本帮助信息 [/del] 删除当前文件夹中所有的.class文件 [/d] 在Windows资源管理器中显示当前文件夹 [e] 用记事本...

    Java开发常用指令大全.zip

    在Java开发过程中,掌握一些常用的命令行指令是十分必要的,这些指令可以帮助我们更高效地进行编译、运行、调试和管理Java项目。本资源“Java开发常用指令大全”提供了一个全面的指南,帮助开发者了解并运用这些核心...

    JAVA虚拟机for window

    在这个特定的描述中,“jre-6u25-windows-i586-s”是指Java运行时环境(JRE)的第6个更新版(Update 25),针对Windows系统,且是32位(i586)的。32位意味着这个JVM能够运行在支持32位指令集的处理器上。 JRE是...

Global site tag (gtag.js) - Google Analytics