web基础漏洞-响应拆分漏洞

发布时间 2023-05-29 17:19:52作者: 挖洞404

1、介绍

典型的响应拆分漏洞,是指的http响应字段拆分漏洞。

即服务端动态将参数写入返回给用户的响应的头部字段中,该参数可以被攻击者控制,使包含\r\n这两个用于分隔不同响应头部行的字段或者\r\n\rn用于分隔响应头部与响应体部字段,同时写入响应过程未被阻止,那么用户接收到响应时,浏览器就会错误识别,从而攻击者可以增加响应字段或者直接编辑响应体部,造成危害。

  • 设置响应字段cookie,可以覆盖用户现有的cookie。结合会话固定漏洞、逻辑漏洞、dom型xss漏洞等
  • 设置响应字段location,url跳转,进行钓鱼
  • 直接设置响应体部,可以实现反射型xss,进而可以做多种xss危害
  • 直接设置响应体部,不跳转,伪造页面进行钓鱼

攻击者控制写入参数的方式,可以参考反射型xss和存储型xss,即要么基于社工使受害者用户直接点击包含参数的链接,要么基于社工使受害者访问被攻击者控制页面被动发出包含参数的请求,还有就是攻击者将参数直接保存到服务端数据库再由受害者用户请求。

2、防护

http响应拆分,一般是由nginx、tomcat等服务器容器厂商负责的,禁止在响应字段名称或值中包含\r\n字符。

3、测试

(1)是否存在攻击者可控参数,被写入响应头部字段

(2)写入\r\n,分析响应是否过滤。

(3)如果可能的话,获取相应组件类型和版本,是否存在响应拆分漏洞的中间件漏洞。

4、其他

响应拆分实际是一种挖洞思路,利用换行符等敏感字符,关闭当前结构,新建元素结构。

除了http响应拆分,还可能出现其他协议的响应拆分,请求拆分也是可能的。

另外,json、xml等数据中,也可能被拆分。作为响应的html、js代码也可能出现被拆分。