记录众测过程中研究审计某SRM代码

admin 2023年7月4日19:24:11评论31 views字数 2291阅读7分38秒阅读模式

0x00:前言

这套SRM系统是在某次众测看到的厂商资产,发现其用的比较广泛,遂找到公开的材料和代码研究了一下,本文简要的记录了分析过程和成果。

0x01:初探

在测试过程中发现目标系统的大部分后缀为screen,起初还以为是使用了struts2之类的框架自定义了后缀,然后使用一些小技巧判断了一下否定了这个想法,

?ActionErrors=xxx

GET /struts2-showcase/static/utils.js

使用以上两种办法否定了目标使用了struts2,遂去查找相关资料发现目标使用了一套名为Aurora的国产java框架。在开展具体分析之前我们先了解一下这个框架

0x02:Aurora框架是什么?

aurora 框架是 XX公司开发的一套主要由java、ajax、js、等技术封装起来的基础框架,用来解决的问题是上游企业供应商之间的问题列如采购商,供应商之类的。

如何开发

由于是一个基础框架,所以很多东西已经封装成了套件,直接调用就可以了。

然后主要开发的就是三件套:bm,svc,screen。

bm 操作数据库( 被 svc 和 screen 调用)svc 方法流程逻辑代码( 被 screen 调用,不是必须)screen 页面展示(调用 svc 或 bm)

记录众测过程中研究审计某SRM代码


### 开发流程
1. 在 PLSQL 中创建好表。2. 在 PLSQL中写出对应的存储过程和函数(相当于一个服务层)3. 写 BM 文件(相当于对应的控制层,BM其实就是调用对应的PLSQL中的存储过程来获取数据)4. 写 SVC 文件 (做一些简单逻辑,可以没有)5. 写 SCREEN文件(切记要写DATASET来绑定对应的BM文件,这些就是数据。DATASET就是一个数据集合模型)。

组件介绍

bm是什么?

Business Model 简称BM  是实体对象(数据库表,视图等)等应用层模型,通过XML格式的文件进行配置

bm就相当于在做SSM框架时,充当 Model 的那一层,所有与数据库的操作都是经过它。

记录众测过程中研究审计某SRM代码

screen文件是什么?

screen文件主要做数据展示,中文意思就是屏幕,简单的说就是界面。他是整个框架的展示层。简单、好用、高效,缺点就是离开它就啥都不会了 。

Screen文件和svc文件。Screen是画页面,svc用来页面流转像serlvert。比如头行结构的表。整个modules放的就是页面文件和svc文件。主要是在这块,画好以后通过plsql做数据的处理。

0x03:管理员伪造登录

通过上述文档可以,我们将关注点侧重于BM数据查询过程中是否能够构造恶意数据进行SQL注入,那么我们就来看看实际业务代码。

通过拿到的代码我们发现在根目录下存在4个JSP文件,分别是classfind.jsp,tomcat.jsp,file_manager_json.jsp,upload_json.jsp.

其中file_manager_json.jsp,upload_json.jsp是KindEditor的项目文件,分析烂了的代码了,看了下没有任何的问题,那么我们看看tomcat.jsp和classfind.jsp.

先来看classfind.jsp,乍一眼还以为能利用,仔细一看逻辑,

记录众测过程中研究审计某SRM代码

这段代码的主要功能是根据给定的类名加载对应的类文件,并获取该类文件的来源位置。它使用Java的类加载器来实现这个功能。并不能为我们所用,只能用来查找一些类文件的位置。如果存在反序列化可以用来辅助我们寻找目标存在的Gadget

继续看tomcat.jsp

记录众测过程中研究审计某SRM代码

看到这段代码,让我想起一个非常经典的漏洞。Tomcat样列目录session操控漏洞,这段代码主要用于在JSP页面中获取本地地址和端口号,并展示当前会话的ID以及会话属性的列表。它还提供了设置会话属性的功能,如果请求中包含"dataName"参数,则可以设置对应的会话属性。如果目标系统在鉴权过程中是通过session中的某些值来判断的话我们就可以通过这个文件进行session伪造。我们去寻找目标系统的鉴权过程。

通过前面的基础知识可以了解,Screen文件是与BM进行数据交互的,我们就以main.screen文件为例进行研究分析,main.screen是登录后的主页面

记录众测过程中研究审计某SRM代码

model-query标签主要用于在界面显示前,在服务器端执行查询,并将结果放在rootPath里面,界面可通过/model/acc_entity路径取值-

我们跟进到sys.sys_main_menu,位于Web-inf/classes下

记录众测过程中研究审计某SRM代码

找到sys_main_menu.bm

记录众测过程中研究审计某SRM代码

通过查询官方文档可知screen页面在获取数据时是通过BM进行查询的。而BM在查询是是通过查询seesssion中的值来判断权限的

记录众测过程中研究审计某SRM代码

那么我们只要给session赋值就能满足条件了。

记录众测过程中研究审计某SRM代码

所以我们set两个值就ok了

实际测试:

记录众测过程中研究审计某SRM代码

目前session无值,

赋值:

tomcat.jsp?dataName=role_id&dataValue=1tomcat.jsp?dataName=user_id&dataValue=1

记录众测过程中研究审计某SRM代码

然后直接访问main.screen

记录众测过程中研究审计某SRM代码

0x04:后记

这套框架确实让我涨了姿势。官方最新版已修复,行文如有错误请私聊指出,切谢。

资料文档下载

Aurora 框架介绍.pptx
Aurora实践.doc
aurora_参考文档.pdf
WebServiceInAurora.pdf

免责声明:本漏洞分析报告仅供参考和信息交流之用。报告中所包含的漏洞信息、建议和解决方案可能已被修复或过时。读者在使用该报告中提供的信息时应自行判断并承担相应的风险。

原文始发于微信公众号(实战安全研究):记录众测过程中研究审计某SRM代码

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月4日19:24:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记录众测过程中研究审计某SRM代码https://cn-sec.com/archives/1853361.html

发表评论

匿名网友 填写信息