Citrix ADC

XML跨站点脚本检查

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

为了防止受保护的web服务上的脚本被滥用,从而破坏web服务的安全性,XML跨站点脚本检查会阻止违反同源规则的脚本,该规则规定脚本只能访问或修改其所在服务器上的内容,不能访问或修改其他服务器上的内容。任何违反同源规则的脚本都称为跨站脚本,使用脚本访问或修改另一台服务器上的内容的实践称为跨站脚本。跨站脚本之所以是一个安全问题,是因为允许跨站脚本的web服务器可能会被不在该web服务器上的脚本攻击,而被攻击者所拥有和控制的另一个web服务器攻击。

Web应用程序防火墙为实现XML跨站点脚本保护提供了各种操作选项。您可以选择进行配置日志,统计数据行动。

Web App Firewall XML跨站点脚本检查会对传入请求的有效负载执行,即使攻击字符串分布在多行中也会被识别出来。中的跨站点脚本攻击字符串元素属性值。在特定条件下,可以通过放宽来绕过安检检查。日志和统计数据可以帮助您确定需要的放松。

XML有效负载的CDATA部分可能是黑客关注的一个有吸引力的领域,因为脚本在CDATA部分之外是不可执行的。CDATA部分用于完全作为字符数据处理的内容。HTML标记标记分隔符<>,/>不会导致解析器将代码解释为HTML元素。下面的例子展示了一个CDATA Section的跨站点脚本攻击字符串:

<![CDATA[rn rn]]> 

行动选择

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

  • -如果在请求中检测到跨站点脚本标记,则触发block动作。
  • 日志-生成日志消息,指示XML跨站点脚本检查所采取的操作。如果block被禁用,将为检测到跨站点脚本冲突的每个位置(ELEMENT, ATTRIBUTE)生成单独的日志消息。但是,当请求被阻止时,只生成一条消息。您可以监视日志,以确定对合法请求的响应是否被阻止。日志消息数量的大量增加可能表明试图发起攻击。
  • 统计数据-收集违规和日志的统计信息。统计计数器的意外激增可能表明您的应用程序受到了攻击。如果合法的请求被阻止,您可能必须重新查看配置,以确定是否需要配置新的放松规则或修改现有的规则。

放松规则

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

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

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

请注意

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

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

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

  3. abc IsRegex: NOTREGEX位置:元素状态:启用

  4. abc IsRegex: NOTREGEX位置:ATTRIBUTE状态:ENABLED

  • 位置-你可以在XML有效负载中指定跨站点脚本检查异常的位置。默认情况下选择了选项ELEMENT。您可以将其更改为ATTRIBUTE。
  • 评论-这是一个可选字段。您最多可以使用255个字符的字符串来描述此放松规则的目的。

警告

正则表达式功能强大。特别是如果您不完全熟悉pcre格式的正则表达式,请仔细检查您编写的任何正则表达式。确保它们确切地定义了您想要添加为异常的名称,而不是其他名称。不小心使用正则表达式可能会导致你不想要的结果,比如阻止访问你不打算阻止的web内容,或者允许XML跨站脚本检查本来会阻止的攻击。

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

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

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

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

使用命令行配置XML跨站点脚本检查放松规则

通过添加松弛规则,可以绕开特定位置的跨站脚本脚本攻击检查。使用bind或unbind命令添加或删除放松规则绑定,具体操作如下:

> bind appfw profile -XMLcross-site scripting [isRegex (REGEX | NOTREGEX)] [-location (ELEMENT | ATTRIBUTE)] -comment [-state (ENABLED | DISABLED)]

> unbind appfw profile -XMLcross-site scripting

例子

绑定appfw配置文件test_pr - xml跨站点脚本ABC

执行上述命令后,配置了如下松弛规则。该规则被启用,名称被视为文字(NOTREGEX),并选择ELEMENT作为默认位置:

1) XMLcross-site scripting: ABC IsRegex: NOTREGEX位置:ELEMENT状态:ENABLED ' > unbind appfw profile test_pr -XMLcross-site scripting ABC '错误:No such XMLcross-site scripting check ' > unbind appfw profile test_pr -XMLcross-site scripting ABC ' Done 

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

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

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

  1. 导航到Web应用防火墙>配置文件,选中目标配置文件,单击编辑
  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 /allowed/tag /denied/pattern 

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

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

  1. 导航到Web应用程序防火墙>签名,选中目标自定义签名,单击编辑.点击管理SQL/跨站点脚本模式来显示管理SQL/跨站点脚本路径表格
  2. 选择目标跨站点脚本行。

)点击管理元素,添加编辑删除对应的跨站点脚本元素。

b)点击删除删除所选行。

警告

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

使用日志特性和XML跨站点脚本检查

当启用日志操作时,XML跨站点脚本安全检查违规记录在审计日志中为APPFW_XML_cross-site脚本违规。Web应用程序防火墙同时支持Native和CEF日志格式。您也可以将日志发送到远端syslog服务器。

使用命令行访问日志消息

切换到shell,跟踪ns。在/var/log/文件夹中访问与XML跨站脚本违规相关的日志消息:

> **Shell** > **tail -f /var/log/ns.log | grep APPFW_XML_cross-site scripting** 

XML跨站点脚本安全检查违规日志消息的示例,以本机日志格式显示< >阻塞行动

10月7日01:44:34  10.217.31.98 10/07/2015:01:44:34 GMT ns 0- pe -1: default APPFW APPFW_XML_cross-site scripting 1154 0: 10.217.253.69 3466-PPE1 - owa_profile http://10.217.31.101/FFC/login.html Cross-site script 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_cross-site scripting|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会过滤掉日志消息,只显示与这些安全检查违规相关的日志。

  • 您也可以通过导航进入“Syslog查看器”Citrix ADC>系统>审计.在“审计消息”区域,单击“Syslog消息”链接,打开“Syslog查看器”,显示所有日志消息,包括其他安全检查违规日志。当请求处理过程中可能触发多个安全检查违规时,这对于调试非常有用。

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

基于XML的Syslog Viewer提供了各种筛选选项,用于只选择您感兴趣的日志消息。选择日志消息XML跨站点脚本编制检查,筛选选择APPFW的下拉选项中模块.的事件类型列表提供了丰富的选项集,以进一步完善您的选择。例如,如果您选择APPFW_XML_cross-site脚本复选框并单击应用按钮,则只有与XML跨站点脚本安全检查违规相关的日志消息出现在Syslog查看器中。

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

XML跨站点脚本违规的统计信息

当启用统计操作时,当Web应用程序防火墙为该安全检查采取任何操作时,XML跨站脚本检查的计数器将增加。包括流量、违规和日志的“速率”和“总数”。日志计数器的增量大小可以根据所配置的设置而变化。例如,如果启用了块操作,那么对包含三个XML跨站点脚本违规的页面的请求将使统计计数器增加1,因为一旦检测到第一个违规,页面就会被阻塞。但是,如果禁用了块,则处理相同的请求会使违反的统计计数器和日志增加3,因为每个违反都会生成单独的日志消息。

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

在命令提示符处,输入:

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

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

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

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

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