1. 问题说明

验证移动客户端 APP 和服务器之间是否存在双向验证机制,同时还需要确认此验证机制是否完善,是否能被绕过,服务器是否以白名单的方式对发包者的身份进行验证。如果手机中存在恶意程序,就可能会劫持数据,造成信息泄漏等风险。

2. 测试步骤

使用抓包软件如 BurpSuite 进行代理抓包,检查抓包软件能否正常解密 HTTPS 的通信数据,如果能则说明 APP 未验证证书有效性。

将 BurpSuite 根证书导入手机,再使用 BurpSuite 进行代理抓包,检查抓包软件能否正常解密 HTTPS 的通信数据,若能则说明 APP 信任当前设备根证书。

可以发现下图就使用 BurpSuite 抓取到了 APP 的 HTTPS 通信数据包,并且能解密看到正常的数据包内容。

SSL 证书有效性检测 - 图1

3. 修复建议

建议移动客户端 APP 和服务器进行双向认证,并且服务器通过白名单的方式验证移动客户端证书以保证证书的有效性。使用「证书或公钥锁定」的办法来防护证书有效性未作验证的问题。详情请查看:https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning。