绿盟二面面试题

5000篇网安资料库https://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247486065&idx=2&sn=b30ade8200e842743339d428f414475e&chksm=c0e4732df793fa3bf39a6eab17cc0ed0fca5f0e4c979ce64bd112762def9ee7cf0112a7e76af&scene=21#wechat_redirect

1. 原理深度:Java反序列化漏洞的底层机制是什么?为什么反序列化可能导致RCE?

参考答案

  • 机制:Java反序列化通过ObjectInputStream将二进制数据还原为对象。若攻击者控制输入,可构造恶意对象,在反序列化时触发危险操作(如动态代理、反射调用)。

  • RCE成因
    1. Gadget链:利用类库中多个可串联的类(如InvokerTransformerTemplatesImpl),通过链式调用执行任意代码。

    2. 动态加载:某些类(如URLClassLoader)允许加载远程代码,结合反序列化触发类初始化逻辑。

    3. 反射调用:利用Method.invoke()Runtime.exec()等实现命令执行。

  • 关键点:反序列化过程中未对输入数据进行校验,导致恶意类的readObject()readExternal()方法被触发。

2. 框架漏洞:Apache Commons Collections如何被用于构造反序列化利用链?请描述具体类和方法的作用。

参考答案

  • 核心类
    • InvokerTransformer:通过反射调用任意方法,如Runtime.getRuntime().exec("cmd")

    • ChainedTransformer:将多个Transformer串联,形成链式调用。

    • ConstantTransformer:返回固定值,用于传递恶意对象。

    • TransformedMap/LazyMap:在Map操作时触发Transformer链。

  • 利用链构造
    1. 构造ChainedTransformer链,串联反射调用Runtime.exec()

    2. 通过TransformedMap.decorate()包装Map,使Map的put()get()操作触发Transformer链。

    3. 利用AnnotationInvocationHandlerreadObject()反序列化入口,触发Map操作。

  • 示例Payload
    Transformer[] transformers = new Transformer[]{new ConstantTransformer(Runtime.class),new InvokerTransformer("getMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}),new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, null}),new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc.exe"})
    };
    ChainedTransformer chain = new ChainedTransformer(transformers);
    

3. 防御机制:如何有效防御Java反序列化漏洞?对比黑名单与白名单方案的优缺点。

参考答案

  • 防御手段
    1. 输入验证:禁止反序列化不可信数据。

    2. 白名单:使用ValidatingObjectInputStream(VOIS)仅允许反序列化安全类。

    3. 替换序列化机制:使用JSON(如Jackson)或Protocol Buffers替代Java原生序列化。

    4. JEP 290:JDK9+的过滤器机制,通过模式匹配限制反序列化类。

    5. 安全加固:移除危险类库(如Commons Collections 3.x升级至4+)。

  • 黑名单 vs 白名单
    • 黑名单:拦截已知危险类(如InvokerTransformer),但易被绕过(新增Gadget或组合类)。

    • 白名单:仅允许已知安全类,安全性更高,但维护成本较大(需覆盖业务所有合法类)。

4. 框架案例:Fastjson反序列化漏洞的原理是什么?如何利用TemplatesImpl类实现RCE?

参考答案

  • 漏洞原理:Fastjson的autoType功能允许反序列化时指定任意类。攻击者可构造恶意JSON,触发目标类的setter/getter或构造函数中的危险操作。

  • TemplatesImpl利用
    1. 构造恶意类:生成一个继承AbstractTranslet的类,在静态代码块或构造函数中插入恶意代码。

    2. Base64编码:将类字节码Base64编码后嵌入JSON。

    3. 触发加载:通过@type指定com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl,并设置_bytecodes_outputProperties字段,触发类加载与初始化。

  • Payload示例
    {"@type": "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl","_bytecodes": ["恶意类Base64编码"],"_outputProperties": {}
    }
    

5. 高级绕过:如何绕过反序列化黑名单机制?请举例说明一种非传统的Gadget链构造方法。

参考答案

  • 绕过手段
    1. 利用冷门类库:如使用groovy.util.Expandoorg.apache.xbean等非默认黑名单类构造链。

    2. 动态加载字节码:通过BCEL ClassLoaderClassLoader.defineClass()加载远程字节码。

    3. 二次反序列化:利用Serializable对象内部嵌套另一个反序列化入口点。

  • 示例:BCEL绕过
    String className = "$$BCEL$$..."; // BCEL格式的恶意类字节码
    ClassLoader loader = new ClassLoader() {};
    Class clazz = loader.loadClass(className);
    clazz.newInstance();
    
  • 反射+动态代理:通过Proxy.newProxyInstance()创建代理类,结合InvocationHandler执行命令。

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

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

相关文章

线程安全学习

1 什么是线程 线程是cpu调度的最小单位&#xff0c;在Linux 下 实现线程的方式为轻量级进程&#xff0c;复用进程的结构体&#xff0c;使用clone函数创建 2 线程安全 所谓线程安全&#xff0c;更确切的应该描述为内存安全 #include <stdio.h> #include <pthread.h…

Linux红帽:RHCSA认证知识讲解(十 三)在serverb上破解root密码

Linux红帽&#xff1a;RHCSA认证知识讲解&#xff08;十 三&#xff09;在serverb上破解root密码 前言操作步骤 前言 在红帽 Linux 系统的管理工作中&#xff0c;系统管理员可能会遇到需要重置 root 密码的情况。本文将详细介绍如何通过救援模式进入系统并重新设置 root 密码。…

**Microsoft Certified Professional(MCP)** 认证考试

1. MCP 认证考试概述 MCP&#xff08;Microsoft Certified Professional&#xff09;是微软认证体系中的一项入门级认证&#xff0c;旨在验证考生在微软产品和技术&#xff08;如 Windows Server、Azure、SQL Server、Microsoft 365&#xff09;方面的技能。2020 年&#xff0…

系统性能优化总结与思考-第一部分

1.C代码优化策略总结 编译器方面&#xff1a;用好的编译器并用好编译器&#xff08;支持C11的编译器&#xff0c;IntelC&#xff08;速度最快&#xff09;GNU的C编译器GCC/G&#xff08;非常符合标准&#xff09;&#xff0c;Visual C&#xff08;性能折中&#xff09;&#x…

RCL谐振电压增益曲线

谐振电路如何通过调频实现稳压&#xff1f; 为什么要做谐振&#xff1f; 在谐振状态实现ZVS导通&#xff0c;小电流关断 电压增益GVo/Vin&#xff0c;相当于产出投入比 当ff0时&#xff0c;G1时&#xff0c;输出电压输入电压 当G<1时&#xff0c;输出电压<输入电压 …

Linux进程相关选择题及解析

1. 关于Linux进程创建,以下说法正确的是? A. fork()函数调用后,子进程从父进程的fork()之后开始执行 B. fork()函数返回两次,父进程返回子进程PID,子进程返回0[10][11] C. exec函数族会替换当前进程的代码段,但保留数据段和堆栈 D. wait()函数只能等待直接子进程退出 答…

STM32 HAL DHT11驱动程序

DHT11驱动程序会占用TIM3定时器&#xff0c;进行高精度延时。程序共包含4个文件 DHT11.c DHT11.h delay.c delay.h DHT11.c #include "stm32f1xx_hal.h" #include "dht11.h" #include "delay.h" // 添加延时头文件 #define DHT_PORT GPIOB…

网页防篡改与盗链防护:实时监控与自动化修复实践

摘要&#xff1a;针对网页内容篡改与盗链问题&#xff0c;本文基于群联AI云防护系统&#xff0c;详解如何通过哈希校验、实时监控与CDN联动实现秒级修复&#xff0c;并提供Python与AWS S3集成代码。 一、网页安全的核心需求 防篡改&#xff1a;保障页面内容完整性&#xff0c;…

【4】k8s集群管理系列--harbor镜像仓库本地化搭建

一、harbor基本概念 ‌Harbor是一个由VMware开源的企业级Docker镜像仓库解决方案‌&#xff0c;旨在解决企业在容器化应用部署中的痛点&#xff0c;提供镜像存储、管理、安全和分发的全生命周期管理‌。Harbor扩展了Docker Registry&#xff0c;增加了企业级功能&#xff0c;如…

Docker 安装 Elasticsearch 8.x

Docker 安装 Elasticsearch 8.x 前言一、准备工作二、设置容器的目录结构三、启动一个临时的容器来复制配置文件四、复制配置文件到本地目录五、删除临时容器六、创建并运行容器&#xff0c;挂载本地目录七、修改文件配置监听端口八、端口配置&#xff1a;Host 网络模式 vs Por…

C#: 用Libreoffice实现Word文件转PDF

现实场景中要实现Word格式转PDF格式还是比较常见的。 如果要用开源的组件&#xff0c;只有用Libreoffice了。 一、下载安装Libreoffice 先进入如下链接&#xff0c;找到最新版本和匹配的操作系统来安装。 官网试过&#xff0c;下载是能下载&#xff0c;但安装了用不了&…

MoogDB数据库日常维护技巧与常见问题解析

在当今的数据驱动世界中&#xff0c;数据库作为信息存储与管理的核心组件&#xff0c;扮演着举足轻重的角色。MoogDB作为一款高性能、易扩展的数据库解决方案&#xff0c;越来越受到开发者和企业的青睐。为了确保MoogDB的稳定性与高性能&#xff0c;定期的日常维护及对常见问题…

JAVA多线程的几种实现方式

‌1. 继承 Thread 类‌ ‌原理‌&#xff1a;通过继承 Thread 类并重写 run() 方法定义线程任务&#xff0c;调用 start() 启动线程‌。‌代码示例‌&#xff1a; public class MyThread extends Thread {Overridepublic void run() {System.out.println("线程 " g…

爬虫(基本知识介绍,urllib库的说明)

爬虫 爬虫基础&#xff08;一些基本原理的梳理&#xff09; scheme://[username:password]hostname[:port][/path][;parameters][?query][#fragment] 注&#xff1a; parameters 和 query 混用&#xff0c;并且现在 query 用的多 ?query 查询 &#xff0c;用来查询某类资源…

探秘串口服务器厂家:背后的故事与应用

在科技飞速发展的今天&#xff0c;串口服务器作为连接串口设备与网络的桥梁&#xff0c;在工业自动化、智能交通、智能家居等众多领域发挥着关键作用。你是否好奇&#xff0c;那些生产串口服务器的厂家究竟有着怎样的故事&#xff1f;它们的产品背后又蕴含着怎样的原理呢&#…

工厂能耗系统智能化解决方案 —— 安科瑞企业能源管控平台

安科瑞顾强 政策背景与“双碳”战略驱动 2025年《政府工作报告》明确提出“单位国内生产总值能耗降低3%左右”的目标&#xff0c;要求通过产业结构升级&#xff08;如高耗能行业技术革新或转型&#xff09;、能源结构优化&#xff08;提高非化石能源占比&#xff09;及数字化…

BI面向模型开发和面向报表开发,有什么区别?

在数字化时代&#xff0c;商业智能&#xff08;BI&#xff09;已成为企业决策不可或缺的工具。BI项目实施时&#xff0c;通常有两种开发模式&#xff1a;面向模型开发和面向报表开发。虽然两者都旨在通过数据驱动决策&#xff0c;但在开发逻辑、目标价值和技术路径上存在显著差…

OpenHarmony人才认证证书

OpenHarmony人才认证体系目前支持初级工程师认证&#xff0c;要求了解OpenHarmony开源项目、生态进展及系统移植等基础知识&#xff0c;熟练掌握OpenHarmony的ArkUI、分布式软总线、分布式硬件、分布式数据管理等基础能力使用&#xff0c;具备基础的开发能力。 考试流程可参考O…

映射网络路路径和ftp路径原理是什么,如何使用,有什么区别

文章目录 一、原理1. 映射网络路径2. FTP路径 二、使用方法1. 映射网络路径2. FTP路径 三、主要区别1. 协议与功能2. 安全性与权限3. 适用场景 四、如何选择&#xff1f;五、注意事项 映射网络路径&#xff08;如SMB/CIFS或NFS&#xff09;和FTP路径&#xff08;FTP/FTPS/SFTP&…

Windows 图形显示驱动开发-WDDM 1.2功能—Windows 8 中的 DirectX 功能改进(一)

Windows 8包括 Microsoft DirectX 功能改进&#xff0c;使开发人员、最终用户和系统制造商受益。 功能改进在以下几个方面&#xff1a; 像素格式 (5551、565、4444) &#xff1a;在低功耗硬件配置下&#xff0c;DirectX 应用程序的性能更高。双精度着色器功能&#xff1a;高级…