• 代码审计 | 你一定会审的java系统


    1.背景

    一转眼2024年了,小帅的朋友----小胖今年就要毕业了,作为一个计算机科学与技术的大学生,在本科毕业的时候都会贡献出一套学生管理系统这样的毕业设计留给自己的母校,而小帅一个不甘平庸的安服仔,早早就开始布局java代码审计 ( 你这是看不起php? )。但是奈何网上的开源系统要么搭建繁琐,要么代码量巨大,功能太多,再或者就是一些java组件的代码审计,不适合新手入门,导致学习进度缓慢。既然小胖写了一套系统,这不刚好送上门吗?开干!

    2.环境

    问小胖要来部署文档,梦,开始了!

    源码下载

    https://gitee.com/huang-yk/student-manage

    环境

    1.Windows 10
    2.jdk "1.8.0_172"
    3.Mysql版本为5.7, PHPstudy集成的。
    4.IDEA版本随意 2022.2 专业版

    1.创建数据库

    cms

    1709540970_65e5866adfad43dba3485.png!small?1709540971523

    2.导入sql文件

    1709540991_65e5867fe630ccc6cdb15.png!small?1709540992178

    3.修改 application-local.yml 核心配置文件

    1709541006_65e5868ec0ed6214d4819.png!small?1709541007221

    4.加载 pom.xml 中的依赖

    1709541017_65e586995638c38e3b02e.png!small?1709541017873

    5.运行 启动文件

    1709541037_65e586ad1cd08a4085d8c.png!small?1709541037264

    访问

    http://localhost:8888/login/loginPage
    
    admin/123456

    1709541068_65e586cc83291e5453dc9.png!small?1709541069673

    1709541077_65e586d5a230582c60028.png!small?1709541077818

    3.目标

    通过该项目, 把java cms的代码审计checklist编写起来

    4.审计

    看一下源码的目录结构

    1709541132_65e5870c0039d98216a37.png!small?1709541132271

    先瞜一眼pom.xml , 很明显是一个spring的项目

    1709541144_65e587185c2626fa86dc3.png!small?1709541144958

    审计第三方组件 pom.xml

    fastjson
    mybatis
    shiro
    log4j

    4.1.fastjson代码审计

    使用idea打开项目,shift + ctrl + f 全局搜索,如果你是搜狗输入法请在高级中关闭

    1709541309_65e587bd7482ca28d7989.png!small?1709541309853

    全局搜索

    parse(
    parseObject(

    1709541351_65e587e75c14bdbd31d6c.png!small?1709541351401

    1709541359_65e587ef68c6ce63a2dc6.png!small?1709541359483

    无反序列化的函数调用, 漏洞不存在

    4.2验证码绕过

    直接黑盒测试, 发现登录存在验证码刷新机制

    1709541409_65e58821149911e036f63.png!small?1709541409238

    难道就不能爆破了吗?

    这里使用burp抓包测试

    1709541426_65e588324100736b2d698.png!small?1709541426762

    发现登录失败, 并不是302再次跳转到登录页面, 很有可能存在验证码未在后端刷新存在缺陷, 导致暴力破解漏洞

    抓包,尝试爆破

    1709541457_65e5885193151564f857c.png!small?1709541457840

    存在验证码缺陷导致的暴力破解漏洞

    源码分析

    1709541485_65e5886d3ae1ac570e171.png!small?1709541486099

    具体漏洞产生的原因就写在代码注释里面了

    4.3sql注入 

    项目使用的是mybatis, 直接全局搜索

    ${

    1709541525_65e58895dfe90b8dc4c95.png!small?1709541526024

    也是一个没有,不放心, 进入 dao/查看*.xml

    1709541545_65e588a970f42994b576e.png!s

  • 相关阅读:
    MySQL数据库管理
    《java核心卷Ⅰ》知识点总结(可作面试题)
    直播预告 | 容器服务 ACK 弹性预测最佳实践
    BTC价格预测:灰度突如其来的胜利是否会打破“九月魔咒”?
    Golang学习——基于vscode安装go环境
    如何部署lvs负载均衡集群 DR模式
    i7 13700k怎么样 i7 13700k核显相当于什么显卡
    【Linux】自旋锁 以及 读者写者问题
    LeetCode75——Day14
    3D模型人物换装系统(五 模型核批之后模型uv不正确)模型UV不正确
  • 原文地址:https://www.freebuf.com/articles/web/393271.html