24-关于华夏ERP的搭建、审计、扫描

news/2025/3/13 3:31:06/文章来源:https://www.cnblogs.com/bokexiLu/p/18766204

1、使用IDEA和PHPStudy搭建华夏erp

需要先下载 jshERP3.3-最新包,JSH_ERP-v3.3源码

  1. 前端部署

    • 在网站根目录下创建一个名为ERP的文件夹,将前端压缩包 前端包/dist.zip 解压到该目录下
    • 使用小皮创建 huaxi.com网站,连接到刚刚的ERP目录

    访问http://huaxi.com,出现如下页面说明前端部署成功

    image-20250310131335992

  2. 后端部署

    • 使用IDEA打开JSH_ERP-v3.3\jshERP-boot (使用 jdk1.8 )

    • 根据application.properties文件内容

      • 配置数据库(JSH_ERP-v3.3\jshERP-boot\docs\jsh_erp.sql导入数据库)

        image-20250310134840893

      • 配置redis

        image-20250310135633403

      运行ErpApplication.java,出现如下页面说明后端部署成功

      image-20250310140103395

      image-20250310140132182

  3. 连接前后端

    • 参考jshERP3.3-最新包\nginx配置文件-参考配置\nginx.conf来配置华夏erp的nginx配置文件Nginx1.15.11\conf\vhosts\huaxi.com_80.conf

      仅需添加如下代码,在重启 ngnix 即可

       location /jshERP-boot/ {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://localhost:9999/jshERP-boot/;}
      

    再次访问http://huaxi.com 发现已无错误信息,登入管理员账号 admin/123456。自此华夏erp搭建完成。

    image-20250310142015911

2、审计华夏erp权限绕过漏洞并说明漏洞原理

  • 审计代码发现当请求的 URL 包含 /doc.html/user/login/user/register,则直接放行,不进行过滤。即如果构造相应的 url 则可以正常访问关键业务,实现权限绕过。

    image-20250310145632499

    • 漏洞实现:构造下面路径可以实现无需登录,即可获取全部用户数据信息 /jshERP-boot/doc.html/../user/getAllList(注意:防止ngnix代理处理,需要修改端口号,直接让后台服务发包)

      image-20250310153154238

3、审计华夏erp代码执行漏洞

  • 审计代码发现发现需要验证当前登录的用户信息,该接口只能管理员才能访问,在上一步中已经拿到了管理员账号,所以现在只需上传后端可以解析的jar文件,即可造成恶意代码执行

    image-20250310161954263

    • 上传文件后,开始调试。跟进代码发现内部使用了如下组件

      <dependency><groupId>com.gitee.starblues</groupId><artifactId>springboot-plugin-framework</artifactId><version>2.2.1-RELEASE</version>
      </dependency>
      
    • 深入分析发现2.2.1版本依赖了 pf4j 框架3.1.0,相关插件格式和pf4j要求一致

      image-20250310164915652

    • 因此直接使用 pf4j 生成 jar,下载 pf4j 3.1.0版本官方样例并构造恶意的插件

      static {try {Runtime.getRuntime().exec("cmd.exe /c calc");} catch (IOException e) {throw new RuntimeException(e);}}
      
    • 插入后,对文件进行编译

      image-20250311125146436

    • 编译成功后,将jar包上传,可以执行命令

      image-20250311125606733

4、结合权限绕过漏洞,分析审计华夏erp任意密码重置漏洞

  • 创建新用户test/qaz23,test01/qaz123

  • 登入找到重置密码模块,抓包发现疑似密码重置接口/jshERP-boot/user/resetPwd,在源码中查找,发现存在密码重置接口且审计发现密码一律重置为123456

    image-20250311133741679

  • resetPwd方法中包含具体重置密码逻辑,可以看到admin密码无法重置,因此该系统存在一个隐藏账号

    admin并且密码是123456,根据传入的id值可以修改管理员以外的任意用户

    image-20250311134348172

    • 此处结合上面的认证绕过问题,得到test-id:132,test01-id:133,修改test用户重置密码的请求数据包,修改请求行为 /jshERP-boot/doc.html/../user/resetPwd id改为133,发送成功重置了id为133的test01用户密码,即仅需要修改id就可以重置除管理员外任意用户的密码。

      image-20250311135340524

5、安装Dependency Check并对华夏erp进行漏洞扫描

  1. pom.xml文件中引入插件

    <plugin><groupId>org.owasp</groupId><artifactId>dependency-check-maven</artifactId><executions><execution><goals><goal>check</goal></goals></execution></executions>
    </plugin>
    
  2. 运行插件

    在IDEA主界面的右边侧边栏上找到 Maven 模块,在Plugins目录下双击Depedancy-check即可成功运作。

    image-20250311153303678

  3. 报告生成

    image-20250311165334078

    image-20250311165522186

6、安装codeql并对华夏erp进行漏洞扫描

  • 安装codeql

    1. 下载 codeql

    2. 配置环境变量(将下载的文件添加进环境变量,注意路径中不能出现中文等字符)

      验证: image-20250311172624350

  • vscode 插件(官方提供了VSCode编写CodeQL的插件)

    image-20250311173606450

  • 华夏erp进行漏洞扫描

    • 配置maven环境变量(由于因为华夏erp项目是基于Maven构建的,CodeQL在创建数据库时,会自动探测并使用对应的编译反式)

      D:\idea\IntelliJ IDEA 2024.1.4\plugins\maven\lib\maven3\bin

      验证:

      image-20250311181109976

    1. 创建“数据库”

      数据库是引擎将源码转换为可以识别的格式,用于后续规则分析(注意路径中不能含有中文等特殊字符)

      在华夏erp目录下执行如下命令,会自动编译并且为该项目创建⼀个名为HuaXia-qldb的QL数据库。

      codeql database create HuaXia-qldb -l java -j 0
      

      image-20250311211805134

    2. 执行查询

      使用官方默认的java漏洞查询规则进行分析并将结果保存到当前目录

      codeql database analyze HuaXia-qldb java-security-extended.qls --format=sarif-latest --output=results.sarif -j 0 -M 5000
      

      image-20250311212507610

      扫描完成在目录下生成results.sarif文件

    3. 分析结果

      安装sarif viewer插件

      image-20250311212839482

      使用vscode打开results.sarif

      image-20250311213822711

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897428.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AMM算法进阶

题目: from Crypto.Util.number import * import os from gmpy2 import *def getMyPrime1(nbits):while True:n = 2*1009*7*getPrime(nbits//2)*getPrime(nbits//2)if is_prime(n+1):return n+1def getMyPrime2(nbits):while True:n = 2*1009*getPrime(nbits//2)*getPrime(nbit…

AMM算法

题目: from Crypto.Util.number import * import os from gmpy2 import *def getMyPrime(nbits):while True:n = 2*1009*getPrime(nbits//2)*getPrime(nbits//2)if is_prime(n+1):return n+1p = getMyPrime(700) q = getMyPrime(700) n = p*qe = 1009flag = bNSSCTF{******} + …

[PaperReading] Scaling Vision Transformers to 22 Billion Parameters

目录名称TL;DRMethodCode && ImplementationExperiment实现细节Linear Eval on ImageNetZero-shot Eval on ImageNetDense PredictionRelated works中值得深挖的工作 名称 Scaling Vision Transformers to 22 Billion Parameters 论文链接 时间:2023.02 作者与单位:G…

【CF VP记录】Codeforces Round 1008 (Div. 2)

比赛链接 本文原文发布于博客园,如您在其他平台刷到此文,请前往博客园获得更好的阅读体验。 跳转链接:https://www.cnblogs.com/TianTianChaoFangDe/p/18766146 开题 + 补题情况 坠机场,要是赛时打了的话就又回青了,前两题很快开出来了,第三题脑残了,一开始觉得只需要构…

32位系统上的Linux的highmem

什么是highmem? Linux内存管理 highmem的出现与Linux的内存管理相关。众所周知,linux内核一般将处理器的虚拟地址空间分为两个部分。底部较大的部分用于用户进程,而顶部的较小部分用于内核。这个划分的比例通常是1:3(在编译内核时可以通过特殊的配置选项修改这个比例)。所…

halcon 深度学习教程(一)分类检测 (工业里如何使用halcon深度学习去检测分类产品)

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18766108深度学习教程目录如下,还在继续更新完善中 深度学习系列教程目录 本篇主要是入门halcon的深度学习篇,参考halcon实例classify_fruit_deep_learning.hdev,不过去实例的话会比较复杂一些,不便于理解,这…

3-11

今天学习android atudio 设置了Onclick事件监听 实现了页面跳转

浅谈动态 dp

DDP,即动态动态规划,一般是指在原有的 DP 模型上不断对初始值进行修改并得出答案。 一般而言都是进行单点修改,并且搭配数据结构以及矩阵进行实现。 这里要先给出一个前置知识: 广义矩阵乘法 原矩阵乘法式子为 \(C_{i,j}=\sum_kA_{i,k}\times B_{k,j}\)。 其实写成这样同样…

四款报表软件全解析:从山海鲸报表到Sisense的企业数据利器

概述 在大数据时代,企业对数据分析和决策支持的要求日益增强,报表软件已成为现代管理中不可或缺的重要工具。它们能够高效地整合、分析和展示数据,帮助企业从海量数据中快速提取有价值的信息,支持精准决策。本文将为大家介绍4款报表软件,这些软件各具特色,适用于不同规模…

day:16 银行项目转帐

一、手机转账 我主要负责了转账模块,这个大模块中包含了智能转账、手机转账、语音转账、预约转账、收款人管理等5个子模块,我这次着重介绍一下我们生活中使用最多的手机转账子模块。 对于转账需要关注的是转账前、转账中、转账后这三个状态下的测试。一个完整的业务流程就是用…

day:银行项目——理财业务

一、理财业务术语二、理财业务的分类三、购买流程理财客户签约风险评估理财产品的预约理财产品查询理财产品讲解 1、我最近做了一个银行项目,然后做了当时测试了当中的理财模块,我这边大概和您讲解一下 2、首先理财中有包括签约,风评,理财购买,赎回/撤销,以及理财查询,之…