[艰难的某次众测]代码审计到前台rce+几个高危
字数 1547 2025-08-10 08:28:07
代码审计实战:从前台RCE到高危漏洞挖掘
1. 漏洞挖掘整体思路
本次众测展示了从信息收集到最终获取系统权限的完整过程,主要包含以下几个关键阶段:
- 目标识别与框架分析
- 弱口令利用与后台渗透
- SQL注入与路径猜测
- 文件上传漏洞利用
- 代码审计与同框架分析
- 前台RCE漏洞挖掘
2. 详细技术要点解析
2.1 信息收集与框架识别
关键点:
- 发现目标使用不常见框架时,立即全网搜索同框架的其他实例
- 通过版本差异分析(6.0 vs 7.0)寻找可利用点
- 查找安装教程获取路径信息
技巧:
- 使用搜索引擎查找同框架的其他实例
- 对比不同版本的功能差异和安全措施
- 仔细阅读安装文档寻找路径泄露等敏感信息
2.2 弱口令利用技术
发现过程:
- 初始测试发现admin/123456弱口令(6.0版本)
- 目标系统(7.0)使用加密密码
- 通过"忘记密码"功能获取加密字符串
- 后台找到可回显明文密码的位置
密码重置技巧:
- 利用数据库备份/还原功能替换密码字段
- 当直接上传失败时(90%中断),考虑:
- 修改请求方式(POST/GET)
- 尝试分块上传
- 修改文件头信息
- 尝试不同文件格式
2.3 SQL注入到Getshell
关键步骤:
- 发现SQL注入点
- 通过注入获取路径信息(常规方法失败)
- 通过其他端口发现目录遍历漏洞
- 从日志文件中获取路径信息
- 结合安装教程确认绝对路径
- 最终成功写入webshell
路径猜测技巧:
- 检查非常规端口服务
- 分析日志文件(access.log, error.log等)
- 查找安装配置文件
- 尝试常见路径组合
2.4 高危漏洞挖掘
高危1:任意用户登录
利用方法:
- 通过数据库操作修改用户凭证
- 当webshell无法直接连接数据库时:
- 在目标服务器上执行数据库操作
- 添加或修改目标用户记录
- 通过代码逻辑分析解密算法
高危2:弱口令发现
发现过程:
- 后台存在特殊格式账号(如zzzzzz)
- 测试发现通用密码(123456)
- 批量验证此类账号
严重漏洞:前台RCE
利用过程:
- 初始在6.0版本发现前台文件上传
- 目标7.0版本过滤机制增强
- 全网寻找7.0版本进行测试
- 发现uploadfile参数控制后缀
- 修改为ashx后缀绕过过滤
文件上传绕过技巧:
- 分析上传参数命名规律
- 尝试非常见可执行后缀(ashx, asmx等)
- 修改Content-Type头
- 尝试双重后缀(xxx.jpg.php)
3. 代码审计重点
3.1 文件上传漏洞审计要点
- 检查所有文件上传功能点
- 分析文件类型检测逻辑:
- 后缀名检查
- 内容检测
- MIME类型验证
- 检查存储路径是否可预测
- 验证文件名处理逻辑
3.2 加密算法分析
- 定位密码加密/解密函数
- 分析"忘记密码"功能流程
- 跟踪加密字符串生成过程
- 寻找可逆加密或弱加密实现
4. 防御建议
4.1 针对文件上传漏洞
- 实施严格的白名单文件类型检查
- 对上传文件重命名(不可预测)
- 存储上传文件在非web目录
- 禁用上传文件的执行权限
4.2 针对认证漏洞
- 实施强密码策略
- 禁用默认账号或修改默认密码
- 密码加密使用强哈希算法(如bcrypt)
- 限制密码重置功能的安全性
4.3 通用防御措施
- 定期更新框架和组件
- 禁用不必要的服务和端口
- 实施严格的输入验证
- 错误信息中不泄露系统路径
5. 总结与经验
- 持久性:漏洞挖掘可能需要长时间坚持(本次花费2天)
- 多角度尝试:当一个方法失败时,立即转向其他可能性
- 版本差异分析:不同版本的安全措施可能不同
- 全面信息收集:安装文档、日志文件等都可能包含关键信息
- 代码审计价值:深入理解代码逻辑可以发现隐藏漏洞
通过系统性地应用这些技术和方法,安全研究人员可以有效地发现和利用Web应用中的安全漏洞,同时帮助开发人员提高应用程序的安全性。