Citrix ADC

针对 HTML 有效负载的基于命令注入语法的保护

Citrix Web App Firewall 使用模式匹配方法来检测 HTML 有效负载中的命令注入攻击。该方法使用一组预定义的关键字和(或)特殊字符来检测攻击并将其标记为违规。尽管这种方法是有效的,但它可能导致许多误报,从而导致增加一个或多个放松规则。尤其是在HTTP请求中使用诸如“Exit”之类的常用词时。我们可以通过对 HTML 有效负载实施基于命令注入语法的保护检查来减少误报。

在模式匹配方法中,如果 HTTP 请求中存在预定义的关键字和(或)特殊字符,则会识别命令注入攻击。在这种情况下,该语句不必是有效的命令注入语句。但是在基于语法的方法中,只有在命令注入语句中存在关键字或特殊字符时,才会检测到命令注入攻击。因此,减少了假阳性情景。

基于命令注入语法的保护使用场景

考虑一句话:“冲向出口!”存在于 HTTP 请求中。尽管该语句不是有效的命令注入语句,但由于关键字“exit”,pattern-match 方法会将请求检测为命令注入攻击。但是在基于命令注入语法的方法中,该语句不会被检测为违规攻击,因为关键字不存在于有效的命令注入语句中。

使用 CLI 配置基于命令注入语法的保护参数

要实现基于命令注入语法的检测,必须在 Web App Firewall 配置文件中配置“cmdinjectionGrammar”参数。默认情况下,该参数处于禁用状态。支持除学习之外的所有现有命令注入操作。升级后创建的任何新配置文件都支持命令注入语法。新配置文件继续使用默认类型为“特殊字符或关键字”,并且必须显式启用命令注入语法。

在命令提示符下,键入:

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON/OFF
<!--NeedCopy-->

示例:

add appfw profile profile1 –CMDInjectionAction Block –CMDInjectionGrammar ON
<!--NeedCopy-->

使用 CLI 配置命令注入模式匹配保护和基于语法的保护

如果您同时启用了基于语法和模式匹配的方法,则设备将首先执行基于语法的检测。如果在操作类型设置为“block”的情况下检测到命令注入,则请求将被阻止(不使用模式匹配验证检测)。

在命令提示符下,键入:

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON –CMDInjectionType <Any action other than ‘None’: CMDSplCharANDKeyword/ CMDSplCharORKeyword/ CMDSplChar/ CMDKeyword>
<!--NeedCopy-->

示例:

add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType CMDSplChar
<!--NeedCopy-->

使用 CLI 仅使用基于语法的保护配置命令注入检查

在命令提示符下,键入:

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON –CMDInjectionType None
<!--NeedCopy-->

示例:

add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType None
<!--NeedCopy-->

使用 CLI 为基于命令注入语法的保护绑定放宽规则

如果您的应用程序要求您绕过针对 HTML 负载中特定“元素”或“属性”的命令注入检查,则必须配置放宽规则。

注意:

仅当设备使用命令注入语法执行检测时,才会评估将 ValueType 作为“关键字”的放宽规则。

命令注入检查放宽规则具有以下语法。在命令提示符下,键入:

bind appfw profile <name> -CMDInjection <String> [isRegex(REGEX| NOTREGE)] <formActionURL> [-location <location>] [-valueType (Keywor|SpecialString|Wildchar) [<valueExpression>][-isValueRegex (REGEX | NOTREGEX) ]]
<!--NeedCopy-->

示例:

bind appfw profile p1 -cmdinjection abc http://10.10.10.10/

bind appfw profile p1 –cmdinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX

bind appfw profile p1 –cmdinjection 'name' http://10.10.10.10/ -valueType Keyword 'exi[a-z]+' -isvalueRegex regEX
<!--NeedCopy-->

使用 GUI 配置基于命令注入语法的保护

完成以下步骤以配置基于语法的 HTML 命令注入检测。

  1. 导航到安全 > Citrix Web App Firewall 配置文件 > 配置文件

  2. 选择配置文件,然后单击 编辑

  3. 转到“高级设置”部分,然后单击“安全检查”。

  4. 选中“HTML 命令注入”复选框,然后单击“操作设置”

    启用命令注入

  5. 选中使用 CMD 语法检查复选框。

  6. 从“检查请求包含”中选择“”。

    命令注入操作设置

  7. 单击“确定”