当前位置: 首页 > news >正文

实战之巧用header头

案例:

遇到过三次
一次是更改accept,获取到tomcat的绝对路径,结合其他漏洞获取到shell。
一次是更改accept,越权获取到管理员的MD5加密,最后接管超管权限。
一次是更改accept,结合参数获取到key。
这里以越权的案例介绍,其他的两个没保存图

原始请求包:
image.png
将Accept改为
Accept: application/json, text/javascript, /; q=0.01
成功获取到当前用户的password以及sql接口
image.png
构造参数id=1后成功获取到管理员权限以及管理员md5密码,md5解密后成功接管管理员权限
image.png
image.png

漏洞分析:

核心还是根据Accept进行不同响应导致的

第一种代码:

RESTful API情况下,直接写在controller中
后端请求根据请求头中Accept 字段判断进行生成不同格式的响应数据。

@RestController
public class MyController {@GetMapping(value = "/data", produces = MediaType.APPLICATION_JSON_VALUE)public ResponseEntity<MyData> getJsonData() {// 生成 JSON 格式的响应数据MyData data = new MyData();// 设置数据...return ResponseEntity.ok(data);}@GetMapping(value = "/data", produces = MediaType.TEXT_HTML_VALUE)public ResponseEntity<String> getHtmlData() {// 生成 HTML 格式的响应数据String html = "<h1>Hello, World!</h1>";return ResponseEntity.ok(html);}
}

第二种代码:

filter进行设置编码

public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse httpResponse = (HttpServletResponse) response;String acceptHeader = httpRequest.getHeader("Accept");if (acceptHeader != null && acceptHeader.contains("text/html")) {httpResponse.setHeader("Accept", "text/plain");}chain.doFilter(request, response);}
}

controller进行判断情况

@Controller
public class MyController {@GetMapping(value = "/data")public String getData(HttpServletRequest request) {String acceptHeader = request.getHeader("Accept");if (acceptHeader != null && acceptHeader.contains("application/json")) {// 返回 JSON 格式的视图return "jsonView";} else {// 返回 HTML 格式的视图return "htmlView";}}
}

漏洞可能出现业务:

从开发角度探讨出现这种业务的原因:

  1. 响应内容的格式要根据客户端的需求而动态变化:如果你的业务需要根据客户端的需求动态地生成不同格式的响应数据,例如根据客户端要求返回 JSON 或者 HTML 格式的数据。这通常用于构建 RESTful API 或者多渠道支持的应用程序。
  2. 客户端与后端交互方式多样化:如果你的应用程序被多个不同的客户端(如浏览器、移动设备、API 调用等)访问,并且每个客户端对响应数据的需求不同,例如某些客户端需要 JSON 格式,而其他客户端需要 HTML 格式。此时,根据客户端请求头中的 Accept 字段来返回适当格式的数据是很常见的需求。
  3. 处理特定类型的请求:有些业务场景可能需要处理特定类型的请求,例如文件上传、XML 数据解析等。这些请求可能需要特殊的处理逻辑,并返回与请求内容相关联的响应数据。

具体业务:

  1. 多客户端应用程序时:多客户应用程序需要处理多种类型的客户端请求,如一个web如果同时具有apk,小程序,ios等时可以考虑测试这个。
  2. 多组件存在时:多组件程序时需要处理多种不同类型请求的请求包。(上面的案例就是这种情况,因为该系统有多个组件,所以我当时才进行测试该漏洞。)

拓展以及思考:

除了accept以外是否还有其他的header头也会导致不一样呢,比如cdn模式下的Accept-Language会不会也有产生不一样的效果呢?
绕waf时的Accept-Encoding会不会也产生奇效呢?
User-Agent遇到403时,会不会也碰撞出不一样的火花。
这些就留给大家自己去探究了

最后:

基于开发的角度去探究漏洞,或许思路会更巧更妙

相关文章:

实战之巧用header头

案例&#xff1a; 遇到过三次 一次是更改accept&#xff0c;获取到tomcat的绝对路径&#xff0c;结合其他漏洞获取到shell。 一次是更改accept&#xff0c;越权获取到管理员的MD5加密&#xff0c;最后接管超管权限。 一次是更改accept&#xff0c;结合参数获取到key。 这里以越…...

[AUTOSAR][诊断管理][ECU][$36] 数据传输

文章目录 一、简介二、服务请求报文定义三、服务请求报文中参数定义(1)blockSequenceCounter(2)transferRequestParameterRecord三、肯定响应(1)blockSequenceCounter(2)transferResponseParameterRecord四、支持的NRC五、示例代码36_transfer_data.c一、简介 这个服务…...

sw 怎么装新版本

我们在安装solidworks时&#xff0c;有时候会提示A newer version of this applic ation is already installed. Installation stopped.如下图所示 这时候需要点继续安装 然后会出现下图所示情况&#xff0c;vba7.1安装未成功 这是因为我们电脑中以前安装过更高版本的solidw…...

正点原子嵌入式linux驱动开发——Linux 音频驱动

音频是最常用到的功能&#xff0c;音频也是linux和安卓的重点应用场合。STM32MP1带有SAI接口&#xff0c;正点原子的STM32MP1开发板通过此接口外接了一个CS42L51音频DAC芯片&#xff0c;本章就来学习一下如何使能CS42L51驱动&#xff0c;并且CS42L51通过芯片来完成音乐播放与录…...

conda相关的命令操作

准备切换conda环境 cd C:\ProgramData\Anaconda3\Scripts查看所有环境 conda info --envs选择环境 activate pytorch安装torch pip install D:\installPackage\torch-1.2.0-cp36-cp36m-win_amd64.whl安装torchvision pip install D:\installPackage\torchvision-0.4.0-cp3…...

如何快速使用Vue3在electron项目开发chrome Devtools插件

1、建立Vue项目 为了方便快速建立项目&#xff0c;我已经写好脚手架&#xff0c;直接clone项目&#xff0c;快速开发 点击快速进入源代码 拉取代码 git clone https://github.com/xygengcn/electron-devtool.git安装依赖 yarn运行项目 yarn dev打包项目 yarn build2、安装…...

干洗店服务预约小程序有什么作用

要说干洗店&#xff0c;近些年的需求度非常高&#xff0c;一方面是人们生活品质提升&#xff0c;另一方面则是各种服饰对洗涤要求提升等&#xff0c;很多人的衣服很多也会通过干洗店进行清洁。 而对从业商家来说&#xff0c;市场庞大一方面需要不断进行市场教育、品牌提升&…...

【跟小嘉学 Rust 编程】三十四、Rust的Web开发框架之一: Actix-Web的进阶

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...

软件安装(1)——Xshell安装

一、前言 本篇文章主要用于介绍Xshell破解版的安装 二、具体步骤 1. 下载Xshell7 链接&#xff1a;https://pan.baidu.com/s/1sFZz1uPb7yeDl6dlM4xtpg 提取码&#xff1a;a7m8 2. 安装Xshell7 选择文件安装目录后安装即可...

Kafka基本原理、生产问题总结及性能优化实践 | 京东云技术团队

Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以实时的处理大量数据以满足各种需求场景&a…...

java8利用Stream方法求两个List对象的交集、差集与并集(即:anyMatch和allMatch和noneMatch的区别详解)

1、anyMatch 判断数据列表中是否存在任意一个元素符合设置的predicate条件&#xff0c;如果是就返回true&#xff0c;否则返回false。 接口定义&#xff1a; boolean anyMatch(Predicate<? super T> predicate); 方法描述&#xff1a; 在anyMatch 接口定义中是接收 P…...

Centos7下生成https自签名证书

1、安装openssl yum install openssl2、生成带密码的私有秘钥文件 openssl genrsa -des3 -out server.key 2048使用带密码的私有秘钥文件时需要输入密码&#xff0c;这里直接输入&#xff1a;123456 3、生成不带密码的私有秘钥文件 openssl rsa -in server.key -out serve…...

从中序和后序遍历序列构造二叉树

注意&#xff1a;该解法是基于二叉树中的值不存在重复所写的。 代码如下&#xff0c;可开袋即食 class Solution {private Map<Integer,Integer> map;public TreeNode buildTree(int[] inorder, int[] postorder) {map new HashMap<>();for(int i 0; i < in…...

Apache ActiveMQ (版本 < 5.18.3) (CNVD-2023-69477)RCE修复方案/缓解方案

一、漏洞描述 Apache ActiveMQ 是美国阿帕奇&#xff08;Apache&#xff09;基金会的一套开源的消息中间件&#xff0c;它支持 Java 消息服务、集群、Spring Framework 等。 二、漏洞成因 ActiveMQ 默认开放了 61616 端口用于接收 OpenWire 协议消息&#xff0c;由于针对异常…...

61. 旋转链表、Leetcode的Python实现

博客主页&#xff1a;&#x1f3c6;李歘歘的博客 &#x1f3c6; &#x1f33a;每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点&#xff0c;以及职场小菜鸡的生活。&#x1f33a; &#x1f497;点关注不迷路&#xff0c;总有一些&#x1f4d6;知识点&am…...

基于tpshop开发多商户源码支持手机端+商家+门店 +分销+淘宝数据导入+APP+可视化编辑

tpshop多商户源码,tpshop商城源码,tpshop b2b2c源码-支持手机端商家门店 分销淘宝数据导入APP可视化编辑 tpshop商城源码算是 thinkphp框架里做的比较早 比较好的源码了&#xff0c;写法简明 友好面向程序猿。 这是一款前几年的版本 虽然后台看着好了些&#xff0c;丝毫不影响…...

ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑

ElasticSearch深度解析入门篇&#xff1a;高效搜索解决方案的介绍与实战案例讲解&#xff0c;带你避坑 1.Elasticsearch 产生背景 大规模数据如何检索 如&#xff1a;当系统数据量上了 10 亿、100 亿条的时候&#xff0c;我们在做系统架构的时候通常会从以下角度去考虑问题&a…...

HTML简单实现v-if与v-for与v-model

Vue启动&#xff01;&#xff01; 首先VIewModel将View和Model连接一起&#xff0c;Model的数据改变View的数据也变 使用Visual Studio Code 启动Vue需要vue.js插件和导入CDN(包) vue.js插件&#xff1a;CTRL shift x 在搜索栏搜 索vue.js安装即可 CDN&#xff1a; http…...

【学习笔记】[PA2021] Fiolki 2

Part 1 前置知识&#xff1a;LGV引理 摘抄自oi-wiki&#xff1a; L G V LGV LGV引理可以用来处理有向无环图上不相交路径计数等问题。 基本定义&#xff1a; w ( P ) w(P) w(P)表示 P P P这条路径上所有边的 边权之积 。&#xff08;路径计数时&#xff0c;可以将边权都设为…...

计算1到100的和

一、不好的写法 public static void main(String[] args) {int sum 0;int n 100;for (int i 1; i < n; i) {sum i;}System.out.println("sum" sum);}1.定义两个整型变量&#xff1b; 2.执行100次加法运算&#xff1b; 3.打印结果到控制台&#xff1b; 二、好…...

Win11Debloat深度解析:让Windows重获新生的系统优化神器

Win11Debloat深度解析&#xff1a;让Windows重获新生的系统优化神器 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …...

Redis哨兵模式内存缩容

Redis哨兵模式内存缩容检查节点信息从节点内存缩容最大内存配置修改停机缩容缩容后检查主节点内存缩容回退操作检查节点信息 通过哨兵获取集群名和主节点地址&#xff1a; # docker exec -it pod_sentinel_1 redis-cli -p 26379 info sentinel # Sentinel sentinel_masters:…...

GTE中文向量模型实战教程:基于test_uninlu.py扩展支持中文繁体与简体兼容测试

GTE中文向量模型实战教程&#xff1a;基于test_uninlu.py扩展支持中文繁体与简体兼容测试 1. 引言&#xff1a;当GTE模型遇上中文繁简转换 如果你正在使用GTE中文向量模型处理文本&#xff0c;可能会遇到一个不大不小的麻烦&#xff1a;用户输入的文本&#xff0c;有时是简体中…...

NASA Earthdata保姆级教程:手把手教你用矩形框批量下载MODIS和VIIRS遥感数据

NASA Earthdata零基础实战&#xff1a;从注册到批量下载MODIS/VIIRS遥感数据的完整指南 第一次接触NASA Earthdata网站时&#xff0c;面对满屏的专业术语和复杂操作界面&#xff0c;大多数科研新手都会感到手足无措。作为全球最大的对地观测数据平台之一&#xff0c;Earthdata…...

Fourier Neural Operator (FNO) 在偏微分方程求解中的核心思想与应用

1. 从传统方法到FNO&#xff1a;偏微分方程求解的进化之路 偏微分方程&#xff08;PDE&#xff09;在工程和科学领域无处不在&#xff0c;从天气预报到飞机设计&#xff0c;从量子力学到金融衍生品定价。传统数值解法如有限差分法&#xff08;FDM&#xff09;和有限元法&#x…...

UE5 DynamicMesh实战:从高度图到程序化模型生成

1. 初识UE5 DynamicMesh组件 DynamicMesh是虚幻引擎5引入的一种革命性网格组件&#xff0c;它彻底改变了传统静态网格的工作流程。我第一次接触这个功能时&#xff0c;简直像发现了新大陆——原来在编辑器里就能直接修改网格结构&#xff0c;不用反复导出导入模型文件了。 与传…...

计算机毕设源码到底包含什么?一文搞懂标准交付物结构

一、为什么你的毕设源码总被导师打回&#xff1f; 每年毕业季&#xff0c;无数计算机专业学生都会遇到这样的场景&#xff1a;“导师看了一眼你的毕设源码&#xff0c;眉头一皱&#xff1a;‘这交付的什么&#xff1f;数据库脚本呢&#xff1f;接口文档呢&#xff1f;怎么连部署…...

避坑指南:用Docker部署Oracle 11g时你一定会遇到的5个权限问题(附终极解决方案)

避坑指南&#xff1a;用Docker部署Oracle 11g时你一定会遇到的5个权限问题&#xff08;附终极解决方案&#xff09; 在容器化技术席卷全球的今天&#xff0c;Docker已成为部署数据库的首选工具之一。然而&#xff0c;当我们将Oracle 11g这样的传统数据库巨人塞进轻量级容器时&a…...

5步打造Xbox 360游戏PC运行环境:Xenia Canary模拟器全攻略

5步打造Xbox 360游戏PC运行环境&#xff1a;Xenia Canary模拟器全攻略 【免费下载链接】xenia-canary Xbox 360 Emulator Research Project 项目地址: https://gitcode.com/gh_mirrors/xe/xenia-canary Xenia Canary作为领先的Xbox 360开源模拟器&#xff0c;通过精准的…...

League Director:开源英雄联盟录像编辑工具,释放你的游戏视频创作潜能

League Director&#xff1a;开源英雄联盟录像编辑工具&#xff0c;释放你的游戏视频创作潜能 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/l…...