web基础漏洞-xss非html响应处理

发布时间 2023-11-01 08:12:43作者: 挖洞404

1、介绍

对于反射型和存储型xss来说,一般要求响应类型为text/html,然后进一步测试敏感字符和构造payload。

测试过程中,逐个日志进行查看。如果响应类型是application/javascript等其它非text/html的文本类型,直接构造payload的话浏览器并不会将其作为html解析。

但是,如果直接复制url在浏览器中访问,或者基于form表单提交,查看burp其响应类型变为text/html的话,那么就满足基本条件,可以进一步测试xss。

2、示例

(1)文档中间过程加载jsonp,访问过程中,发现存在参数包含返回,但响应类型不为text/html

(2)直接浏览器访问url,发现响应类型变更为html。可以进一步测试xss

3、进一步阐述

(1)比较这两组请求报文,区别在于Accept的值。

  • 如果是浏览器地址栏直接请求,更倾向于html类型。text/html优先级更高
  • 而在html文档间接发出请求,可能会设置为*/*无倾向,或者其它非text/html类型
  • 服务端接收请求后,有大概三种情况:
    • 代码或者服务器容器直接设置固定的响应头部字段content-type
    • 请求中accept为*/*,无预期偏好。服务器根据请求的路径后缀和响应内容自动设置
    • 请求中accept表现偏好。服务器结合请求的路径后缀和响应内容,进行设置。

(2)accept设置与处理

  • 浏览器地址栏请求和form表单,可以一定程度影响accept请求字段。form表单具有属性accept,可以直接设置
  • 需要注意,accept只是有可能将响应类型变更为text/html,但并不绝对

(3)场景

  • html文档中加载其它js、css等文本文档
  • html文档ajax交互,获取非html的文本文档
  • html文档ajax交互,获取到html的文本文档