记某系统SQL注入审计

在复现jeecg历史漏洞时发现了一基于jeecg框架仓库系统,故在此记录一下审计过程。

记某系统SQL注入审计

0x00 简介

在复现jeecg历史漏洞时发现了一基于jeecg框架仓库系统,故在此记录一下审计过程。

0x01 路由

查看src/main/webapp/WEB-INF/web.xml文件看到提供了三种路由形式.do.action/rest/

0x02 鉴权

Filter

这里没有用于权限认证Filter

Interceptors

查看/src/main/resources/spring-mvc.xml

可以看到定义了四个interceptor

1. EncodingInterceptor

主要是设置请求包和响应包的编码格式

2. SignInterceptor

跟进方法,发现注释掉了原有处理流程直接返回true

3. AuthInterceptor

该拦截器的mapping为/**,即处理所有请求,根进到具体实现

4. WmsApiInterceptor

该拦截器的mapping也为/**,查看具体实现

0x03 权限绕过

我们通过上述分析,发现处理鉴权操作的仅是AuthInterceptorWmsApiInterceptor两个类。
首先我们来分析AuthInterceptor
spring-mvc.xml中,对AuthInterceptor类的excludeUrlsexcludeContainUrls两个成员变量做了初始化:

我们来到AuthInterceptor类鉴权方法preHandle的具体实现:

可以看到当url中包含rest/或者excludeUrlsexcludeContainUrls数组里的字符串时直接返回true放行请求。
正常访问后台接口返回302:

我们可以用rest/wmOmNoticeHController.do来bypass:

WmsApiInterceptor
跟进到prehandle方法实现:

当请求url在containUrls列表中时进入if处理逻辑:
1.获取header中Authorization的值
2.利用jwtUtils解析Authorization
3.当解析后的值等于wmsAccount时放行
JwtUtils硬编码了jwt密钥

我们可以利用密钥自己构造AuthorizationwmsAccount来bypass,这里就不赘述了。

0x04 SQL注入

根据README和pom.xml发现其是使用Hibernat框架进行sql。我们可以通过搜索Hql相关查询语法,如:session.createQuery,Restrictions.sqlRestriction等关键字,或是对有关数据查询等功能点抓包找到接口具体实现跟进。
这里我们通过关键字搜索到了HQL实现类src/main/java/xx/xx/xx/extend/hqlsearch/HqlGenerateUtil,其中installHql方法调用了Restrictions.sqlRestriction()进行查询。

方法主要获取sqlbuilder参数的值(数据结构为json)进行sql查询。搜索其用例发现在用户查询功能处调用了其方法

于是我们对其功能点进行抓包

发现传参中存在sqlbuilder,不过前端代码sqlbuilder被隐藏掉了。

于是我们再看HqlGenerateUtil:installHql()的实现,其中获取到sqlbuilder的值后通过JSONHelper:toList()转化成QueryCondition类型对象存入列表中。而QueryCondition类有如下成员变量:

随后通过getSql()方法将遍历list和searchObj两对象的成员变量拼接成最终查询的SQL字符串。下面是getSsql方法的实现。

当执行到sb.append(tab+c)时会调用QueryCondition类的toString方法:

可以看到其对QueryCondition的成员变量进行拼接最后根据this.type的值确定this.value的拼接方式。
于是我们构造payload为

sqlbuilder=[{"field":"createName","type":"string","condition":"is not null and user() like '%25r%25' and '1' like ","value":"%251%25","relation":"and"}]

最终的SQL字符串为

 1=1 and create_name is not null and user() like '%r%' and '1' like  '%1%'


最后配合前面的权限绕过可达到未授权SQL注入

bp3.png

  • 发表于 2023-05-29 14:48:37
  • 阅读 ( 7063 )
  • 分类:漏洞分析

0 条评论

请先 登录 后评论
中铁13层打工人
中铁13层打工人

79 篇文章

站长统计