代码审计之fortify工具篇
字数 1151 2025-08-18 11:38:56
Fortify工具在代码审计中的应用与实践
一、前期准备
-
目标系统获取
- 从官网下载目标CMS系统(文中未明确具体系统)
- 安装过程分析(可选):许多系统会删除安装包,可研究安装过程中的潜在漏洞
-
系统架构分析
- 入口文件
index.php定义了NoDb常量 - 加载全局配置文件
config.php - 根据
NoDb值决定是否初始化数据库
- 入口文件
-
安全机制分析
_stripslashes函数:检测并处理自动转义功能- 路由处理:
match_route()函数负责读取数据库并进行缓存操作 - 模板处理流程:缓存记录→初始化模板→加载模板→模板解析→显示
二、Fortify工具辅助审计
1. XSS漏洞审计
- 发现点:输入框未进行充分过滤
- 数据流分析:
- 用户输入→数据库存储→前端显示
- 关键过滤函数
dbstr分析:- 过滤单引号
- 转义反斜线
- 未过滤尖括号
- 验证Payload:
<script>alert(1)</script> - 结论:存在存储型XSS漏洞
2. 文件包含漏洞审计
- 发现点:需要两个参数
do和nohtml - 参数处理逻辑:
do参数值进行分隔处理(路径和文件名)- 验证函数使用正则限制:
- 仅允许数字和字母
- 长度限制
- 后缀限制
- 漏洞评估:
- 存在有限制的文件包含
- 需要突破正则限制才能扩大包含范围
3. 后台安全分析
- 文件管理系统风险:
- 获取后台权限即等同于高危漏洞(CNVD标准)
- 可直接上传/管理Webshell
- 登录机制分析:
- 无验证码保护
- 登录限制:15分钟内最多20次尝试
- 限制绕过可能性:
- 通过代理IP池轮换IP地址
- 可突破15分钟20次的限制
4. SQL注入分析
- 登录SQL分析:
- 验证SQL语句无注入漏洞
- 第三方登录机制:
code参数为空时可能绕过认证- 空字符串在单引号中的特殊处理
三、安全加固建议
-
XSS防护:
- 增加HTML标签过滤(特别是尖括号)
- 输出时进行HTML实体编码
-
文件包含防护:
- 严格限制包含文件路径
- 使用白名单机制替代正则过滤
-
认证加固:
- 增加图形验证码
- 实现账户锁定机制
- 加强密码策略
-
日志监控:
- 记录失败登录尝试
- 监控可疑IP行为
四、审计技巧总结
- 工具辅助:利用Fortify等工具快速定位潜在漏洞
- 代码追踪:关键函数(如
dbstr)需要深入分析 - 数据流分析:从输入点到最终输出的完整路径检查
- 权限边界:特别关注后台功能的访问控制
- 默认配置:检查默认账户和第三方集成组件的安全性
五、扩展资源
- Tide安全团队官网:http://www.TideSec.net
- 持续关注最新Web安全技术和漏洞趋势
通过系统化的代码审计流程和工具辅助,可以有效发现和修复Web应用中的安全漏洞,提升整体安全性。