Trace方法触发的XSS
0x01 漏洞简介
CST攻击是一种使用XSS和HTTP TRACE功能来进行攻击的方式。它是一种攻击技巧,可以利用它避开HttpOnly对cookie提供的保护,使之能够通过客户端JavaScript获取已经标记为HttpOnly的cookie值。
一般客户端向服务器请求是利用HTTP GET和POST方式,但那只是常见,还有其它方式。其中HTTP TRACE也是一种方式,这种向服务端请求信息主要用于调试web服务器连接用。如果请求有效,则在响应中会在实体中包含整个请求消息。
0x02 测试方法
- 首先要找到是否允许使用Trace方法,这个方法普遍是禁用的
- 找到后,用BP抓取Trace请求
Trace方法的响应包中,会携带原始请求报文
- 原始响应下会下载一个未知格式的文件。因此除了需要在请求头中构造XSS,同时篡改客户端解析类型和方式,将响应中的Content-Type:message/http,改为Content-Type:text/html,如下图:
- 设置拦截执行,即可抓取响应包,从而篡改响应包中的Content-Type
- 点击发送,篡改为Content-Type:text/html
- 然后放包,即可触发XSS
0x03 修复建议
- 禁止Trace方法