ADC

JSON SQL 注入保护检查

传入的 JSON 请求可以以部分 SQL 查询字符串或代码中未经授权的命令的形式进行 SQL 注入。这会导致从Web服务器的JSON数据库中窃取数据。收到此类请求后,设备会阻止此类请求以保护您的数据。

考虑以下情况:客户端向 NetScaler 设备发送 JSON SQL 请求,JSON 解析器解析请求负载,如果观察到 SQL 注入,则设备会对 JSON SQL 内容实施约束。该约束对 JSON SQL 请求实施大小限制。因此,如果观察到任何 JSON SQL 注入,设备将应用操作并使用 JSON SQL 错误页面进行响应。

配置 JSON SQL 注入保护

要配置 JSON SQL 保护,必须完成以下步骤:

  1. 将应用程序防火墙配置文件添加为 JSON。
  2. 为 JSON SQL 注入设置设置设置应用程序防火墙配置文件
  3. 通过绑定应用程序防火墙配置文件来配置 JSON SQL 操作。

添加 JSON 类型的应用程序防火墙配置文件

您必须首先创建一个配置文件,指定应用程序防火墙必须如何保护您的 JSON Web 内容免受 JSON SQL 注入攻击。 在命令提示符下,键入:

add appfw profile <name> -type (HTML | XML | JSON)

注意

将配置文件类型设置为 JSON 时,HTML 或 XML 等其他检查将不适用。

示例

add appfw profile profile1 –type JSON

配置 JSON SQL 注入操作

您必须配置一个或多个 JSON SQL 注入操作来保护您的应用程序免受 JSON SQL 注入攻击。 在命令提示符下,键入:

set appfw profile <name> - JSONSQLInjectionAction [block] [log] [stats] [none]

SQL 注入操作包括: 阻止- 阻止违反此安全检查的连接。 日志-记录此安全检查的冲突情况。 统计信息-为此安全检查生成统计信息。 无-禁用此安全检查的所有操作。

配置 JSON SQL 注入类型

要在应用程序防火墙配置文件上配置 JSON SQL 注入类型,请在命令提示符下键入:

set appfw profile <name> - JSONSQLInjectionType <JSONSQLInjectionType>

示例

set appfw profile profile1 -JSONSQLInjectionType SQLKeyword

其中可用的 SQL 注入类型是: 可用的 SQL 注入类型。 SQLSplChar。检查 SQL 特殊字符、 SQLKeyword。检查 SQL 关键字。 SQLSplCharANDKeyword。如果找到,将同时检查和阻塞。 SQLSplCharORKeyword。如果找到 SQL 特殊字符或 spl 关键字,则阻塞。 可能的值:SQLSplChar、SQLKeyword、SQLSplCharORKeyword、SQLSplCharANDKeyword。

注意: 要启用一个或多个操作,请键入“set appfw profile - JSONSQLInjectionAction”,然后键入要启用的操作。

示例

set appfw profile profile1 -JSONSQLInjectionAction block log stat

以下示例显示了一个示例有效负载、其对应的日志消息和统计信息计数器:

Payload:
=======
{
  "test": "data",
  "username": "waf",
  "password": "select * from t1;",
  "details": {
    "surname": "test",
    "age": "23"
  }
}

Log Message:
===========
08/19/2019:08:49:46 GMT pegasus121 Informational 0-PPE-0 : default APPFW APPFW_JSON_SQL 6656 0 :  10.217.32.165 18402-PPE0 - profjson http://10.217.32.147/test.html SQL Keyword check failed for object value(with violation="select(;)") starting at offset(52) <blocked>
Counters:
========
   1  441083             1 as_viol_json_sql
   3       0             1 as_log_json_sql
   5       0             1 as_viol_json_sql_profile appfw__(profjson)
   7       0             1 as_log_json_sql_profile appfw__(profjson)
<!--NeedCopy-->

使用 GUI 配置 JSON SQL 注入保护

请按照以下步骤设置 JSON SQL 注入保护设置。

  1. 在导航窗格上,导航到“安全”>“配置文件”。
  2. 配置文件页面中,单击添加
  3. NetScaler Web App Firewall 配置文件页面中,单击“高级设置”下的“安全检查”。
  4. 在“安全检查”部分中,转到 JSON SQL 注入 设置。
  5. 单击复选框附近的可执行文件图标。
  6. 单击 操作设置 以访问 JSON SQL 注入设置 页面。
  7. 选择 JSON SQL 注入 操作。
  8. 单击确定
  9. NetScaler Web App Firewall 配置文件 页面中,单击 高级设置 下的 放宽规则
  10. 放宽规则 部分中,选择 JSON SQL 注入 设置,然后单击 编辑
  11. 在 JSON SQL 注入放宽规则页面中,输入请求必须发送到的 URL。发送到此 URL 的所有请求都不会被阻止。
  12. 单击创建

    JSON SQL 注入安全检查

为 JSON SQL 注入保护配置细粒度放松

Web App Firewall 为您提供了一个选项,可以从基于 JSON 的 SQL 注入检查中放宽特定 JSON 键或值。您可以使用细粒度放松规则配置多个选项来放宽 JSON 负载。

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

基于 JSON 的 SQL 安全保护为以下方面提供了放宽:

  • 注册表名称
  • 注册表值

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

注意:

正则表达式非常强大。特别是如果您不太熟悉 PCRE 格式的正则表达式,请仔细检查您编写的任何正则表达式。确保他们准确地定义了要添加为例外的 URL,而不是别的。粗心使用通配符,尤其是点星号 (.*) 元字符或通配符组合,可能会产生您不希望的结果,例如阻止对您不打算阻止的 Web 内容的访问,或者允许 JSON SQL Injection 检查本来会阻止的攻击。

需要考虑的要点

  • 值表达式是可选参数。字段名称可能没有任何值表达式。
  • 一个注册表名称可以绑定到多个值表达式。
  • 必须为值表达式分配值类型。值类型可以是:1) 关键字,2) SpecialString。
  • 您可以为每个键名称或 URL 组合设置多个放宽规则。

使用命令界面为命令注入攻击配置 JSON 细粒度放宽

要配置 JSON 文件颗粒放宽规则,必须将细粒度放松实体绑定到 Web App Firewall 配置文件。

在命令提示符下,键入:

bind appfw profile <profile name> -jsoncmdURL <URL> -key <key name> -isregex <REGEX/NOTREGEX> -valueType <keyword/SpecialString> <value Expression> -isvalueRegex <REGEX/NOTREGEX>
<!--NeedCopy-->

示例:

bind appfw profile appprofile1 -jsonsqlurl www.example.com -key stn_name  -isRegex NOTREGEX -valueType Keyword “union” -isvalueRegex NOTREGEX
<!--NeedCopy-->

使用 GUI 为基于 JSON 的命令注入攻击配置精细放松规则

  1. 导航到 应用程序防火墙 > 配置文件,选择一个配置文件,然后单击 编辑
  2. 在“高级设置”窗格中,单击“放宽规则”。
  3. 在“放松规则”部分中,选择 JSON SQL 注入记录,然后单击编辑
  4. 在“JSON SQL 注入放宽规则”滑块中,单击 添加
  5. JSON SQL 注入放宽规则 页面中,设置以下参数。

    1. 已启用
    2. 是名字正则表达式
    3. 注册表项名称
    4. URL
    5. 值类型
    6. 注意
    7. 资源 ID
  6. 单击创建
JSON SQL 注入保护检查