前言
信息较敏感,仅文字记录 某单位的授权渗透测试,请勿用于非法用途
MIME类型 - HTTP | MDN
TRACE - HTTP | MDN
一、漏洞
TRACE方法导致的XSS
二、渗透测试
先访问网站并用burpsuite 抓包,发送到重放模块里面测试 修改一下GET 为OPTIONS 后发现没有回显Allow 参数
之后用AWVS 扫了一下,发现开启了TRACE 方法 所以又重新抓包修改成TRACE 方法,在重放模块中发现返回包中会返回请求的内容
因为要在浏览器看一下内容,所以不能搞到重放模块里 先抓包将GET 修改成TRACE ,forward 发送一下请求,然后浏览器会出现一个下载的弹窗 下载下来的内容就是返回包的内容
之所以不在浏览器直接显示,是因为TRACE 方法的返回包Content-Type 值默认为message/http 需要修改Content-Type 的值为text/html 才能在浏览器显示
burpsuite 里面右键选择Do intercept > Response to this request 抓取当前请求的返回包 将Content-Type 的值修改成text/html 后就能将请求内容回显到浏览器,注意参数和值中间需要有空格
如果要弹xss的话,可以在原有的请求头中添加一句<svg onload=alert(123)> 可以构造类似如下的请求头,在Accept-Encoding 参数中写入代码 也可以自己新写一个参数test ,再填入值 但如果请求头的格式错误,请求就没法被服务器识别了(这就是为什么不直接写xss,而是作为某个参数的值)。
TRACE 路径 HTTP/1.1
..省略..
Accept-Encoding: gzip, deflate<svg onload=alert(123)>
test: <svg onload=alert(444)>
..省略..
然后修改返回包的内容,再放包就弹窗了
..省略..
Content-Type: text/html
..省略..
TRACE 路径 HTTP/1.1
..省略..
Accept-Encoding: gzip, deflate<svg onload=alert(123)>
test: <svg onload=alert(444)>
..省略..
三、修复建议
禁用TRACE方法
|