序:
先说说这个场景,其实我想的是不用远程连接服务器。通过其他活着的服务搞事情,理论上应该是所有的命令都可以执行的。我这里只是试验性的,可行性,所以我就做了个每次执行一条命令的。
一、先说说使用的执行器
这里没有使用第三方的jar,直接使用的是jdk提供的Process。先看我写的工具类吧,我这里因为服务器是windows,所以用的编码是gkb2312的。不过保留了支持多命令同时执行,没有验证。
工具类
public class ProcessUtil { public static String runShell(String[] shStrArr) throws Exception { StringBuffer sb = new StringBuffer(); sb.append("-----------result--------------"); sb.append("\n"); Process process = null; //List<String> processList = new ArrayList<String>(); 多命令 try { if(!ArrayUtils.isEmpty(shStrArr)) { String sh = ""; for(int i = 0;i < shStrArr.length;i++) { String tmpSh = shStrArr[i]; sh += tmpSh; if(i != shStrArr.length - 1) { sh += "&&"; //网上说多条命令使用这个符号连起来 } } process = Runtime.getRuntime().exec(sh); BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream(),"gb2312")); String line = ""; while ((line = input.readLine()) != null) { //processList.add(line); sb.append(line); sb.append("\n"); } process.waitFor(); input.close(); } } catch (Exception e) { //e.printStackTrace(); sb.append(e.getCause().getMessage()); } /*if(CollectionUtils.isNotEmpty(processList)) { for (String line : processList) { //System.out.println(line); sb.append(line); sb.append("\n"); } }*/ return sb.toString(); }
二、ajax方法返回结果
因为初衷就是试验用活着的服务启其他服务,所以提供一个对外的Ajax接口。
ajax方法代码
@ResponseBody @RequestMapping(value = "/shellComand" , method = RequestMethod.POST) public void shellComand(@RequestParam("shellComand") String shellComand, HttpServletRequest request, HttpServletResponse response) throws IOException {
String rs = ""; try{ String[] shArr = new String[1]; shArr[0] = shellComand; rs = ProcessUtil.runShell(shArr);
}catch(Exception e){ rs ="操作失败,请稍后重试!"; e.printStackTrace(); }
//返回数据对象 writeToPage(rs, response); }
三、测试
这里用postman测试。
看到没,下面就是返回结果。另外要说的就是如果执行的是cmd/bat命令,那会显示一直请求,实际上已经执行了,这个ajax方法跟工具类方法大家可以自行优化下。
要执行cmd/bat命令,实际上就是cmd后面的参数改下,例如
cmd.exe /k start D:\application\push\zookeeper-3.4.14\bin\zkServer.cmd
亲测可行,linux基本也是这个逻辑,然后这个能也可以做坏事,你懂的。如果这个 接口不登录就可以调用,不做安全校验,那就是很微信的,毕竟可以执行好多命令的。下面补充可以执行的命令,补充内容来源网络,大家自己试。
cmd /c dir 是执行完dir命令后关闭命令窗口。
cmd /k dir 是执行完dir命令后不关闭命令窗口。
cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。
cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。
可以用cmd /?查看帮助信息。
★CMD命令★
1. gpedit.msc-----组策略
2. sndrec32-------录音机
3. Nslookup-------IP地址侦测器
4. explorer-------打开资源管理器
5. logoff---------注销命令
6. tsshutdn-------60秒倒计时关机命令
7. lusrmgr.msc----本机用户和组
8. services.msc---本地服务设置
9. oobe/msoobe /a----检查XP是否激活
10. notepad--------打开记事本
11. cleanmgr-------垃圾整理
12. net start messenger----开始信使服务
13. compmgmt.msc---计算机管理
14. net stop messenger-----停止信使服务
15. conf-----------启动netmeeting
16. dvdplay--------DVD播放器
17. charmap--------启动字符映射表
18. diskmgmt.msc---磁盘管理实用程序
19. calc-----------启动计算器
20. dfrg.msc-------磁盘碎片整理程序
21. chkdsk.exe-----Chkdsk磁盘检查
22. devmgmt.msc--- 设备管理器
23. regsvr32 /u *.dll----停止dll文件运行
24. drwtsn32------ 系统医生
25. rononce -p ----15秒关机
26. dxdiag---------检查DirectX信息
27. regedt32-------注册表编辑器
28. Msconfig.exe---系统配置实用程序
29. rsop.msc-------组策略结果集
30. mem.exe--------显示内存使用情况
31. regedit.exe----注册表
32. winchat--------XP自带局域网聊天
33. progman--------程序管理器
34. winmsd---------系统信息
35. perfmon.msc----计算机性能监测程序
36. winver---------检查Windows版本
37. sfc /scannow-----扫描错误并复原
38. taskmgr-----任务管理器(2000/xp/2003
39. winver---------检查Windows版本
40. wmimgmt.msc----打开windows管理体系结构(WMI)
41. wupdmgr--------windows更新程序
42. wscript--------windows脚本宿主设置
43. write----------写字板
44. winmsd---------系统信息
45. wiaacmgr-------扫描仪和照相机向导
46. winchat--------XP自带局域网聊天
47. mem.exe--------显示内存使用情况
48. Msconfig.exe---系统配置实用程序
49. mplayer2-------简易widnows media player
50. mspaint--------画图板
51. mstsc----------远程桌面连接
52. mplayer2-------媒体播放机
53. magnify--------放大镜实用程序
54. mmc------------打开控制台
55. mobsync--------同步命令
56. dxdiag---------检查DirectX信息
57. drwtsn32------ 系统医生
58. devmgmt.msc--- 设备管理器
59. dfrg.msc-------磁盘碎片整理程序
60. diskmgmt.msc---磁盘管理实用程序
61. dcomcnfg-------打开系统组件服务
62. ddeshare-------打开DDE共享设置
63. dvdplay--------DVD播放器
64. net stop messenger-----停止信使服务
65. net start messenger----开始信使服务
66. notepad--------打开记事本
67. nslookup-------网络管理的工具向导
68. ntbackup-------系统备份和还原
69. narrator-------屏幕“讲述人”
70. ntmsmgr.msc----移动存储管理器
71. ntmsoprq.msc---移动存储管理员操作请求
72. netstat -an----(TC)命令检查接口
73. syncapp--------创建一个公文包
74. sysedit--------系统配置编辑器
75. sigverif-------文件签名验证程序
76. sndrec32-------录音机
77. shrpubw--------创建共享文件夹
78. secpol.msc-----本地安全策略
79. syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
80. services.msc---本地服务设置
81. Sndvol32-------音量控制程序
82. sfc.exe--------系统文件检查器
83. sfc /scannow---windows文件保护
84. tsshutdn-------60秒倒计时关机命令
3. 84. tsshutdn-------60秒倒计时关机命令
85. tourstart------xp简介(安装完成后出现的漫游xp程序)
86. taskmgr--------任务管理器
87. eventvwr-------事件查看器
88. eudcedit-------造字程序
89. explorer-------打开资源管理器
90. packager-------对象包装程序
91. perfmon.msc----计算机性能监测程序
92. progman--------程序管理器
93. regedit.exe----注册表
94. rsop.msc-------组策略结果集
95. regedt32-------注册表编辑器
96. rononce -p ----15秒关机
97. regsvr32 /u *.dll----停止dll文件运行
98. regsvr32 /u zipfldr.dll------取消ZIP支持
99. cmd.exe--------CMD命令提示符
100. chkdsk.exe-----Chkdsk磁盘检查
101. certmgr.msc----证书管理实用程序
102. calc-----------启动计算器
103. charmap--------启动字符映射表
104. cliconfg-------SQL SERVER 客户端网络实用程序
105. Clipbrd--------剪贴板查看器
106. conf-----------启动netmeeting
107. compmgmt.msc---计算机管理
108. cleanmgr-------垃圾整理
109. ciadv.msc------索引服务程序
110. osk------------打开屏幕键盘
111. odbcad32-------ODBC数据源管理器
112. oobe/msoobe /a----检查XP是否激活
113. lusrmgr.msc----本机用户和组
114. logoff---------注销命令
115. iexpress-------木马捆绑工具,系统自带
116. Nslookup-------IP地址侦测器
117. fsmgmt.msc-----共享文件夹管理器
118. utilman--------辅助工具管理器
119. gpedit.msc-----组策略
120. explorer-------打开资源管理器