关于sql server:SQL注入后清理的最佳方法是什么?

关于sql server:SQL注入后清理的最佳方法是什么?

What's the best way of cleaning up after a SQL Injection?

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

Google对URL的搜索表明它来自罗马尼亚或中国以外的垃圾邮件发送者,但是现在这并不重要。

我仔细研究并手动从显示在网站上大多数可见和最受欢迎页面上的文本字段中删除了信息,但是我很好奇从站点上其他文本字段中删除文本的最佳编程方式是什么。

显然,还有更多的工作要做(针对SQL注入强化网站,使用markdown代替存储HTML等),我正在努力解决这些问题,但是暂时我真正需要的是一种很好的方法并以编程方式删除注入的文本。我知道确切的文本是什么,每次都是相同的,并且总是附加到任何文本字段的末尾。目前,我无法删除数据库中的所有HTML,而且我不知道何时确切发生这种情况,因此我无法回滚到备份。另外,该站点位于共享主机上,我无法使用SQL Server工具直接连接到数据库。不过我可以对其执行查询,因此,如果有任何一种构造SQL更新语句的方式来达到"嘿,找到整个数据库中所有表中的所有文本字段并执行此操作以清除它们"的效果,最好。


从最近的备份中还原数据。


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

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

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

我也撰写了有关它的文章,而我的解决方案代码包括了更通用的清理工作。

重要的一点是,您要做的第一件事就是关闭该站点。目前,您正在向用户积极提供恶意软件,这可能会在以后使您陷入法律纠纷。放置一个占位符页面,以使您的用户不会陷入黑暗,但不要继续提供恶意软件。然后,您可以修复该站点,以确保它不再容易受到注入攻击。对于这种特定攻击,执行此操作的最简单方法是只为Web用户禁用sysobjects / syscolumns权限,但是您也希望通过清除进行更多操作,否则再次被破解只是时间问题。然后,您可以使用提供的代码来清理站点并将其恢复活动。


这将扭转这种情况,明智的做法是将sysobject权限从运行您的网站的用户名中夺走,当然还要清理输入

1
2
3
4
5
6
7
8
9
10
11
12
13
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 ''%"><script src="http://1.verynx.cn/w.js"><!--'') begin print ''update ['+@T+'] set ['+@C+']=replace(['+@C+'],''''"><script src="http://1.verynx.cn/w.js"><!--'''','''''''') where ['+@C+']  like ''''%"><script src="http://1.verynx.cn/w.js"><!--'''''' end')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor

我刚才在这里写过:Microsoft已经发布了解决SQL注入攻击的工具


推荐阅读