东胜物流代码审计分析
字数 1401 2025-11-26 12:11:12
东胜物流系统代码审计教学文档
系统概述
东胜物流系统是一套采用MVC架构与WebForm架构相结合的物流管理系统。通过代码审计发现该系统存在多处安全漏洞,包括SQL注入、文件上传漏洞和XXE漏洞等。
漏洞分析
1. 鉴权机制分析
通过全局搜索RegisterRoutes可以确认该系统采用MVC架构。需要重点检查路由注册和权限控制机制是否存在缺陷。
2. SQL注入漏洞
第一处:GetUserModuleEnable方法
- 漏洞位置:涉及
modulename参数的处理 - 漏洞代码特征:
// 可控点modulename直接拼接
strSql += " AND M.ModuleName = '" + modulename + "'";
- 漏洞原理:用户输入的
modulename参数未经过滤直接拼接到SQL语句中 - 审计要点:查找所有使用字符串拼接方式构建SQL语句的代码段
第二处:GetFeeOpRang方法
- 漏洞位置:
optype参数处理链 - 调用链:
GetFeeOpRang→GetRangDASQLStr - 漏洞代码特征:
// tb参数直接拼接
where += " AND " + tb + ".OpType = '" + optype + "'";
- 审计要点:跟踪参数传递过程,检查每一层是否进行安全过滤
第三处:AttributeAdapter类
- 触发条件:当
strHandle == "attrinfo"时 - 漏洞代码特征:
if (!string.IsNullOrEmpty(strAttributeID))
{
tempAttrSql += " AND A.GID = '" + strAttributeID + "'";
}
- 漏洞原理:
strAttributeID参数直接拼接到SQL查询条件中 - 审计要点:关注条件判断分支中的SQL拼接操作
3. 文件上传漏洞
第一处:FileInputHandler/Upload接口
- 漏洞特征:
// 仅获取文件扩展名,无白名单校验
string extension = Path.GetExtension(uploadFile.FileName);
// 直接保存文件
uploadFile.SaveAs(savePath);
- 漏洞原理:仅通过
Path.GetExtension获取扩展名,但未进行任何白名单或黑名单验证 - 修复建议:实现严格的文件类型白名单验证机制
第二处:MsWl_HaierMain/File接口
- 特殊要求:需要额外提供
ACCDATE参数(任意日期值) - 漏洞特征:接受file参数直接处理上传,缺乏安全校验
- 审计要点:检查所有文件上传功能点的参数验证逻辑
4. XXE漏洞
UpdateCustomMainfast方法
- 漏洞代码:
xobj.LoadXml(Xdoc); // 未设置XmlResolver = null
- 漏洞原理:XML解析器未禁用外部实体解析,导致XXE攻击可能
- 安全修复:
xobj.XmlResolver = null; // 禁用外部实体解析
xobj.LoadXml(Xdoc);
- 审计要点:检查所有XML解析操作是否配置安全参数
代码审计方法论
1. 入口点识别
- 全局搜索路由注册方法(如
RegisterRoutes) - 分析控制器和API端点定义
- 识别用户输入接收点
2. SQL注入检测模式
- 搜索字符串拼接操作(
+操作符) - 识别直接参数嵌入SQL语句的模式
- 跟踪参数传递链,检查每一层过滤情况
3. 文件上传漏洞检测
- 查找
SaveAs、文件保存相关方法 - 检查文件类型验证逻辑
- 验证文件路径安全性
4. XXE漏洞检测
- 搜索
LoadXml、XML解析相关方法 - 检查
XmlResolver配置情况 - 验证XML处理的安全配置
修复建议
SQL注入修复
- 使用参数化查询替代字符串拼接
- 实施输入验证和过滤机制
- 采用ORM框架避免直接SQL操作
文件上传安全
- 实现严格的白名单文件类型验证
- 重命名上传文件,避免原始文件名使用
- 限制上传目录的执行权限
XXE防护
- 禁用XML外部实体解析
- 实施XML schema验证
- 使用安全的XML解析配置
总结
通过本次审计可以发现,东胜物流系统在多个关键安全领域存在严重漏洞。在进行代码审计时,需要重点关注用户输入处理、数据库操作和文件操作等关键环节,建立系统的安全检测流程和方法论。