Citrix ADC

JSON命令注入保护检查

JSON命令注入保护检查

JSON命令注入检查检查传入的JSON流量中是否存在破坏系统安全性或修改系统的未经授权的命令。在检查流量时,如果检测到任何恶意命令,设备将阻止请求或执行配置的操作。

命令注入攻击是指攻击者在Citrix ADC操作系统或后端服务器上执行未经授权的命令。为了实现这一点,攻击者使用易受攻击的应用程序注入操作系统命令。如果设备只是转发请求而不进行任何安全检查,则后端应用程序很容易受到注入攻击。因此,配置安全检查非常重要,因此Citrix ADC设备可以通过阻止不安全的数据来保护您的web应用程序。

命令注入保护如何工作

  1. 对于传入的JSON请求,WAF检查关键字或特殊字符的流量。如果JSON请求没有匹配任何被拒绝的关键字或特殊字符的模式,则允许该请求。否则,请求将根据配置的操作被阻塞、删除或重定向。
  2. 如果您希望将关键字或特殊字符从列表中豁免,则可以创建松弛规则,在特定条件下绕过安全检查。
  3. 您可以启用日志记录以生成日志消息。您可以监视日志,以确定对合法请求的响应是否被阻止。日志消息数量的大量增加可能表明有人试图发起攻击。
  4. 您还可以启用统计特性来收集有关违规和日志的统计数据。统计计数器的意外激增可能表明您的应用程序受到了攻击。如果合法请求被阻止,您可能必须重新查看配置,看看是否必须配置新的放松规则或修改现有的放松规则。

命令注入检查拒绝关键字和特殊字符

为了检测和阻止JSON命令注入攻击,该设备在默认签名文件中定义了一组模式(关键字和特殊字符)。以下是在命令注入检测过程中阻塞的关键字列表。

< commandjection > 7z 7za 7zr

签名文件中定义的特殊字符包括:|;& $ > < ' \ !> > #

通过CLI配置JSON命令注入检查

在命令行界面中,可以使用set appfw profile命令或添加appfw profile命令配置JSON命令注入设置。您可以启用块、日志和统计操作。您还必须设置命令注入类型,例如要在有效负载中检测的关键字和字符串字符。

在命令提示符下,输入:

set appfw profile -cmdInjectionAction -CMDInjectionType ]

注意:

缺省情况下,命令注入动作设置为“block log stats”。另外,默认的命令注入类型设置为CmdSplCharANDKeyWord.升级后,现有的Web应用程序防火墙配置文件将操作设置为“None.”。

例子:

set appfw profile profile1 -JSONCMDInjectionAction block -JSONCMDInjectionType CmdSplChar

其中,可用的JSON命令注入动作是:

无-关闭命令注入保护。日志-记录安全检查中的命令注入违规行为。阻断—阻断违反命令注入安全检查的流量。Stats -生成命令注入安全违规的统计信息。

其中,可用的JSON命令注入类型为:

Cmd SplChar—检查特殊字符CmdKeyWord—检查命令注入关键字CmdSplCharANDKeyWord—默认操作。该动作检查特殊字符和命令注入。关键字和块仅当两者都存在时。CmdSplCharORKeyWord—检查特殊字符和命令注入,如果有,则检查关键字和阻塞。

配置JSON命令注入保护检查放松规则

如果应用程序要求绕过有效负载中特定ELEMENT或ATTRIBUTE的JSON命令注入检查,则可以配置松弛规则。

JSON命令注入检查放松规则的语法如下。

绑定appfw profile -JSONCMDURL -comment -isAutoDeployed (AUTODEPLOYED | NOTAUTODEPLOYED) -state (ENABLED | DISABLED)

Regex在头部的松弛规则的例子

绑定appfw profile abc_json -jsoncmDURL http://1.1.1.1/hello.html

然而,下面的命令放松了来自1.1.1.1上所有url的请求:

绑定appfw配置文件abc_json -jsoncmDURL http://1.1.1.1/* "

要移除松弛,使用“unbind”。

解绑定appfw profile abc_json -jsoncmDURL " http://1.1.1.1/* "

使用GUI配置JSON命令注入检查

完成以下步骤配置JSON命令注入检查。

  1. 导航到安全> Citrix Web应用程序防火墙和配置文件
  2. 配置文件页签中,选择目标配置文件,单击编辑
  3. Citrix Web App防火墙配置文件页面,转到高级设置部分,单击安全检查

访问安全设置上的JSON安全检查

  1. 安全检查部分中,选择JSON命令注入并点击行动设置。
  2. JSON命令注入设置页,设置以下参数

    1. 行动。选择一个或多个要执行的JSON命令注入安全检查操作。
    2. 检查请求包含。选择命令注入模式以检查传入请求是否具有该模式。
  3. 点击好吧

配置JSON命令注入检查设置

查看命令注入流量和违规统计信息

Citrix Web应用防火墙统计页以表格或图形格式显示安全流量和安全违规细节。

使用命令界面查看安全统计信息。

在命令提示符下,输入:

统计appfw配置文件profile1

Appfw profile流量统计 率(/秒) 总计
请求 0 0
请求字节 0 0
反应 0 0
响应字节 0 0
中止 0 0
重定向 0 0
长期Ave响应时间(ms) - - - - - - 0
最近Ave响应时间(毫秒) - - - - - - 0
HTML/XML/JSON违规统计 率(/秒) 总计
开始的URL 0 0
否认URL 0 0
引用页头 0 0
缓冲区溢出 0 0
饼干的一致性 0 0
饼干劫持 0 0
CSRF表单标签 0 0
跨站脚本 0 0
SQL注入 0 0
字段格式 0 0
场的一致性 0 0
信用卡 0 0
安全对象 0 0
签名侵犯 0 0
内容类型 0 0
JSON拒绝服务 0 0
SQL注入 0 0
JSON跨站点脚本 0 0
文件上传类型 0 0
推断内容类型XML有效负载 0 0
CMD注入 0 0
XML格式 0 0
XML拒绝服务(XDoS) 0 0
XML消息验证 0 0
Web服务互操作性 0 0
XML SQL注入 0 0
XML跨站脚本 0 0
XML附件 0 0
SOAP错误违反 0 0
XML泛型违规 0 0
总违规 0 0
HTML/XML/JSON日志统计 率(/秒) 总计
启动URL日志 0 0
拒绝URL日志 0 0
引用报头日志 0 0
缓冲区溢出日志 0 0
Cookie一致性日志 0 0
Cookie劫持日志 0 0
来自标记日志的CSRF 0 0
HTML跨站脚本日志 0 0
HTML跨站脚本转换日志 0 0
HTML SQL注入日志 0 0
HTML SQL转换日志 0 0
字段格式日志 0 0
字段一致性日志 0 0
信用卡 0 0
信用卡转换日志 0 0
安全对象日志 0 0
签名的日志 0 0
内容类型日志 0 0
JSON拒绝服务日志 0 0
SQL注入日志 0 0
JSON跨站点脚本日志 0 0
文件上传类型日志 0 0
推断内容类型XML有效负载L 0 0
JSON CMD注入 0 0
HTML命令注入日志 0 0
XML格式日志 0 0
XML拒绝服务(XDoS)日志 0 0
XML消息验证日志 0 0
WSI日志 0 0
XML SQL注入日志 0 0
XML跨站点脚本日志 0 0
XML附件日志 0 0
SOAP故障日志 0 0
XML通用日志 0 0
日志消息总数 0 0
服务器错误响应统计率(/s) 总计
HTTP客户端错误(4xx Resp) 0 0
HTTP服务器错误(5xx Resp) 0 0
HTML/XML/JSON日志统计 率(/秒) 总计
命令注入日志 0 0
XML格式日志 0 0

使用Citrix ADC GUI查看JSON命令注入统计信息

执行以下步骤查看命令注入统计信息:

  1. 导航到安全> Citrix Web应用防火墙>配置文件
  2. 在详细信息窗格中,选择Web应用防火墙配置文件,单击统计数据
  3. Citrix Web应用防火墙统计页面显示JSON命令注入流量和违规细节。
  4. 您可以选择表格视图或者切换到图形化视图以表格或图形格式显示数据。

JSON命令注入流量统计

JSON命令注入流量统计GUI部分

JSON命令注入违规统计

JSON命令注入流量统计GUI部分

为JSON命令注入配置细粒度松弛

Web应用防火墙为您提供了一个选项,可以从基于JSON的命令注入检查中放松特定的JSON键或值。通过配置细粒度松弛规则,可以完全绕过一个或多个字段的检查。

以前,为JSON保护检查配置松弛的唯一方法是指定整个URL,这将绕过对整个URL的验证。

基于JSON的命令注入安全保护提供了以下放松:

  • 关键的名字
  • 键值

基于JSON的命令注入保护使您能够配置允许特定模式并阻止其余模式的放松。例如,Web应用防火墙目前有超过100个SQL关键字的默认集。由于黑客可以在命令注入攻击中使用这些关键字,Web应用防火墙将所有关键字标记为潜在威胁。如果您想放松一个或多个被认为对特定位置安全的关键字,您可以配置一个放松规则,该规则可以绕过安全检查并阻止其余的关键字。弛豫中使用的命令有可选参数“值类型”和“值表达式”。您可以指定值表达式是正则表达式还是文字字符串。值类型可以为空,也可以选择“关键字”或“特殊字符串”。

注意:

正则表达式功能强大。特别是如果您不完全熟悉pcre格式的正则表达式,请仔细检查您编写的任何正则表达式。确保它们准确地定义了您想要添加的URL作为异常,而不是其他URL。不小心使用通配符,特别是使用点星号(.*)元字符或通配符组合,可能会导致您不想要的结果,例如阻止访问您不打算阻止的web内容,或者允许JSON SQL注入检查本应阻止的攻击。

注意事项

  • Value expression是可选参数。字段名可能没有任何值表达式。
  • 一个键名可以绑定到多个值表达式。
  • 值表达式必须指定值类型。取值类型包括:1)关键字,2)特殊字符串。
  • 每个键名/URL组合可以有多个松弛规则。

使用命令接口为命令注入攻击配置JSON细粒度松弛

要配置JSON文件粒度松弛规则,必须将细粒度松弛实体绑定到Web应用程序防火墙配置文件。

在命令提示符下,输入:

bind appfw profile  -jsoncmdURL  -key  -valueType   

例子:

bind appfw profile appprofile1 -jsoncmdurl www.example.com -key blg_cnt -isRegex NOTREGEX -valueType关键字" cat " -isvalueRegex NOTREGEX . bind appfw profile appprofile1 -jsoncmdurl www.example.com

通过GUI方式配置针对基于json的命令注入攻击的细粒度松弛规则

  1. 导航到应用防火墙>配置文件,选择配置文件,单击编辑
  2. 高级设置窗格中,单击放松规则
  3. 放松规则部分,选择JSON命令注入记录并点击编辑
  4. JSON命令注入松弛规则滑块,点击添加
  5. JSON命令注入松弛规则页,设置以下参数。

    1. 启用
    2. 名称是正则表达式吗
    3. 键名
    4. URL
    5. 值类型
    6. 评论
    7. 资源ID
  6. 点击创建

用于跨站点脚本的JSON细粒度松弛