网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

漏洞公告团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 网络安全 > 漏洞公告 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

APP客户端身份验证绕过漏洞:使用Android平台集成开发环境Android Studio安全测试,获取用户密码

文章来源:重庆网站建设 发布时间:2020-08-19 12:39:42 围观次数:
分享到:

摘要:在授权安全性测试中,使用Android Studio(一个用于Android平台的集成开发环境)来发现APP客户端身份验证绕过漏洞并获取用户密码。

  为了更好地解释漏洞发现,简要介绍一下目标测试APP的工作机制。由于APP安全性测试是内部邀请测试,因此出于机密性,无法发布许多详细的屏幕截图。

  该测试项目由HackerOne发起。测试APP所属的公司是大型公司。通常很难在测试范围内找到漏洞,并且它们尊重漏洞的报告者。

  该测试项目的客户端是一个Android硬件设备,其中包含公司在客户端上使用的酒店餐饮管理应用程序服务。

  整个设备服务应用程序以Web面板的形式体现,客户端可以通过硬件设备Web面板或其移动APP登录并使用它。但是,这里有一个小小的区别。硬件Web面板的菜单栏包含许多用于员工,客户,订单等的管理标签,但是在其移动APP中,每个类别对应一个单独的应用程序,例如客户应用程序,员工应用程序和订单应用程序等,所有这些应用程序都通过主包名称com.comapny.engine连接。


技术细节


  访问了公司的网站下载其文档,以查看是否可以在模拟器上安装其APP进行测试。了解后,发现该APP已设置一个沙箱域用于安全测试。


  在Android模拟器中安装所有应用程序之后立即开始了安全测试。因为移动应用程序和Web应用程序基于相同的后端服务器或API接口,所以首先确认这些应用程序是否仍然存在2017年发现的高风险漏洞。如果这些应用程序调用那个漏洞的API接口,那么出现漏洞的可能性就很高。


  接下来,以普通用户身份登录到其主APP-com.company.engine,当单击客户应用程序APP时,弹出以下提示消息“无权执行此操作”:

blob.png

  好吧,这有点挑战。因此决定反编译其客户应用程序APP-com.company.customer,以查看其内存用户权限验证机制,这里使用MobSf移动安全框架。先下载了其Java源代码,然后使用文本编辑器将其打开。有两种快速方法可以找到上述“权限”方法函数:

  使用文本编辑器在源代码中找到“ Permission”关键字

  使用android studio的logcat函数识别相关消息函数

  没有发现,然后切换到第二种方法的android studio工具。在这里,首先,需要使用以下方法从Android设备获取客户应用程序APP:

  adb pull /data/app/com.company.customer/base.apk

  然后,将其源代码传递给android studio。当使用android studio的调试功能打开APK文件时,过了一会儿,在common2文件夹中发现了一个名为PermissionChecker.class的类,这应该是我们想要的。


漏洞发现


  以下是PermissionChecker.class的相关源代码的屏幕截图:

blob.png

blob.png

 可以在源代码中找到一个名为checkAccessPermission的函数。此函数检查当前帐户权限是否具有accessPermissionName,这是此类中的硬编码变量。

blob.png

 为了更好地分析其运行机制,让我们调试APP。首先在以下位置设置断点:

blob.png

blob.png

  然后以调试模式启动了APP应用程序,但是当打开APP时发现调试器停止了。后来,发现原因是当变量accessPermissionName分配给_ACCESS时,调试器停止。因此,checkAccessPermission函数将检查当前帐户是否具有相应的权限。仔细观察以下源代码:  

blob.png


漏洞利用


  有了这个发现,立即转到其Web应用程序检查当前的帐户权限。为什么? 因为似乎我们只需要用普通用户权限的XXX替换变量accessPermissionName的值_ACCESS,就可以正常打开APP吗?

  因此以管理员身份登录了其商户管理Web界面,并在以下界面上发起了请求:

  /v3/merchant/{ID}/permissions 

  在以下响应消息中看到的那样,之前创建的普通帐户角色名为TestRole,其权限名称为MANUAL_ENTRY_ALLOWED。

blob.png

 然后,在APP调试模式下用MANUAL_ENTRY_ALLOWED替换了accessPermissionName值_ACCESS:

blob.png

blob.png

 后来,在调试模式下,APP跳出了以下内容:

blob.png

  换句话说,APP已成功启动并运行,可以从中看到一些客户信息。让我们尝试添加或篡改它。 单击了客户中的“Add Customer”按钮,调试器再次启动。和以前一样,再次用MANUAL_ENTRY_ALLOWED替换了accessPermissionName值_ACCESS,然后继续:

blob.png

  后来发现打开添加页面后,当插入必填字段并单击“保存”时,调试器就启动了。目的似乎是执行权限检查。重复上面提到的accessPermissionName的变量分配之后,终于成功添加了用户:

blob.png


本文由 重庆网站建设 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:身份验证绕过漏洞 Android Android Studio 安全测试

上一篇:密码重置帐户劫持漏洞:分析Mail.ru子域名网站cups.mail.ru
下一篇:Google Chrome CVE-2020-6492修复代码执行漏洞:浏览器WebGL组件中的重用漏洞。

热门资讯

鼠标向下滚动