漏洞描述
远端WWW服务支持TRACE请求。RFC 2616介绍了TRACE请求,该请求典型地用于测试HTTP协议实现。
漏洞危害
攻击者利用TRACE请求,结合其它浏览器端漏洞,有可能进行跨站脚本攻击,获取敏感信息,比如cookie中的认证信息,这些敏感信息将被用于其它类型的攻击。
验证方法
如果目标存在服务端支持TRACE请求,验证方法如下
1.通过抓包软件burpsuite,重发数据
将请求方法修改为TRACE,相应包中返回 如图所示,则存在改漏洞
2.模拟trace请求,假设报漏洞的端口是8081:
curl -v -X TRACE -I localhost:8081
如果回显为,如下所示,则该端口服务支持trace请求,漏洞存在。
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Type: message/http
Content-Type: message/http
如果回显为,如下所示,则该漏洞不存在。
< HTTP/1.1 403 Forbidden
< Content-Type: text/html; charset=iso-8859-1
或者回显为
< HTTP/1.1 405 Method Not Allowed
< Content-Type: text/html; charset=iso-8859-1
漏洞利用
某应用程序服务端启用了TRACE方法,先看原始请求/响应数据,如下图所示:
响应主体中携带它收到的原始请求报文:
原始响应下会下载一个未知格式的文件。因此此例中需要除了需要在请求头中构造恶意脚本以外,同时篡改客户端解析类型和方式,将响应中的Content-Type:message/http,改为Content-Type:text/html,如下图:
从而使得客户端成功执行构造的脚本:
CST与XSS的联系和区别:
联系:CST是XSS的一种子类,也属于XSS跨站漏洞。
区别:浏览器请求的方式不一样,普通的XSS一般通过GET和POST方式在页面上输入攻击脚本实现,但是CST如果要在页面上输入,需要找到会通过TRACE发送的输入点,一般是自己构造攻击报文在TRACE方法中进行发送。