首页 > 其他分享 >portswigger——Response queue poisoning(响应队列中毒)_02

portswigger——Response queue poisoning(响应队列中毒)_02

时间:2023-09-02 11:46:03浏览次数:35  
标签:02 请求 队列 portswigger queue 响应 走私 服务器 连接

响应队列中毒

响应队列中毒是一种强大的请求走私攻击形式,它会导致前端服务器开始将响应从后端映射到错误的请求。实际上,这意味着同一前端/后端连接的所有用户都将获得针对其他人的持久响应。

这是通过走私一个完整的请求来实现的,从而在前端服务器只期望一个响应时从后端引发两个响应。

响应队列中毒有什么影响?

响应队列中毒的影响通常是灾难性的。一旦队列中毒,攻击者只需发出任意的后续请求即可捕获其他用户的响应。这些响应可能包含敏感的个人或业务数据,以及会话令牌等,这实际上授予攻击者对受害者帐户的完全访问权限。

响应队列中毒还会导致严重的附带损害,有效地破坏任何其他用户的站点,这些用户的流量通过同一TCP连接发送到后端。在尝试正常浏览站点时,用户将收到来自服务器的看似随机的响应,这将阻止大多数功能正常工作。

如何构造响应队列中毒攻击

要成功进行响应队列中毒攻击,必须满足以下条件:

  • 前端服务器和后端服务器之间的 TCP 连接在多个请求/响应周期中重复使用
  • 攻击者能够成功走私一个完整的独立请求,该请求从后端服务器接收自己的独特响应。
  • 该攻击不会导致任一服务器关闭 TCP 连接。服务器通常在收到无效请求时关闭传入连接,因为它们无法确定请求应该在哪里结束。

了解请求走私的后果

请求走私攻击通常涉及走私部分请求,服务器将其作为前缀添加到连接上下一个请求的开头。请务必注意,走私请求的内容会影响初始攻击后连接发生的情况。

如果您只是偷运一个带有一些标头的请求行,假设不久之后在连接上发送了另一个请求,则后端最终仍会看到两个完整的请求。

如果您改为走私也包含正文的请求,则连接上的下一个请求将追加到走私请求的正文中。这通常具有基于明显 .因此,后端有效地看到三个请求,其中第三个“请求”只是一系列剩余的字节:Content-Length

前端 (CL)

后端 (TE)

由于这些剩余字节不构成有效请求,这通常会导致错误,导致服务器关闭连接。

走私完整的请求

只要小心一点,您就可以走私一个完整的请求,而不仅仅是一个前缀。只要您一次发送两个请求,连接上的任何后续请求都将保持不变:

前端 (CL)

后端 (TE)

请注意,没有无效请求到达后端,因此连接在攻击后应保持打开状态。

取消同步响应队列

当您走私一个完整的请求时,前端服务器仍然认为它只转发了一个请求。另一方面,后端看到两个不同的请求,并将相应地发送两个响应:

前端将第一个响应正确映射到初始“包装器”请求,并将其转发到客户端。由于没有进一步的请求等待响应,因此意外的第二个响应将保留在前端和后端之间连接的队列中。

当前端收到另一个请求时,它会照常将其转发到后端。但是,在发出响应时,它会发送队列中的第一个响应,即剩余的响应到走私请求。

然后,来自后端的正确响应将没有匹配的请求。每次将新请求通过同一连接转发到后端时,都会重复此循环。

窃取其他用户的回复

一旦响应队列中毒,攻击者只需发送任意请求即可捕获其他用户的响应。

他们无法控制他们收到哪些响应,因为他们将始终被发送到队列中的下一个响应,即对前一个用户请求的响应。在某些情况下,这的兴趣有限。但是,使用Burp Intruder等工具,攻击者可以轻松地自动执行重新发出请求的过程。通过这样做,他们可以快速获取针对不同用户的各种响应,至少其中一些可能包含有用的数据。

只要前端/后端连接保持打开状态,攻击者就可以继续窃取此类响应。关闭连接的确切时间因服务器而异,但常见的默认设置是在处理了 100 个请求后终止连接。一旦当前连接关闭,重新毒害新连接也是微不足道的。

为了更轻松地区分被盗响应和对您自己的请求的响应,请尝试在您发送的两个请求中使用不存在的路径。这样,您自己的请求应该始终收到 404 响应。

标签:02,请求,队列,portswigger,queue,响应,走私,服务器,连接
From: https://www.cnblogs.com/JKding233/p/17673463.html

相关文章

  • C/C++毕业设计管理系统[2023-09-02]
    C/C++毕业设计管理系统[2023-09-02]二、毕业设计管理系统学校有若干学院,每个学院有若干专业,需要通过一个毕业设计管理系统对现有的毕业设计情况进行管理。系统适用对象:教务处管理员、院系负责人、教师、学生。1、教务处管理员:全校教学事务管理、全校课题过程管理、学生及课题......
  • Java集合面试之Queue篇
    Java集合面试之Queue篇(qq.com)1、队列是什么?队列是常用数据结构之一。是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,故为先进先出(FIFO,firstinfirstout)线性表。和栈一样,队列是一种操作受限制的线性表。2、队列的分类?Qu......
  • 20230829-sessionStorage实现数据的增删改查
    sessionStorage实现数据的增删改查#sessionStorage实现数据的增删改查(sessionStorage的方法对比localstorage)<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=......
  • 20230829-实现圣杯布局
    左右两边固定,中间自适应的布局方式(圣杯布局)<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Do......
  • 20230829-给ui下面的li绑定事件
    给ui下面的li绑定事件#给下面的每个li绑定点击事件点击打印的结果分别是123(提示:事件委托)<ul><li>1<li><li>2<li><li>3<li></ul><!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-......
  • 20230829-面试题html+css5道题记录
    css预处理工具参考答案:CSS预处理器是一个能让你通过预处理器自己独有的语法来生成CSS的程序。css预处理器种类繁多,三种主流css预处理器是Less、Sass(Scss)及Stylus;它们各自的背景如下:Sass:2007年诞生,最早也是最成熟的CSS预处理器,拥有ruby社区的支持和compass这一最强大的css框......
  • 20230825-面试题html+css5篇简单记录
    html标签的类型(head,body,!Doctype)他们的作用是什么!DOCTYPE标签:它是指示web浏览器关于页面使用哪个HTML版本进行编写的指令.head:是所有头部元素的容器,绝大多数头部标签的内容不会显示给读者该标签下所包含的部分可加入的标签有base,link,meta,script,style和title......
  • 前端学习笔记202308学习笔记第七十捌天-Map之8
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Map</title></hea......
  • 前端学习笔记202308学习笔记第七十捌天-Map之7
         ......
  • 前端学习笔记202308学习笔记第七十捌天-Map之5
       对象没有可迭代协议......