TRACE请求造成XSS

漏洞描述

          远端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方法中进行发送。

猜你喜欢

转载自blog.csdn.net/qq_50854662/article/details/131508876
xss