关于漏洞"这个页面包含一个错误/警告信息,可能会导致敏感信息泄露"

2023-11-10

公司开发的产品.在用软件扫描漏洞时,扫出了这么一个漏洞.

可以看出有漏洞的地方是登录页面.在登录中,主要逻辑如下: 一些拒绝登录是通过抛异常->然后捕获异常->获取异常信息->跳回到登录页面并展示错误信息. 下面为代码示例

@RequstMapping("login")
public String login(LoginForm loginForm){
    try{
        myService.doLogin(loginForm);
    }catch(Exception e){
        request.setAttribute("errorMessage", e.getMessage());//把错误信息提示给用户
        return "login";
    }
    return "index";//成功登录进入主页
}

public void doLogin(LoginForm loginForm)){
    if(...){
        throw new BusiException("账号被挂起,暂不能登录。");
    }
    if(...){
        throw new BusiException("账号或密码错误");
    }
     
}

感觉异常都可以被正常捕获, 并把错误信息正常提示给用户.

找了很久都不知道是哪里出问题, 看了扫描报告的解决方案: 使用通用页面, 屏蔽掉具体的错误信息. 就开始考虑是不是有的异常没处理好, 导致把异常的英文内容直接返回到页面去了.

最后在看代码的时候发现, 登录的时候涉及到内容的加密和解密. 如果登录时用非常规手段传了一串非法的字符串进行登录.在解密的时候可能会出现一些异常,如索引越界,这样就会把异常的英文内容直接提示给页面了. 以下为解密的代码.

private static byte[] decrypt(byte[] byteArray) {
        try {
            Provider provider = new org.bouncycastle.jce.provider.BouncyCastleProvider();
            Security.addProvider(provider);
            //Cipher: 提供加密和解密功能的实例
            //transformation: "algorithm/mode/padding"
            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", provider);
            PrivateKey privateKey = keyPair.getPrivate();
            //初始化
            cipher.init(Cipher.DECRYPT_MODE, privateKey);
            byte[] plainText = cipher.doFinal(byteArray);
            return plainText;
        } catch(Exception e) {
            throw new MyDecryptException(e); //解密中发生的其他异常,此处没处理,直接抛到上一层
        }
    }

故在登录接口中处理异常的时候, 要根据不同的异常进行处理. 业务的异常, 如密码错误,账户冻结等, 就按业务异常提示.其他意外的错误, 则统一给提示语, 屏蔽掉异常的英文内容

@RequstMapping("login")
public String login(LoginForm loginForm){
    try{
        myService.doLogin(loginForm);
    }catch(BusiException e){
        //业务异常
        request.setAttribute("errorMessage", e.getMessage());//把错误信息提示给用户
        return "login";
    }catch(Exception e){
        //其他的意外异常
        request.setAttribute("errorMessage", "你是sb吗,乱来?");
        return "login";
    }
    return "index";//成功登录进入主页
}

当然这里也可以改解密方法decrypt(), 捕获异常后给个提示语再抛到上一层, 但是由于在这个应用中decrypt()方法是一个通用方法, 直接抛异常也方便开发在调用这个方法的时候做排查. 估这里选择改Controller中对异常的处理方式

处理后,再次扫描,通过了.

另外,对于这种异常处理, 最好做AOP统一处理, 如ControllerAdvice.

本文到此结束

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于漏洞"这个页面包含一个错误/警告信息,可能会导致敏感信息泄露" 的相关文章

  • Atlassian Confluence 远程代码执行漏洞(CVE-2022-26134)漏洞复现

    目录 免责声明 Atlassian Confluence 远程代码执行漏洞 CVE 2022 26134 漏洞复现 漏洞概述 影响版本 漏洞复现 利用POC 利用过程 修复建议 参考 免责声明 本文章仅供学习和研究使用 严禁使用该文章内容对
  • sqlilabs(SQL注入)小白通基础通关笔记(专针对小白)(第六关Less-6)

  • 复现ThinkPHP5 5.0.23远程代码执行漏洞

    访问 index php s captcha页面 会出现如下报错 执行whoami 查看当前目录 method construct filter system method get server REQUEST METHOD pwd 写入一
  • typecho反序列化漏洞复现

    typecho框架存在反序列化漏洞 利用此漏洞可执行任意代码 环境搭建 第一步 第二步 第三步 第三步 第四步 第五步 第六步 第七步 第八步 第九步 漏洞分析 typecho build install php 文件中 使用unseria
  • sqli-labs-less-12 PODT传参+有回显信息(图文详解)

    Less 12 post传递参数 由于是post传参 我们先用burp suite抓包 分析报文体 获取传参过程 得到报文体之后使用hackbar插件中的post data进行注入实验 判断闭合方式 uname or 1 1 passwd
  • Web安全之中间件安全

    中间件 中间件 英语 Middleware 又译中间件 中介层 是一类提供系统软件和应用软件之间连接 便于软件各部件之间的沟通的软件 应用软件可以借助中间件在不同的技术架构之间共享信息与资源 中间件位于客户机服务器的操作系统之上 管理着计算
  • 如何从0到1做一次完整的安全测试

    大家好 我是馨馨 一个混过大厂 待过创业公司 有着6年工作经验的软件测试妹纸一枚 近期针对公司项目做了一次完整的安全测试 扫描出来了不少漏洞 价值还挺大的 回顾整个流程 并没有特别复杂的点 小林星球这里程序员还挺多 想着分享下我的实战感悟
  • 常见中间件漏洞复现

    目录 Tomcat 1 Tomcat 文件上传 CVE 2017 12615 2 Tomcat 代码执行 CVE 2020 1938 3 Tomcat弱口令登录获取后台 Weblogic 4 Weblogic反序列化漏洞获取服务器权限 CV
  • SyntaxError: unexpected EOF while parsing

    报错在eval 函数 正确代码段 with open COCO train json r as f data f readline data data strip split del data 0 del data 1 for i in d
  • 异常处理--java.lang.reflect.MalformedParameterizedTypeException

    异常信息 org springframework beans factory BeanCreationException Error creating bean with name sqlSessionFactory defined in
  • DVWA XSS总结

    笔者对该靶场所需的相关知识进行了总结 拓展 供大家学习参考 XSS 漏洞学习 DVWA XSS Reflected low 未进行过滤 构造payload medium 过滤规则 把 lt script gt 用str replace 函数
  • 第一次护网HW心得

    以下内容为本人参加第一次护网HW的心得 纯属个人体会 大家看着玩就好 文章目录 背景 实战理解 背景 我开始接触实战 是从某省的第五届网络空间安全竞赛开始的 我参加过第四届比赛 是标准的CTF形式 初赛线上做题 决赛线下AWD攻防 但第五届
  • scanner中InputMisMatchException处理

    我们知道在使用scanner进行控制台输入时候 使用next 方法输出 但是这种方法存在弊端 比如你使用nextInt 方法 但是输入一个字符串类型 就会抛出InputMisMatchException异常 首先来看一下scanner在jd
  • Sqli-Labs Less1-16关详细讲解

    Sqli Labs Less1 16关详细讲解 一 首先介绍一下这个重要的数据库 information schema数据库 二 Sqli Labs靶场 Get传输方式 Less 1 Union Select注入 闭合符 Less 5 报错
  • SpringMVC异常处理

    为了统一处理代码运行过程中出现的异常 给用户一个更友好的异常界面 需要引入springMVC的异常处理功能 为了演示这个功能 本文实现一个比较常用的需求 将所有的异常归为两类 一类是程序员自己创建的异常类 另一类是系统或框架定义的异常类 程
  • Web服务器漏洞小结(中间件)

    IIS IIS是Windows Server中自带的一个Web服务器 IIS出现的漏洞 一 IIS目录解析漏洞 test asp 1 jpg IIS5 x 6 0 以 asp asa cer cdx 命名的文件夹 其目录内的任何扩展名的文件
  • Thread.UncaughtExceptionHandler

    1 自定义Application继承Application 在清单文件中将默认的Application的android name 替换成自定义的Application对象名称即可 在Oncreate中写入要实现的内容 2 在编写APK程序时
  • Atlassian Confluence 远程代码执行漏洞(CVE-2022-26134)复现

    Confluence介绍 Confluence是一个专业的企业知识管理与协同软件 也可以用于构建企业wiki 使用简单 但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息 文档协作 集体讨论 信息推送 漏洞概述 Atlassian C
  • 自定义全局异常

    1 自定义响应结果码 接口 public interface ResultCode 操作是否成功 true为成功 false操作失败 boolean success 操作代码 int code 提示信息 String message 2 自
  • 命令注入漏洞(1)

    命令注入漏洞原理 其实命令注入漏洞也叫命令行注入漏洞 此漏洞是指web应用程序中调用了系统可执行命令的函数 而且输入的参数是可控的 如果黑客拼接了注入命令 就可以进行非法操作了 靶机搭建 链接 https pan baidu com s 1

随机推荐

  • 华为OD机试 - 斗地主之顺子(Java)

    题目描述 在斗地主扑克牌游戏中 扑克牌由小到大的顺序为 3 4 5 6 7 8 9 10 J Q K A 2 玩家可以出的扑克牌阵型有 单张 对子 顺子 飞机 炸弹等 其中顺子的出牌规则为 由至少5张由小到大连续递增的扑克牌组成 且不能包含
  • 每日一道面试题之介绍一下4+1视图模型!

    4 1视图模型是一种用于软件系统设计和开发的模型 它由4个逻辑视图和一个场景视图组成 每个视图都关注系统的不同方面 为的就是尽可能实现一个全面的系统设计 逻辑视图 描述了软件系统的功能和业务逻辑 它包括了系统的结构和组件之间的关系 以及它们
  • 二叉树的中序遍历(C语言)

    我们从两个方向讲解二叉树的中序遍历 递归 迭代 一 递归 思想 从根节点开始向其的左孩子遍历 一直访问每个节点的左孩子 当其走到NULL时返回 返回时记录每个节点的数值 然后访问该节点的右孩子 如果为NULL直接返回上一层 如果不为NULL
  • Twins: Revisiting the Design of Spatial Attention inVision Transformers解读

    文章 https arxiv org abs 2104 13840 代码 GitHub Meituan AutoML Twins Two simple and effective designs of vision transformer
  • Protobuf Java (2)

    接上一篇文章 Protobuf Java 1 接下来写一个demo 使用protobuf 读写消息 目录 1 写消息 2 读一个消息 3 扩展Protocol Buffer 1 写消息 现在让我们尝试使用协议缓冲区类 您希望地址簿应用程序能
  • CentOS7主机名的查看和修改

    CentOS7主机名的查看和修改 在CentOS7中 有三种定义的主机名 静态的 Static hostname 静态 主机名也称为内核主机名 是系统在启动时从 etc hostname自动初始化的主机名 瞬态的 Tansient host
  • Ping 命令

    PING Packet Internet Groper 因特网包探索器 Ping命令是Windows系列自带的一个可执行命令 利用它可以检查网络是否能够连通 并且能够帮助我们分析判定网络故障 ping的发送和接收 同一个子网中的源主机对目的
  • html ui组件,UI组件

    Bootstrap 天然响应式 12分栏 cnpm install bootstrap 安装相关包 在index html中引入文件后才可以用 如下 ElementUI 24分栏 elementUI使用 安装 element ui cnpm
  • Django 启动报错 mysqlclient 1.4.0 or newer is required; you have 0.9.3

    报错原因 MySQLclient 目前只支持到 Python3 4 这里使用了更高版本的 python 那么需要 我们在Django 配置文件目录下 也就是setting py 同级目录下 配置指定版本的mysqlclient pymysq
  • Flowable工作流引擎的使用2(BPMN结构及节点介绍)

    Flowable工作流引擎的使用 2BPMN结构介绍 上一篇讲到了flowable如何使用 用了一个简单的demo 演示了一下流程的创建 发起 审核 查询等功能 内容不多但是引申出很多的概念 BPMN deployId processId
  • 数据分析笔记—数据仓库篇

    数据仓库 数据仓库 Data Warehouse 可简写为DW或DWH 数仓等 它仅适用于查询和分析 通常涉及大量的历史数据 数据仓库中的数据一般来自应用日志文件 数据埋点 和事务应用 实际发生的业务记录的数据 等广泛来源 一个数据仓库通常
  • yolo 推理 nms

    测试代码 另外一个说明cv2绘制不了中文 但可以用其他包实现 from pathlib import Path import cv2 import torch from models common import DetectMultiBac
  • 数组新增的常用方法(es6-es12)-今天一定要学会

    1 forEach 遍历数组中的元素 不改变原数组 2 map 遍历数组 对数组中每个元素做操作并将操作后的元素放到数组中返回 不改变原数组 3 filter 过滤 返回包含所有在回调函数上结果未true的值的新数组 不改变原数组 4 ev
  • 关于CPU的浮点运算能力计算

    原文链接 https www jianshu com p b9d7126b08cc Intel官方参数 https ark intel com FLOAS 核数 单核主频 CPU单个周期浮点计算值
  • 从头开始学Java——JVM虚拟机八问

    文章目录 什么是Java虚拟机 为什么Java被称为 平台无关的编程语言 什么是JIT HotSpot怎么工作的 HotSpot虚拟机要使用解释器与编译器并存的架构 什么是编译时 运行时 编译 运行 编译时运行时问题归纳 反射 描述Java
  • 解决node-sass: Command failed 问题

    从github 下载的vue 源码 yarn 安装报错 爬了下百度 试了好几种方法都没成功 最后ChatGPT帮我解决了 ChatGPT回答 一语命中 好用 node sass 是一个将 Sass 编译为 CSS 的 Node js 模块
  • 关于springboot使用定时器的几种方式

    1 Scheduled注解 Component public class SimpleSchedule private Integer time 0 定时器定义 设置执行时间 Scheduled cron 6 private void pr
  • maven -- 问题解决(二)解决“Could not calculate build plan”问题

    错误提示如下 eclipse maven Could not calculate build plan Failure to transfer org apache maven plugins maven surefire plugin p
  • disabled_button

    直接看题目 然后干他 这里说flag在按钮上 但是我们就是按不了这个flag 那直接看HTML呗 可以看到它这里有个搞鬼的东东 一搜 可以知道这个东西禁止让你输入 你不让我输入 我就给你删了呗 然后我们可以点flag 一点 flag就出来了
  • 关于漏洞"这个页面包含一个错误/警告信息,可能会导致敏感信息泄露"

    公司开发的产品 在用软件扫描漏洞时 扫出了这么一个漏洞 可以看出有漏洞的地方是登录页面 在登录中 主要逻辑如下 一些拒绝登录是通过抛异常 gt 然后捕获异常 gt 获取异常信息 gt 跳回到登录页面并展示错误信息 下面为代码示例 Requs