从客户端XXX检测到潜在危险的Request.Form值
本文关键字:危险 Request Form 客户端 XXX 检测 | 更新日期: 2023-09-27 17:58:02
昨天我的应用程序出现故障,当我检查日志文件夹时,我发现错误日志文件大小约为5MB。
我怀疑有人攻击了我的网站。
这些是我发现的错误:
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注入攻击,但您说日志文件的大小约为5MB。这意味着攻击者使用了像Netsparker或Acunetix这样的自动漏洞扫描程序。这些应用程序当时生成了大量HTTP请求,这导致了5MB的日志大小。如果你查看日志的时间戳,我相信在10秒内会有近50-100个http请求被记录,这是人类无法生成的。
"从客户端检测到潜在危险的Request.Form值"此错误来自IIS。因为IIS可以通过分析每个http请求来检测XSS有效负载。当IIS将其中一个标记为恶意时,它会生成该日志,并在请求到达应用层之前将其丢弃。
为了确保您的应用程序是否安全,您可以将相关控制器和模型的源代码粘贴到这里,我将为您进行分析。但如果你可以说"我使用prepared语句或MVC而不使用内联查询。"我可以说你的应用程序可以安全地抵御SQL注入攻击。
总之,您的应用程序似乎因HTTP流量过高而崩溃或停止响应。SQL注入或XSS攻击可能导致数据泄露,或者是针对客户端的线程攻击。但除了针对CGI应用程序的溢出攻击外,这些类型的攻击很少会使应用程序崩溃。
我认为这是一个价值百万美元的问题。。。你可能会想出一种方法来防范这种攻击,但可能每天都有新的方法。
一种方法是"节流"来自特定来源的请求。例如,如果IP地址为10.10.8.23的连接发出的请求超过了"合理数量"(并且可能失败),则在一段时间内停止接受来自该IP的请求。
这可以作为一个模块在global.asx中处理,也可以作为你认为合适的其他方法处理,但有一套网络恶意软件工具可以让这变得更容易,而且不需要编码。
不幸的是,没有银弹。从错误消息来看,您似乎是注入和XSS的目标。听起来IIS为您停止了XSS,希望注入不会影响您或您的用户。可能是副作用,当你的网站关闭时,DOS(拒绝服务)似乎也发生了。
以下是我在查看OWASP项目文档时发现的一些链接:
-
XSS预防备忘单提供了有关使用输出转义/编码的提示。
-
类似地,SQL注入备忘单也为参数化查询和转义所有用户输入提供了建议。
至于DOS:处理这种自动攻击需要网络级别的测量(例如阻止列入黑名单的流量),你应该与你的提供商合作,防止它们发生。(或者你可以转到像CloudFlare这样的提供商——没有附属公司,只是经常听到这个名字,他们知道要采取良好的安全措施等等)
另一个常见的建议是(如果你还没有)在你的网络服务器前设置一个反向代理。Nginx和HAproxy是两种流行的产品。我不会在您的应用程序中进行任何基于IP或其他网络级别的预防,但这些反向代理设置通常具有用于其中一些场景的模块和配置。