newbee mall搭建&审计
好的,我现在需要帮用户总结一篇文章的内容,控制在100字以内。首先,我得仔细阅读用户提供的文章内容。看起来这篇文章主要讲的是如何审计一个开源项目newbee-mall的安全性。 文章提到了下载源码、配置数据库、启动环境等步骤。接着,作者检查了pom.xml和README.md文件,发现了可能的SQL注入和越权漏洞。然后详细分析了controller目录中的潜在问题,比如水平越权和参数篡改。 在技术细节方面,文章讨论了MyBatis的使用情况,特别是${}和#的区别。作者检查了NewBeeMallGoodsMapper.java和相关服务实现类,发现虽然使用了预编译,但可能存在其他安全问题。 最后,文章还附带了免责声明,强调信息仅供参考,并提醒读者遵守相关法律法规。 现在我需要将这些内容浓缩到100字以内。要抓住主要点:审计过程、发现的漏洞类型、技术细节分析以及免责声明。确保语言简洁明了,不使用复杂的术语。 可能的结构是:首先说明审计的目标和方法,然后提到发现的漏洞类型和技术细节,最后提及免责声明。这样就能在有限的字数内全面覆盖文章内容。 </think> 本文介绍了一个开源项目newbee-mall的安全审计过程,包括环境搭建、代码分析及潜在漏洞排查。重点检查了MyBatis配置、SQL注入风险及越权漏洞,并详细分析了controller目录中的接口逻辑。同时提醒读者注意安全编码规范和开源项目的潜在风险。 2025-10-16 11:57:59 Author: www.freebuf.com(查看原文) 阅读量:1 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

搭建

我用的是IDEA

  1. 下载源码

    链接如下:https://github.com/newbee-ltd/newbee-mall

    直接在github下载即可

  2. 在phpstudy打开web环境,新建数据库,如下:(数据库名称一定要是newbee_mall_db

    1760615293_68f0db7d9c765c13f73e6.png!small?1760615294624

  3. 然后导入sql文件(源码包里面就有)

    记得先修改这个配置文件(修改数据库名和用户名)

    1760615298_68f0db8293c7252de2673.png!small?1760615299974

    然后导入即可

    \newbee-mall-master\src\main\resources\newbee_mall_schema.sql
  4. 在Navicat Premium 17连接数据库

    1760615313_68f0db912ae4461f4954c.png!small?1760615312874

  5. 弹出即说明成功启动

    1760615317_68f0db958da80f5eb7f54.png!small?1760615317297

  6. 直接输入

    http://localhost:28089/即可

审计初审

先看pom.xml配置文件以及README.md

  1. README.md中存在MyBatis,可能存在sql注入

    1760615325_68f0db9db036b63f1ebe4.png!small?1760615326661

  2. 通过搜索发现存在拦截器interceptor,可能存在越权漏洞

    1760615330_68f0dba219aef5f724a9e.png!small?1760615331163

  3. controller目录中也可能存在越权漏洞,下面具体审计可以跟着看一下

    水平越权漏洞

    • 或者在篡改相关参数(请求参数 / 表单字段 / JSON 字段)

    • 要么就是修改之中存在注入点,需要替换用户

    • 在url使用参数切换用户或者管理员id未校验,尝试替换 ID(+1、-1、随机大/小 ID、其它已知用户的 ID)

    • 文件/图片等直接用可访问 URL,访问其它用户的文件路径或修改 URL(没有权限校验或短期 token)

    • token 换取其他用户的数据

    • 直接访问管理/内部接口,扫列出隐藏路由、尝试访问/admin/internal/debug

sql

  1. 接上面说的,存在MyBatis,直接检索${,主要是查看${} 拼接 SQL 语句

    1760615335_68f0dba7e6b41652d99a1.png!small?1760615335660

    1760615337_68f0dba94c7f92994f6ac.png!small?1760615336978

    都找不到和sql相关的东西

    说明可能使用#代替$实现sql的预编译,防止了sql注入(可能是版本问题,这个漏洞修复了emmm)

  2. 查找#{

    1760615343_68f0dbaf46675f4cdf659.png!small?1760615342948

    进去分析一下

    使用了直接拼接的方式向数据库进行查询(但是预编译即已修复)

  3. 所以可以查看NewBeeMallGoodsMapper.java (逆向追踪)

    1760615349_68f0dbb572e4917fa7f44.png!small?1760615349192

    找到传参定义,跟近函数

  4. 跟进到getTotalNewBeeMallGoods

    C:\Users\95227\Desktop\newbee-mall-master\src\main\java\ltd\newbee\mall\service\impl\NewBeeMallGoodsServiceImpl.java

    @Override
    public PageResult getNewBeeMallGoodsPage(PageQueryUtil pageUtil) {
    List<NewBeeMallGoods> goodsList = goodsMapper.findNewBeeMallGoodsList(pageUtil);
    int total = goodsMapper.getTotalNewBeeMallGoods(pageUtil);
    PageResult pageResult = new PageResult(goodsList, total, pageUtil.getLimit(), pageUtil.getPage());
    return pageResult;
    }

    查看谁调用了getNewBeeMallGoodsPage 方法

  5. 跟进到NewBeeMallGoodsController

    C:\Users\95227\Desktop\newbee-mall-master\src\main\java\ltd\newbee\mall\controller\admin\NewBeeMallGoodsController.java

    @RequestMapping(value = "/goods/list", method = RequestMethod.GET)
    @ResponseBody
    public Result list(@RequestParam Map<String, Object> params) {
    if (ObjectUtils.isEmpty(params.get("page")) || ObjectUtils.isEmpty(params.get("limit"))) {
    return ResultGenerator.genFailResult("参数异常!");
    }
    PageQueryUtil pageUtil = new PageQueryUtil(param

免责声明

1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。

2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。

3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/web/452995.html
如有侵权请联系:admin#unsafe.sh