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

雷石安全实验室

共 1098字,需浏览 3分钟

 · 2023-08-24

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

浏览 736
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

举报