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 注入保护检查