产品经理给我分配了一个应用测试的工作(为什么是产品经理给我分配这个工作?我负责技术部),既有应用,也有iOS应用。我有点迷茫,Web渗透测试和服务端渗透测试呢?虽然迷茫,但凭借强大的自学能力,我还是学到了下面的这篇文章。工欲善其事,必先利其器。先理清思路,这样才能顺利渗透,不会手忙脚乱。
安全威胁分析:
App渗透测试,从源头上来说威胁不外乎三个方面:
其实web端好像也存在这三个方面。
面临的主要风险:
客户:
数据传输:
服务器:
APP安全检测内容:
以及服务器和业务逻辑安全
安全测试流程:
移动应用安全测试的要点
安全检测点:漏洞
.xml文件中的属性值被设置为true,当该标志为true时,用户可以通过adb备份应用数据,应用中存储的所有数据都可以在无需root的情况下导出,造成用户数据严重泄露。
修复建议:
将参数:设置为 ,则应用数据无法备份。
漏洞
该应用程序存在漏洞,没有对已注册的JAVA类的方法调用进行任何限制,这导致攻击者可以利用反射机制调用任意其他未注册的JAVA类,最终导致代码对设备发起任意攻击。
修复建议:
通过在 Java 远程方法上声明 @ 而不是 ce;
使用时需要对每个传入的参数进行验证,以屏蔽攻击代码;
注意:控制相关权限或者尽量避免使用。
关键数据明文传输
应用程序在登录过程中,采用http协议明文传输用户名和密码,且未对用户名和密码进行加密,通过监听网络数据可截取用户名和密码数据,造成用户信息泄露,给用户带来安全风险。
修复建议:
敏感信息在传输时应该加密。
任意账户注册
使用手机号133*****887注册APP,获取验证码;
确认提交的时候,拦截请求,修改注册手机号即可注册任意账号,这里修改为1338*****678(任意手机号);
您可以分别使用133*****887、133*****678(任意手机号码)登录,即可通过验证登录并查看最终结果。
修复建议:
在注册过程中提交最后确认时,服务器应该验证提交的账号是否是发送验证码的手机号码。
登录界面可能被钓鱼劫持
应用存在钓鱼劫持风险,应用未采取防钓鱼劫持措施,通过劫持应用登录界面,可获取用户的账号及密码,可能导致用户账号信息的泄露。
修复建议:
应用程序本身通过获取栈顶来确定系统中当前正在运行的程序,一旦检测到应用程序切换(可能被劫持)则提示用户,防范钓鱼欺诈。
获取栈顶(如下图),遇到敏感切换(登录、交易等)时判断当前程序是否还在原程序,如果不是,给用户提示。
采用架构+混合开发的方式实现登录、支付等关键页面,降低被劫持的风险。
移动应用的典型安全漏洞
在手机APP渗透测试中,博主总结了几种常见的手机APP安全漏洞,包括图形验证码逻辑后门、用户敏感信息泄露、开发者渗透等,APP开发工程师需要对此引起重视。
图形验证码逻辑后门
案件概况
A公司是一家上市信息技术公司,国内多家商业银行是其客户。在分析A公司的手机银行产品时,我们发现该产品的图形验证码机制存在可绕过的逻辑后门,利用该漏洞可窃取大量用户账户。由于外包团队的代码复用,我们在至少两家商业银行的手机银行系统中复现了此安全问题。
后果:大规模账号暴力攻击。
一般来说,多数用户习惯将手机银行密码设置为六位数字,且查询密码与交易密码设置为相同概率较大。攻击者可查找该区域内的手机号范围作为登录用户名,利用六位密码字典进行暴力破解,轻而易举便可获取数十万个手机银行账户信息。
用户敏感信息泄露
案件概况
B公司也是一家上市科技公司,金融客户遍布全国,使用B公司手机银行解决方案的客户至少包括两家全国性股份制商业银行和多家城市商业银行。在分析B公司手机银行产品的安全性时,发现服务端调试接口未关闭,导致大量用户敏感信息泄露。这个问题其实比较常见,往往是由于外包开发完成后上线过程中的疏忽造成的。其实更常见的例子就是客户端输出调试信息的问题。
调试接口会将用户转账的详细信息输出到web目录下的test.log文件中,攻击者可以通过浏览器直接访问这个日志文件,其中记录了系统的每一笔转账交易,从中可以获取大量的用户账号、手机号、卡号、交易密码等信息。
开发人员被入侵
案件概况
国内某漏洞平台曾曝光过这样的漏洞:某大型银行的手机银行iOS客户端中存在一个txt文件,其中保存着一个SVN服务器的IP地址、用户名和密码,黑客解压该文件获取到信息后,即可直接连接服务器上的文件。
svn服务器上存储的内容包括银行手机银行系统所有项目文档,完整及IOS客户端代码,甚至还包括客户端签名所用的数字证书。
本文是学习了网上其他文章后总结整理出来的,供工作时参考,具体的渗透工具教程下次更新。