Citrix ADC

SQL注入检查

XML SQL注入检查可以检查用户请求是否存在可能的XML SQL注入攻击。如果在XML有效负载中找到注入的SQL,则会阻止请求。

XML SQL攻击可以将源代码注入 网状物应用程序,从而可以将源代码解释为有效的 SQL查询并运行,从而使用恶意意图执行数据库操作。例如,可以启动 XML SQL攻击以获得对数据库内容的未经授权的访问权限或操作存储的数据。XML SQL注入攻击不仅是常见的,而且也可能是非常有害和昂贵的。

对数据库用户的权限进行分割可以在某种程度上帮助保护数据库。必须仅向所有数据库用户授予完成预期任务所需的权限,以便他们无法运行SQL查询来执行其他任务。例如,不得允许只读用户写入或操作数据表。网页应用程序防火墙XML SQL注入检查可检查所有 XML 请求,以提供特殊防御,防止注入可能破坏安全性的未授权 SQL 代码。如果 Web App Firewall 在任何用户的任何 XML 请求中检测到未经授权的 SQL 代码,它可以阻止请求。

Citrix Web应用防火墙检查 SQL关键字和特殊字符是否存在,以识别 XML SQL注入攻击。一组默认的关键字和特殊字符提供了通常用于启动 XML SQL攻击的已知关键字和特殊字符。Web应用防火墙将三个字符(单直引号 (‘)、反斜杠 () 和分号 (;) 视为 SQL安全检查处理的特殊字符。您可以添加新模式,并且可以编辑默认集以自定义 XML SQL检查检查。

Web应用防火墙提供了实施 XML SQL注入保护的各种操作选项。您可以阻止请求,在 纳什。日志文件中记录一条消息,其中包含观察到的冲突行为的详细信息,并收集统计信息以跟踪观察到的攻击次数。

除了操作之外,还可以XML为SQL注入处理配置几个参数。您可以检查SQL通配符。您可以更改XML SQL注入类型,并选择4个选项(SQLKeywordSQLSplCharSQLSplCharANDKeywordSQLSplCharORKeyword)中的一个,以指示如何在处理 XML有效负载时评估 SQL关键字和 SQL特殊字符。XMLSQL注释处理参数为您提供了一个选项,用于指定在XML SQL注入检测过程中需要检查或豁免的注释类型。

您可以部署放宽以避免误报。对传入请求的有效负载执行XML Web应用防火墙SQL检查,攻击字符串即使它们分布在多行中也会被识别。检查在元素属性值中查找 SQL注入字符串。您可以在指定条件下应用放宽来绕过安全检查检查。日志和统计信息可帮助您确定所需的放宽。

操作选项

当XML SQL注入检查检测到请求中的SQL注入攻击字符串时,将应用操作。以下操作可用于为您的应用程序配置优化的SQL XML注入保护:

——如果启用块,则只有在输入与XML SQL注入类型规范匹配时才会触发块操作。例如,如果SQLSplCharANDKeyword配置为 XML SQL注入类型,则不会阻止请求,如果请求不包含任何关键字,即使在有效负载中检测到 SQL特殊字符。如果 XML SQL注入类型设置为SQLSplCharSQLSplCharORKeyword,则此类请求将被阻止。

日志— 如果启用日志功能,则 XML SQL注入校验会生成日志消息,指示它所执行的操作。如果禁用块,则会为检测到 XML SQL冲突的每个位置(元素属性)生成单独的日志消息。但是,当请求被阻止时,只会生成一条消息。您可以监视日志以确定对合法请求的响应是否被阻止。日志消息数量的大幅增加可能表明尝试发起攻击。

计数据— 如果启用,统计数据功能将收集有关冲突和日志的统计数据。统计数据计数器出现意外激增可能表明您的应用程序受到攻击。如果合法请求被阻止,您可能需要重新访问配置,以查看是否需要配置新的放宽规则或修改现有的放宽规则。

XML参数

除了块、日志和统计操作之外,您还可以为 XML SQL注入检查配置以下参数:

检查 XML SQL通配符——通配符可用于扩大结构化查询语言(sql select)语句的选择范围。这些通配符运算符可与喜欢和 不不像运算符结合使用,将值与相似值进行比较。百分比 (%) 和下划线 (_) 字符经常用作通配符。百分号类似于与 MS-DOS一起使用的星号 (*) 通配符,以匹配字段中的零个、一个或多个字符。下划线类似于 MS-DOS问号 (?) 通配符。它匹配表达式中的单个数字或字符。

例如,您可以使用以下查询执行字符串搜索以查找名称包含 D字符的所有客户。

SELECT * from customer WHERE name like "%D%"

以下示例组合运算符以查找任何具有 0 作为第二个和第三个字符的工资值。

SELECT * from customer WHERE salary like '_00%

不同的 数据库管理系统供应商通过添加额外的运算符来扩展通配符。Citrix Web应用防火墙可以通过注入这些通配符来防范攻击。5.个默认的通配符为百分比 (%)、下划线 (_)、脱字符 (^)、开头方括号 ([) 和右方括号 (])。此保护适用于 HTML和 XML配置文件。

默认通配符是在*默认签名中指定的文字列表

-%--^-[-]<--需要复制-->

攻击中的通配符可以是PCRE,例如[^ f)。网页应用程序防火墙也支持 PCRE 通配符,但上面的文字通配符足以阻止大多数攻击。

注意

XML的SQL通配符校验与 XML SQL特殊字符校验不同。此选项必须谨慎使用,以避免误报。

查包含 SQL注入类型的请求-Web应用防火墙提供 4.个选项,用于根据应用程序的个别需求实现 SQL注入检查所需的严格程度。根据注入类型规范检查请求,以检测 SQL冲突行为。4.个 SQL注入类型选项是:

  • SQL特殊字符和关键字- - - - - - SQL关键字和SQL特殊字符必须存在于检查的位置才能触发SQL冲突。此限制性最小的设置也是默认设置。
  • SQL特殊字符— 处理过的有效负载字符串中必须至少有一个特殊字符才能触发 SQL冲突。
  • SQL关键字 — 经处理的有效负载字符串中必须至少有一个指定的 SQL关键字才能触发 SQL冲突。不要在没有适当考虑的情况下选择此选项。要避免误报,请确保输入中没有预期的关键字。
  • SQL特殊字符或关键字 — 关键字或特殊字符字符串必须存在于有效负载中才能触发安全检查冲突。

提示

如果选择 SQL特殊字符选项,Web应用防火墙会跳过不包含任何特殊字符的字符串。由于大多数 SQL服务器不处理前面没有特殊字符的 SQL命令,启用此选项可以显著减少 Web应用防火墙上的负载并加快处理速度,而不会使受保护的网站处于风险之中。

SQL注释处理— 默认情况下,Web应用防火墙会分析并检查 XML数据中的所有注释以查看注入的 SQL命令。许多 SQL服务器忽略注释中的任何内容,即使前面有 SQL特殊字符也是如此。为了更快地处理,如果 XML SQL服务器忽略注释,则可以将 Web应用防火墙配置为在检查注入 SQL的请求时跳过注释。XML SQL注释处理选项包括:

  • ANSI— 跳过 ANSI格式的 SQL注释,这些注释通常由基于 UNIX的 SQL数据库使用。
  • 嵌套— 跳过嵌套 SQL注释,这些注释通常由 Microsoft SQL Server使用。
  • ANSI/嵌套——跳过同时遵守ANSI和嵌套SQL注释标准的注释。仅匹配ANSI标准或只匹配嵌套标准的注释仍然会检查注入的SQL。
  • 检查所有注释-检查注入 SQL的整个请求,而不跳过任何内容。此为默认设置。

提示

在大多数情况下,除非后端数据库在Microsoft SQL Server上运行,否则不得选择嵌套或ANSI /嵌套选项。大多数其他类型的SQL Server软件无法识别嵌套注释。如果嵌套注释出现在指向另一类SQL服务器的请求中,则它们可能表示企图破坏该服务器上的安全性。

放宽规则

如果您的应用程序要求您绕过 XML有效负载中的特定元素或属性的 XML SQL注入检查,则可以配置放宽规则。XML SQL注入检查放宽规则具有以下参数:

  • 名称:您可以使用文字字符串或正则表达式来配置元素属性的名称。以下表达式免除以字符串PurchaseOrder开头的所有元素,后面是至少两个字符且长度不超过十个字符的数字字符串:

    评论:“免除XML SQL检查采购订单元素”

XMLSQLInjection:“PurchaseOrder_u0;[0-9A-Za-z]{2,10}”IsRegex:REGEX位置:元素状态:ENABLED<!--NeedCopy-->

注意:名称区分大小写。不允许重复条目,但您可以使用名称和位置差异的大写来创建类似条目。例如,以下每个放宽规则都是唯一的:

1) XMLSQLInjection:XYZ IsRegex:NOTREGEX位置:元素状态:启用2)XMLSQLInjection:XYZ IsRegex:NOTREGEX位置:元素状态:启用3)XMLSQLInjection:XYZ IsRegex:NOTREGEX位置:属性状态:启用<!--NeedCopy-->
  • 位置:您可以在 XML有效负载中指定 XML SQL检查异常的位置。默认情况下,选项元素处于选中状态。您可以将其更改为属性
  • 注释:这是一个可选字段。您最多可以使用 255个字符串来描述此放宽规则的目的。

警告

正则表达式非常强大。特别是如果您不完全熟悉PCRE格式的正则表达式,请仔细检查您编写的任何正则表达式。确保他们准确地定义了要添加为例外的名称,而不是其他名称。粗心地使用正则表达式可能会产生您不希望的结果,例如阻止对您不打算阻止的网络内容的访问,或允许XML SQL注入检查会阻止的攻击。

使用命令行配置 XML SQL注入检查

使用命令行配置 XML SQL注入操作和其他参数

在命令行界面中,可以使用设置 appfw配置文件命令或添加 appfw配置文件命令来配置 XML SQL注入保护。您可以启用块、日志和统计操作。选择要在有效负载中检测的 SQL攻击模式的类型(关键字、通配符、特殊字符串)。使用未设置 appfw配置文件命令将配置的设置恢复到默认值。以下每个命令只设置一个参数,但您可以在单个命令中包含多个参数:

  • 设置appfw配置文件**-xmlsqlnjectionAction**(([block][log][stats])|[none])
  • 设置appfw配置文件-XMLSQLInjectionCheckSQLWildChars(开|关)
  • 设置appfw配置文件-XMLSQLInjectionType([SQLKeyword]|[SQLSplChar]|[SQLSplCharANDKeyword]|[sqlsplcharworkeyword])
  • 设置appfw配置文件-XMLSQLInjectionParseComments([checkall]|[ansi |嵌套]|[ansinested])

使用命令行配置 SQL注入放宽规则

使用绑定或取消绑定命令添加或删除放宽规则,如下所示:

-绑定appfw配置文件-XMLSQLInjection[isRegex(REGEX | NOTREGEX)][-location(ELEMENT | ATTRIBUTE)]–注释[-state(ENABLED | DISABLED)]-解除绑定appfw配置文件-XMLSQLInjection--需要复制-->

例如

>绑定appfw配置文件测试配置文件-XMLSQLInjection“PurchaseOrder”{0-9A-Za-z]{2,15}”-isregex正则表达式-位置属性>解除绑定appfw配置文件测试配置文件-XMLSQLInjection“PurchaseOrder”{0-9A-Za-z]{2,15}”-位置属性<--需要复制-->

使用 桂配置 XMLSQL注入安全检查

在GUI中,您可以在窗格中为与应用程序关联的配置文件配置XML SQL注入安全检查。

使用 桂配置或修改 XML SQL注入检查

  1. 导航到网页应用程序防火墙>配置文件,突出显示目标配置文件,然后单击编辑
  2. 在“高级设置“窗格中,单击”安全检查”。

安全检查表显示当前为所有安全检查配置的操作设置。您有 2 个配置选项:

A.如果您只想为 XML SQL注入启用或禁用阻止、日志和统计数据操作,则可以选中或清除表中的复选框,单击确定,然后单击保存并关闭以关闭安全检查窗格。

b。如果要为此安全检查配置其他选项,请双击XML SQL注入,或者选择该行并单击操作设置,以显示以下选项:

检查SQL通配符,将负载中的SQL通配符视为攻击模式。

检查包含的请求-要检查的 SQL注入类型(SQL关键字、SQLSplchar、sqlsplcho关键字或 SQLSplchor关键字)。

SQL注释处理,要检查的注释类型(检查所有注释,ANSI,嵌套或ANSI /嵌套)。

更改上述任何设置后,单击“确定”保存更改并返回“安全检查”表。如果需要,您可以继续配置其他安全检查。单击确定保存您在“安全检查”部分中所做的所有更改,然后单击保存关闭以关闭安全检查窗格。

使用GUI配置XML SQL注入放宽规则

  1. 导航到网页应用程序防火墙>配置文件,突出显示目标配置文件,然后单击编辑
  2. 高级设置窗格中,单击放宽规则
  3. 在“放宽规则”表中,双击XML SQL注入条目,或将其选中,然后单击“编辑”。
  4. 在“XML SQL注入放宽规则”对话框中,执行放宽规则的添加编辑删除用或禁用操作。

使用可视化工具管理 XML SQL注入放宽规则

对于所有放宽规则的综合视图,可以突出显示“放宽规则”表中的XML SQL诸如行,然后单击可视化工具。已部署放宽的可视化工具为您提供了添加新规则或编辑现有规则的选项。您还可以通过选择节点并单击放宽可视化工具中的相应按钮来启用禁用一组规则。

要使用 桂查看或自定义 SQL注入模式,请执行以下操作

您可以使用 桂查看或自定义 SQL模式。

默认 SQL模式在网页应用程序防火墙>签名 > ***默认签名中指定**。如果未将任何签名对象绑定到配置文件,则配置文件将使用默认签名对象中指定的默认SQL模式进行XML SQL注入安全检查处理。默认签名对象中的规则和模式是只读的。您无法编辑或修改它们。如果要修改或更改这些模式,请通过创建默认签名对象的副本并更改SQL模式来创建用户定义的签名对象。在配置文件中使用用户定义的签名对象,用于处理要使用这些自定义SQL模式的流量。

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

要查看默认 SQL模式,请执行以下操作:

A.导航到网页应用程序防火墙>签名,选择*默认签名,然后单击编辑。然后单击管理 SQL/跨站点脚本模式

“管理 SQL/跨站点脚本路径” 表显示了与 SQL注入相关的以下四行:

注入(not_alphanum, SQL)/关键字注入(not_alphanum, SQL)/ specialstring注入(not_alphanum, SQL)/ transformrules/transform注入(not_alphanum, SQL)/ wildchar 

B选择一行并单击“管理元素”以显示 Web应用防火墙SQL注入检查使用的相应 SQL模式(关键字、特殊字符串、转换规则或通配符)。

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

A.导航到网页应用程序防火墙>签名,突出显示目标用户定义的签名,然后单击编辑。单击管理 SQL/跨站点脚本模式以显示管理SQL /跨站点脚本路径表。

SQL行b。选择目标。

我单击“管理元素”,以添加编辑删除相应的 SQL元素。

二,。单击删除以移除选定的行。

警告

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

将日志功能与XML SQL注入检查一起使用

启用日志操作后,XML SQL注入安全检查冲突将作为APPFW_XML_SQL冲突记录在审核日志中。Web应用防火墙支持本机和 头孢日志格式。您也可以将日志发送到远程 系统日志服务器。

使用命令行访问日志消息

切换到 壳并尾随 /var/log/文件夹中的 ns.log以访问与 XML跨站点脚本冲突相关的日志消息:

> Shell > tail -f /var/log/ns.log | grep APPFW_XML_SQL 

使用GUI访问日志消息

Citrix GUI包括一个用于分析日志消息的有用工具(系统日志查看器)。您有多个用于访问 系统日志查看器的选项:

  • 导航到网页应用程序防火墙> 配置件,选择目标配置文件,然后单击安全检查。突出显示XML SQL注入行并单击日志。当您直接从配置文件的 XML SQL注入检查访问日志时,桂会过滤掉日志消息,并仅显示与这些安全检查冲突相关的日志。

  • 您还可以通过导航到”系统“>”审核“访问Syslog查看器。在审计消息部分,单击系统日志消息链接以显示 系统日志查看器该查看器显示所有日志消息,包括其他安全检查违规日志。这对于在请求处理过程中可能触发多个安全检查冲突时进行调试非常有用。

  • 导航到网页应用程序防火墙>策略>审核。在审计消息部分,单击系统日志消息链接以显示 syslog查看器,该查看器显示所有日志消息,包括其他安全检查违规日志。

基于 XML的 系统日志查看器提供了各种筛选器选项,用于仅选择您感兴趣的日志消息。要为XML SQL注入检查选择日志消息,请通过在模块的下拉选项中选择APPFW进行筛选。“事件类型“列表提供了一系列丰富的选项,以进一步优化您的选择。例如,如果选中APPFW_XML_SQL复选框并单击应用按钮,则系统日志查看器中仅显示与XML SQL注入安全检查冲突相关的日志消息。

如果将游标放在特定日志消息的行中,则日志消息下方会显示多个选项,如模块事件类型事件ID客户端IP。您可以选择这些选项中的任何一个以突出显示日志消息中的相应信息。

XML SQL注入冲突的统计信息

启用统计操作时,当 Web应用防火墙对此安全检查执行任何操作时,XML SQL注入检查的计数器会递增。这些统计数据是针对流量、冲突和日志的速率和总计数收集的。日志计数器的增量大小可能会因配置的设置而异。例如,如果启用了阻止操作,则对包含三个XML SQL注入冲突的页的请求会将统计数据计数器递增一个,因为一旦检测到第一个冲突,该页面就会被阻止。但是,如果禁用了块,则处理相同的请求会将冲突的统计数据计数器和日志增加三个,因为每个冲突都会生成一个单独的日志消息。

使用命令行显示XML SQL注入检查统计信息

在命令提示符下,键入:

>sh appfw统计数据

要显示特定配置文件的统计信息,请使用以下命令:

>stat appfw配置文件<配置文件名称>

使用GUI显示XML SQL注入统计信息

  1. 导航到“系统“>”安全“>”网页应用程序防火墙”。
  2. 在右窗格中,访问统计信息链接。
  3. 使用滚动条查看有关XML SQL注入冲突和日志的统计信息。统计表提供实时数据,每 7 秒更新一次。