移动安全app渗透测试之渗透流程、方案及测试要点讲解

被产品经理分到了个app测试的活,(话说为啥是产品经理给派活,我不是归技术总监管么),包含安卓端的和ios端的,有点懵逼,说好的web渗透测试和服务器端渗透测试呢,虽然懵逼,不过凭借我强大的自学能力,有了下面这篇文章,工欲善其事,必先利其器。先整理好思路,渗透起来才能顺利不迷茫。

安全威胁分析:

app渗透测试,来源的威胁不外乎三方面:

 

其实web端好像也是这三方面哈。

面临的主要风险 :

客户端:

  • 反编译
  • 调试
  • 加密/签名破解
  • 输入记录
  • 导出组件
  • 进程注入
  • 。。。

数据传输:

  • 信息泄露
  • 传输数据篡改
  • 重放攻击

服务端:

  • 心血
  • ST2
  • 注入
  • 跨站
  • 越权执行
  • 上传下载
  • 弱口令

APP安全测试内容 :

以及服务器和业务逻辑安全

 

安全测试流程:

 移动APP安全测试要点

安全检测要点:

Allowbackup漏洞

AndroidManifest.xml文件中allowBackup属性值被设置为true。当allowBackup标志为true时,用户可通过adb backup来进行对应用数据的备份,在无root的情况下可以导出应用中存储的所有数据,造成用户数据的严重泄露。

修复建议:

将参数android:allowBackup属性设置为false,不能对应用数据备份。

 

WebView漏洞

应用中存在WebView漏洞,没有对注册JAVA类的方法调用进行限制,导致攻击者可以利用反射机制调用未注册的其他任何JAVA类,最终导致javascript代码对设备进行任意攻击。

修复建议:

通过在Java的远程方法上面声明一个@JavascriptInterface 来代替addjavascriptInterface;

在使用js2java的bridge时候,需要对每个传入的参数进行验证,屏蔽攻击代码;

Note :控制相关权限或者尽可能不要使用js2java 的bridge 。

 

关键数据明文传输

应用程序在登录过程中,使用http协议明文传输用户名和密码,并未对用户名和密码进行加密处理。通过监控网络数据就可以截获到用户名和用户密码数据,导致用户信息泄露,给用户带来安全风险。

修复建议:

在传输敏感信息时应对敏感信息进行加密处理。

 

任意账号注册

使用手机号133*****887注册某个APP,获取验证码46908;

在确认提交时,拦截请求,修改注册的手机号码,即可注册任意账号,这里修改为1338*****678(任意手机号);

分别使用133*****887和133*****678(任意手机号)登录,均可以通过验证登录,看到最终结果。

修复建议:

注册过程最后的确认提交时,服务器应验证提交的账号是否是下发验证码的手机号。

 

登录界面可被钓鱼劫持

应用存在钓鱼劫持风险。应用程序没有做防钓鱼劫持措施,通过劫持应用程序的登录界面,可以获取用户的账号和密码,可能导致用户账号信息的泄露。

修复建议:

应用程序自身通过获取栈顶activity,判断系统当前运行的程序,一旦发现应用切换(可能被劫持),给予用户提示以防范钓鱼程序的欺诈。

获取栈顶activity(如下图),当涉及敏感activity(登录、交易等)切换时,判断当前是否仍留在原程序,若不是则通过Toast给予用户提示。

使用HTML5架构或android+HTML5混合开发,实现登陆、支付等关键页面,降低被劫持的风险。

 

移动APP典型安全漏洞

在对移动APP的渗透测试工作中个,博主总结了几个常见的移动APP安全漏洞,包括图形验证码逻辑后门、用户敏感信息泄露、开发商被渗透,各位APP开发工程师,需要注意一下。

图形验证码逻辑后门

案例概述

A公司是一个已经上市的信息科技公司,国内多家商业银行都是其客户。在分析A公司的移动银行产品时,发现产品的图形验证码机制存在逻辑后门可以被绕过,利用这个缺陷可以窃取大量用户账号。由于外包团队的代码复用,我们已经在至少两家商业银行的移动银行系统中复现了这个安全问题。

后果:大规模账号暴力破解攻击。

一般来说,大部分用户都习惯将移动银行密码设置为六位数字,而且查询密码和交易密码也有很大的概率设置为相同的。攻击者可以查找该地区的手机号码段范围作为登录用户名,以六位数字组成的密码字典进行暴力破解,几十万移动银行帐户信息唾手可得。

 

用户敏感信息泄露

案例概述

B公司也是一家上市的科技公司,其金融客户遍布全国,采用B公司移动银行方案的客户包 括至少两家全国性股份制商业银行和多家城市商业银行。在分析B公司的移动银行产品安全性时,发现没有关闭服务端的调试接口,造成大量的用户敏感信息泄露。这种问题其实也比较常见,往往是外包开发完成后上线过程的疏忽造成的,实际上更常见的例子是Android客户端通过logcat输出调试信息的问题。

调试接口会将用户转账的详细信息输出到 web 目录的 test.log 文件中。攻击者可以通过浏览器直接访问到这个 log 文件,该系统的每一笔转账交易都记录在其中,从中可以获取大量的用户账号、手机号、卡号和交易密码等信息。

 

开发商被渗透

案例概述

国内某漏洞平台曾经曝光过这样一个漏洞:某大型银行的移动银行ios客户端中存在一个txt文件,文件中存储了一个svn服务器的ip地址、用户名和密码,黑客解压出该文件获取信息后可以直接连上并checkout服务器上的文件。

svn 服务器上存储的内容包括该银行移动银行系统的全部项目文档、完整的 Android IOS 客户端代码,甚至还存放了用于客户端签名的数字证书。

 

本文在通过互联网其它文章学习之后归纳整理,供工作时参考。具体的渗透工具教程,下次再更。

 

 

iOS app 渗透测试是指对iOS操作系统上的移动应用程序进行安全评估和漏洞测试的过程。主要目的是发现和修复应用程序中存在的潜在安全隐患,并确保用户数据和敏感信息的安全。 在进行iOS app 渗透测试时,通常会采取以下步骤: 1. 收集信息:收集与应用程序相关的信息,包括应用程序的功能和运行机制,权限管理等。 2. 静态分析:对应用程序的源代码进行分析,以发现可能存在的漏洞和代码缺陷。静态分析可以帮助发现一些常见的安全问题,如代码注入、逻辑漏洞等。 3. 动态分析:通过模拟实际使用场景,对应用程序进行动态测试,以检测在实际运行时可能出现的漏洞和安全问题。动态分析可以模拟攻击者对应用程序进行攻击,并观察其执行结果,以发现潜在的漏洞。 4. 漏洞利用:对已经发现的漏洞进行深入研究,尝试获取更多的敏感信息或者实现非授权访问。 5. 报告编:将测试结果整理成报告,包括发现的漏洞、风险评估和建议的修复方案。 通过iOS app 渗透测试,可以帮助开发人员和企业提高移动应用程序的安全性,减少潜在的安全风险。在测试过程中,需要确保测试的合法性和安全性,避免对用户数据和系统造成不必要的损害。同时,对于涉及敏感信息的应用程序,需要确保在测试之前对用户数据进行充分的匿名化处理,以保护用户的隐私。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值