某OA代码审计之挖掘0day,未公开poc

admin 2025年5月8日23:57:32评论5 views字数 2242阅读7分28秒阅读模式

参与的众测项目,资产非常难挖掘漏洞,所以只能通过审计的方式,找找漏洞点

资产里相对用的多的 oa,都是用友,泛微,致远等大型 oa,对我这种小菜来说,直接上手有点难度,无意间发现了金和系统,就直接来审计学学,刚开始找网盘资料,发现有个 net 版的源码,结果目标系统是 jsp,就 G 了。

然后就找朋友要了安装包,对源码进行分析,跟踪路由,审计漏洞点

但是有一点就是sbcp是真他妈恶心,水平越权,只因 id 不易猜测,直接驳回,任意密码重置,通过 id,可直接重置密码,不需要验证,也是因为 id 不易猜测。真他妈气打不一出来

你他马勒戈壁,回答我,你的安全是谁教的,这他妈不是漏洞吗,look in my eyes

                                某OA代码审计之挖掘0day,未公开poc

路由关系寻找

开始正题,第一次审计,所以不太了解路由关系,大致看了看代码结构,发现相对简单点。

某OA代码审计之挖掘0day,未公开poc

整体文件那么多,主要是关注 WEB-INF/jsp 文件夹,这是对应的视图文件,也就是访问 web 页面的 jsp 文件。

某OA代码审计之挖掘0day,未公开poc

我并没有分析那些需要鉴权,那些不需要鉴权。

这个网上有个模板注入漏洞,我是根据对应的二级目录来找的相关漏洞点,后面也是发现了注入,但是是Hibernate,构造半天没读出来数据库名

jc6/platform/portalwb/portalwb-con-template!viewConTemplate.action

然后就是根据portalwb目录下的文件去挖掘注入。

然后再其次就是关注后台文件,也就是 lib 下的 jcs-xx.jar文件,这才是后端代码。

某OA代码审计之挖掘0day,未公开poc

根据上面的路径

jc6/platform/portalwb/portalwb-con-template

就可以知道,对应的 jar 就是 jcs-platform-java-xxxxxx.jar。

HQL注入

经过我不懈的努力,在 jsp 页面中,找到了一个参数

某OA代码审计之挖掘0day,未公开poc

那如何在后段代码,找到对应方法呢

很简单,例如:

main.action!viewConTemplate.action==main.action?方法名=viewConTemplate

portalweb-datasource.jsp则是前端的文件,后端也会存在对应的路由,然后方法名则是下面的,getTemplateOpt

某OA代码审计之挖掘0day,未公开poc

某OA代码审计之挖掘0day,未公开poc

这里有typeFlag参数,我们跟踪getAllTemplates方法

某OA代码审计之挖掘0day,未公开poc

直接对应了接口名称,往下跟,就到了数据库层面了

   @Override   public List<TblPortalwbConTempletegetAllTemplates(String typeFlag) {      String hql = " from TblPortalwbConTemplete  t where   t.commRecordIdenty= '1' and t.typeFlag like '%" + typeFlag + "%'";      return this.find(hql);   }

某OA代码审计之挖掘0day,未公开poc

直接是拼接的 sql 语句

于是就可以构造请求方法了

jc6/platform/portalwb/dataSource/portalwb-data-source!getTemplateOpt.action?moduId=1&typeFlag=1

某OA代码审计之挖掘0day,未公开poc

某OA代码审计之挖掘0day,未公开poc

某OA代码审计之挖掘0day,未公开poc

仅限于 or 1=1 也尝试构造数据包读取数据库

SQL 注入

于是放弃对业务数据的审计,翻了翻下面的 jar 包

jcs-eform-java-1.5.0-SNAPSHOT.jar

某OA代码审计之挖掘0day,未公开poc

clobfield这个接口,网上有,也是我审计之后发现的,不过目标系统存在这个接口,注入点变成了sKeyname

通过req获取请求参数,参数跟进

某OA代码审计之挖掘0day,未公开poc

clobfield1 存在查询语句

某OA代码审计之挖掘0day,未公开poc

直接拼接,无过滤

构造访问参数,需要满足key包含readClob

某OA代码审计之挖掘0day,未公开poc

POST /jc6/servlet/clobfield HTTP/1.1HostPragma: no-cacheCache-Control: no-cacheUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: closeContent-Length: 91key=readClob&sImgname=1&sTablename=1&sKeyvalue=1&sKeyname=1

某OA代码审计之挖掘0day,未公开poc

XXE 漏洞

想着,这几个servlet 有两三个接口都存在漏洞,那么剩下的是不是也存在。

某OA代码审计之挖掘0day,未公开poc

post方式,创建SAXReader,用来读取xml信息,全程代码就那么多,可见未过滤任何信息

路由访问,因为继承HttpServlet,所以直接拼接访问

dnslog 尝试

某OA代码审计之挖掘0day,未公开poc

某OA代码审计之挖掘0day,未公开poc

然后就是读取windows/win.ini

某OA代码审计之挖掘0day,未公开poc

我感觉那么简单的漏洞,应该是被提交了

果不其然

某OA代码审计之挖掘0day,未公开poc

原文始发于微信公众号(轩公子谈技术):某OA代码审计之挖掘0day,未公开poc

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月8日23:57:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某OA代码审计之挖掘0day,未公开pochttp://cn-sec.com/archives/4044172.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息