某oa java代码审计1
字数 1146 2025-08-10 08:28:40
某OA系统Java代码审计教学文档
一、前言
本文档基于某OA系统的Java代码审计实战案例,详细分析了两处安全漏洞:前台任意文件读取和后台getshell漏洞。通过本案例学习,可以掌握基本的Java Web应用代码审计方法和漏洞利用技巧。
二、环境搭建
1. 系统安装
- 从官网下载OA系统安装包
- 默认安装过程会自动安装Tomcat、Java和MySQL
- 安装完成后目录结构包含web目录(oa目录)
2. 开发环境配置
- 使用IntelliJ IDEA作为开发工具
- 将WEB-INF/classes和lib目录添加为项目库
- 配置完成后即可开始代码审计
三、漏洞分析与利用
1. 前台任意文件读取漏洞
漏洞位置
public/getfile.jsp文件
漏洞分析
-
参数处理逻辑:
- 首先检查
user参数是否为空,为空则检查用户登录状态 - 接受三个参数:
filename、extname和prop
- 首先检查
-
路径拼接逻辑:
- 检查
prop参数是否等于"activex" - 如果等于,则构造路径:
web路径 + activex + filename + extname - 如果不等于,则使用系统默认配置路径
- 检查
-
漏洞成因:
filename和extname参数未做安全过滤- 可通过路径遍历(
../)访问系统任意文件
漏洞利用
- 基础利用:
GET /oa/public/getfile.jsp?user=1&prop=activex&filename=../public/getfile&extname=jsp HTTP/1.1
Host: 192.168.222.129:8088
- 读取MySQL数据库文件:
http://192.168.222.129:8088/oa/public/getfile.jsp?user=1&prop=activex&filename=../../mysql5.1.46/data/ibdata1&extname=
- 提取密码:
- 使用UTF-8编码打开下载的文件
- 使用正则表达式搜索管理员密码:
admin([a-f\d]{32}|[A-F\d]{32})
2. 后台getshell漏洞
前提条件
- 已通过前台漏洞获取管理员密码
- 成功登录后台系统
漏洞位置
网盘文件上传功能
漏洞分析
-
正常上传流程:
- 上传文件到
upfile\file_netdisk\admin\目录 - 可通过重命名功能修改文件后缀
- 上传文件到
-
漏洞成因:
- 文件上传后未做内容检查和后缀限制
- 重命名功能可任意修改文件后缀为可执行后缀(如.jsp)
漏洞利用
- 上传webshell文件
- 通过重命名功能将文件后缀改为.jsp
- 访问上传的webshell:
upfile\file_netdisk\admin\1z.jsp
四、修复建议
1. 任意文件读取漏洞修复
- 对
filename参数进行严格过滤,禁止路径遍历字符(../) - 限制文件读取范围为指定目录
- 对
extname参数进行白名单验证
2. 后台getshell漏洞修复
- 对上传文件内容进行安全检查
- 实现文件后缀白名单机制
- 禁止通过重命名功能修改文件后缀
- 将上传目录设置为不可执行
五、总结
本案例展示了从代码审计到漏洞利用的完整过程:
- 通过关键词搜索定位潜在漏洞点
- 分析参数处理逻辑和安全缺陷
- 构造有效攻击载荷
- 利用漏洞获取系统权限
关键学习点:
- 文件操作相关的安全风险
- 未过滤用户输入的危害
- 权限控制不严的后果
- 从代码审计到实际渗透的完整链条