从无危害逻辑漏洞到通用漏洞挖掘
字数 1582 2025-08-03 16:43:23
从无危害逻辑漏洞到通用漏洞挖掘技术分析
漏洞发现过程概述
-
初始侦察
- 目标为一个管理平台,初步测试常见弱口令无果
- 转向前端代码分析,寻找潜在敏感接口
-
前端代码审计
- 通过浏览器开发者工具(F12)检查页面JavaScript
- 在源代码中发现关键登录验证逻辑:
// 验证逻辑关键代码 if(data.code > 0) { // 保存cookie、设定各项值 // 重定向到MainPage.html } - 表明系统仅通过
data.code返回值判断登录状态
-
登录绕过漏洞利用
- 任意输入账号密码并拦截返回包
- 修改返回包中
code值从0改为1 - 成功绕过认证进入后台
-
后台功能受限分析
- 因绕过认证,后台功能显示不全
- 仅可见"修改密码"功能(需旧密码,无法直接利用)
-
深入JS审计发现SQL注入
- 刷新页面观察加载的JS文件
- 在
mainpage.js中发现数据请求接口 - 测试发现SQL注入漏洞特征:
- 不加参数返回大量数据
- 参数1返回错误页面
- 单引号测试触发500错误
- 双单引号返回正常(存在注入)
- 确认使用PostgreSQL数据库
- 同JS中发现多处类似接口均存在注入
关键技术点详解
1. 前端逻辑漏洞挖掘方法
-
JS代码审计要点:
- 查找未在前端显示但存在于代码中的功能接口
- 特别关注认证/授权相关逻辑
- 检查所有客户端状态验证机制
-
常见漏洞模式:
- 仅前端验证的状态码控制(如本案例的code>0判断)
- 隐藏API端点
- 客户端存储的敏感信息
2. 返回包篡改技术
-
实施步骤:
- 正常发起请求并拦截返回包
- 定位关键状态标识字段(如code)
- 修改为有利值(0→1)
- 放行修改后的返回包
-
防御缺失:
- 缺乏返回数据完整性校验
- 无签名或加密保护
- 服务端未做二次验证
3. 后台JS文件分析方法
-
技术要点:
- 刷新页面观察浏览器加载的JS资源
- 系统性地审查每个JS文件
- 查找包含以下关键词的函数:
- API
- Request
- Data
- Fetch
- Ajax
-
工具建议:
- 浏览器开发者工具"Network"面板
- "Sources"面板静态分析
- 使用Pretty Print格式化压缩代码
4. SQL注入漏洞挖掘技巧
-
测试流程:
- 参数化请求测试(空参数、合法值)
- 特殊字符测试(单引号、双引号)
- 观察响应差异(错误信息、状态码)
- 布尔测试(and 1=1 / and 1=2)
- 时间延迟测试
-
PostgreSQL特定注入技术:
- 注释符:
--或/* */ - 字符串连接:
|| - 信息查询:
pg_catalog模式 - 系统函数:
version(),current_user
- 注释符:
漏洞防御建议
1. 认证逻辑加固
- 实施措施:
- 服务端会话状态管理
- 多因素认证校验
- 关键操作二次认证
- JWT签名验证
2. 接口安全防护
- 推荐方案:
- 输入参数严格类型检查
- 参数化查询/ORM使用
- API请求签名机制
- 速率限制和异常检测
3. 前端安全实践
- 必要措施:
- 敏感接口隐藏或权限校验
- 最小化暴露客户端逻辑
- 代码混淆和压缩
- CSP策略实施
扩展攻击面分析
-
横向移动可能性:
- 通过SQL注入获取数据库敏感信息
- 查询其他管理员凭证
- 查找密码哈希或会话令牌
-
权限提升路径:
- 分析数据库中的权限配置表
- 查找后台功能对应的存储过程
- 尝试修改用户权限属性
-
持久化方法:
- 通过SQL注入写入webshell
- 修改现有JS文件植入恶意代码
- 创建隐藏管理员账户
漏洞挖掘方法论总结
-
系统化测试流程:
- 认证机制→业务逻辑→数据交互
- 前端→后端→数据库完整链条
-
关注非常规入口点:
- 隐藏的JS接口
- 未文档化的API
- 调试遗留功能
-
漏洞关联分析:
- 初级漏洞可能导向更严重问题
- 组合利用多个低危漏洞
- 保持对异常现象的敏感度
-
工具辅助思维:
- 人工分析确定方向
- 工具自动化验证
- 保持对工具结果的质疑
本案例展示了从简单的逻辑漏洞入手,通过系统化分析和深入挖掘,最终发现高危SQL注入漏洞的完整过程,体现了现代Web应用安全测试的典型思路和方法。