『红蓝对抗』论 HTTP 分块传输的应用

admin 2024年10月11日10:46:33评论32 views字数 1791阅读5分58秒阅读模式

点击蓝字,关注我们

日期:2023-07-28
作者:hdsec
介绍:本文介绍一下HTTP分块传输在渗透中的应用。

0x00 前言

文章开篇我们先来介绍一下什么是HTTP分块传输。

『红蓝对抗』论 HTTP 分块传输的应用

HTTP分块传输(Chunked Transfer Encoding)是一种HTTP协议在数据传输时的编码格式,它允许将数据分成若干个块进行传输。每个传输的块都包含大小信息和实际的数据内容。

HTTP分块传输常用于在不知道响应内容长度情况下传输数据。例如,当服务器需要生成大量数据或数据需要动态生成时,它可以使用HTTP分块传输来在响应正在生成时向客户端传输数据。

HTTP分块传输中,每个块使用十六进制数表示的大小信息开头,并以'rn'换行符结束。该大小信息表示块包含的字节数。块的实际数据由该大小信息所指定的数量的字节组成,并以'rn'结束。最后一个块的大小信息为0,后面跟着一个空白的'rn',表示所有的块都已传输完成。

HTTP分块传输不仅适用于响应内容的传输,还可以用于请求数据的发送,在渗透的过程中,当我们遇到网站存在waf的情况,我们就可以利用HTTP分块传输来绕过waf的检测。

0x01 分块传输格式

HTTP分块传输是HTTP协议的一种数据编码方式,其传输格式如下:

chunk-size [ chunk-extension ] CRLFchunk-data CRLF...chunk-size [ chunk-extension ] CRLFchunk-data CRLF0 CRLFfooter1-name: footer1-value CRLFfooter2-name: footer2-value CRLFCRLF

其中,chunk-size表示当前块的字节数,并以十六进制数字表示,chunk-extension可选,表示当前块的扩展信息,使用分号和值进行分隔。CRLF表示回车换行符。chunk-data表示当前块的数据内容。所有块的数据内容累加起来就是完整的实体正文。

最后一个长度为0的块表示传输结束。

在传输过程中,每个块都需要以chunk-size开始并加上后缀CRLF,接下来是 chunk-data,最后也要以CRLF结束。

如果有多个块,则依次传输,每个块之间也要用CRLF分隔。

在所有块发送完成后,可以选择添加一个或多个实体报头字段,这些字段被称为报尾或尾部(footers)。报尾同样需要以CRLF结束。

总之,HTTP分块传输用于在HTTP协议中动态传输数据,其传输格式是由块大小和块数据组成,可以在数据生成过程中逐步传输数据,提高效率和安全性。

客户端和服务端在进行HTTP分块传输时,需要注意以下几点:

  1. 客户端需要在请求头部添加Transfer-Encoding: chunked,告知服务端使用分块传输方式。

  2. 服务端需要在响应头部添加Transfer-Encoding: chunked,告知客户端使用分块传输方式。

  3. 服务端需要将所有数据按照块的格式进行封装并发送给客户端。

0x02 利用 Burp 插件分块传输

2.1 chunked-coding-converter

下面以本地搭建的sqli-labs环境进行漏洞演示,如果网站没有安装waf,构造如下请求数据包可以正常返回数据,如下图所示。

『红蓝对抗』论 HTTP 分块传输的应用

但是实际上在日常漏洞挖掘过程中,往往都会遇到waf的情况,如下图所示。

『红蓝对抗』论 HTTP 分块传输的应用

因此,我们可以利用github项目chunked-coding-converter工具,对传输的数据进行分段传输,绕过waf以达到我们想要的目的。

项目地址:

https://github.com/c0ny1/chunked-coding-converter

抓取数据包在repeater模块右击选择工具Chunked coding converter对数据包的请求体进行chunked编码。

『红蓝对抗』论 HTTP 分块传输的应用

可以发现使用了分块传输的数据包,可以绕过waf获取数据库数据。

『红蓝对抗』论 HTTP 分块传输的应用

2.2 搭配 sqlmap 跑注入

当然网站存在waf,使用sqlmap也会被拦截,我们可以将sqlmap代理到Burp中,使用chunked-coding-converter插件对Proxy流量进行编码处理,来绕过waf

『红蓝对抗』论 HTTP 分块传输的应用
『红蓝对抗』论 HTTP 分块传输的应用

『红蓝对抗』论 HTTP 分块传输的应用

0x03 总结

分块传输还有很多有趣的玩法,我们一起探索8️⃣~

『红蓝对抗』论 HTTP 分块传输的应用

免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。

点此亲启

原文始发于微信公众号(宸极实验室):『红蓝对抗』论 HTTP 分块传输的应用

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月11日10:46:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『红蓝对抗』论 HTTP 分块传输的应用https://cn-sec.com/archives/1919236.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息