Skip to main content

CVE-2020-11995 Apache Dubbo 代码问题漏洞 GHSL-2021-034

2.7.7 补丁问题

2.7.7 对于 CVE-2020-1948 的修复方式存在问题,可以看看关于此问题的 讨论 ,DecodeableRpcInvocation 新增的入参校验方法 RpcUtils.isGenericCall()RpcUtils.isEcho() 存在绕过,通过修改 methodName 值为 $invoke、$invokeAsync、$echo 中的任一个来绕过。

image-20231121102157489

image-20240131225446605

补充说明

关于这个问题还要再说一下,如果我们已知服务端存在一个接口是参数格式,比如这里接收 Object 参数。那么我们可以按照这个格式构造请求 sayObject 接口。只要方法调用入参完全符合接口声明的情况下就能获取到 pts 值,也就不存在对于 RpcUtils.isGenericCall() 方法的调用。

image-20231121104317382

image-20231121104442797

这个补丁做的事情其实只是对还原对象这个过程进行处理,它无法检测对象本身所携带的信息是否恶意,所以之后也在 com.alibaba.com.caucho.hessian.io.ClassFactory#load() 方法中引入了类黑白名单机制。

有问题的补丁

看了一下其他的分析文章,说是因为增加了如图这个额外处理不能利用

image-20240131231042021

但是 $echo 这个情况似乎也不是很难满足,所以有搞头!

image-20240131231241078