饼干劫持保护
饼干劫持保护可以减少窃取黑客攻击的饼干。在安全攻击中,攻击者接管用户会话以获取对 Web 应用程序的未经授权访问权限。当用户浏览网站(例如银行应用程序)时,该网站会与浏览器建立一个会话。在会话期间,应用程序将用户详细信息(如登录凭据、页面访问)保存在 cookie 文件中。然后,cookie 文件会在响应中发送到客户端浏览器。浏览器存储 Cookie 以保持活动会话。攻击者可以从浏览器的 cookie 存储中手动窃取这些 cookie,也可以通过某些胭脂浏览器扩展。然后,攻击者使用这些 cookie 来访问用户的 Web 应用程序会话。
为了减轻饼干攻击,Citrix ADC Web应用防火墙(WAF)对来自客户端的TLS连接以及WAF饼干一致性验证提出质疑。对于每个新的客户端请求,设备都会验证TLS连接,并验证请求中的应用程序和会话饼干的一致性。如果攻击者试图混合并匹配从受害者那里盗取的应用程序饼干和会话Cookie,则饼干一致性验证将失败,并应用已配置的饼干劫持操作。有关饼干一致性的更多信息,请参阅饼干一致性检查主题。
注意:曲奇劫持功能支持日志记录和 SNMP陷阱。有关日志记录的详细信息,请参阅 行政主题,有关 SNMP配置的详细信息,请参阅 SNMP主题。
限制
- 必须在客户端浏览器中启用 JavaScript
- TLS版1.3本不支持饼干劫持保护。
- 由于浏览器不重复使用SSL连接,因此对Internet Explorer (IE)浏览器的支持有限。导致为一个请求发送多个重定向,最终导致IE浏览器中出现“超出最大重定向“错误。
曲奇劫持保护的工作原理
以下方案说明了 曲奇劫持保护在 Citrix ADC设备中的工作原理。
场景 1:用户在没有会话 曲奇的情况下访问第一个网页
- 用户尝试在网络应用程序中进行身份验证,并开始访问第一个网页,请求中没有任何ADC会话饼干。
- 收到请求后,设备会创建一个具有会话饼干ID的应用程序防火墙会话。
这将启动会话的 TLS连接。由于 JavaScript不会在客户端浏览器上发送和运行,设备会将 TLS连接标记为已验证,无需质询。
注意:即使攻击者试图从受害者发送所有应用程序饼干ID而不发送会话Cookie,设备也会检测到问题,并在将请求转发到后端服务器之前删除请求中的所有应用程序饼干。后端服务器在没有应用程序饼干的情况下考虑此请求,并根据其配置采取必要措施。
- 当后端服务器发送响应时,设备会收到响应并使用JavaScript会话令牌和种子饼干转发响应。然后,设备将TLS连接标记为已验证。
- 当客户端浏览器收到响应时,浏览器会运行 JavaScript并使用会话令牌和种子 曲奇生成一个变形的 cookie ID
- 当用户通过TLS连接发送后续请求时,设备将绕过变形的饼干验证。这是因为TLS连接已经验证。
场景2:用户使用会话饼干通过新的TLS连接访问连续的网页
- 当用户通过新的TLS连接发送连续页面的HTTP请求时,浏览器会发送会话饼干ID和变形的饼干ID。
- 由于这是一个新的 TLS连接,设备会检测 TLS连接,并通过种子 曲奇向客户端提出重定向响应。
- 客户端在收到ADC响应后,使用会话的令牌和新的种子饼干计算变形的饼干。
- 然后,客户端会发送这个新计算的模型饼干以及会话ID。
- 如果在 模数转换器设备中计算出的变形 曲奇和通过请求发送的 曲奇匹配,则 TLS连接将标记为已验证。
- 如果计算出的模型 曲奇与客户端请求中存在的 曲奇不同,则验证失败。之后,设备将挑战发送回客户端,以发送正确的变形 曲奇
场景 3:攻击者模拟为未经身份验证的用户
- 当用户对Web应用程序进行身份验证时,攻击者会使用不同的技术窃取饼干并重放它们。
- 由于这是来自攻击者的新TLS连接,因此ADC会发送重定向挑战以及新的种子饼干。
- 由于攻击者没有运行 JavaScript因此攻击者对重定向请求的响应不包含变形的 曲奇
- 这会导致ADC设备端出现变形饼干验证失败。设备再次向客户端发送重定向询问。
- 如果变形 曲奇验证尝试次数超过阈值限制,设备会将状态标记为 曲奇劫持。
- 如果攻击者尝试混合并匹配从受害者那里盗取的应用程序饼干和会话Cookie,则饼干一致性检查将失败,并且设备将应用配置的饼干劫持操作。
场景 4:攻击者冒充身份验证的用户
- 攻击者还可以尝试以真正用户身份验证到Web应用程序,并重播受害者的饼干以获得对网络会话的访问权限。
- ADC设备还会检测到此类模拟攻击者。尽管攻击者在重放受害者的饼干时使用经过验证的TLS连接,但ADC设备仍会验证请求中的会话饼干和应用程序饼干是否一致。设备使用请求中的会话饼干验证应用程序饼干的一致性。由于请求包含攻击者的会话饼干和受害者的应用程序cookie,因此饼干一致性验证失败。
- 因此,设备将应用配置的饼干劫持操作。如果配置的操作设置为“阻止”,则设备将删除所有应用程序Cookie并将请求发送到后端服务器。
- 后端服务器收到没有应用程序 曲奇的请求,因此它响应攻击者的错误响应,例如“用户未登录”。
使用CLI配置饼干劫持
您可以选择特定的应用程序防火墙配置文件,并设置一个或多个防止饼干劫持的操作。
在命令提示符下,键入:
设置appfw配置文件
注意:默认情况下,操作设置为“无”。
示例:
set appfw profile profile1 - cookieHijackingAction Block
其中,操作类型为:
阻止:阻止违反此安全检查的连接。 日志:记录违反此安全检查的情况。 统计信息:为此安全检查生成统计信息。 无:禁用此安全检查的所有操作。
使用 Citrix ADC图形用户界面配置 曲奇劫持
- 导航到安全> Citrix Web应用防火墙>配置文件。
- 在配置文件页面上,选择一个配置文件,然后单击编辑。
在Citrix Web应用防火墙配置文件页面上,转到“高级设置”部分,然后单击“安全检查”。
- 在“安全检查“部分,选择”曲奇劫持”,然后单击“操作设置”。
- 在饼干劫持设置页面中,选择一个或多个防止饼干劫持的操作。
单击好啊(确定)。
使用 Citrix ADC图形用户界面为 曲奇一致性验证添加松弛规则
为了处理饼干一致性验证中的误报,您可以为饼干添加一个放松规则,该规则可以免于饼干验证。
- 导航到安全> Citrix Web应用防火墙>配置文件。
- 在配置文件页面上,选择一个配置文件,然后单击编辑。
- 在Citrix Web应用防火墙配置文件页面上,转到“高级设置”部分,然后单击“放松规则”。
在放松规则部分,选择饼干一致性,然后单击操作。
- 在饼干一致性放松规则页面中,设置以下参数。
- 已启用。如果要启用放松规则,请选择此选项。
- 饼干名称正则表达式。选择饼干名称是否为正则表达式。
- 曲奇名称。输入可以免除 曲奇验证的 曲奇名称。
- 正则表达式编辑器。单击此选项可提供正则表达式详细信息。
- 评论。有关饼干的简要描述。
- 单击创建和关闭。
使用CLI查看饼干劫持流量和违规统计信息
以表格或图形格式查看安全流量和安全违规详细信息。
要查看安全统计信息:
在命令提示符下,键入:
Stat appfw profile profile1
应用程序配置文件流量统计 | 速率 (/秒) | 总数 |
---|---|---|
请求 | 0 | 0 |
请求字节(请求字节数) | 0 | 0 |
答复 | 0 | 0 |
响应字节(响应字节数) | 0 | 0 |
中止 | 0 | 0 |
重定向 | 0 | 0 |
长期平均响应时间 (毫秒) | – | 0 |
近期平均响应时间 (毫秒) | – | 0 |
HTML/XML/JSON违规统计数据 | 速率 (/秒) | 总数 |
---|---|---|
起始 统一资源定位地址 | 0 | 0 |
拒绝 统一资源定位地址 | 0 | 0 |
引用标题 | 0 | 0 |
缓冲区溢出 | 0 | 0 |
饼干一致性 | 0 | 0 |
曲奇劫持 | 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 |
网状物服务互操作性 | 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 |
拒绝 统一资源定位地址日志 | 0 | 0 |
引用标题日志 | 0 | 0 |
缓冲区溢出日志 | 0 | 0 |
缓冲区溢出日志 | 0 | 0 |
曲奇一致性日志 | 0 | 0 |
饼干劫持日志 | 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 |
服务器错误响应统计 | 速率 (/秒) | 总数 |
---|---|---|
超文本传输协议客户端错误(4xx重复) | 0 | 0 |
HTTP服务器错误(5 xx) | 0 | 0 |
使用GUI查看饼干劫持流量和违规统计信息
- 导航到安全> Citrix Web应用防火墙>配置文件。
- 在详细信息窗格中,选择Web应用防火墙配置文件,然后单击统计信息。
- Citrix Web应用防火墙统计信息页面显示饼干劫持流量和违规详细信息。
- 您可以选择”表格视图”或切换到“图形视图”以表格或图形格式显示数据。