Android 深层链接利用

news2024/9/27 5:45:32

为了能够从我们的应用程序打开另一个应用程序,我们通常通过声明我们想要访问的 Activity 类的名称来实现这一功能。但是,如果我们要打开的 Activity 在其清单文件中设置了android:exported="false" ,则无法使用此方法。而其中一种替代方法是使用深层链接。

深层链接是我们可以用来直接转到应用程序中的某些功能的另一种方式,即使该应用程序不在我们的控制范围内。

了解深层链接及其漏洞

深层链接是专门设计用于打开应用程序中的某些活动的 URL。这可以从各种来源触发,例如网页、推送通知或其他应用程序。在Android中,深层链接可以分为Scheme URL、App Links和Intent URL。其中Scheme URL 允许任何应用程序注册自定义方案、主机和路径。但其中缺乏验证容易导致链接劫持,恶意应用程序会插入本应用于另一个应用程序的链接。错误配置和不正确的验证过程可能使应用程序容易受到链接劫持和数据盗窃。

深层链接的风险和利用

如果没有适当保护,深层链接可能会给应用程序带来各种风险和漏洞。常见和潜在的漏洞包括:

1.网络钓鱼攻击:攻击者可以利用未经正确身份验证的深层链接将用户重定向到模仿真实网站外观的虚假网站。这可能会导致用户在虚假网站中输入密码或信用卡信息等敏感信息,然后这些信息可能会被攻击者滥用。

2.恶意软件分发:攻击者可以使用深层链接将用户引导至包含恶意软件的网站或自动将恶意文件下载到用户的设备。这可能会导致设备感染和潜在的数据丢失或系统损坏。

3.数据拦截(数据盗窃):未加密或不安全的深层链接可能会导致通过该链接发送的敏感数据被攻击者拦截。通过易受攻击的深层链接发送的个人或机密信息可能会被滥用于身份盗窃或其他目的。

4.中间人攻击:攻击者可以尝试将自己插入用户和服务器之间,以窃取或操纵通过深层链接发送的数据。如果深层链接未加密或连接不安全,则可能会发生这种情况。

5.链接劫持:攻击者可以尝试将针对特定应用程序的深层链接重定向到另一个应用程序或恶意网站。这可能会迷惑用户并允许攻击者窃取信息或访问不适当的应用程序功能。

6.身份盗窃:攻击者可以利用脆弱的深层链接来窃取用户的个人信息,例如姓名、地址或信用卡号。然后,该信息可用于实施身份盗窃或其他在线欺诈。

7.未经授权的访问:未得到适当保护的深层链接可能会在未经适当授权的情况下提供对应用程序中敏感功能或数据的访问。这可能会导致数据泄露或未经授权使用应用程序。

深层链接利用

作为练习,我将使用 AllSafe 应用程序。源代码可以在这里下载:https://github.com/t0thkr1s/allsafe。

使用 Jadx 打开 .apk 文件。然后进入到 AndroidManifest.xml 文件

图片

img

按 Ctrl + F 打开搜索框并搜索“android:scheme”。我们寻找“android:scheme”的原因是, 标签至少应该包含 android:scheme 属性。

图片

img

如上图所示,该应用程序有两种不同的方案( allsafe://和https:// )。

了解代码

双击“infosecadventures.allsafe.challenges.DeepLinkTask”。

图片

img

导航到深层链接文件。检查代码后,很明显,进行数据的验证取决于“ key ”的参数的存在以及与strings.xml中存储的值(也标记为“ key ”)进行比较。我们的目标是确保这个“ if”条件产生正确的结果。因此,在开始任何利用之前,我们的第一步是获取“ key ”值,很显然该值存储在strings.xml中。

图片

img

现在,通过单击值进入到res下的resources.arsc文件夹并打开*strings.xml 文件。然后搜索“key”

图片

img

在第一种方案中,scheme是“allsafe”,host是“Infosecadventures”,前缀路径是“/congrats”。

  • allsafe://infosecadeventures/congrats?key=ebfb7ff0-b2f6–41c8-bef3–4fba17be410c

在第二种方案中,只有一个属性称为scheme,这意味着在 Allsafe 应用程序中打开深层链接对host或路径没有限制。

  • https://<any URL>?key=ebfb7ff0-b2f6–41c8-bef3–4fba17be410c

漏洞利用

我们可以使用adb(Android Debug Bridge)来利用这个漏洞:

– 打开终端并写入以下命令。

adb shell am start -a "android.intent.action.VIEW" -d "allsafe://infosecadventures/congrats?key=ebfb7ff0-b2f6-41c8-bef3-4fba17be410c"

am start :这部分命令调用am (活动管理器)。

-a :该参数指定启动活动时要执行的操作。在本例中,它设置为“android.intent.action.VIEW” 。

-d :该参数用于指定与Intent相关的数据。设置为“ allsafe://infosecadventures/congrats?key=ebfb7ff0-b2f6-41c8-bef3-4fba17be410c ”

图片

img

– 执行命令后,看起来漏洞已成功执行。

图片

img

– 第二个利用方案,

  • https://<any URL>?key=ebfb7ff0-b2f6–41c8-bef3–4fba17be410c

– 这里我将 URL 更改为 evil.com,完整命令如下所示:

  • adb shell am start -a "android.intent.action.VIEW" -d https://facebook.com?key=ebfb7ff0-b2f6–41c8-bef3–4fba17be410c

图片

img

保护深层链接

应用程序可以采取多种做法来避免深层链接漏洞的风险,包括:

1.正确的验证和验证:实施正确的验证流程以防止链接黑客攻击,使用应用程序链接关联等验证机制。

2.Intent URL :考虑使用Intent URL 来提高安全性,而不是Scheme URL 或App Links。

3.输入验证:确保正确的输入验证,以防止任意组件访问和不安全的参数处理。

4.应用程序特定的身份验证:确保在应用程序特定的身份验证后处理深层链接,以避免未经授权访问敏感功能。

5.加密和保护敏感数据:加密通过深度链接传输的敏感数据并使用安全通信协议。

6.漏洞测试:定期执行安全测试,以识别应用程序深层链接实现中的弱点。

7.安全培训:让用户了解深层链接的风险以及如何识别合法链接以避免攻击。

 无偿获取网络安全优质学习资料与干货教程

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

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

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

相关文章

人工智能有助于解决 IT/OT 集成安全挑战

思科的一项研究表明&#xff0c;信息技术 (IT) 和运营技术 (OT) 融合所带来的安全问题可以通过人工智能 (AI) 解决&#xff0c;尽管该技术也可能被恶意行为者利用。 该报告由思科和 Sapio Research 联合发布&#xff0c;对 17 个国家的 1,000 名行业专业人士进行了调查&#x…

基于Java,SpringBoot和Vue的仓库管理商品管理电商后台管理系统

摘要 基于Java、Spring Boot和Vue的仓库管理系统是一个现代化的库存管理解决方案&#xff0c;旨在提高仓库运营效率和准确性。系统采用Java作为后端开发语言&#xff0c;结合Spring Boot框架简化配置和部署过程&#xff0c;实现业务逻辑和数据处理。前端使用Vue.js构建用户界面…

2024.9.25 数据分析学习

资料&#xff1a; 【开课吧哩堂】数据挖掘项目之用户流失预警系统_哔哩哔哩_bilibili 五万字 | Spark吐血整理&#xff0c;学习与面试收藏这篇就够了&#xff01;-腾讯云开发者社区-腾讯云 (tencent.com) 黑马程序员Spark全套视频教程&#xff0c;4天spark3.2快速入门到精通…

**CentOS7安装配置mysql**

CentOS7安装配置mysql 首先先将mysql57-community-release-el7.rpm解压出来 rpm -ivh mysql57-community-release-el7.rpmls /etc/yum.repos.d/ -l // 检查是否解压成功安装mysql yum install -y mysql-community-server可能会出现 GPG 密钥过期 rpm --import https://r…

一个可以免费上传样本图册的网站

在数字化时代&#xff0c;图像和样本图册的重要性不言而喻。无论是设计师、摄影师、艺术家还是普通用户&#xff0c;都需要一个可靠的平台来上传、分享和存储自己的作品。今天&#xff0c;给大家推荐一个可以免费上传样本图册的网站——【FLBOOK】&#xff0c;它为用户提供了无…

UE学习篇ContentExample解读------Blueprint_Communication-上

文章目录 总览描述批次阅览1.1 Basic communication with a target blueprint1.2 Basic communication via actor casting1.3 Blueprint communication via actor casting to child Blueprint1.4 Communicating with all actors of a specific class 概念总结致谢&#xff1a; …

关于预处理详解 #define 宏 #和##

#和## #运算符 #运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带参数的宏的替换列表中。 #运算符所执⾏的操作可以理解为”字符串化“。 当我们有⼀个变量 int a 10; 的时候&#xff0c;我们想打印出&#xff1a; the value of a is 10 . 就可以写&#xff…

MySQL函数:流程函数

1.IF函数 基本语法&#xff1a;IF(expr1,expr2,expr3) 功能&#xff1a;如果value为true&#xff0c;返回t&#xff0c; 否则返回f 例如&#xff1a;这个里面expr1里面是false&#xff0c;返回的是Error&#xff0c;如果是true&#xff0c;返回OK select if(false, OK, Err…

开通微信视频号直播的流程

首先我们要了解什么是视频号&#xff1f; 视频号其实就是腾讯家的“抖音”/“快手”&#xff0c;可以发布视频和直播&#xff08;包括直播带货&#xff09;。 微信视频号不同于订阅号、服务号&#xff0c;它是一个全新的内容记录与创作平台&#xff0c;也是一个了解他人、了解…

适合二开的web组态软件

技术文档 官网网站&#xff1a;http://www.hcy-soft.com 体验地址&#xff1a;by组态[web组态插件] 可以广泛应用于化工、石化、制药、冶金、建材、市政、环保、电力等几十个行业。 一、产品简介 BY组态是完全自主研发的集实时数据展示、动态交互等一体的全功能可视化平台。帮…

OJ在线评测系统 后端基础部分开发 完善CRUD相关接口

完善相关接口 判斷编程语言是否合法 先从用户的请求拿到Language package com.dduo.dduoj.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dduo.dduoj…

OpenHarmony(鸿蒙南向)——平台驱动开发【SDIO】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 SDIO&#xff08;Secure Digital Input and Outpu…

【Faster-Rcnn】训练与测试

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山冈&#xff01; &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 1.提前准备 1.1. mobaxterm&#xff08;远程连接服务器&#xff09; 链接&#xff1a…

达索系统SOLIDWORKS2025新版本即将来袭

达索系统SOLIDWORKS2025新版本即将来袭 北京众联亿诚是达索官方授权的SOLIDWORKS经销商&#xff0c;专业经销SOLIDWORKS正版软件并提供免费试用、培训认证、二次开发等增值服务。 在CAD软件领域&#xff0c;SOLIDWORKS作为达索系统旗下的旗舰产品&#xff0c;一直以其优越的三…

CTF学习路线(非常详细)零基础入门到精通,收藏这一篇就够了

**CTF概述&#xff1a;**CTF(夺旗赛)是一种网络安全竞赛&#xff0c;通过解决一系列安全问题来测试参赛者的技能和经验。对于网络安全爱好者和从业者来说&#xff0c;学习CTF是一个不错的选择。 下面是从零开始学习CTF的详细规划和路线&#xff1a; 1 基础知识 要开始学习C…

问题:机器字长为n位的二进制数可以用补码来表示()个不同的有符号定点整数。

一、概念 概念&#xff1a;无论原码、反码、补码&#xff0c;n位二进制数可以表示2^n个数值 二、从范围证明 有符号的情况下&#xff0c;表格如下&#xff1a; 其中&#xff0c;原码、反码含有-0、0 &#xff0c; 而补码不划分0 由此&#xff0c;可知&#xff1a; ① 原码…

Ubuntu 编译安装 ImageMagick 来处理图片

一&#xff1a;克隆 ImageMagick cd /tools git clone https://github.com/ImageMagick/ImageMagick.git cd ImageMagick 二&#xff1a;安装编译 ImageMagick 所需的软件包 sudo apt -y install build-essential libltdl-dev libjpeg-dev libpng-dev libtiff-dev libgif-dev…

Unity 外描边简单实现(Shader Graph)

1&#xff1a;原理 将物体的模型空间的位置&#xff08;也就是顶点数据&#xff09;放大&#xff0c;作为一个单独的渲染通道单独渲染&#xff0c;这时候模型是已经发大过的&#xff0c;要想看到外描边的效果&#xff0c;需要将正面显示的东西给去掉&#xff0c;显示背面渲染的…

HTTPS证书配置

NGINX、SSl配置 修改conf目录下NGINX中的crt和key文件 单点配置SSL 需要的文件和配置信息 证书和keytool.exe(使用jdk1.8的)工具要在同一个目录下 gxszy.qhxzhny.top.pfx&#xff08;证书&#xff09; keystorePass.txt&#xff08;密码&#xff09; 使用JDK自带的keyto…

【CSS】变量的声明与使用

原生变量root 伪类 原生变量 CSS中我们可以统一设置变量方便页面维护。变量声明的时候&#xff0c;自定义样式变量名之前加上两根连词线 " – " 即可&#xff0c;使用 var() 来引用。声明的变量是有作用域的 ( 比如是在html中声明的变量&#xff0c;那么该变量在html…