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组件中的重用漏洞。
热门资讯

人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )7351( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )5259( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )3430( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )2530( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )2530( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )1763( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )1551( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1298( 亮了
POC编写:CNVD-2020-10487/CVE-2020-1938漏洞,tomcat服务器端口8009上的ajp协议漏洞,未经授权用户可读取网站目录中任意文件。
牛创网络: "POC编写:CNVD-2020-10487 CVE-2020-1938漏洞,tomcat服务器端口8009上的ajp协议漏洞,未经授权用户可读取网站目录中任意文件。
2020-03-06 17:50:06 )1184( 亮了
【CVE-2019-11374】骑士CMS后台CSRF漏洞验证
牛创网络: "骑士CMS被广大网站建设者广泛使用,但最近爆出了CSRF漏洞,让我们来验证一下吧
2019-05-29 15:41:51 )1168( 亮了