其他
Android APP漏洞之战—验证码漏洞挖掘详解
本文为看雪论坛优秀文章
看雪论坛作者ID:随风而行aa
一
简介
二
基础知识
1、APP抓包技术详解
(1)高版本android系统证书导入
root权限下:
mount -o remount,rw /system
cp * /etc/security/cacerts/
chmod 777 /etc/security/cacerts/*
mount -o remount,ro /system
reboot
(2)HTTPs双向认证及解决方案
解决办法
(1)获取客户端的证书,可以通过编写hook脚本的方式,获取客户端证书及密码
(2)将客户端证书导入到抓包软件charles中,使得Charles能都获取服务端信任(这里一般可以使用charles、Burpsuit软件)
tree -NCfhl |grep -i p12
(3)VPN代理机制
System.getProperty(“http.proxyHost”);
System.getProperty(“http.proxyPort”);
(4)SSL pinning
(1)识别证书绑定
(2)先使用开源框架objection或DroidSSLUnpinning先去简单hook
(3)不成功,再去分析APP使用哪种开发框架,去有针对性的进行hook
(4)如果不知道开发框架,可以采用Hook Java的File构造函数进一步去定位证书绑定代码
hook模式启动:android sslpinning disable
spwan模式启动:objection -g 包名 explore -s "android sslpinning disable"
针对开发框架,有针对性hook
我们需要分析APP采用何种开源框架,如okhttp等,不过这里一般开源hook工具objection已经针对了当下的很多开源框架了,所以如果没有成功,可能是程序进行了混淆,这个时候就需要进一步去hook正确的绑定函数 未知开源框架我们对File构造函数进行hook,然后可以观察对应的调用链信息,从而分析出证书绑定的函数:再针对这里找到的函数进行正确的hook,即可。
(5)VPN+Charles+Burpsuit环境配置
我们经过上面一系列流程基本可以解决当下常见的安全防护形式,当然针对更加安全的抓包防护策略就需要深入的解决了,这里我们介绍一下本文的抓包环境搭建,一般使用通过VPN+Charles+Burpsuit的组合抓包方式。 首先先配置VPN+Charles的抓包模式:然后我们将Charles的流量去导入到Burpsuit中,这样就可以实现组合使用,当然根据实际情况你也可以选择合适抓包工具。
三
验证码漏洞安全场景和分类
1、验证码漏洞安全场景
验证码漏洞一般是APP对验证码没有进行登陆校验等安全防护导致的,攻击者一般可以利用验证码漏洞进行暴力破解实现任意号码登陆、还可以实现短信轰炸、导致验证码泄露、手机号换绑、验证码无限发送风险、万能验证码登录、修改返回包绕过验证码登录等安全问题,验证码漏洞在APP中的影响十分严重,一般会造成严重的经济损失。2、验证码漏洞分类
我们根据上面的描述,可以将验证码漏洞分为如下几类:四
验证码漏洞原理分析和复现
1、验证码暴力破解漏洞
(1)原理分析
验证码暴力破解漏洞一般是因为用户使用手机号+验证码的方式进行登陆时,短信验证码一般由4-6位数字组成,而且APP并未对验证码做时间和失败次数校验,所以攻击者可以通过这个区间的所有数字进行暴力破解来进行攻击。(2)漏洞复现
案例:XX APP为例我们打开APP,发现该APP并未对登录号码进行验证,而且返回的验证码是4位验证码,这里我们就十分怀疑是否能进行验证码暴力破解。 然后我们使用上面搭建好的抓包环境,随便输入一个验证码去抓取错误信息:
然后我们就成功暴力破解出验证码,这里我们发现还可以输入任意的号码18888888888同样可以成功登录,而且可以获取其他用户的订单信息。
最后类似漏洞危害,如下:
(3)安全防护
(1)设置验证码时间验证,一般建议为180s
(2)限制单位时间内验证码失败的尝试错误,如5分钟连续失败即锁定账号
(3)对验证码进行加密传输
2、验证码无限次数发送(短信轰炸)
(1)原理分析
验证码无限次数发送、短信轰炸漏洞一般是APP端并没有对手机号码进行次数显示,也未对访问进行时间限制。(2)漏洞复现
我们首先对上面的APP进行发送验证码,查看响应的报文:我们发现可以验证码无限次数发送,但是无法进行短信轰炸,因为验证码做了60s校验,于是尝试去分析APP代码。 我们将APP拖入GDA分析:
(3)安全防护
(1)增加验证码发送校验时间间隔
(2)采用代理池对ip进行限制
3、验证码泄露风险与万能验证码漏洞
(1)原理分析
验证码执行【找回密码】操作时,输入手机号,获取验证码,服务器会向手机发送验证码,通过burpsuite抓包工具,查看返回的响应数据包中如果包含验证码,则可能导致用户密码恶意重置、绑定手机号被恶意更换等风险。 万能验证码一般是开发在业务未上线的时候为了方便测试用的,上线后忘记删除了,例如8888 0000 1234等等。(2)安全防护
因为当下这种漏洞较少,这里没有找到合适案例,就只简单介绍下原理了4、修改返回包绕过登录漏洞
(1)原理分析
在APP验证码测试过程中,我们发现很对APP并未对登录成功的响应报文进行校验,导致我们获取登录成功的响应报文后,就可以通过正确的响应报文实现任意号码的登录,导致信息泄露。(2)漏洞复现
案例:XXAPP然后我们注意设置对响应进行抓取:
(3)安全防护
五 实验总结 |
六
参考文献
代码验证码漏洞:
https://www.52pojie.cn/thread-1613856-1-1.html
https://www.jianshu.com/p/d2b4c6a54d68
https://www.bilibili.com/read/cv4218190
短信轰炸漏洞:
https://www.anquanke.com/post/id/93878
https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=27614
看雪ID:随风而行aa
https://bbs.pediy.com/user-home-905443.htm
# 往期推荐
5.Go解析
球分享
球点赞
球在看
点击“阅读原文”,了解更多!