赏金猎人技能-http走私漏洞学习
Safe bleaching powder
昨天大家默哀了吗?
为表达对抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞的深切哀悼
时常听到一些人吐槽国家哪里哪里不好
但是到生死关头
你日常吐槽的国家和
身上挂着五星红旗的人
是不是会像你爸妈一样狠狠拉你一把
我们应该为生在这样强大团结的
祖国感到骄傲!
学习简介:
今天我们来学习一下http请求走私漏洞,也是hackone平台上经常给白帽挖到的一个漏洞,然后我很好奇这个漏洞的挖掘并研究了一下,然后写下这篇总结给大家,希望大家看完后能有所收获!这个漏洞最早记录在2005年
使用工具:
BURP2020
火狐tools渗透版
portswigger实验室靶场
科学上网的代理
漏洞产生的原理:
为什么写下原理呢,是因为最近面试工作问的问题都是原理性的吃了不少亏,所以从现在起做笔记写文章都要写下产生的原理,一是帮助我更好理解漏洞,二是加深对漏洞的印象。
原理:
这个http走私请求是利用了解析两个HTTP设备(通常是前端代理或启用HTTP的防火墙和后端服务器)之间不符合RFC的HTTP请求的差异。HTTP请求走私技术是通过发送多个特制HTTP请求来执行的,这些请求导致两个被攻击实体看到两组不同的请求
http1.1遵循RFC-2616参考链接:
https://tools.ietf.org/html/rfc2616#section-4.3
一个http正常的请求头必须包含:
Content-Length or Transfer-Encoding
有些服务器或者中间件只判断解析了Content-Length,于是我们就可以利用后者Transfer-Encoding的特殊结构就可能造成http走私的漏洞利用
http1.1特性可以参考下面连接:
https://blog.csdn.net/joenqc/article/details/70186207
2种特性参考链接:
keepalive: https://www.cnblogs.com/havenshen/p/3850167.html
pipline: https://blog.csdn.net/u013668852/article/details/77837597
下面根据国外的一个黑帽大会分享的http走私漏洞的演讲所做的ppt
用于更深刻理解http特性
服务器在基于流的传输层协议(例如TCP)上说HTTP或TLS,为了提高性能,这些流被大量重用,为了遵循HTTP1.1keepalive协议,这意味着请求是背靠放置在这些流上,链中的每个服务器都是,所以我们期望通过http http标头来计算每个消息的持续时间,因此,该消息在哪里停止,下一条消息在哪里开始,所以我们来自世界各地的用户请求正通过此很小的tcp和tls流池到后端,然后必须将它们传递,然后将它们重新整理成单独的请求,可能会出错
假设如果攻击者发送了一个请求,然后故意制作一段攻击代码,因此前端和后端在多长时间内意见不一致,该消息正文在此实例中,前端认为该蓝色和橙色数据块是一个请求,因此它将立即发送整个数据,流到后端,但出于种种原因,后端认为这消息以第二个蓝色块结尾,因此认为橙色第一点数据是下一个请求的开始,它只是在等待,在该请求完成之前要完成第二个请求,并且怎么样才能很好都完成该请求,可以有效处理走私请求,我们可以申请别人的请求的任意前缀,这是这项技术以及整个演示文稿中进行的每一项攻击都是
使用这个基本概念是因为你无法直接看到发生在前端后面,很容易让人感到困惑,纠结在一起的东西,但请记住,一切都在使用一个简单的方法
我认为我们还是必须对RFC规范2616表示赞赏,这是原始规范说的,如果你收到包含内容的信息,则并进行分块,你应该优先考虑这些分块,然后将其隐寓的说,这些信息很好,你不应该拒接他们,只需要将它们标准化,只需以这种方式处理它们,一切都会好起来的,但事实是,如果你的链接中有一台服务器违反了该规则,优先考虑了内容的长度,那一切都不会好
【以上是我从ppt上理论以及作者的对白翻译下来的,用自己的零碎英文加上谷歌翻译】
PPT我百度云分享一下有需要可存
链接:https://pan.baidu.com/s/1b0ldJn_W_4cQmg_I50azjA
提取码:8sww
我们用利用portswigger实验室靶场示范:
【基于CL.TE:】
在这里,前端服务器使用Content-Length头,而后端服务器使用Transfer-Encoding头
实验室环境默认为blog
抓包发送repeater模块及注意事项:
然后需要转换一下格式:
修改包并发送正常请求:
重新放包成功执行并返回:
下面是我画了一个图记录漏洞利用过程:
正常请求为第一次放包
缓存请求为第二次放包
前端服务器处理Content-Length标头,并确定请求正文的长度为6个字节,直到的结尾A,
该请求被转发到后端服务器。
后端服务器处理Transfer-Encoding标头,因此将消息正文视为使用分块编码。它处理第一个块,该块被声明为零长度,因此被视为终止请求。接下来的字节A保留未处理,后端服务器会将其视为序列中下一个请求的开始。
【基于TE.CL漏洞利用】
在这里,前端服务器使用Transfer-Encoding头,
而后端服务器使用Content-Length头。
通过差异响应确认 TE CL 漏洞
抓包发送repeater模块
构建数据包
成功回显:
【http走私通过标头反射的XSS[User-Agent]】
我们时常要记住burp是默认关闭这个update content-length
这里需要转换格式为POST,这里我们得记住
我们在User-Agent构建一个xss语句,i love you 用来定位
然后我们需要copy回显请求放在抓包浏览器浏览
其实还有一些其他常见的请求利用我还没写
我就不一一举例,谷歌一下啥都有
这篇文章写得很仔细:https://paper.seebug.org/1048/#51
大家顺便也可以把这个网站收藏到收藏夹里面,方便每天看看每天学习
公众号推荐
ms08067安全实验室
GCOW安全团队
Khan安全团队
悬剑武器库
Admin Team
洛米唯熊
快识
Safe bleaching powder【臭不要脸】
如上知识点还没补全,我会继续跟新
大佬们觉得哪里写得不对误人子弟了
请联系我,我会洗耳恭听
又到时间讲拜拜啦~
先推荐这么多吧,下次更新
我会打包我的平常关注的整合rss源
给大家查漏补缺
欲知后事如何
敬请关注
本文始发于微信公众号(Khan安全攻防实验室):赏金猎人技能-http走私漏洞学习
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论