IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> web缓存欺骗攻击 -> 正文阅读

[PHP知识库]web缓存欺骗攻击

先来看一个例子,index.php需要登录后才可以看到个人信息,在a浏览器登录后然后访问http://192.168.81.210/web/csrf/source/cors/index.php/123.css切换到b浏览器,访问a浏览器的链接,可以发现不需要经过登录也可以看到个人信息。以上例子就是一个web缓存欺骗攻击

漏洞介绍

Web缓存欺骗(Web Cache Deception)是一种新的web攻击方法,包括web框架以及缓存机制等在内的许多技术都会受到这种攻击的影响。攻击者可以使用这种方法提取web用户的私人及敏感信息,在某些场景中,攻击者利用这种方法甚至可以完全接管用户账户。
Web应用框架涉及许多技术,这些技术存在缺省配置或脆弱性配置,这也是Web缓存欺骗攻击能够奏效的原因所在。
如果某个用户访问看上去人畜无害、实际上存在漏洞的一个URL,那么该Web应用所使用的缓存机制就会将用户访问的具体页面以及用户的私人信息存储在缓存中。

背景介绍

很多网站都会使用web缓存功能来减少web服务器的延迟,以便更快地响应用户的内容请求。为了避免重复处理用户的请求,web服务器引入了缓存机制,将经常被请求的文件缓存起来,减少响应延迟。通常被缓存的文件都是静态文件或者公共文件,如样式表(css)、脚本(js)、文本文件(txt)、图片(png、bmp、gif)等等。通常情况下,这些文件不会包含任何敏感信息。
有多种方法能够实现缓存,比如,浏览器端也可以使用缓存机制:缓存文件后,一段时间内浏览器不会再次向web服务器请求已缓存的文件。这类缓存与web缓存欺骗攻击无关。实现缓存的另一种方法就是将一台服务器部署在客户端和web服务器之间,充当缓存服务器角色,这种实现方法会受到web缓存欺骗攻击影响。这类缓存有各种表现形式,包括:

  • CDN(Content Delivery Network,内容分发网络)。CDN是一种分布式代理网络,目的是快速响应内容请求。每个客户端都有一组代理服务器为其服务,缓存机制会选择离客户端最近的一个节点来提供服务。
  • 负载均衡(Load balancer)。负载均衡除了能够通过多台服务器平衡网络流量,也能缓存内容,以减少服务器的延迟。
  • 反向代理(Reverse proxy)。反向代理服务器会代替用户向web服务器请求资源,然后缓存某些数据。

工作过程

假设我们要访问的某个网站使用了服务器缓存技术,架构如下:
举个例子,网站(Apache+PHP)配置了一个反向代理服务器(Nginx)作为web缓存。与其他网站类似,这个网站使用了公共文件,如图片、css文件以及脚本文件。这些文件都是静态文件,该网站的所有或绝大部分用户都会用到这些文件,对每个用户来说,此类文件返回的内容没有差别。这些文件没有包含任何用户信息,因此从任何角度来看,它们都不属于敏感文件。
某个静态文件第一次被请求时,该请求会直接穿透代理服务器。缓存机制没见过这个文件,因此会向服务器请求这个文件,然后服务器会返回文件内容。现在,缓存机制需要识别所接收的文件的类型。不同缓存机制的处理流程有所不同,但在大多数情况下,代理服务器会根据URL的尾部信息提取文件的扩展名,然后再根据具体的缓存规则,决定是否缓存这个文件。
如果文件被缓存,下一次任何客户端请求这个文件时,缓存机制不需要向服务器发起请求,会直接向客户端返回这个文件。

利用条件

1、缓存服务器根据后缀进行缓存
2、访问xx.php/1.js等不存在的的静态文件,返回对应的xx.php的内容。
3、受害者必须登录了网站

利用流程

当注册的用户成功登入了该网站,会跳转到自己的账户页面index.php,该Nginx反向代理服务器会将css、js、jpg等静态资源缓存到nginx设定的目录下。受害者不小心在浏览器中输入了如下的url:http://victim.com/index.php/123.css, 123.css 并不存在,此时会发什么神奇的事情呢?
Nginx反向代理服务器发现url以静态文件的扩展名(.css)结尾,由于123.css 不存在,它的缓存机制会将 index.php 缓存到缓存目录中,这时攻击者访问了:http://victim.com/index.php/123.css,之前 缓存的帐户页面便成功返回给了攻击者。
在这里插入图片描述

最后贴一个phpstudy的nginx的配置,网上基本所有的文章都只是贴了文字,对于配置都是一笔带过,因为并不是很熟悉nginx的配置,只是勉强配置能复现,配置文件nginx.conf:首先在http模块下添加

proxy_cache_path D:/Software/PHPStudy/PHPTutorial/nginx/cache levels=1:2 keys_zone=SLoan:500m inactive=10d max_size=10g;
proxy_temp_path D:/Software/PHPStudy/PHPTutorial/nginx/cache/temp;

然后在server模块下添加了两个location

  location ~ .*\.(gif|jpg|png|css|js)(.*) {
           proxy_pass         http://192.168.81.210:8070;#图中的源服务器地址
           proxy_cache SLoan;#keys_zone的值
           proxy_redirect default;
           proxy_ignore_headers Cache-Control Expires;
           proxy_set_header Host $host;
           #proxy_set_header X-Forwarded-For $remote_addr;
           proxy_cache_valid 200 304 5m;
           proxy_cache_valid any 1m;
           proxy_cache_key $host$uri$is_args$args;
           add_header Nginx-Cache "$upstream_cache_status";
           expires 10d;
           }
         location ~ \.php$ {
			proxy_pass         http://192.168.81.210:8070;
			}

参考文章

https://www.anquanke.com/post/id/86516

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 15:31:14  更:2021-12-11 15:32:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/13 14:31:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码