问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
U8cloud base64 SQL注入漏洞分析
漏洞分析
U8cloud base64 SQL注入漏洞分析,真的是file/upload/base64导致的SQL注入吗?
0x00 前言 ------- 前段时间爆出一个`U8cloud`的SQL注入,路径为`/u8cloud/api/file/upload/base64`,在此之前也做过`U8cloud`的代码审计,没有发现和这个路径类似的路径,正好这次有时间,来复现分析一下这个漏洞到底是怎么回事。 0x01 漏洞复现 --------- 按照网上给出的`POC`,利用结果如下图,注入点在请求头的`system`字段。  但是神奇的是,如果吧路径中的`file/upload/base64`随便替换为其他东西,会发现居然也能成功注入,这就很耐人寻味了,这个漏洞和`file/upload/base64`居然没有半毛钱关系。  0x02 漏洞分析 --------- 接下来掏出朋友给的一份编译后的源码,全局搜索`u8cloud/api`,很快就在`webapps/u8c_web/WEB-INF/web.xml`中找到了这个路径,对应的`servlet`是`ExtSystemInvokerServlet`,除了他以外,`/u8cloud/openapi/*`、`/u8cloud/yls/*`、`/u8cloud/extsystem/dst/*`三个路径也都对应到了`ExtSystemInvokerServlet`。  而这个`ExtSystemInvokerServlet`的位置在`fw.jar!\nc\bs\framework\server\extsys\ExtSystemInvokerServlet`。 找到这个类,来看他的`doAction()`方法。重点关注一下`ExtSystemServerEnum`和`serviceName`  `ExtSystemServerEnum`是一个枚举类,包含`/u8cloud/yls`、`/u8cloud/extsystem/dst`、`/u8cloud/api/`、`/u8cloud/openapi/`四个常量。  回到上面的`doAction()`方法,我们要保证我们的`request.getRequestURI()`必须是以上述四个常量之一开头才可以,否则会抛出异常,也就是说不能按照一般的`/servlet/*`路径根据模块名和包名去调用,否则就会报错。 此时,如果我们访问的路径是`/u8cloud/api/file/upload/base64`,就会匹配到`/u8cloud/api/`,然后`serviceName`就被赋值为`u8cloud_api`。 接着一路向下,进入`getServiceObject()`。  根据`serviceName`也就是`u8cloud_api`去找对应的类。这里具体逻辑感兴趣的可以自行去分析,偷了个懒。  根据这项目的惯性,一般就是在各种配置文件中进行的配置。全局搜索一下`u8cloud_api`,在`/modules/uap/META-INF/P_API.upm`中找到如下所示的配置,找到`u8c.server.APIServletForJSON`这么一个类。  继续跟进,在`doAction()`方法中,会先判断`request.getPathInfo()`,显然不是以`file.`开头,进入`APIController.forWard(request)`。  在`APIController.forWard()`中,会发现存在`checkUser()`进行校验,跟进看一下。  在这个地方,看到了本次分析的主角`system`,通过`inputData.getSystem()`获取,然后传入`APIOutSysUtil.getOutSysVOByCode()`中。  继续跟进一下,明晃晃的字符串拼接就出现了,就造成了`SQL`注入。  还在校验身份甚至没有到校验授权的时候就完成了注入,这也就是我们请求`/u8cloud/api/f`都可以成功注入的原因了。  0x03 后续 ------- 自此,关于这个漏洞的一些情况就分析完毕了,但是也还是遗留了一些问题,比如`/u8cloud/api/`后的服务模块具体是怎么调用的,感兴趣的师傅们就自行去研究了。
发表于 2024-04-10 09:39:54
阅读 ( 13545 )
分类:
漏洞分析
1 推荐
收藏
2 条评论
懒洋洋
2024-04-10 17:21
请先
登录
后评论
懒洋洋
2024-04-10 17:22
123
请先
登录
后评论
请先
登录
后评论
So4ms
1 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!