ADC

HTML 命令注入保护检查

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

NetScaler Web App Firewall 配置文件现已得到增强,增加了针对命令注入攻击的新安全检查。当命令注入安全检查检查流量并检测到任何恶意命令时,设备会阻止请求或执行已配置的操作。

在命令注入攻击中,攻击者的目标是在 NetScaler 操作系统上运行未经授权的命令。为此,攻击者使用易受攻击的应用程序注入操作系统命令。如果 NetScaler 设备将任何不安全的数据(表单、Cookie 或标头)传递给系统 shell,则该设备容易受到注入攻击。

命令注入保护的工作原理

  1. 对于传入的请求,WAF 会检查流量的关键字或特殊字符。如果传入的请求没有与任何被拒绝的关键字或特殊字符匹配的模式,则允许该请求。否则,将根据配置的操作阻止、删除或重定向请求。

  2. 如果您希望将某个关键字或特殊字符排除在列表之外,则可以在特定条件下应用放宽规则绕过安全检查。
  3. 您可以启用日志记录以生成日志消息。您可以监视日志,以确定对合法请求的响应是否被阻止。日志消息数量的大幅增加可能表明有人试图发起攻击。
  4. 您还可以启用统计功能来收集有关违规和日志的统计数据。统计数据计数器出现意外激增可能表明您的应用程序受到攻击。如果合法请求被阻止,您可能需要重新访问配置,以查看是否必须配置新的放宽规则或修改现有放宽规则。

用于命令注入检查的关键字和特殊字符被拒绝

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

    <commandinjection>
      <keyword type="LITERAL" builtin="ON">7z</keyword>
      <keyword type="LITERAL" builtin="ON">7za</keyword>
      <keyword type="LITERAL" builtin="ON">7zr</keyword>
…
</commandinjection>
<!--NeedCopy-->

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

使用 CLI 配置命令注入检查

在命令行界面中,您可以使用 set the profile 命令或 add the profile 命令来配置命令注入设置。您可以启用阻止、日志和统计信息操作。您还必须设置要在有效载荷中检测的关键字和字符串字符。

在命令提示符下,键入:

set appfw profile <profile-name> –cmdInjectionAction <action-name> -CMDInjectionType <CMDInjectionType>]

注意:

默认情况下,命令注入操作设置为“无”。此外,默认命令注入类型设置为CmdSplCharANDKeyWord

示例:

set appfw profile profile1 -cmdInjectionAction block -CMDInjectionType CmdSplChar

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

  • 无-禁用命令注入保护。
  • 日志-记录安全检查的命令注入冲突。
  • 阻止-阻止违反命令注入安全检查的流量。
  • Stats-生成命令注入安全违规的统计信息。

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

  • cmd splChar。检查特殊字符
  • cmd关键字。检查命令注入关键字
  • CmdSplCharANDKeyWord。检查特殊字符和命令注入。只有当关键字和方块都存在时。
  • CmdSplCharORKeyWord。检查特殊字符和命令注入关键字和方块(如果找到其中之一)。

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

如果您的应用程序要求您绕过对负载中特定元素或属性的命令注入检查,则可以配置放松规则。

命令注入检查放宽规则具有以下语法:

bind appfw profile <profile name> –cmdInjection <string> <URL> -isregex <REGEX/NOTREGEX>

标题中正则表达式的放松规则示例

bind appfw profile sample -CMDInjection hdr "http://10.10.10.10/" -location heaDER -valueType Keyword '[a-z]+grep' -isvalueRegex REGEX

因此,注入免除了命令注入检查允许包含 grep 变体的 hdr 标头。

bind appfw profile sample -CMDInjection ck_login "http://10.10.10.10/" -location cookie -valueType Keyword 'pkg[a-z]+' -isvalueRegex REGEX

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

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

  1. 导航到 安全 > NetScaler Web App Firewall 和配置文件
  2. 配置文件 页面上,选择一个配置文件,然后单击 编辑
  3. NetScaler Web App Firewall 配置文件 页面上,转到“高级设置”部分,然后单击“安全检查”。

选择命令注入检查选项

  1. 在“安全检查”部分中,选择“HTML 命令注入”,然后单击“操作 设置”。
  2. HTML 命令注入设置 页面中,设置以下参数:

    1. 操作。选择一个或多个要执行的操作以进行命令注入安全检查。
    2. 选中请求包含。选择命令注入模式以检查传入请求是否具有该模式。
  3. 单击“确定”

配置命令注入检查设置

使用 GUI 查看或自定义命令注入模式

您可以使用 GUI 查看或自定义 HTML 命令注入模式。

默认的命令注入模式在默认签名文件中指定。如果没有将任何签名对象绑定到配置文件,则配置文件将使用默认签名对象中指定的默认 HTML 命令注入模式进行命令注入安全检查处理。在默认签名对象中指定的规则和模式是只读的。您无法编辑或修改它们。如果要修改或更改这些模式,请复制默认的 ssigNatures 对象以创建用户定义的签名对象。更改新用户定义的签名对象中的命令注入模式,然后在处理要使用这些自定义模式的流量的配置文件中使用此签名对象。

有关详细信息,请参阅 签名

要使用 GUI 查看默认的命令注入模式,请执行以下操作:

  1. 导航到 应用程序防火墙 > 签名,选择 * 默认签名,然后单击 编辑

查看默认的命令注入模式

  1. 单击 管理 CMD/SQL/XSS 模式CMD/SQL/XSS 路径(只读) 表显示了与 CMD/SQL/XSS 注入有关的模式:

查看默认的命令注入模式

  1. 选择一行并单击 管理元素 以显示 Web App Firewall 命令注入检查使用的相应命令注入模式(关键字、特殊字符串、转换规则或通配符)。

使用 GUI 自定义命令注入模式

您可以编辑用户定义的签名对象以自定义 CMD 关键字、特殊字符串和通配符。您可以添加新条目或删除现有条目。您可以修改命令注入特殊字符串的转换规则。

  1. 导航到应用防火墙 > 签名,突出显示目标用户定义的签名,然后单击 添加。单击 管理 CMD/SQL/XSS 模式
  2. 管理 CMD/SQL/XSS 路径 页面中,选择目标 CMD 注入行。
  3. 单击 管理元素添加删除 命令注入元素。

    警告:

    在删除或修改任何默认命令注入元素之前,或者删除 CMD 路径以删除整行之前,必须小心。签名规则和命令注入安全检查依赖于这些元素来检测命令注入攻击以保护您的应用程序。如果在编辑过程中删除了所需的模式,自定义 SQL 模式可能会使应用程序容易受到命令注入攻击。

查看默认的命令注入模式

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

NetScaler Web App Firewall 统计 信息页面以表格或图形格式显示安全流量和安全违规详细信息。

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

在命令提示符下,键入:

stat appfw profile profile1

Appfw 配置文件流量统计 速率(/秒) 总数
请求 0 0
Request Bytes(请求字节数) 0 0
回应 0 0
Response Bytes(响应字节数) 0 0
中止 0 0
重定向 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 SQL 注入 0 0
字段格式 0 0
字段一致性 0 0
信用卡 0 0
安全对象 0 0
签名违规 0 0
内容类型 0 0
JSON 拒绝服务 0 0
JSON SQL 0 0
JSON 跨站点脚本 0 0
文件上载类型 0 0
推断内容类型 XML 有效负载 0 0
HTML 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
JSON SQL 注入 0 0
JSON 跨站点脚本日志 0 0
文件上载类型日志 0 0
推断内容类型 XML 有效负载 L 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 重复) | 0 | 0| HTTP 服务器错误 (5xx 重复) | 0 | 0 |

使用 NetScaler GUI 查看 HTML 命令注入统计信息

完成以下步骤以查看命令注入统计信息:

  1. 导航到 安全 > NetScaler Web App Firewall > 配置文件
  2. 在详细信息窗格中,选择 Web App Firewall 配置文件,然后单击“统计”。
  3. NetScaler Web App Firewall 统计 页面显示 HTML 命令注入流量和违规详细信息。
  4. 您可以选择表格视图或切换到图形视图以表格或图形格式显示数据。

HTML 命令注入流量统计信息

命令注入流量统计 GUI 部分

HTML 命令注入违例统计信息

命令注入流量统计 GUI 部分