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