雷石|用友NC-ActionHandlerServlet反序列化漏洞分析

共 1098字,需浏览 3分钟

 ·

2023-08-24 11:34


39826123f6e1171d219d8e046fa17ed5.webp


前言




3e17bb327172018d35205b289989b92c.webp

用友NC被披露过很多漏洞,其中反序列化漏洞尤为多。很多的接口都存在反序列化漏洞,网上披露的漏洞信息却很模糊。当自己把这些漏洞整合成工具时发现很多漏洞复现失败,只得回过头动手分析一探究竟。






01.


分析




通过公开信息得知,用友NC 的ActionHandlerServlet接口存在反序列化漏洞。受影响的版本有NC6.3、NC6.5。




凭借此前对用友NC的历史反序列化漏洞了解,大多接口都是直接反序列化。便用同样方法测试,结果都是失败。




正好本地搭建有环境,那便直接找文件看源码。


已经知道了接口,通过接口 ActionHandlerServlet 找到对应的类。


如下:


b210959aa3c6f4ab6ba0e56adc2d6a02.webp




这⾥有三个⽅法,post和get接收到请求后调⽤了process()。




查看process(),可以看到34⾏,将接收到的请求先⽤GZIPInputStream进⾏了Gzip解压缩。


1313851dddbec00f8b0ea4ad4fc4ea2c.webp




然后紧接着就进⾏了反序列化,造成了反序列化漏洞。


看了代码得知:该接⼝请求的的序列化数据需要进⾏gzip压缩。


复现


02.




发dnslog回显


741d774fab99fbd8d6c289d9467ea786.webp




a90016a86b751ff2edd7a822e80dedd4.webp




写⽂件


b2a006fe3e2ef483fb6c2e5aa81b2980.webp




03.


poc编写问题




在编写poc,对序列化数据进⾏gzip压缩时,出现了问题。




通过gzip库压缩后的数据与burp编码后的结果不同


原始序列化数据


bbe757747ea47e1326db21ebf7490ad6.webp




⽤burp进⾏gzip解压看到的序列化数据 \xff变为了\xc3\xbf


c747a1fbdcbae27b55f710cce2d02268.webp




说明序列化数据经过gzip压缩时数据被改变了。






utf-8编码问题


经过查阅资料,找到⼀些信息,发现是UTF-8编码的问题:


1.字节FF和FE在UTF-8编码中永远不会出现;


2.UTF-8是⼀种变⻓编码;




修改编码为“ASCII”,问题解决。


469ebbe501ad41ee85da9277346518d0.webp




d70efd80294c30d78f40ad0d7f8fb69e.webp




4fb5b6639858448c3c625e934f81f436.webp






往期回顾




01


一例ReactNative App分析


02


心得分享之PWN的ROP构造


03


yonyouNC命令执行Bypass测试分享


雷石安全实验室




商务咨询:


0571-87031601


商务邮箱:


mtn@motanni.com


浏览 845
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报