成功弹出计算机
5.漏洞分析
我们从idea里的报错栈可以看到入口应该是javax.servlet.http.HttpServlet.service
我们在this.service处下个断点
我们用postman发个包,然后跟进去,发现它会用handler函数处理request,response
随后发现其进入org.apache.dubbo.rpc.protocol.heep.HttpProtocol中的handle
当跟进去后handleRequest,F8后发现直接弹出了计算机,所以可以判断漏洞出发点就在红框中,因此选择跟进
继续进一步跟踪,最后在
org.springframework.remoting.rmi.RemoteInvocationSerializingExporter的
doReadRemoteInvocation发现了反序列化入口
该ois对象来源为报文中post data部分,对于传入的ois并没有做任何安全检查,直接就执行read0bjec方法导致REC产生。
6.坑点
我一开始发包是采用burp进行发包的,但是一直没有达成效果。
就连错误栈里都没看到commonsollection4的执行调用。
我当时打开断点判断时,发现会进入read0bject的,但是就是没成功。
我估计是因为编码问题吧,直接从payload.ser文件中粘贴序列化代码,导致代码发生了变化,所以传进去后反序列化就不行了。
参考链接
https://zhzhdoai.github.io/2020/08/26/Dubbo%E5%8E%86%E5%8F%B2%E6%BC%8F%E6%B4%9 E%E4%B9%8BCVE-2019-17564/
https://www.cnblogs.com/wh4am1/p/12307848.html