2025年渗透测试面试题总结-06(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。

目录

逻辑漏洞

一、三大高危业务逻辑漏洞及修复方案

1. 订单金额篡改(参数操纵)

2. 重复操作滥用(资源耗尽)

3. 业务流程绕过(顺序校验缺失)

二、越权访问的三大类型深度对比

三、越权自动化检测技术栈

1. 静态代码分析(SAST)

2. 动态渗透测试(DAST)

3. 智能模糊测试(IAST)

四、防御体系设计原则

逻辑漏洞

说出至少三种业务逻辑漏洞,以及修复方式?
越权访问(水平/垂直/未授权)
谈谈水平/垂直/未授权越权访问的区别?
越权问题如何自动化检测?

一、三大高危业务逻辑漏洞及修复方案

1. 订单金额篡改(参数操纵)
  • 漏洞场景
    前端校验订单金额,攻击者抓包修改price=0.01支付购买高价商品
  • 修复方案
    java// 服务端重新计算金额(不可信前端数据) BigDecimal realPrice = productService.getPrice(request.getProductId()); if (realPrice.compareTo(request.getPaidPrice()) != 0) { throw new IllegalOrderException("金额被篡改"); }
2. 重复操作滥用(资源耗尽)
  • 漏洞场景
    无防重放机制时,攻击者重复提交优惠券领取请求清库存
  • 修复方案
    sql-- 数据库层防重(MySQL示例) ALTER TABLE coupons ADD UNIQUE KEY uk_user_coupon (user_id, coupon_type);
    业务层加分布式锁:
    javaif (redis.setnx("lock:coupon:"+userId, 1, 30, SECONDS)) { try { grantCoupon(userId); } finally { redis.del(key); } }
3. 业务流程绕过(顺序校验缺失)
  • 漏洞场景
    跳过短信验证步骤直接访问/confirmOrder接口完成交易
  • 修复方案
    java// 使用状态机校验流程完整性 OrderState currentState = order.getState(); if (currentState != OrderState.SMS_VERIFIED) { throw new IllegalStateException("请先完成短信验证"); }

二、越权访问的三大类型深度对比

类型本质差异典型案例防御核心
水平越权同角色访问他人数据修改/getOrder?orderId=123遍历他人订单资源归属校验:order.getUserId() == currentUser
垂直越权低权限用户执行高权限操作普通用户访问/admin/deleteUser接口角色权限树校验:RBAC.hasPermission(role, "user:delete")
未授权访问完全跳过认证环节直接访问内部API无需登录拦截器全局认证:@Interceptor(LoginCheck.class)

自动化检测方案

  1. 动态流量标记检测(Burp Suite + AuthZ插件)
    • 用不同账号(普通用户/管理员)抓取相同请求
    • 对比响应差异(如200状态码或敏感数据泄露)
  2. API扫描脚本(Python示例)
    pythondef check_unauthorized(url): resp = requests.get(url, cookies={"session": "attacker_session"}) if resp.status_code == 200 and "admin_dashboard" in resp.text: report_vulnerability(f"垂直越权: {url}")
  3. 自动化渗透工具链
    OWASP ZAP → 配置越权检测策略 → 生成风险报告

三、越权自动化检测技术栈

1. 静态代码分析(SAST)
mermaidgraph LR A[扫描代码] --> B{检测危险模式} B -->|发现| C[未校验用户权限的Controller] B -->|发现| D[SQL查询直接拼接用户输入] C --> E[标记漏洞位置] D --> E
  • 工具:SonarQube + FindSecBugs规则集
  • 规则示例:检测@PreAuthorize注解缺失
2. 动态渗透测试(DAST)
  • 工作流
    爬取所有API → 替换Cookie/Token → 重放请求 → 分析响应
  • 关键指标
    • 相同请求不同账号的响应相似度(余弦算法)
    • 未授权接口的HTTP状态码分布
3. 智能模糊测试(IAST)
  • 插桩技术:在Java Agent中注入权限校验探针
    javapublic void checkPermission(Method method) { if (!method.isAnnotationPresent(RequiresRole.class)) { SecurityLogger.warn(" 未授权方法: " + method.getName()); } }

四、防御体系设计原则

  1. 权限校验黄金法则
    • 所有请求默认拒绝,显式声明所需权限
    • 资源操作必校验数据归属权(非仅角色)
  2. 三层防御架构
    mermaidgraph TB A[网关层] -->|强制认证| B[业务层] B -->|RBAC模型| C[数据层] C -->|Owner字段校验| D[(数据库)]
  3. 安全编码规范
    • 使用声明式鉴权(如Spring Security @PreAuthorize("hasRole('ADMIN')")
    • 禁止前端传递用户ID(从Session获取)

漏洞修复成本对比

  • 设计阶段引入权限框架:0.5人日
  • 上线后修复越权漏洞:平均12人日/漏洞(含回归测试)
    据NIST统计,业务逻辑漏洞占高危漏洞的31%,其中越权类占比68%,早期防控至关重要。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot激活指定profile的方式

题目详细答案在 Spring Boot 中,可以通过多种方式激活指定的 Profile,以便在不同的环境中使用不同的配置。在application.properties文件中激活可以在默认的application.properties文件中通过spring.profiles.active属性激活某个 Profile。# application…

Pytest项目_day10(接口的参数传递)

接口的参数传递 如果我们需要在一个测试用例中使用另一个测试用例中获得的数据,应该怎么办? 解决方案一:使用函数返回值 - 我们可以在另一个测试用例中使用return来返回所需的数据,并在其他的测试用例中调用该测试用例&#xff08…

深信服GO面试题及参考答案(上)

Go 和 Java 的特点和区别是什么? Go 和 Java 都是静态类型、编译型语言,但在设计理念、语法特性、并发模型等方面存在显著差异,具体如下: 从语言设计目标来看,Go 由 Google 开发,旨在解决大型系统开发中的复杂性,强调“简单、高效、并发”,语法简洁,摒弃了许多传统面向…

BGP笔记及综合实验

BGP基础一、BGP产生背景 - BGP定义:边界网关协议(BGP)是自治系统间的动态路由协议,属于外部网关协议(EGP)。 - 自治系统(AS):由统一管理、运行同一IGP协议的路由器组成&a…

全栈:如何判断自己应该下载哪个版本的Tomcat

版本兼容性矩阵 https://tomcat.apache.org/whichversion.html https://tomcat.apache.org/download-11.cgi 介绍一下这些版本的不同点: 一、按系统选(优先看这个) 1.Windows 系统(普通使用,非服务自启&#xff09…

Redis的Linux安装

可以直接命令下载 wget http://download.redis.io/releases/redis-5.0.4.tar.gz下载好之后解压缩,并且重命名为redis 由于redis是c语言编写的,所以我们需要先安装gcc,安装的命令如下:yum -y install gcc 安装成功后输入 : gcc -v…

14-netty基础-手写rpc-提供方(服务端)-06

netty系列文章: 01-netty基础-socket02-netty基础-java四种IO模型03-netty基础-多路复用select、poll、epoll04-netty基础-Reactor三种模型05-netty基础-ByteBuf数据结构06-netty基础-编码解码07-netty基础-自定义编解码器08-netty基础-自定义序列化和反序列化09-n…

连续时间和数字之间频率的偏差以及相位补偿

接下来需要讲解在连续时间域下的角频率以及在离散化后的数字角频率。上面可以知道模拟角频率和数字的区别 接下来介绍相位 相位单位是弧度无频偏: 对于数字来说是对连续信号采样后的结果,数字的角频率 ,就是相位的递增量,表示每个…

《Git从入门到精通:告别版本管理混乱》

坚持用 清晰易懂的图解 代码语言,让每个知识点变得简单! 🚀呆头个人主页详情 🌱 呆头个人Gitee代码仓库 📌 呆头详细专栏系列 座右铭: “不患无位,患所以立。” 《Git从入门到精通&#xff1a…

小红书开源多模态视觉语言模型DOTS-VLM1

项目简介与模型基本介绍 DOTS-VLM1 是由小红书希实验室(Rednote HiLab)开源的多模态视觉语言模型(Vision-Language Model, VLM),旨在推动视觉与语言理解的融合研究。DOTS-VLM1 采用主流的编码-融合-解码架构,支持图片与文本的联合理解与生成,适用于图文问答、图片描述、…

【Git】企业级使用

🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 基本概念 Git 有三个核心区域,分别是工作区、暂存区和版本库,理解这三个区域是掌握 Git 的基础。​ ​ 工作区就是我们电脑里能看到的文件目录&…

Druid学习笔记 02、快速使用Druid的SqlParser解析

文章目录前言本章节源码描述认识作者官方文档快速入门demo案例引入依赖获取到SQL的AST(抽象语法树)使用visitor完成表、字段、表达式解析汇总总结一、简介1.1、和Antlr生成Parser的区别1.2、Druid SQL Parser的使用场景二、各种语法支持三、性能四、Druid SQL Parser的代码结构…

时间复杂度计算(以for循环为例)

本文理论内容来自严蔚敏版《数据结构(C语言版 第2版)》 *本文仅为复习时的总结,描述不准确、过程不严谨之处,还请理解 一、算法的相关概念 首先复习一下算法的定义及5个重要特性 其次是算法的评价标准 可以看到 时间复杂度 属于算法评价标准中的高效性…

图论(1):图数据结构

目录 一、图的定义 1.1 图的基本概念 1.2 图的分类 (1)按边的方向: (2)按边的权值: (3)按边的数量和类型: (4)按连通性: 1.3 图…

等保测评-Nginx中间件

Nginx *排查有无Nginx中间件,可使用以下命令: ps -ef | grep nginx、netstat -nutlp *确认Nginx中间件有运行,查看其目录: find / -name nginx.conf、ps -ef | grep Nginx *确认好目录后,查看版本: …

Milvus向量数据库版本升级

创建时间:2025-3-11 更新时间:2025-8-8 作者:薄刀刀、散装DBA 联系方式:bulkdba,1511777 背景:当前版本无法使用分组搜索功能,通过升级版本解决,计划将milvus升级到2.4.15&#xf…

若依前后端分离版学习笔记(六)——JWT

在上一节已经提到了传统Session认证和JWT认证内容,这一节对JWT进行更加详细的了解。 一 JWT介绍 1、传统的session认证 1.1 传统session认证流程 1.用户向服务器发送用户名和密码 2.服务器通过验证后,在当前对话(session)中保存相…

如何永久删除三星手机中的照片?

如果你计划出售你的三星 Galaxy 手机,或者整理其接近满容量的存储空间,你可能会担心如何从设备中移除照片和其他文件。这对于确保你的个人信息保持安全至关重要,即使你选择通过各种平台捐赠或出售旧手机也是如此。在本文中,我们介…

【数字图像处理系列笔记】Ch06:图像压缩

一、基础知识信源编码器:减少或消除输入图像中的编码冗余、像素 间冗余以及心理视觉冗余。 数据的冗余 一、空间冗余(Spatial Redundancy)1. 定义图像中相邻像素间的强相关性导致的冗余 —— 同一区域内相邻像素的像素值(如灰度、…

windows线程基础

Windows线程机制详解 线程的基本概念 在Windows操作系统中,线程是程序执行的最小单位。每个进程至少包含一个线程(主线程),但可以创建多个线程来并行执行任务。线程与进程的主要区别在于: 资源分配:进程拥有…