Cookie劫持保护
Cookie劫持保护可以减轻来自黑客的Cookie窃取攻击。在安全攻击中,攻击者接管用户会话以获得对web应用程序的未授权访问。当用户浏览一个网站时,例如银行应用程序,该网站与浏览器建立一个会话。在会话期间,应用程序将用户详细信息(如登录凭证、页面访问)保存在cookie文件中。然后cookie文件在响应中被发送到客户端浏览器。浏览器存储cookie以维护活动会话。攻击者可以手动从浏览器的cookie存储中窃取这些cookie,也可以通过一些rouge浏览器扩展窃取这些cookie。然后攻击者使用这些cookie来访问用户的web应用程序会话。
为了减轻cookie攻击,Citrix ADC Web App Firewall (WAF)通过WAF cookie一致性验证从客户端挑战TLS连接。对于每个新的客户端请求,设备都会验证TLS连接,并验证请求中应用程序和会话cookie的一致性。如果攻击者试图混合匹配从受害者窃取的应用程序cookie和会话cookie,则cookie一致性验证失败,并应用配置的cookie劫持动作。有关cookie一致性的详细信息,请参见Cookie一致性检查.
注意:
Cookie劫持特性支持日志和SNMP trap。有关日志记录的更多信息,请参见ADM主题,有关SNMP配置的更多信息,请参见SNMP主题。
限制
- 必须在客户端浏览器中启用JavaScript。
- TLS 1.3版本不支持Cookie劫持保护。
- 对Internet Explorer (IE)浏览器的支持有限,因为该浏览器不重用SSL连接。导致多个重定向发送的请求,最终导致“MAX redirects EXCEEDED”错误在IE浏览器。
cookie劫持保护如何工作
以下场景解释了在Citrix ADC设备中cookie劫持保护是如何工作的。
场景一:用户访问第一个没有会话cookie的网页
- 用户尝试在web应用程序中进行身份验证,并开始访问请求中没有任何ADC会话cookie的第一个网页。
- 当接收到请求时,设备使用会话cookie ID创建一个Application Firewall会话。
这将为会话启动TLS连接。由于JavaScript没有在客户机浏览器上发送和运行,因此设备将TLS连接标记为已验证,不需要进行任何挑战。
注意:
即使攻击者试图在不发送会话cookie的情况下发送受害者的所有应用程序cookie id,设备也会检测到问题,并在将请求转发到后端服务器之前删除请求中的所有应用程序cookie。后端服务器在没有应用程序cookie的情况下考虑这个请求,并根据其配置采取必要的措施。
- 当后端服务器发送响应时,设备接收响应并将其与JavaScript会话令牌和种子cookie一起转发。然后,设备将TLS连接标记为已验证。
- 当客户端浏览器接收到响应时,浏览器运行JavaScript并使用会话令牌和种子cookie生成一个变形的cookie ID。
- 当用户通过TLS连接发送后续请求时,设备将绕过变形cookie验证。这是因为TLS连接已经验证。
场景2:用户使用会话cookie通过新的TLS连接访问连续的网页
- 当用户通过新的TLS连接向连续页面发送HTTP请求时,浏览器会发送会话cookie ID和变形cookie ID。
- 由于这是一个新的TLS连接,因此设备检测TLS连接并使用使用种子cookie的重定向响应向客户端发起挑战。
- 客户端收到来自ADC的响应后,使用会话的令牌和新的种子cookie计算变形的cookie。
- 然后客户端发送这个新计算的变形cookie和一个会话ID。
- 如果ADC设备内计算的变形cookie与通过请求发送的cookie相匹配,则TLS连接被标记为已验证。
- 如果计算出的变形cookie与客户端请求中出现的cookie不同,则验证失败。之后,设备将挑战发送回客户端,以发送一个适当的变形cookie。
场景3:攻击者冒充未经身份验证的用户
- 当用户在web应用程序中进行身份验证时,攻击者使用不同的技术窃取cookie并回放它们。
- 由于这是来自攻击者的一个新的TLS连接,ADC会发送一个重定向挑战以及一个新的种子cookie。
- 由于攻击者没有运行JavaScript,因此攻击者对重定向请求的响应不包含变形cookie。
- 这将导致ADC设备端的变形cookie验证失败。设备再次向客户端发送重定向挑战。
- 如果变形cookie验证尝试的次数超过阈值限制,则设备将状态标记为cookie劫持。
- 如果攻击者试图混合和匹配从受害者窃取的应用程序cookie和会话cookie,则cookie一致性检查失败,设备将应用配置的cookie劫持操作。
场景4:攻击者冒充已验证的用户
- 攻击者还可以尝试以真实用户身份验证web应用程序,并重放受害者的cookie以获得对web会话的访问权。
- ADC设备还可以检测这种被模拟的攻击者。尽管攻击者使用经过验证的TLS连接来重播受害者的cookie,但ADC设备仍然会验证请求中的会话cookie和应用程序cookie是否一致。设备使用请求中的会话cookie验证应用程序cookie的一致性。由于请求中包含攻击者的会话cookie和受害者的应用程序cookie,因此cookie一致性验证失败。
- 因此,设备应用配置的cookie劫持操作。如果配置的操作被设置为“block”,那么设备将删除所有应用程序cookie并将请求发送到后端服务器。
- 后端服务器接收到不带应用程序cookie的请求,因此它向攻击者响应错误响应,例如“用户未登录”。
通过CLI配置cookie劫持
您可以选择特定的应用防火墙配置文件,设置一个或多个阻止cookie劫持的动作。
在命令提示符下,输入:
set appfw profile
注意:
默认情况下,动作设置为“none”。
例子:
set appfw profile profile1 - cookieHijackingAction Block
其中,动作类型为:
阻断:阻断违反此安全检查的连接。日志:记录违反本次安全检查行为的日志。Stats:生成此安全检查的统计信息。None:关闭本次安全检查的所有动作。
通过Citrix ADC GUI配置cookie劫持
- 导航到安全> Citrix Web应用防火墙>配置文件.
- 在配置文件页签中,选择目标配置文件,单击编辑.
在Citrix Web App防火墙配置文件页面,转到高级设置部分,单击安全检查.
- 在安全检查部分中,选择饼干劫持然后点击行动设置。
- 在Cookie劫持设置页中,选择一个或多个防止cookie劫持的操作。
点击好吧.
通过使用Citrix ADC GUI为cookie一致性验证添加松弛规则
要处理cookie一致性验证中的假阳性,您可以为可以免于cookie验证的cookie添加松弛规则。
- 导航到安全> Citrix Web应用防火墙>配置文件.
- 在配置文件页签中,选择目标配置文件,单击编辑.
- 在Citrix Web App防火墙配置文件页面,转到高级设置部分,单击放松规则.
在放松规则部分中,选择饼干的一致性并点击行动.
- 在Cookie一致性松弛规则页,设置以下参数。
- 启用。如果要启用松弛规则,请选择。
- 是Cookie名称正则表达式。如果cookie名称是正则表达式,请选择。
- 饼干的名字。输入可免除cookie验证的cookie名称。
- Regex编辑器。单击此选项可提供正则表达式详细信息。
- 评论。关于cookie的简要描述。
- 点击创建而且关闭.
通过命令行查看cookie劫持流量和违规统计信息
以表格或图形格式查看安全流量和安全违规详细信息。
查询安全统计信息。
在命令提示符下,输入:
统计appfw配置文件profile1
Appfw profile流量统计 | 率(/秒) | 总计 |
---|---|---|
请求 | 0 | 0 |
请求字节 | 0 | 0 |
反应 | 0 | 0 |
响应字节 | 0 | 0 |
中止 | 0 | 0 |
重定向 | 0 | 0 |
长期Ave响应时间(ms) | - - - - - - | 0 |
最近Ave响应时间(毫秒) | - - - - - - | 0 |
HTML/XML/JSON违规统计 | 率(/秒) | 总计 |
---|---|---|
开始的URL | 0 | 0 |
否认URL | 0 | 0 |
引用页头 | 0 | 0 |
缓冲区溢出 | 0 | 0 |
饼干的一致性 | 0 | 0 |
饼干劫持 | 0 | 0 |
CSRF表单标签 | 0 | 0 |
跨站脚本 | 0 | 0 |
SQL注入 | 0 | 0 |
字段格式 | 0 | 0 |
场的一致性 | 0 | 0 |
信用卡 | 0 | 0 |
安全对象 | 0 | 0 |
签名侵犯 | 0 | 0 |
内容类型 | 0 | 0 |
JSON拒绝服务 | 0 | 0 |
SQL注入 | 0 | 0 |
JSON跨站点脚本 | 0 | 0 |
文件上传类型 | 0 | 0 |
推断内容类型XML有效负载 | 0 | 0 |
CMD注入 | 0 | 0 |
XML格式 | 0 | 0 |
XML拒绝服务(XDoS) | 0 | 0 |
XML消息验证 | 0 | 0 |
Web服务互操作性 | 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 |
拒绝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 |
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 |
服务器错误响应统计信息 | 率(/秒) | 总计 |
---|---|---|
HTTP客户端错误(4xx Resp) | 0 | 0 |
HTTP服务器错误(5xx) | 0 | 0 |
通过图形界面,查看cookie劫持流量和违规流量统计信息
- 导航到安全> Citrix Web应用防火墙>配置文件.
- 在详细信息窗格中,选择aWeb应用防火墙配置文件,单击统计数据.
- 的Citrix Web应用防火墙统计页面显示cookie劫持流量和违规明细。
- 您可以选择表格视图或者切换到图形化视图以表格或图形格式显示数据。