某管理系统源代码审计
字数 1195 2025-11-21 12:34:03

某管理系统源代码审计教学文档

1. 鉴权绕过漏洞分析

漏洞位置

AuthInterceptor鉴权拦截器

漏洞原理

  • 系统使用request.getRequestURL().toString()获取请求路径
  • 第35行代码检查URL是否包含action中的内容,包含则返回true
  • action参数来源于stringArray[n2]
  • stringArrayopens变量生成

绕过方法

使用路径遍历符号/../进行权限绕过,即可绕过鉴权检查直接访问受保护资源

2. 前台任意文件上传漏洞

第一处上传点

漏洞位置

/app/uploadFileApp.do路由

漏洞代码分析

  • 第414行获取文件名
  • 直接构造文件路径,上传路径固定为/usr/web/resources/upload/
  • 使用FileUtils.copyInputStreamToFile写入文件
  • 缺乏文件后缀校验和安全检查

PoC

POST /app/uploadFileApp.do HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: 323

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: application/octet-stream

test
------WebKitFormBoundary7MA4YWxkTrZu0gW--

第二处上传点

漏洞位置

/manage/../vcsGroup/actionGroupAddFile.do路由

漏洞特点

  • 与第一处漏洞原理相同
  • 同样缺乏有效的过滤机制
  • 系统存在多处类似文件上传漏洞点

3. 前台SSRF漏洞

漏洞位置

/sdk/../grid/actionDownloadFile.do路由

漏洞原理

  • url参数用户完全可控
  • 参数未经任何校验或限制
  • 直接传递给downloadFormUrl方法发起HTTP请求

PoC

GET /sdk/../grid/actionDownloadFile.do?url=http://xxx.dnslog.cn&name=12121&length=2121212 HTTP/1.1
Host: target.com
Connection: keep-alive
sec-ch-ua-platform: "Windows"

4. 前台RCE漏洞

漏洞位置

命令执行功能模块

漏洞原理分析

参数接收

  • 接收typeIP参数
  • type=0时进入ping逻辑

命令构造

String ip = request.getParameter("ip");
String time = request.getParameter("time");
String cmd = "ping " + ip + " -i 1 -c " + time + " | awk ... > ...";
new MyThread(process, cmd, fileName).start();

执行流程

  1. 调用MyThread.run()
  2. 转到CMSTools.execCentosCmd(process, cmd, fileName)
  3. 整条命令字符串直接交给/bin/sh -c解析执行

漏洞验证

  • port参数同样存在命令注入风险
  • 可通过构造特殊参数实现远程代码执行

漏洞修复建议

鉴权绕过修复

  • 使用规范化的路径比较方法
  • 避免使用简单的字符串包含检查
  • 实现严格的身份验证和授权机制

文件上传修复

  • 实施白名单文件类型检查
  • 重命名上传文件
  • 限制上传目录的执行权限
  • 对文件内容进行安全扫描

SSRF漏洞修复

  • 对URL参数进行严格校验
  • 使用白名单机制限制可访问的域名/IP
  • 禁用危险的URL协议(如file://)

RCE漏洞修复

  • 避免直接拼接用户输入到系统命令
  • 使用参数化查询或安全的API调用
  • 实施严格的输入验证和过滤
  • 使用最小权限原则运行应用程序

总结

该管理系统存在严重的安全漏洞,包括鉴权绕过、任意文件上传、SSRF和RCE等高危漏洞。开发人员应重视安全编码实践,在系统设计和实现阶段充分考虑安全性,定期进行安全审计和代码审查,确保系统的安全性。

某管理系统源代码审计教学文档 1. 鉴权绕过漏洞分析 漏洞位置 AuthInterceptor鉴权拦截器 漏洞原理 系统使用 request.getRequestURL().toString() 获取请求路径 第35行代码检查URL是否包含 action 中的内容,包含则返回true action 参数来源于 stringArray[n2] stringArray 由 opens 变量生成 绕过方法 使用路径遍历符号 /../ 进行权限绕过,即可绕过鉴权检查直接访问受保护资源 2. 前台任意文件上传漏洞 第一处上传点 漏洞位置 /app/uploadFileApp.do 路由 漏洞代码分析 第414行获取文件名 直接构造文件路径,上传路径固定为 /usr/web/resources/upload/ 使用 FileUtils.copyInputStreamToFile 写入文件 缺乏文件后缀校验和安全检查 PoC 第二处上传点 漏洞位置 /manage/../vcsGroup/actionGroupAddFile.do 路由 漏洞特点 与第一处漏洞原理相同 同样缺乏有效的过滤机制 系统存在多处类似文件上传漏洞点 3. 前台SSRF漏洞 漏洞位置 /sdk/../grid/actionDownloadFile.do 路由 漏洞原理 url 参数用户完全可控 参数未经任何校验或限制 直接传递给 downloadFormUrl 方法发起HTTP请求 PoC 4. 前台RCE漏洞 漏洞位置 命令执行功能模块 漏洞原理分析 参数接收 接收 type 和 IP 参数 当 type=0 时进入ping逻辑 命令构造 执行流程 调用 MyThread.run() 转到 CMSTools.execCentosCmd(process, cmd, fileName) 整条命令字符串直接交给 /bin/sh -c 解析执行 漏洞验证 port 参数同样存在命令注入风险 可通过构造特殊参数实现远程代码执行 漏洞修复建议 鉴权绕过修复 使用规范化的路径比较方法 避免使用简单的字符串包含检查 实现严格的身份验证和授权机制 文件上传修复 实施白名单文件类型检查 重命名上传文件 限制上传目录的执行权限 对文件内容进行安全扫描 SSRF漏洞修复 对URL参数进行严格校验 使用白名单机制限制可访问的域名/IP 禁用危险的URL协议(如file://) RCE漏洞修复 避免直接拼接用户输入到系统命令 使用参数化查询或安全的API调用 实施严格的输入验证和过滤 使用最小权限原则运行应用程序 总结 该管理系统存在严重的安全漏洞,包括鉴权绕过、任意文件上传、SSRF和RCE等高危漏洞。开发人员应重视安全编码实践,在系统设计和实现阶段充分考虑安全性,定期进行安全审计和代码审查,确保系统的安全性。