银行手机APP安全评估报告

APP安全 南瓜一族 664℃ 0评论

1.1 目标范围

某一银行手机APP

1.2 渗透测试说明

渗透测试利用安全扫描工具和富有经验的安全工程师人工对网络中的主要服务器及重要的应用系统等进行非破坏性质的模拟黑客攻击,目的是侵入系统并获取机密信息并将入侵的过程和细节产生报告给用户。由此确定用户系统所存在的安全威胁。并能及时提醒安全管理员完善安全策略,降低安全风险。
渗透测试和工具扫描可以很好的互相补充。工具扫描具有很好的效率和速度,但是存在一定的误报率,不能发现高层次、复杂的安全问题;渗透测试需要投入的人力资源较大、对测试者的专业技能要求很高(渗透测试报告的价值直接依赖于测试者的专业技能),但是非常准确,可以发现逻辑性更强、更深层次的弱点。

1.3 渗透测试方法

黑客的攻击入侵需要利用目标网络的安全弱点,渗透测试也是同样的道理。它模拟真正的黑客入侵攻击方法,以人工渗透为主,辅助以攻击工具的使用,这样保证了整个渗透测试过程都在可以控制和调整的范围之内。
 Sql注入、跨站脚本xss攻击、框架漏洞、信息泄漏等常见web漏洞;
 越权访问、Csrf跨站点伪造请求攻击漏洞;
 客户端劫持、键盘劫持漏洞;
 安卓app客户端信息泄漏、残余信息、键盘记录、反编译等漏洞;

1.4 渗透测试结果

1.4.1 Android版彩虹bank app安全测试(发现问题)

1.4.1.1 APP本地缓存测试(未发现问题)

1.4.1.1.1 手机端缓存分析


未发现存储异常数据

1.4.1.1.2 手机端本地数据库分析


未发现存储异常数据

1.4.1.2 APP运行安全测试(发现问题)

1.4.1.2.1 键盘监听测试

APP密码框输入使用内带安全键盘无法监听到用户输入。

如在用户框中输入则是可以监听的。

1.4.1.2.2 APP攻击面分析(发现APP开启debuggable)


发现APP有一个Activity组件可以调用,并且开启debuggable模式。

建议:关闭debuggable模式

1.4.1.2.3 Activity组件分析

发现APP开启的Activity组件com.yucheng.android.hebbank.WelcomeActivity为启动界面不存在问题

1.4.1.2.4 APP的数据缓存目录、权限、版本等基本信息分析


未发现有异常问题。

1.4.1.2.5 日志输出分析(发现输出登录用户名和密码等客户敏感信息)

在登录时日志输出客户账号、密码等敏感信息

在进行操作时日志也会显示出操作信息。

建议:关闭输出日志

1.4.1.3 APP反编译测试(未发现问题)

1.4.1.3.1 代码反编译


App编译时已经做了混淆,无法进行有效利用。

1.4.1.3.2 AndroidManifest.xml文件分析

AndroidManifest.xml文件分析未发现其它问题,与前面APP运行安全测试的一致开启了debuggable

1.4.1.4 APP各个功能点检测(发现问题)

1.4.1.4.1 用户登录(录时密码未进行加密)

用户登录时密码未进行加密。

建议:虽有HTTPS加密传输,但当客户遭遇中间人攻击时容易被窃取账号密码。建议对用户名密码进行加密。

1.4.1.4.2 绑定银行卡(未发现问题)

在绑定银行卡过程中未发现存在问题。

1.4.1.4.3 资产总览(存在请求伪造)

因没有启用ssl双向认证,黑客获取cookie后可以伪造请求去查询账户信息。

把截获的请求包使用其它浏览器发送请求可以请求成功。

建议:如果启用ssl双向认证用户在进行操作时需要反复输入密码完成双向认证过程,可能会影响用户体验,参照同业标准,(目前只有农行采用ssl双向认证)。

1.4.1.4.4 交易记录查询(存在容错问题)

交易记录查询的count查询条数字段默认为20条,但输入字母或者字符的时候出现应用程序出错。

建议:在服务端对接收的数据类型进行验证并屏蔽软件错误信息。

1.4.1.4.5 资金转出(存在容错问题)

在资金转出时,转出金额在APP界面是无法转出大于活期余额的金额。

但是对交易数据进行拦截修改转出金额为一长串负数时报出错误信息

修改交易密码为空时也报出程序错误信息。

在拦截时修改金额且输入错误的交易密码也能成功提交。

资金转出过程中在APP端对输入的数据类型、交易金额进行了验证,但在服务端未进行验证。
建议:在服务端对接收的数据类型、交易金额进行验证并屏蔽软件错误信息。

1.4.1.4.6 资金转入(未发现问题)

在资金转入的操作过程中未发现问题

1.4.1.4.7 活动页面(存在RUL重定向)

点击活动页面会发送请求外部网站资源。

可以拦截修改请求为百度。

建议:对请求的外部资源返回内容进行验证

1.4.1.4.8 我的添金(存在容错和重放攻击问题)

在添金的交易过程中,进行数据拦截修改申购金额输入长串数据报出软件错误信息。

修改赎回金额输入长串数据也是报出软件错误信息。


添金申购存在重放攻击,拦截交易数据可以重复成功提交请求。


添金赎回也存在重放攻击,拦截交易数据可以重复成功提交请求。

建议:对于容错问题可以在服务端对接收的数据类型进行验证并屏蔽软件错误信息。对于重放攻击可以设置时间戳屏蔽过期请求,或者设置消息序号在交易时事先协商好序号以判断请求的唯一性。

1.4.1.4.9 步步增利(存在容错和重放攻击问题)

在步步增利的存入过程中,进行数据拦截修改申购金额输入长串数据报出软件错误信息


在支取过程中,进行数据拦截修改金额输入长串数据也报出软件错误信息


步步增利存入存在重放攻击,因为账户金额不足交易失败但还是可以重复成功提交请求。


步步增利支取也存在重放攻击,拦截交易数据可以重复成功提交请求。

建议:对于容错问题可以在服务端对接收的数据类型进行验证并屏蔽软件错误信息。对于重放攻击可以设置时间戳屏蔽过期请求,或者设置消息序号在交易时事先协商好序号以判断请求的唯一性。

1.4.1.4.10 个人信息(未发现问题)

个人消息页面未发现问题。

1.4.1.4.11 我的消息(未发现问题)

我的消息页面未发现问题。

1.4.1.4.12 安全中心(未发现问题)

修改登录密码需要短信验证码,操作过程中未发现问题。


重置交易密码需要短信验证、身份证号码,操作过程中未发现问题。

修改交易密码需要短信验证,操作过程中未发现问题。


修改手机可分为原手机可用和不可用需要短信验证,不可用需要上传身份证照片验证,操作过程中未发现有问题。

修改绑定邮箱需要手机短信验证码和邮箱验证,操作过程中未发现问题。

1.4.1.4.13 找回登录密码(未发现问题)

找回密码需要手机验证码以及详细的个人信息,操作过程中未发现问题。

1.4.2 IOS版彩虹bank app安全测试(发现问题)

1.4.2.1 日志输出分析(未发现问题)

在操作过程中未发现有敏感日志信息输出

1.4.2.2 本地数据库分析(未发现问题)

检测本地数据未发现敏感信息存储

1.4.2.3 本地缓存文件分析(未发现问题)

检测本地文件存储路径未发现有敏感信息

1.4.2.4 检查keychain-2.db数据库(未发现问题)

keychain-2.db是IOS通用存储密码数据库,检测发现彩虹bank的敏感信息

1.4.2.5 APP各个功能点测试(发现问题)

1.4.2.5.1 登录(未对密码进行加密)

登录时未对密码进行加密,虽使用HTTPS但客户遇到中间人攻击时密码容易被截获。

建议:登录时对密码进行加密。

1.4.2.5.2 资产总览(存在请求伪造)

因没有启用ssl双向认证,黑客获取cookie后可以伪造请求去查询账户信息。

把截获的请求包使用其它浏览器发送请求可以请求成功。

建议:如果启用ssl双向认证用户在进行操作时需要反复输入密码完成双向认证过程,可能会影响用户体验,参照同业标准,(目前只有农行采用ssl双向认证)。

1.4.2.5.3 交易记录查询(存在容错问题)

交易记录查询的count查询条数字段默认为10条,但输入字母或者字符的时候出现应用程序出错。

建议:在服务端对接收的数据类型进行验证并屏蔽软件错误信息。

1.4.2.5.4 资金转出(存在容错问题)

在资金转出时,转出金额在APP界面是无法转出大于活期余额的金额。

但是对交易数据进行拦截修改转出金额为一长串负数时报出错误信息

修改交易密码为空时也报出程序错误信息。

在拦截时修改金额且输入错误的交易密码也能成功提交。

资金转出过程中在APP端对输入的数据类型、交易金额进行了验证,但在服务端未进行验证。
建议:在服务端对接收的数据类型、交易金额进行验证并屏蔽软件错误信息。

1.4.2.5.5 资金转入(未发现问题)

在资金转入过程中未发现问题。

1.4.2.5.6 活动页面(存在RUL重定向)

点击活动页面会发送请求外部网站资源。

可以拦截修改请求为百度,修改一次之后每次点击打开活动页面都会打开百度页面

建议:对请求的外部资源返回内容进行验证

1.4.2.5.7 我的添金(存在容错和重放攻击问题)

在添金的交易过程中,进行数据拦截修改申购金额输入长串数据报出软件错误信息。

修改赎回金额输入长串数据也是报出软件错误信息。

添金申购存在重放攻击,拦截交易数据可以重复成功提交请求。

添金赎回也存在重放攻击,拦截交易数据可以重复成功提交请求。

建议:对于容错问题可以在服务端对接收的数据类型进行验证并屏蔽软件错误信息。对于重放攻击可以设置时间戳屏蔽过期请求,或者设置消息序号在交易时事先协商好序号以判断请求的唯一性。

1.4.2.5.8 增利(存在容错和重放攻击问题)

在步步增利的存入过程中,进行数据拦截修改申购金额输入长串数据报出软件错误信息

在支取过程中,进行数据拦截修改金额输入长串数据也报出软件错误信息

步步增利存入存在重放攻击,因为账户金额不足交易失败但还是可以重复成功提交请求。

步步增利支取也存在重放攻击,拦截交易数据可以重复成功提交请求。

建议:对于容错问题可以在服务端对接收的数据类型进行验证并屏蔽软件错误信息。对于重放攻击可以设置时间戳屏蔽过期请求,或者设置消息序号在交易时事先协商好序号以判断请求的唯一性。

1.4.2.5.9 个人信息(未发现问题)

在个人信息页面未发现问题

1.4.2.5.10 我的消息页面(未发现问题)

在我的消息页面未发现问题

1.4.2.5.11 安全中心(未发现问题)

修改登录密码需要手机验证码,过程中未发现问题。

交易密码重置需要手机验证码,过程中未发现问题。

修改交易密码需要手机验证码,过程中未发现问题

变更银行卡需账户金额为0,操作过程中未发现问题。

修改绑定手机分为原手机可用和不可用,不可用需要上传身份证照片,过程中未发现问题。

修改绑定邮箱需要手机验证码和邮箱验证,过程中未发现问题。

1.4.2.5.12 找回登录密码(未发现问题)

找回密码需要手机验证码以及详细的个人信息,操作过程中未发现问题。

1.4.3 彩虹bank官网渗透测试(发现问题)

1.4.3.1 SSL V3 Protocol信息泄露漏洞

测试官网HTTPS兼容SSL V3

关于SSL V3 Protocol漏洞的介绍

建议:屏蔽sslv3协议。

1.4.3.2 用户注册(存在SQL注入)

在彩虹bank官方网站的注册页面的手机号码字段存在SQL注入。在注册的时输入手机号码之后会先发送手机号码至服务器验证是否已经注册过。

验证手机号码时发送的数据包

发现phoneNumber字段存在SQL注入,使用SQLmap验证的结果如下图。

发现可利用的有4个数据库,存在问题字段:phoneNumber,类型为布尔型。

建议:对用户输入进行过滤,及时联系厂商进行修补。

1.4.3.3 资产总览(未发现问题)

在资产总览页面未发现问题。

1.4.3.4 交易记录(未发现问题)

在交易记录的查询过程中未发现问题。

1.4.3.5 账户管理(未发现问题)

在账户管理页面未发现问题。

1.4.3.6 增利(未发现问题)

在步步增利交易过程中未发现存在问题。


转载请注明:猫头鹰工作室 » 银行手机APP安全评估报告

喜欢 (1)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址