BurpSuite-请求走私

什么是请求走私

  1. 请求走私是针对于服务端处理一个或者多个接收http请求序列的方式,进行绕过安全机制,实施未授权访问一种攻击手段,获取敏感信息,并直接危害其他用户。

在这里插入图片描述

HTTP请求走私攻击会发生什么?

当前端服务器将HTTP请求转发到后端服务器时,它通常通过相同的后端网络连接发送多个请求,因为这样做效率更高,性能更高。协议非常简单:HTTP请求一个接一个地发送,接收服务器解析HTTP请求标头以确定一个请求结束的位置和下一个请求的开始

在这种情况下,前端和后端系统就请求之间的界限达成一致至关重要。否则,攻击者可能会发送一个模糊的请求,前端和后端系统会对其进行不同的解释:
在这里插入图片描述
Tips:在这里,攻击者将后端服务器的部分前端请求解释为下一个请求的开始。它有效地预先附加到下一个请求,因此可能会干扰应用程序处理请求的方式。这是一次请求走私攻击,它可能会造成毁灭性的后果。

HTTP头部协议基础了解

这里简单普及一下两个http标识头Content-Length标头和Transfer-Encodingkeep-alive
什么时候会用到Transfer-Encoding?
1.传输编码:在发送第一个字节之前,如果总内容长度未知,则需要使用chunked;

分块传输编码带来的好处:
1.通常用于http传输中进行持久链接,持久连接通常服务器端会发送Content-length 消息头字节
2.但是对于动态生成内容来说,在内容完成之前对于客户端来说数据都是未知的。

  1. **分块传输编码(Transfer-Encoding)**它把数据分解成一系列数据块,并以多个块发送给客户端,服务器发送数据时不再需要预先告诉客户端发送内容的总大小,只需在响应头里面添加Transfer-Encoding: chunked,以此来告诉浏览器我使用的是分块传输编码,这样就不需要 Content-Length 了,这就是分块传输编码 Transfer-Encoding 的作用。
  2. 关于Content-Length
    当客户端请求时是Connection: keep-alive的时候,服务器返回的形式Transfer-Encoding: chunked的形式,以确保页面数据是否结束,长连接就是这种方式,用chunked形式就不能用content-length

HTTP如何请求走私漏洞?

Tips:
许多安全测试人员都不知道可以在HTTP请求中使用分块编码,原因有两个:
Burp Suite自动解压缩分块编码,使消息更易于查看和编辑。
浏览器通常不会在请求中使用分块编码,通常只在服务器响应中看到它。

//大多数HTTP请求走私漏洞都会出现。
//因为HTTP规范提供了两种不同的方式来指定请求的结束位置:Content-Length标头和Transfer-Encoding标头。

//内容长度报头是直接的:它指定消息体的以字节为单位的长度。例如:

POST / search HTTP / 1.1 
Host:normal-website.com 
Content-type:application / x-www-form-urlencoded 
Content-length:11 

q =smuggling

//传输编码报头可以被用来指定该消息的身体使用分块编码。
//这意味着邮件正文包含一个或多个数据块。
//每个块包含以字节为单位的块大小(以十六进制表示),后跟换行符,后跟块内容。
//消息以大小为零的块结束。例如:

POST / search HTTP / 1.1 
Host:normal-website.com 
Content-type:application / x-www-form-urlencoded 
Transfer-Encoding:chunked 

b 
q =smuggling
0
// Tips:以上过程需使用BurpSuite工具进行尝试测试

由于HTTP规范了两种不同的方法来指定HTTP消息长度,他们两个协议是不能同时使用的,而且HTTP试图声明Content-lengthThransfer-Encoding反正经过了我个人的理解Content-Length会比Thransfer-Encoding优先级低一些。

  1. 某些服务器不支持请求中的Transfer-Encoding标头。
  2. 如果标头以某种方式进行模糊处理,则可能会导致 某些支持Transfer-Encoding标头的服务器不处理它。

如果前端和后端的Thransfer-Encoding标头不一致,那么它们则不同意连续请求之间的边界从而实现走私漏洞,未授权访问,绕过安全检查机制。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值