分享某单位众测项目渗透测试经验
字数 1752 2025-08-22 12:22:30
渗透测试实战经验:短信轰炸、验证码爆破、任意用户注册与SPF邮件伪造漏洞详解
资产信息收集
资产测绘方法
-
初始资产获取:
- 众测项目通常会提供资产汇总表格
- 包含域名、IP、APP、Web站点、微信小程序等资产
-
子域名收集工具:
- 灯塔/无影工具:联合FOFA进行子域名挖掘和指纹识别
- 建议仅使用指纹识别功能,避免触发安全设备
- OneForAll:专业子域名收集工具
- 使用流程:
- 将目标域名放入txt文件
- 执行收集命令
- 导出结果后筛选状态码为200的域名
- 进行域名和IP去重
- 使用流程:
- 灯塔/无影工具:联合FOFA进行子域名挖掘和指纹识别
-
POC验证平台:
- 推荐DayDayPOC平台(https://www.ddpoc.com/)
- 包含最新漏洞的详细POC信息
- 需要注册登录后才能查看
-
资产验证:
- 使用鹰图平台验证子域名是否属于目标企业
- 检查ICP备案信息确认资产归属
短信轰炸漏洞
漏洞原理
通过绕过短信验证码发送限制,实现短时间内向同一手机号发送大量验证码短信,消耗企业资源。
测试方法
-
基础测试:
- 访问注册页面,使用Burp Suite抓取发送验证码的请求
- 观察首次发送成功后的限制机制
-
绕过技术:
- 测试发现可通过特殊字符绕过发送限制:
@、空格、+86、逗号等
- 在手机号前后添加这些字符可能绕过频率限制
- 测试发现可通过特殊字符绕过发送限制:
-
自动化轰炸:
- 使用Burp Suite的Intruder模块
- 添加多个绕过字符变体进行批量发送
- 目标:每分钟发送15-30条以上验证码
修复建议
- 验证码绑定手机号,防止通过其他途径发送
- 限制同一手机号验证码发送频率
- 增加验证码复杂度
- 限制相同IP/设备的请求频率
验证码爆破漏洞
漏洞原理
验证码位数过少(如4位)且无尝试次数限制,可通过暴力破解方式获取正确验证码。
测试方法
- 接收验证码短信,确认位数(通常4或6位)
- 使用Burp Suite的Intruder模块:
- 设置payload范围为0000-9999(4位验证码)
- 观察响应差异或长度识别正确验证码
修复建议
- 增加验证码位数(建议6位以上)
- 加入字母或特殊字符组合
- 限制尝试次数
- 增加验证码失效时间
任意用户注册漏洞
漏洞原理
系统未正确验证手机号与验证码的绑定关系,导致可通过伪造手机号+爆破验证码方式注册任意用户。
测试方法
-
抓取关键请求:
- 注册页面输入随机手机号
- 抓取两个关键请求:
- 包含手机号和验证码输入功能的请求
- 发送验证码的请求
-
验证码爆破:
- 对验证码进行4位数爆破
- 观察注册成功响应
修复建议
- 严格绑定手机号与验证码关系
- 增加图形验证码等二次验证
- 限制同一IP的注册频率
- 实施手机号实名验证
SPF邮件伪造漏洞
漏洞原理
由于SPF(Sender Policy Framework)记录配置不当或缺失,导致攻击者可伪造特定域名的发件人发送邮件。
SPF记录解析
-
关键参数:
v=spf1:SPF版本标识-all:严格策略,不允许未列出的服务器发送~all:宽松策略,未列出的服务器可能被接受
-
检测方法:
- 使用nslookup命令:
nslookup -type=txt 目标域名 - 使用dig命令:
dig -t txt 目标域名
- 使用nslookup命令:
-
SPF验证工具:
- 在线验证:https://www.kitterman.com/spf/validate.html
漏洞利用
-
测试条件:
- 目标域名无SPF记录
- 或SPF记录配置错误(如语法错误)
- 或使用
~all策略
-
利用工具:
- 使用Kali自带的swaks工具:
swaks --body "邮件内容" --header "Subject:邮件主题" -t 目标邮箱 -f 伪造发件人 - 临时邮箱服务:http://24mail.chacuo.net/
- 使用Kali自带的swaks工具:
-
钓鱼利用:
- 伪造官方邮件地址(如HR@company.com)
- 设计诱导性主题和内容
- 可能进入垃圾邮件箱,需优化内容
修复建议
- 为域名添加正确的SPF记录
- 使用
-all策略而非~all - 定期检查SPF记录语法是否正确
- 结合DKIM和DMARC提高邮件安全
总结与注意事项
-
漏洞危害等级:
- 短信轰炸/验证码爆破:中危
- 任意用户注册:中高危
- SPF邮件伪造:高危(可用于钓鱼攻击)
-
测试注意事项:
- 遵守测试范围,避免未经授权的测试
- 敏感信息需打码处理
- 注意测试频率,避免对生产系统造成影响
-
漏洞报告要点:
- 清晰描述漏洞复现步骤
- 提供完整请求/响应示例
- 附上修复建议
-
持续学习:
- 关注最新漏洞POC
- 参与安全社区交流
- 定期更新测试工具和方法