actuator字符绕过漏洞在Nginx上的配置

最近遇到了安全部门派发的actuator泄漏漏洞,领导希望不暴露到外网上,对于内网需要认证才可以访问。
要想不暴露到外网上,就需要在网络层面做拦截,比如nginx和apisix上做代理配置。

URI字符绕过的风险背景知识:
URI字符绕过是一种安全漏洞,它发生在应用程序没有正确地处理或编码通用资源标识符(URI)中的某些特殊字符时。这些特殊字符可能被用于执行非预期的操作或利用安全漏洞。

跨目录拼接绕过是一种常见的URI字符绕过技术,主要用于绕过某些安全策略。比如https://xxx.com/actuator;/…/
实际上要访问的是https://xxx.com/

Tomcat 服务器处理请求时,如果请求的 URI 包含分号(;),Tomcat 会忽略分号及其后的内容。这是因为分号在 URI 中用于分隔同一资源的不同片段,而在大多数情况下,服务器不会处理这部分内容。
例如,如果有一个请求的 URI 是这样的:http://www.example.com/index.html;parameters
在这个例子中,分号后的 “parameters” 部分不会被 Tomcat 处理。它可能会被客户端浏览器解析,或者是某些特定于服务器的扩展,但是作为一个通用的 Web 服务器,Tomcat 会忽略它, 而只对http://www.example.com/index.html 做处理

%2F是URL编码,用于将某些特殊字符转换为可以在URL中传输的格式。在URL中,某些特殊字符,如空格、斜杠(/)等,不能直接传输,需要通过编码转换为"%加字符的ASCII码"格式。具体到"%2F",这是斜杠"/"的URL编码形式

‌ 举例说明URI字符串绕过代理服务器配置的actuator拦截的原理: https://xxx.com/actuator;%2f…/
被APISIX代理服务器认为是要访问https://xxx.com/, 因而没有走/actuator*的路由,直接分发给了应用服务器。
应用服务器(Tomcat)拿到https://xxx.com/actuator;%2f…/ 的路径,去掉分号后边的内容,
从而按照https://xxx.com/actuator 进行了处理。 由于应用服务器没有对actuator的请求做防护,从而暴露了端点信息

一般的情况都可以应对,就是对于http://xxx/actuator;%2f…/字符绕过这种情况,需要特殊处理。

放开actuator端点的访问

使用springBoot的1.5.8RELEASE版本编写了一个简单的web项目,支持actuator的端点访问

server:port: 9090
management:endpoints:web:exposure:include: health,info,beanscontext-path: /actuator

然后部署到了测试服务器上,带着9090端口可以正常访问/actuator端点
在这里插入图片描述
字符绕过也可以访问/actuator端点
在这里插入图片描述

actuator的访问被nginx拦截

nginx上的配置:

    server {listen      80;server_name 192.168.1.1;location ~*actuator.*{# 你可以根据需要修改这里的返回码和响应体return 403 "Actuator endpoints are not accessible directly through this server.";}location / {if ($request_uri ~* 'actuator'){return 403 "not allowed actuator";}proxy_pass http://192.168.1.1:9090; # 代理到本地9090端口的服务proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}

用80端口访问(即走Nginx代理),被nginx拦截:
在这里插入图片描述

字符绕过也会被nginx拦截

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1534240.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Day97 代码随想录打卡|动态规划篇--- 整数拆分

题目(leecode T343): 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 方法: 本题感觉属于有些难度的动态…

【智能流体力学】数值模拟中的稳态和瞬态

在流体力学和数值模拟中, 稳态 (Steady State)意味着流体的物理量(如速度、压力、温度等)不随时间变化。换句话说,在稳态模拟中,系统已经达到了平衡,任何位置上的流场特性都不再随时间发生变化。 其他教程参考:https://doc.cfd.direct/openfoam/user-guide-v12/index…

使用Visual Studio Code配置C/C++开发环境的全面指南

目录 引言 一、准备工作 1. 安装Visual Studio Code 2. 安装C/C编译器 3. 配置环境变量(仅Windows用户) 二、在VS Code中安装C/C扩展 三、创建您的第一个C/C项目 1. 创建项目文件夹 2. 打开项目文件夹 3. 创建源文件 四、配置任务(…

Leetcode3276. 选择矩阵中单元格的最大得分

Every day a Leetcode 题目来源:3276. 选择矩阵中单元格的最大得分 解法1:回溯 每一行最多选1个数字,如果要选,就要保证前面没有选择过该数字,然后将得分累加,传入下一次递归,如果不选&#…

LeetCode题练习与总结:翻转二叉树--226

一、题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出:[2,3,1…

QT学习——知识篇

一、qt的ui界面是什么 Qt的UI界面通常指的是使用Qt框架开发的用户界面。Qt是一个跨平台的C图形用户界面库,它提供了丰富的控件和布局,以及用于处理事件和用户交互的机制。在Qt中,UI界面通常是通过Qt Designer工具设计的,然后转换成…

<<编码>> 第 11 章 逻辑门电路(Gates)--猫咪选择电路 示例电路

使用门电路的猫咪选择电路 info::操作说明 鼠标单击开关切换开合状态 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/code-hlchs-examples/assets/circuit/code-hlchs-ch11-16-cat-circuit-with-gate.txt 集成的猫咪选择电路 in…

基于51单片机的台灯控制(Proteus仿真)

基于51单片机的台灯控制系统以AT89C51为主控,使用LCD1602作为系统主控,借助ADC0832进行ADC转换,获取光敏传感器的值,灯光颜色共有三种,分别是红绿蓝,系统有两种控制方式,一种是蓝牙控制&#xf…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第二集:通过InControl插件实现绑定玩家输入以及制作小骑士移动空闲动画

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、通过InControl插件实现绑定玩家输入二、制作小骑士移动和空闲动画 1.制作动画2.玩家移动和翻转图像3.状态机思想实现动画切换总结 前言 好久没来CSDN看看&…

HBase在大数据实时处理中的角色

HBase是一个分布式的、面向列的开源NoSQL数据库,它建立在Hadoop的HDFS之上,被设计用于处理大规模数据集。HBase非常适合于需要随机实时读写访问的应用程序,例如大数据分析、数据仓库和实时数据处理等场景。本文将探讨HBase是如何进行大数据实…

虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天(中)

虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天-CSDN博客 上篇偏重实现步骤,中篇偏重校准和降低延迟,下篇优化上下文和口音 TTS通用参数 ——————————————————————————————————————————— 以…

传统Malmquist-Luenberger指数与全局Malmquist-Luenberger指数的区别

1.全局技术前沿的构建 1.1传统ML指数 技术前沿的时间依赖性 传统的Malmquist-Luenberger(ML)指数在每个时期(例如年份)单独构建各自的技术前沿。这意味着每个时期的生产可能性集合和技术效率都是基于该时期的数据。 不可比性问…

基于SpringBoot+Vue+MySQL的IT技术交流和分享平台

系统展示 用户前台界面 管理员后台界面 系统背景 在数字化转型的浪潮中,构建一个基于SpringBoot、Vue.js与MySQL的IT技术交流与分享平台显得尤为重要。该平台旨在汇聚广大IT从业者、开发者及爱好者,提供一个高效、便捷的线上空间,用于分享最新…

【笔记】1.2 弹性变形

文章目录 一、弹性变形及实质二、胡克定律1. 单向拉伸2. 剪切和扭转3. E、G和v的关系 三、弹性模量弹性模量的影响因素第二相铸铁石墨形态塑性变形温度影响不明显 四、弹性比功弹性比功表示 五、滞弹性弹性体纯弹性体实际弹性体 主要特征和机制延迟反应内部结构影响因素 弹性滞…

性能测试【Locust】基本使用介绍

一.前言 Locust是一款易于使用的分布式负载测试工具,基于事件驱动,使用轻量级执行单元(如协程)来实现高并发。 二.基本使用 以下是Locust性能测试使用的一个基础Demo示例,该示例有安装Locust、编写测试脚本、启动测…

王者荣耀改重复名(java源码)

王者荣耀改重复名 项目简介 “王者荣耀改重复名”是一个基于 Spring Boot 的应用程序,用于生成王者荣耀游戏中的唯一名称。通过简单的接口和前端页面,用户可以输入旧名称并获得一个新的、不重复的名称。 功能特点 生成新名称:提供一个接口…

【南方科技大学】CS315 Computer Security 【Lab2 Buffer Overflow】

目录 引言软件要求启动虚拟机环境设置禁用地址空间布局随机化(ASLR)设置编译器标志以禁用安全功能 概述BOF.ctestShellCode.ccreateBadfile.c 开始利用漏洞在堆栈上查找返回地址 实验2的作业 之前有写过一个 博客,大家可以先看看栈溢出基础。…

redis的基础数据结构-list列表

文章目录 1. redis的list数据结构1.1. list结构的特性1.2. 常用命令 2. 常见业务场景2.1 消息队列案例讲解背景优势解决方案代码实现 2.2 排行榜案例讲解背景优势解决方案代码实现 3. 注意事项: 1. redis的list数据结构 参考链接:https://mp.weixin.qq.…

Java面试篇基础部分-Java创建线程详解

导语   多线程的方式能够在操作系统的多核配置上更好的利用服务器的多个CPU的资源,这样的操作可以使得程序运行起来更加高效。Java中多线程机制提供了在一个进程内并发去执行多个线程,并且每个线程都并行的去执行属于线程处理的自己的任务,这样可以提高程序的执行效率,让…

【算法】-单调队列

目录 什么是单调队列 区域内最大值 区域内最小值 什么是单调队列 说到单调队列,其实就是一个双端队列, 顾名思义,单调队列的重点分为「单调」和「队列」。「单调」指的是元素的「规律」——递增(或递减)。「队列」指…