APP客户端身份验证绕过漏洞:使用Android平台集成开发环境Android Studio安全测试,获取用户密码
摘要:在授权安全性测试中,使用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时,弹出以下提示消息“无权执行此操作”:
好吧,这有点挑战。因此决定反编译其客户应用程序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的相关源代码的屏幕截图:
可以在源代码中找到一个名为checkAccessPermission的函数。此函数检查当前帐户权限是否具有accessPermissionName,这是此类中的硬编码变量。
为了更好地分析其运行机制,让我们调试APP。首先在以下位置设置断点:
然后以调试模式启动了APP应用程序,但是当打开APP时发现调试器停止了。后来,发现原因是当变量accessPermissionName分配给_ACCESS时,调试器停止。因此,checkAccessPermission函数将检查当前帐户是否具有相应的权限。仔细观察以下源代码:
漏洞利用
有了这个发现,立即转到其Web应用程序检查当前的帐户权限。为什么? 因为似乎我们只需要用普通用户权限的XXX替换变量accessPermissionName的值_ACCESS,就可以正常打开APP吗?
因此以管理员身份登录了其商户管理Web界面,并在以下界面上发起了请求:
/v3/merchant/{ID}/permissions
在以下响应消息中看到的那样,之前创建的普通帐户角色名为TestRole,其权限名称为MANUAL_ENTRY_ALLOWED。
然后,在APP调试模式下用MANUAL_ENTRY_ALLOWED替换了accessPermissionName值_ACCESS:
后来,在调试模式下,APP跳出了以下内容:
换句话说,APP已成功启动并运行,可以从中看到一些客户信息。让我们尝试添加或篡改它。 单击了客户中的“Add Customer”按钮,调试器再次启动。和以前一样,再次用MANUAL_ENTRY_ALLOWED替换了accessPermissionName值_ACCESS,然后继续:
后来发现打开添加页面后,当插入必填字段并单击“保存”时,调试器就启动了。目的似乎是执行权限检查。重复上面提到的accessPermissionName的变量分配之后,终于成功添加了用户:
相关热词搜索:身份验证绕过漏洞 Android Android Studio 安全测试
上一篇:密码重置帐户劫持漏洞:分析Mail.ru子域名网站cups.mail.ru
下一篇:Google Chrome CVE-2020-6492修复代码执行漏洞:浏览器WebGL组件中的重用漏洞。
热门资讯

自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )1621( 亮了
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )1483( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )804( 亮了
前端开发技术之ES6快速入门(一)
牛创网络: "说了这么多,我们现在就说下“三个点”的应用把,我们知道函数的参数是一个集合(arguments)并不是一个真正的数组。那么我们怎么才能在这个arguments中加一项呢??
2019-04-27 23:06:32 )752( 亮了
Sudo漏洞(CVE-2019-18634):在某些配置下,它可能允许低特权用户或恶意程序在Linux或macOS系统上以root用户身份执行命令。
牛创网络: "Sudo是常用的实用程序之一,预装在macOS设备和几乎所有UNIX或Linux操作系统上的重要命令,为用户提供了不同的特权,可在不切换操作环境的情况下运行应用程序或命令。
2020-02-05 11:49:49 )656( 亮了
微软发布KB4551762安全更新:Windows 10(SMBv3) 预授权RCE漏洞CVE-2020-0796
牛创网络: "微软发布KB4551762安全更新:Windows 10(SMBv3) 预授权RCE漏洞CVE-2020-0796。
2020-03-13 18:28:16 )645( 亮了
论网络营销对企业发展中的作用
牛创网络: "网络营销是指运营商基于电子信息技术,以计算机网络为媒介和手段进行的各种营销活动(包括网络研究,网络新产品开发,网络推广,网络分发,网络服务等)的总称。
2019-05-21 10:08:08 )600( 亮了
Kali Linux即将推出的2020.1版安全模型重大改革——默认非root用户
牛创网络: "Kali Linux团队在Twitter上宣布:“新的一年是进行重大改变的好时机,因此,我们宣布在即将发布的2020 1版本中,Kali安全模型也将进行重大改革——默认非root用户。”
2020-01-08 10:17:18 )591( 亮了
Apereo CAS 4.X反序列化漏洞:存在于登录的execution参数,漏洞分析及复现
牛创网络: "Apereo CAS 4 X反序列化漏洞:存在于登录的execution参数,漏洞分析及复现。
2020-02-10 12:34:11 )587( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )523( 亮了