问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
CNVD-2023-04620 金和 OA XXE 漏洞分析复现
漏洞分析
参与的众测项目,资产非常难挖掘漏洞,所以只能通过审计的方式,找找漏洞点 资产里相对用的多的 oa,都是用友,泛微,致远等大型 oa,对我这种小菜来说,直接上手有点难度,无意间发现了金和...
参与的众测项目,资产非常难挖掘漏洞,所以只能通过审计的方式,找找漏洞点 资产里相对用的多的 oa,都是用友,泛微,致远等大型 oa,对我这种小菜来说,直接上手有点难度,无意间发现了金和系统,就直接来审计学学,刚开始找网盘资料,发现有个 net 版的源码,结果目标系统是 jsp,就 G 了。 然后就找朋友要了安装包,对源码进行分析,跟踪路由,审计漏洞点。 **路由关系寻找** ---------- 开始正题,第一次审计,所以不太了解路由关系,大致看了看代码结构,发现相对简单点。  整体文件那么多,主要是关注 WEB-INF/jsp 文件夹,这是对应的视图文件,也就是访问 web 页面的 jsp 文件。  我并没有分析那些需要鉴权,那些不需要鉴权。 这个网上有个模板注入漏洞,我是根据对应的二级目录来找的相关漏洞点,后面也是发现了注入,但是是Hibernate,构造半天没读出来数据库名 `jc6/platform/portalwb/portalwb-con-template!viewConTemplate.action` 然后就是根据portalwb目录下的文件去挖掘注入。 再其次就是关注后台文件,也就是 lib 下的 jcs-xx.jar文件,这才是后端代码。  根据上面的路径 `jc6/platform/portalwb/portalwb-con-template` 就可以知道,对应的 jar 就是 jcs-platform-java-xxxxxx.jar。 **HQL注入** --------- 经过我不懈的努力,在 jsp 页面中,找到了一个参数  那如何在后段代码,找到对应方法呢 很简单,例如: `main.action!viewConTemplate.action==main.action?方法名=viewConTemplate` portalweb-datasource.jsp则是前端的文件,后端也会存在对应的路由,然后方法名则是下面的,getTemplateOpt   这里有typeFlag参数,我们跟踪getAllTemplates方法  直接对应了接口名称,往下跟,就到了数据库层面了 `@Override public List getAllTemplates(String typeFlag) { String hql \= " from TblPortalwbConTemplete t where t.commRecordIdenty= '1' and t.typeFlag like '%" + typeFlag + "%'"; return this.find(hql); }`  直接是拼接的 sql 语句 于是就可以构造请求方法了 `jc6/platform/portalwb/dataSource/portalwb-data-source!getTemplateOpt.action?moduId=1&typeFlag=1`    仅限于 or 1=1 也尝试构造数据包读取数据库,但都以失败告终。 **SQL 注入** ---------- 于是放弃对业务数据的审计,翻了翻下面的 jar 包 jcs-eform-java-1.5.0-SNAPSHOT.jar  clobfield这个接口,网上有,也是我审计之后发现的,不过目标系统存在这个接口,注入点变成了sKeyname 通过req获取请求参数,参数跟进  clobfield1 存在查询语句  直接拼接,无过滤 构造访问参数,需要满足key包含readClob  ```php POST /jc6/servlet/clobfield HTTP/1.1 Host: Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 User-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.36 Accept: 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.7 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Length: 91 key=readClob&sImgname=1&sTablename=1&sKeyvalue=1&sKeyname=1 ```  **XXE 漏洞** ---------- 想着,这几个servlet 有两三个接口都存在漏洞,那么剩下的是不是也存在。  post方式,创建SAXReader,用来读取xml信息,全程代码就那么多,可见未过滤任何信息 路由访问,因为继承HttpServlet,所以直接拼接访问 dnslog 尝试   然后就是读取windows/win.ini  漏洞修复 ---- ```php 1、禁用外部实体解析。 2、对所有输入进行严格的验证,确保它们符合预期的格式。 3、使用默认禁用外部实体解析的XML解析器。 4、不要在错误消息中暴露敏感信息。 5、限制可接受的输入到一个明确定义的、安全的白名单。 6、定期更新XML解析器和相关库,以修复已知的XXE漏洞。 ```
发表于 2025-05-20 09:00:00
阅读 ( 253 )
分类:
OA产品
1 推荐
收藏
0 条评论
请先
登录
后评论
轩公子
1 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!