BT提权wind2008R2

时间:2022-02-16 11:31:10

昨天中午打开电脑,对着菜刀在那翻啊翻,找到一个64bit的os。

因为这个ip不在曾经提权过的主机列表里面,心想这应该是个低权限的网站,顺手打个whoami试试,结果给我返回了"nt authoritysystem"。看来这是一条"漏网之鱼"啊,于是就有了下面一段颇为蛋疼的经历。

查看系统信息,这是一台装了win server 2008 r2企业版的服务器,跑在VMware虚拟机上。

然后翻了下目录,web环境是Tomcat 5.5.7,搭的是SQL Server 2008的数据库。看起来这是一台正常的服务器啊,而且3389也是开着的,那当初为神马没有秒掉呢?

由于是system权限,可以直接REG SAVE服务器本地的hash。分析过后,发现两个管理员账号的密码LM HASH值为空,看来管理员安全意识挺高的。(我记得LM为空意味着密码是8位以上,不知道有木有记错- -)

接着尝试用工具抓取登录过服务器的用户密码,把wce传上去,执行的时候提示超时了。刷新了一下目录,发现wce消失了。到这里大概已经明白了,一定是装了360!

BT提权wind2008R2

还挺全面的嘛,安全卫士+杀毒。。。
对于我这种菜鸟来说,基本上装了360,工具这条路就走不下去了,因为360的强大不是我这种菜鸟能够解决的。没办法只能使出绝招了,尝试把Guest提为管理员:
net user Guest 12345
net user Guest /active:yes

BT提权wind2008R2

这两步都顺利执行了,不过在把Guest加入到administrators组的时候碰到问题了:
net localgroup administrators Guest /add

BT提权wind2008R2

竟然超时了,列下administrators组的成员,也没发现有Guest的身影,看来命令没执行成功。
我想有可能是shell执行命令不稳定,于是连续执行了几次,结果还是一样的:

BT提权wind2008R2

而且连续执行了几次,所有命令都不返回了= =
这时候我打算用nc做一个反弹shell试试,不过一传上去就马上被360干掉了。。然后又考虑用metasploit做一个jsp的反弹shell,不过我的BT5装在了虚拟机里面,网站肯定弹不进去。(不过现在想了一下,其实可以用lcx做下端口转发,不过得跳2次,略麻烦= =)
到这里常用的思路基本都断了,果然是搞不下啊~无聊着就去翻系统磁盘,希望找到点什么有用的软件。翻着翻着,突然想起这服务器上还有一个mssql 2008呢,如果能搞到sa的权限或许还有点希望。马上转向web目录看配置文件,在一个小站里面找到了sa的密码(目测是测试中的一个站),尝试连接却提示密码错误。看了下配置文件的修改日期是2011年,好吧,看来管理员已经改过了。很快web目录所有的config都看完了,还是没找到可用的sa密码。有点不甘心啊,继续翻之。。过了5分钟,不经意间找到一个主站目录的备份zip,时间是12年8月的。有100多M ,好吧不管了,先down下来看看。功夫不负有心人啊,在这个备份里面找到了一个sa密码,跟之前密码的区别是多了一个逗号!

BT提权wind2008R2

马上祭出Navicat尝试连接一下,居然成功了!

BT提权wind2008R2

顺利连接上去,但是没看到有master这个库。(既然是sa登录,为啥木有master库呢,难道一定要用企业管理器登录才看到么- -求解释!)不管那么多了,直奔重点去。这里要用到的就是xp_cmdshell这个存储过程,算是mssql有sa权限下的提权利器,不过有经验的管理员一般都会用各种牛逼的方法去禁止普通用户使用它。尝试用正常的方法打开xp_cmdshell:

EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; exec sp_configure

BT提权wind2008R2

错误代码"5″,马上google之。由于xp_cmdshell是严格用%systemroot%system32cmd.exe去执行所提交的命令的,提示"5″,意思是cmd的权限不足,就是说system32下的cmd.exe被降权了。当然也有绕过的方法,比如启用沙盒模式执行shell命令:

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftJet4.0Engines','SandBoxMode','REG_DWORD',1; select * from openrowset('microsoft.jet.oledb.4.0',';database=iasdnary.mdb','select shell("whoami")');

BT提权wind2008R2

"microsoft.jet.oledb.4.0″这个接口没有跑起来,网上的资料表示mssql 2008用的是12.0了,又试了一下,提示12.0接口尚未注册。那看来要用到OLE DB的绕过方法都行不通了,那意味着所有思路又都断了= =
无奈之下,只好把现在的情况在一个交流群里面发了,希望大牛们指导我一下。有大牛指出可以用sqlmap尝试一下,如果网站是sa权限的话,可以直接用–os-shell生成一个shell。马上按照他所说的去做,还真返回了一个os的shell。看了下sqlmap给出的信息,用的也应该是xp_cmdshell,看来希望不大。先来个简单的whoami看看,结果等了一分钟返回一个"No output"= =

BT提权wind2008R2

把情况给群里面的人一说,有人提示我说"没有返回没有关系,直接执行命令"。好吧这都行。。那直接执行命令试试。。不过试了好几次都还是no output,管理员组里面还是没有Guest的出现。这时候看到一个被我忽略的提示"do you want to retrieve the command standard output?",之前我都是直接回车的,默认选择的Yes。既然不用管是否返回,那试下选个no会怎么样,结果还真返回了不一样的info。再去查下administrators的成员,发现Guest出现了!!

BT提权wind2008R2

额,sqlmap真乃神器也,当时就想跪拜了。。由于3389是打开着的,connect it:

BT提权wind2008R2

到这里整个提权过程终于告一段落了,前后折腾了我快4个小时。。。看了下管理员的密码,一个18位的"数字+字母+符号"的超NB密码,顺便膜拜一下~
这次提权过程,最大的感悟就是贵在坚持,如果当初木有坚持这一说,可能连sa密码都没找到呢。然后是思路一定要广,这次要不是有高人指点,根本就成功不了。最后是"软件报错"有时候也意味着成功~