nav-left cat-right
cat-right

可恶的3b3.org注入挂马

相信很多站长都被3b3这个垃圾进犯,逛google上收录的就是几十万之多,网上有不少清除攻略,我在这说一下我的办法:

1.中招后清除办法:一种笨办法是用sql语句 update table set 字段=replace(字段,’垃圾代码’,”),由于我那数据库里没几个表,就直接用replace手动解决了,如果你的数据表很多可以试试网上有高人写的更简单快捷的方法,总结如下:

declare @delStr nvarchar(500)
SET @delStr= ‘ <script src=”http://3b3.org/c.js”> </script> ‘
SET nocount ON
declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int
declare @sql nvarchar(500)
SET @iResult=0
declare cur cursor FOR
SELECT name,id FROM sysobjects WHERE xtype= ‘U ‘
open cur
fetch next FROM cur INTO @tableName,@tbID
while @@fetch_status=0
begin
declare cur1 cursor FOR
–xtype in (231,167,239,175,35) 为char,varchar,nchar,nvarchar,text类型
SELECT name FROM syscolumns WHERE xtype IN (231,167,239,175,35) AND id=@tbID
open cur1
fetch next FROM cur1 INTO @columnName
while @@fetch_status=0
begin
SET @sql= ‘update [ ' + @tableName + '] set [ '+ @columnName + ']= replace([ '+@columnName+ '], ‘ ‘ ‘+@delStr+ ‘ ‘ ‘, ‘ ‘ ‘ ‘) where [ '+@columnName+ '] like ‘ ‘% ‘+@delStr+ ‘% ‘ ‘ ‘
exec sp_executesql @sql
SET @iRow=@@rowcount
SET @iResult=@iResult+@iRow
IF @iRow> 0
begin
print ‘表: ‘+@tableName+ ‘,列: ‘+@columnName+ ‘被更新 ‘+convert(varchar(10),@iRow)+ ‘条记录; ‘
end
fetch next FROM cur1 INTO @columnName
end
close cur1
deallocate cur1
fetch next FROM cur INTO @tableName,@tbID
end
print ‘数据库共有 ‘+convert(varchar(10),@iResult)+ ‘条记录被更新!!! ‘
close cur
deallocate cur
SET nocount off

或者触发器版:

USE [DataBaseName]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Replace3b3]
ON [dbo].[cmsTable]
AFTER INSERT, UPDATE
AS
DECLARE @SCRIPT VARCHAR(255);
SET @SCRIPT = ‘<script src=http://3b3.org/c.js></script>’;
SELECT ID FROM dbo.cmsTable WHERE
Column1 LIKE ‘%’+@SCRIPT+’%’ OR Column2 LIKE ‘%’+@SCRIPT+’%’ OR Column3 LIKE ‘%’+@SCRIPT+’%’
IF @@rowcount > 0
BEGIN UPDATE dbo.cmsTable SET Column1=REPLACE(Column1,@SCRIPT,”),Column2=REPLACE(Column2,@SCRIPT,”),Column3=REPLACE(Column3,@SCRIPT,”)
END

2.用hwis.exe扫描自己的网站是否存在注入漏洞,如果有就直接去查看源代码找到问题所在补上洞。hwis.exe是一个十分小巧的注入扫描工具,但是会有漏网的。

3.增强数据库的安全性:

SQL2000的操作方法:
1、不要使用sa用户连接数据库。
SA帐户拥有所有数据库和数据表的操作权限,在网页中使用SA连接数据库安全隐患非常大。

2、新建一个public权限数据库用户,并用这个用户访问数据库。
为了增加安全系数,建议每个数据库建立独立的只有public权限管理帐户,并用这个用户访问数据库有利于SQL的安全性。

3、[角色]去掉角色public对sysobjects与syscolumns对象的select访问权限。

4、[用户]用户名称-> 右键-属性-权限-在sysobjects与syscolumns上面打“×”。

SQL2005的操作方法:

1、不要使用sa用户连接数据库。
SA帐户拥有所有数据库和数据表的操作权限,在网页中使用SA连接数据库安全隐患非常大。

2、新建一个public权限数据库用户,并用这个用户访问数据库。
为了增加安全系数,建议每个数据库建立独立的只有public权限管理帐户,并用这个用户访问数据库有利于SQL的安全性。

3、打开数据库—视图–找到–sys.sysobjects–右键“属性”– 左侧“权限”—右侧下面 在 “SELECT” 后面的“拒绝”后面把 “打对号”。

4、打开数据库—视图–找到–sys.syscolumns–右键“属性”– 左侧“权限”—右侧下面 在 “SELECT” 后面的“拒绝”后面把 “打对号”。
SQL2005到此为止问题解决。

评论暂缺 »

还没有任何评论。

这篇文章上的评论 RSS feed TrackBack URL

留下评论