来自客户端XXX的Request.Form值可能存在潜在危险,请注意。

3

昨天我的应用程序崩溃了,当我检查日志文件夹时,发现错误日志文件大小约为5 MB。

我怀疑有人攻击了我的网站。

这些是我发现的错误:

A potentially dangerous Request.Form value was detected from the client (hdn_rr="1'"()&%<ScRiPt >prompt(9964...").

Invalid JSON primitive: mNPPaqUT.

Unterminated string passed in. (2): '"

Invalid JSON primitive: select pg_sleep(9);

Invalid JSON primitive: response.write

Invalid JSON primitive:  OR 3+185-185-1=0+0+0+1 --

如何停止和防止这些攻击?

如何防范此类攻击?


你能定义一下“应用程序崩溃”吗?发生了什么?当您尝试浏览您的应用程序时,您得到了什么响应?或者它很长时间没有响应?似乎有人尝试进行基于时间的SQL注入攻击。因此,如果您注意到您的应用程序等待太长时间才响应,那就意味着攻击者成功地进行了SQLi攻击。如果您粘贴相关控制器和模型的源代码,我可以提供更多帮助。但是,“检测到潜在危险的Request.Form值”意味着IIS已启用请求验证方法以便检测XSS攻击。 - Mehmet Ince
我的意思是它很长时间没有响应。我想从一开始就阻止这些攻击,需要一些关于发生了什么、这些攻击的类型以及如何从开发和管理角度防止它们的信息。 - Anyname Donotcare
3个回答

5
似乎有人尝试了基于时间的SQL注入攻击,但你说日志文件大小约为5 MB。这意味着攻击者使用了自动漏洞扫描器,如Netsparker或Acunetix。这些应用程序在那个时候生成了大量的HTTP请求,导致日志大小达到5 MB。如果您查看日志的时间戳,我相信在10秒内将记录几乎50-100个HTTP请求,这是无法由人类生成的。
"客户端检测到潜在危险的Request.Form值"这个错误来自IIS。因为IIS能够通过分析每个HTTP请求来检测XSS负载。当它将其中一个标记为恶意时,IIS会生成该日志并在到达应用程序层之前丢弃该请求。
为了确保您的应用程序是否安全,您可以在此处粘贴相关控制器和模型的源代码,我将为您进行分析。但是,如果您可以说“我使用预处理语句或MVC而没有内联查询”,那么我可以说您的应用程序安全,不会受到SQL注入攻击的威胁。
总之,似乎您的应用程序崩溃或停止响应是由于高HTTP流量。 SQL注入或XSS攻击可能会导致数据泄露或针对客户端的威胁。但是,这些类型的攻击很少会导致应用程序崩溃,除非是针对CGI应用程序的溢出攻击。

非常感谢,但我的应用程序是asp.net web forms而不是MVC :( 是的,在这次攻击期间我发现了数据泄漏问题。 - Anyname Donotcare

2
我认为这是一个千载难逢的问题...你可以想出一种方法来防御这种攻击,但可能每天都会有新的攻击方式。
一种方法是对来自特定源的请求进行“限流”。例如,如果连接到IP地址为10.10.8.23的连接正在进行超过“合理数量”的请求(并且可选地失败),则停止接受来自该IP的请求一段时间。
这可以作为模块处理,在global.asx中或使用其他方法处理。然而,有一套网络恶意软件工具可以显著简化此过程,而且不需要编码。

1
我非常喜欢这种方法,即指出“此”ID正在请求过多的请求,直到管理员释放该IP之前关闭它们。您应该收到非人类请求的唯一原因是来自您已设置FTP文件等其他方的请求。我甚至会采取一些前端服务器来防御DDoS攻击,并检查它们是否有浏览器打开以确定DDoS和实际客户/客户端。 - Andrew Grinder

2
很遗憾,没有一种万能的解决方法。从错误信息来看,似乎您遭到了注入和XSS攻击。听起来IIS已经为您阻止了XSS攻击,希望注入攻击没有影响您或您的用户。可能作为副作用,当您的网站崩溃时,DOS(拒绝服务)也发生了。
在查看OWASP项目文档时,我找到了一些链接: 至于DOS:处理这种自动化攻击需要网络级别的措施(例如阻止黑名单流量),您应该与提供商合作以防止它们发生。(或者您可以选择像CloudFlare这样的提供商 - 我们没有关联,只是听说他们采用了良好的安全措施等)
另一个普遍的建议是(如果您还没有这样做),在您的Web服务器前面设置反向代理。Nginx和HAproxy是两个常用的产品,用于此目的。我不会在您的应用程序中进行任何基于IP或其他网络级别的预防措施,但这些反向代理设置通常具有一些这些场景的模块和配置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接