利用CVE-2024-0044从Android 12/13提取WhatsApp数据库(或任意应用数据)
我需要从一台未root的Android 12手机备份WhatsApp消息。几年前,我曾使用Whatsapp-Chat-Exporter将备份转换为HTML,但首先需要从手机中提取数据库。
Whatsapp-Chat-Exporter指出的非root提取方法多年来保持不变:降级到允许备份的旧版WhatsApp,然后创建包含WhatsApp数据库的Android备份。这对WhatsApp Business无效,因为没有允许备份的版本。根据使用情况,您可以将WhatsApp转移到可root的新设备并在那里提取文件(拥有root权限时非常简单)。
当看到Meta Red Team X的新Zygote漏洞(CVE-2024-31317)时,我认为它可以用于执行备份提取,但随后发现了该博客上的前一个条目(CVE-2024-0044),它更易于使用(但仅适用于未接收2024年3月安全更新的Android 12和13)。
CVE-2023-0044
此漏洞利用适用于任何非系统应用,不仅限于从WhatsApp/WhatsApp Business提取数据。对于专家来说,漏洞利用的解释非常明显。我在这里为最终用户或需要逐步指南提取WA数据库的初学者编写。
简单漏洞利用
首先,您需要启用USB调试并允许通过USB安装APK。准备一个APK文件,只要能在您的设备上安装即可(从https://f-droid.org/获取APK)。
将APK文件推送到设备,例如:
|
|
漏洞利用很简单。首先,我们需要获取WhatsApp的目标uid。执行adb shell,然后在adb内部执行:
|
|
您将看到类似以下内容:
|
|
如果只有WhatsApp,您将只有com.whatsapp;如果只有WhatsApp Business,您将只有com.whatsapp.w4b。查看UID(例如10180;这在您的手机上会不同)。将其复制到记事本,更改UID,并复制到剪贴板。
|
|
或下载此文本文件(以防WordPress弄乱格式)。注意@null后有回车,这是漏洞利用的关键。将UID更改为匹配您的UID。“victim"可以替换为任何单字字符串。
您应该看到类似以下内容: 注意:当@null后的新行被粘贴时,它将在下一行显示为> 注意:您只需要执行一次此操作。
现在我们可以以WhatsApp用户身份运行:
|
|
我们可以开始浏览文件(ls、cat等)。不幸的是,在Android 13中,我无法将文件复制到其他地方(如/sdcard/、/data/local/tmp)。但我们可以这样做(首先通过exit或按control-d退出run-as):
|
|
这是它应该看起来的样子:
现在我们可以退出adb(exit或control-D)回到命令行,并拉取数据:
|
|
然后,您可以使用任何应用程序提取数据(最新的Windows可以提取tar文件,或使用7-Zip)。
现在,您可以从databases文件夹获取数据库,并使用Whatsapp-Chat-Exporter将其转换为HTML。
结论
我希望这能帮助任何需要从非root手机提取数据的人。