如何防止从HTML表单上载匿名文件

时间:2012-09-10 14:34:18

标签: .net security file-upload

我们公司的一个网站存在严重的安全漏洞。该网站建立在C#,ASP.Net和IIS 7上。有些黑客可以从网站的主页上传登录表单中的文件。网站上没有其他表单,只有索引页面对用户可见。

检查服务器日志时,远程桌面或FTP无法进行匿名访问。所以我认为黑客只是从登录表单上传文件。我们设置了防火墙,限制用户访问某些国家/地区,但是当我看到服务器日志时,来自这些受限制国家/地区的人仍然可以访问该页面,而这些文件仅来自这些国家/地区。

我们使用的服务器是专用服务器。客户支持无法为解决此问题提供足够的帮助。

有人可以对这里发生的事情以及我如何阻止它发出警告。

1 个答案:

答案 0 :(得分:3)

我认为你的应用程序并不意味着接受匿名文件上传。这意味着某些东西正在被利用。

如果没有查看应用程序源代码并了解服务器的配置方式,则无法提供简单的解决方案来防止可疑的文件上载漏洞。相反,我已经包含了有关如何保护服务器和应用程序的信息,我希望您会发现它有用。


开始新鲜:既然您的服务器已遭到入侵,您应该理想地重新格式化服务器并从最后知道的安全备份加载数据。挽救已被泄露的服务器并将其恢复到安全状态而无需重新格式化是相当困难的,除非您确切地知道他们在系统上受到了什么影响并且可以确保您可以扭转影响。我总是谨慎行事。

积极保护 您应确保已启用并定期应用Windows更新。您安装了每天运行的防病毒软件,防火墙严密。当然,对所有用户帐户使用强密码。不要忘记定期修补第三方软件和控件。

FTP不安全:您注意到您使用的是FTP。只有FTP is insecure,您的凭据通过互联网以纯文本形式发送,如果黑客入侵您和您的服务器之间的任何网络(并且某些网络可能无法控制),您应该避免使用FTP然后他们可以在您登录时阅读它。由于他们知道密码,因此不会记录身份验证错误。因此,请将FTP替换为SFTP,或者更好,但只能通过VPN隧道访问您的服务器。

PCI漏洞扫描:将服务器置于相对安全,新鲜状态后,应对服务器运行PCI扫描。 PCI扫描是处理敏感信用卡详细信息的服务器的要求,但即使您不处理信用卡,它也可用于检查任何面向公众的服务器的安全性。

有很多providers of PCI compliance scans。有很多免费试用解决方案,因此您的初始成本很低。我可以同时推荐Comodo Hacker GuardianMcAfee Vulnerability Scanner

使用非常简单,您注册并向扫描仪提供服务的IP地址,然后扫描它并提供其知道的所有漏洞的报告,并需要进行修补。它很可能不会在您的Web应用程序中找到漏洞,但很可能是IIS或其他服务器技术中的漏洞,而不是明确的代码。

我相信你会惊讶地发现有多少关于服务器的信息,我第一次扫描的时候就是这样。

强化您的Web应用程序:一旦解决了所有问题,您就可以相对确定您的服务器是安全的,现在您只需要检查您是否正在关注best practices和加强你的代码。并非所有这些都必然适用,(我不确定您是否使用SQL Server),但您应该按照这些教程来使用代码:

Microsoft: Preventing SQL Injection
MSDN: Securing IIS 7
Microsoft: Configure NTFS File Permissions for Security of ASP.NET Applications

ASP.NET有许多内置检查,可以尝试防止将不安全的代码注入到表单中。如果您确定这是他们如何破坏您的服务器,那么这可能与您的情况最相关。 Microsoft: Protect From Injection Attacks in ASP.NET

构建ASP.NET应用程序时,了解所有各种漏洞可能存在的位置很有用。这个表可能很有用:

Gatekeeper Table

归功于Rick G. Garibay。您应该阅读他的安全演示文稿:Hardening Security in ASP.NET Applications & Services

继续检查:一旦您的应用程序部署完毕并且正在运行,并且您已经强化了应用程序和服务器,只是为了让它运行,这是非常诱人的。但请定期检查防病毒软件是否仍在运行并正确更新,并且正在应用补丁等。在攻击发生之前扫描日志。服务器运行的时间越长,可能会随着时间的推移发现更多漏洞,因此请继续运行PCI扫描,您选择的频率将取决于数据的安全要求。


这是一个很长的答案,但我希望它有助于解决您的安全问题。