Citrix ADC

XML跨站脚本检查

XML跨站点脚本检查会检查XML有效负载中可能存在的跨站点脚本攻击的用户请求。如果发现可能的跨站点脚本攻击,则会阻止请求。

为了防止滥用受保护的Web服务上的脚本来破坏Web服务的安全性,XML跨站点脚本检查会阻止违反相同源规则的脚本,该规则规定脚本不得访问或修改除脚本所在服务器以外的任何服务器上的内容。冲突相同源规则的任何脚本都称为跨站点脚本,使用脚本访问或修改另一台服务器上的内容的做法称为跨站点脚本。跨站点脚本是一个安全问题的原因是,允许跨站点脚本的 Web 服务器可能会受到攻击,该脚本不在该 Web 服务器上,而是在其他 Web 服务器上,例如攻击者拥有和控制的服务器上。

Web应用防火墙提供了实施XML跨站点脚本保护的各种操作选项。您可以选择配置”阻止", "日志“和”统计操作。

Web应用程序防火墙XML跨站点脚本检查是在传入请求的有效负载上执行的,即使攻击字符串分布在多条线路上,也会识别攻击字符串。该检查会在元素属性值中查找跨站点脚本攻击字符串。您可以在指定条件下应用放宽来绕过安全检查检查。日志和统计信息可帮助您确定所需的放宽。

XML有效负载的CDATA部分对黑客来说可能是一个有吸引力的焦点领域,因为这些脚本不能在CDATA部分之外执行。Cdata部分用于完全被视为字符数据的内容。HTML标记标签分隔符<>/>不会导致解析器将代码解释为HTML元素。以下示例显示了带有跨站点脚本攻击字符串的cdata部分:

< ![CDATA[rn rn]]> 

操作选项

当XML跨站点脚本检查检测到请求中的跨站点脚本攻击时,将应用操作。以下选项可用于优化应用程序的XML跨站点脚本保护:

  • -如果请求中检测到跨站点脚本标签、则会触发阻止操作。
  • 日志-生成指示XML跨站点脚本检查所执行操作的日志消息。如果禁用了块,则会为检测到跨站点脚本违规的每个位置(元素、属性)生成单独的日志消息。但是,当请求被阻止时,只会生成一条消息。您可以监视日志以确定对合法请求的响应是否被阻止。日志消息数量的大幅增加可能表明尝试发起攻击。
  • 计信息-收集有关冲突和日志的统计信息。统计数据计数器出现意外激增可能表明您的应用程序受到攻击。如果合法请求被阻止,您可能需要重新访问配置,以查看是否需要配置新的放宽规则或修改现有的放宽规则。

放宽规则

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

  • 名字-您可以使用文字字符串或正则表达式来配置元素或属性的名称。以下表达式免除以字符串名称_开头的所有EINSTERINS,后面是由大写或小写字母或数字组成的字符串,长度至少不超过15个字符组成的字符串:

    ^ name_ [0-9A-Za-z] {2, 15} $

注意

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

  1. xml跨站脚本:ABC IsRegex: NOTREGEX位置:ATTRIBUTE状态:ENABLED

  2. xml跨站脚本:ABC IsRegex: NOTREGEX位置:元素状态:ENABLED

  3. xml跨站脚本:abc IsRegex: NOTREGEX位置:元素状态:ENABLED

  4. xml跨站脚本:abc IsRegex: NOTREGEX位置:ATTRIBUTE状态:ENABLED

  • 位置-您可以在XML有效负载中指定跨站点脚本检查异常的位置。默认情况下,选项元素处于选中状态。您可以将其更改为属性。
  • 注释-这是一个可选字段。您最多可以使用 255 个字符串来描述此放宽规则的目的。

警告

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

使用命令行配置XML跨站点脚本检查

使用命令行配置XML跨站点脚本检查操作和其他参数

如果使用命令行界面,则可以输入以下命令来配置XML跨站点脚本检查:

> set appfw profile -XMLcross-site scriptingAction (([block] [log] [stats]) | [none])

使用命令行配置XML跨站点脚本检查放宽规则的步骤

您可以添加放宽规则以绕过在特定位置检查跨站点脚本脚本攻击检查。使用绑定或取消绑定命令添加或删除放宽规则绑定,如下所示:

>绑定appfw配置文件 - xml跨站脚本 [isRegex (REGEX | NOTREGEX)] [-location (ELEMENT | ATTRIBUTE)] -comment [-state (ENABLED | DISABLED)]

> unbind appfw profile -XMLcross-site scripting . xml

例如

>绑定appfw profile test_pr - xml跨站脚本ABC

执行上述命令后,配置了以下放宽规则。该规则处于启用状态,名称被视为文字(notregex),并选择元素作为默认位置:

1) xml跨站脚本:ABC IsRegex: NOTREGEX位置:ELEMENT状态:ENABLED ' > unbind appfw profile test_pr - xml跨站脚本ABC '错误:没有这样的xml跨站脚本检查' > unbind appfw profile test_pr - xml跨站脚本ABC '完成

使用GUI配置XML跨站点脚本检查

在GUI中,您可以在窗格中为与应用程序关联的配置文件配置XML跨站点脚本检查。

使用GUI配置或修改XML跨站点脚本检查

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

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

A)如果您只想启用或禁用XML跨站点脚本检查阻止日志统计操作,则可以选中或清除表中的复选框,单确定,然后单击保存并关闭以关闭安全性检查窗格。

B)您可以双击XML跨站点脚本,或者选择该行并单击操作设置,以显示操作选项。更改任何操作设置后,单击"确定“保存更改并返回”安全检查“表”。

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

使用GUI配置XML跨站点脚本放宽规则

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

使用可视化工具管理XML跨站点脚本放宽规则

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

使用GUI查看或自定义跨站点脚本模式

您可以使用GUI查看或自定义跨站点脚本允许的属性或允许的标签的默认列表。您还可以查看或自定义跨站点脚本拒绝模式的默认列表。

默认列表在Web应用防火墙>签名>默认签名中指定。如果未将任何签名对象绑定到配置文件,则配置文件将使用默认签名对象中指定的默认跨站点脚本允许和拒绝列表进行跨站点脚本安全检查处理。在默认签名对象中指定的标签、属性和板片是只读的。您无法编辑或修改它们。如果要修改或更改它们,请创建默认签名对象的副本以创建用户定义的签名对象。在新用户定义的签名对象中的“允许”或“拒绝”列表中进行更改,并在正在处理要使用这些自定义允许和拒绝列表的流量的配置文件中使用此签名对象。

有关签名的更多信息,请参阅http://support.citrix.com/proddocs/topic/ns-security-10-map/appfw-signatures-con.html

要查看默认跨站点脚本模式:

  1. 导航到Web应用防火墙>签名,选择*默认签名,然后单击编辑。然后单击管理sql /跨站点脚本模式

管理sql /跨站点脚本路径表显示了与跨站点脚本相关的以下三行:

Xss /allowed/attribute Xss /allowed/tag Xss /denied/pattern 

选择一行,然后单击管理元素以显示Web应用防火墙跨站点脚本检查使用的相应跨站点脚本元素(标记、属性、模式)。

自定义跨站点脚本元素:您可以编辑用户定义的签名对象以自定义允许的标记、允许的属性和拒绝的模式。您可以添加新条目或删除现有条目。

  1. 导航到Web应用防火墙>签名,突出显示目标用户定义的签名,然后单击编辑。单击管理sql /跨站点脚本模式以显示管理sql /跨站点脚本路径表。
  2. 选择目标跨站点脚本行。

A)单击管理元素加、编辑删除相应的跨站点脚本元素。

B)单击”删除以删除所选行。

警告

删除或修改任何默认的跨站点脚本元素,或者删除跨站点脚本路径以删除整行时,请务必非常小心。签名、HTML 跨站点脚本安全检查和 XML 跨站点脚本安全检查依赖于这些元素来检测攻击以保护您的应用程序。如果在编辑过程中删除所需模式,自定义跨站点脚本元素可能会使应用程序容易受到跨站点脚本攻击。

将日志功能与XML跨站脚本检查结合使用

启用日志操作后,xml跨站点脚本安全检查冲突将作为AppFW_XML_跨站点脚本违规记录在审计日志中。Web应用防火墙支持本机和CEF日志格式。您也可以将日志发送到远程syslog服务器。

使用命令行访问日志消息

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

> \ * \ *壳 \*\* > \*\* tail - f /var/log/ns.log | grep APPFW_XML_cross-site脚本\ * \ * < !——NeedCopy >

XML跨站点脚本安全检查冲突日志消息以本机日志格式显示< >阻塞操作的示例

10月7日01:44:34  10.217.31.98 10/07/2015:01:44:34 GMT ns 0- ppe -1: default APPFW appfw_xml_跨站脚本1154 0:10.217.253.69 3466-PPE1 - owa_profile http://10.217.31.101/FFC/login.html跨站脚本check failed for field script="Bad tag: script" <\*\*blocked\*\*> 

XML跨站点脚本安全检查冲突日志消息以cef日志格式显示<不阻塞>操作的示例

10月7日01:46:52  10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW| appfw_xml_跨站脚本|4|src=10.217.30.17 geolocation=Unknown spt=33141 method=GET request=http://10.217.31.101/FFC/login.html msg=Cross-site script check failed for field script="Bad tag: script" cn1=1607 cn2=3538 cs1=owa_profile cs2=PPE0 cs4=ERROR cs5=2015 act=\*\*not blocked\*\* 

使用GUI访问日志消息

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

  • 导航到”Web应用防火墙“>”配置件",选择目标配置文件,然后单击"安全检查”。突出显示XML跨站点脚本行并单击日志。当您直接从配置文件的XML跨站点脚本检查访问日志时,GUI会过滤掉日志消息,并仅显示与这些安全检查冲突相关的日志。

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

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

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

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

XML跨站点脚本冲突的统计信息

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

使用命令行显示XML跨站点脚本检查统计信息

在命令提示符下,键入:

> **sh appfw stats** .使用实例

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

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

使用GUI显示XML跨站点脚本统计信息

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