跨站跟踪攻击(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。
响应主体中携带它收到的原始请求报文


从而使得客户端成功执行构造的脚本