我认为您的应用程序无意接受匿名文件上传。这意味着某些东西正在被利用。
如果不查看您的应用程序源代码并且不知道您的服务器是如何配置的,那么实际上不可能提供一个简单的解决方案来防止您怀疑的文件上传漏洞。相反,我提供了有关如何保护您的服务器和应用程序的信息,我希望这些信息对您有用。
重新开始:现在您的服务器已被入侵,理想情况下,您应该重新格式化服务器并从最后一次知道的安全备份中加载数据。在不重新格式化的情况下挽救已被入侵的服务器并将其恢复到安全状态是相当困难的,除非您确切地知道它们在系统上被入侵的内容,并且可以确定您可以扭转影响。我总是会谨慎行事。
主动保护:
您应确保定期启用和应用 Windows 更新。您安装了每天运行的防病毒软件,一个严密的防火墙。当然,为所有用户帐户使用强密码。不要忘记定期修补第 3 方软件和控件。
FTP 不安全:您注意到您正在使用 FTP。FTP 本身是不安全的,您的凭据以纯文本形式通过 Internet 发送,您应该避免使用 FTP,如果黑客入侵了您和您的服务器之间的任何网络(其中一些网络可能超出您的控制范围),那么他们当您登录时可能刚刚阅读它。不会记录身份验证错误,因为他们知道密码。因此,用SFTP替换 FTP ,或者更好的是只通过VPN隧道访问您的服务器到您的服务器。
PCI 漏洞扫描:一旦您的服务器处于相对安全、新鲜的状态,您应该对您的服务器运行 PCI 扫描。PCI 扫描是处理敏感信用卡详细信息的服务器的一项要求,但它对于检查任何面向公众的服务器的安全性很有用,即使您不处理信用卡也是如此。
有许多PCI 合规性扫描提供商。那里有很多免费试用解决方案,因此您的初始成本很低。我可以同时推荐Comodo Hacker Guardian和McAfee Vulnerability Scanner。
它使用起来非常简单,您注册并向扫描器提供您的服务的 IP 地址,然后它会扫描它并提供它知道并需要修补的所有漏洞的报告。它很可能不会在您的 Web 应用程序中找到漏洞,但很可能该漏洞存在于 IIS 或其他服务器技术中,而不是您的代码中。
我相信您会惊讶于可以返回多少关于服务器的信息,我第一次运行扫描时就是这样。
强化您的 Web 应用程序:一旦您解决了所有问题,您就可以相对确定您的服务器是安全的,现在您只需要检查您是否遵循最佳实践并强化您的代码。并非所有这些都一定适用,(例如,我不确定您是否使用 SQL Server),但您绝对应该按照以下教程编写代码:
Microsoft:防止 SQL 注入
MSDN:保护 IIS 7
Microsoft:为 ASP.NET 应用程序的安全配置 NTFS 文件权限
ASP.NET 有很多内置检查来尝试防止不安全的代码被注入到您的表单中。这可能与您的情况最相关,如果您确定这是他们破坏您的服务器的方式。微软:防止 ASP.NET 中的注入攻击
在构建 ASP.NET 应用程序时,了解所有各种漏洞可能存在的位置很有用。此表可能有用:
归功于Rick G. Garibay。您应该阅读他的安全演示:强化 ASP.NET 应用程序和服务中的安全性。
继续检查:一旦您的应用程序已经部署并正在运行,并且您已经强化了您的应用程序和服务器,只是为了让它运行,这是非常诱人的。但请定期检查防病毒软件是否仍在运行和正确更新,以及是否正在应用补丁等。在攻击发生之前扫描您的日志。您的服务器运行时间越长,随着时间的推移可能会发现更多漏洞,因此请继续运行 PCI 扫描,您选择的频率将取决于数据的安全要求。
这是一个有点长的答案,但我希望它有助于解决您的安全问题。