跨站跟踪攻击(CST/XST)
TRACE请求绕过httponly实现xss跨站
什么是TRACE方法
由HTTP定义的一种请求方法,当客户端发起一个请求时,这个请求可能要穿过防火墙、代理、网关或其他一些应用程序。每个中间节点都可能会修改原始的 HTTP 请求。TRACE 方法允许客户端在 最终将请求发送给服务器时,看看它变成了什么样子。
TRACE 请求会在目的服务器端发起一个 环回 诊断。行程最后一站的服务器会弹回一条 TRACE 响应,并在响应主体中携带它收到的原始请求报文。这样客户端就可以查看在所有中间 HTTP 应用程序组成的请求 / 响应链上,原始报文是否,以及如何被毁坏或修改过。
什么是httponly
如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击窃取cookie内容,
如何开启
PHP5.2以上版本已支持HttpOnly参数的设置
同样也支持全局的HttpOnly的设置,
在php.ini中设置 session.cookie_httponly = 1
将开启全局的Cookie的HttpOnly属性。
也可以通过代码来实现
<?php
ini_set("session.cookie_httponly", 1);
//或
session_set_cookie_params(0, NULL, NULL, NULL, TRUE);
?>
什么是跨站跟踪攻击(CST/XST)
CST攻击是一种使用XSS和HTTP TRACE功能来进行攻击的方式。可以利用它避开HttpOnly对cookie提供的保护,使之能够通过客户端JavaScript获取已经标记为HttpOnly的cookie值。
正常情况下,客户端脚本(如JS脚本)是可以通过document.cookie函数获得,这样如果有XSS跨站漏洞,cookie很容易被盗取。而浏览器有一个安全策略,通过设置cookie的httponly属性,这样客户端脚本就不能通过document.cookie访问该cookie,即时有跨站漏洞,也不能盗取用户cookie。
响应主体中携带它收到的原始请求报文
从而使得客户端成功执行构造的脚本